Market Reporter は株価等の時系列データから、それを要約した短いテキストを自動で生成します。これは論文 Murakami et al. (ACL 2017) [bib] [paper] と Aoki et al. (INLG 2018) [bib] [paper] [poster] のPythonによる実装です。
システムの構成は以下の図のようになっています。
- 時系列データ 時系列データはThomson Reuters DatScope Selectとの契約により利用可能になるREST API を用いて取得しました。
- テキストデータ 日経QUICKニュース社から購入したものを使用しています。
本ソフトウェアはAmazon S3を使用します。
使用前にAmazonS3FullAccess
が付与されていることを確認してください。
詳細については公式のドキュメントAWS Identity and Access Managementをご覧ください。
DockerとDocker Composeをインストールします.
環境に合わせてenvs/docker-compose.yamlを編集してください。
その後 docker-compose
コマンドを実行してコンテナを起動します。
# Docker のインストール
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install -y \
docker-ce \
docker-ce-cli \
containerd.io
# Docker Compose のインストール
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# Docker の起動とログイン
cd envs
sudo service docker start
sudo docker-compose up -d
sudo exec --user reporter -it CONTAINER /bin/bash # `docker ps` でコンテナの一覧が表示されます
このプロジェクトに必要となるPythonライブラリをインストールには、Pipenvを利用することをお薦めします。
brew install pipenv # Linuxbrew and Homebrew
pipenv install --dev
pipenv shell
例えば自分のマシン上にある master
という名前のデータベースを利用する場合、config.toml
を以下のように編集します。
[postgres]
- uri = 'postgresql://USERNAME:PASSWORD@SERVER:PORT/DATABASE'
+ uri = 'postgresql:///master'
設定ファイルの例 example.toml または murakami-et-al-2017.example.toml をコピー・編集し、 config.toml
を作成してください。
モデルを学習するためは以下のコマンドを実行してください。GPU (CPU) を使用する場合は、--device
オプションで cuda:n
(cpu
) を指定してください。ここで n
は使用する GPU デバイスの番号です。
python -m reporter --device 'cuda:0'
実行後、3 つのファイル (reporter.log
と reporter.model
、 reporter.vocab
) が config.output_dir/reporter-DATETIME
以下に出力されます。 ここで、 config.output_dir
は config.toml
で設定した変数、 DATETIME
はプログラム実行日時のタイムスタンプを表しています。
学習後、出力ファイルを用いて、銘柄と時刻を指定することで概況テキストを生成することができます。
# -r, --ric: 銘柄(Reuters Instrument Codeを指定してください。例えば日経平均の場合'.N225'になります。)
# -t, --time: 時刻('%Y-%m-%d %H:%M:%S%z'の形式で指定してください。)
# -o, --output: 学習で作られた'reporter.model'と'reporter.vocab'を含むディレクトリを指定してください。
python -m reporter.predict \
-r '.N225' \
-t '2018-10-03 09:03:00+0900' \
-o output/reporter-2018-10-07-18-47-41
以下のコマンドを実行し、ブラウザで http://localhost:5000/
にアクセスしてください。
make # for the first time
python -m reporter.webapp
サーバー環境で起動する際は、代わりに以下のコマンドを実行してください。
nohup uwsgi --ini uwsgi.ini &
正常に起動すると以下のような検索画面が表示されます。
Webインターフェースは評価等の目的で使うことができます。 生成されたテキストが、生成に使われた値動きとともに表示されます。pytest
Market Reporterは以下のいずれかのライセンスで利用可能です。
商用ライセンスはソースコードを公開できないような場合に適しています。詳細については kirt-contact-ml@aist.go.jp までご連絡ください。
このソフトウェアには特許出願中の技術が含まれます(出願番号:2017001583)。
このソフトウェアを利用した論文を書く場合は、以下のいずれかまたは両方を引用してください。
@InProceedings{murakami2017,
author = {Murakami, Soichiro
and Watanabe, Akihiko
and Miyazawa, Akira
and Goshima, Keiichi
and Yanase, Toshihiko
and Takamura, Hiroya
and Miyao, Yusuke},
title = {Learning to Generate Market Comments from Stock Prices},
booktitle = {Proceedings of the 55th Annual Meeting of
the Association for Computational Linguistics (Volume 1: Long Papers)},
year = {2017},
publisher = {Association for Computational Linguistics},
pages = {1374--1384},
location = {Vancouver, Canada},
doi = {10.18653/v1/P17-1126},
url = {http://www.aclweb.org/anthology/P17-1126}
}
@InProceedings{aoki2018,
author = {Aoki, Tatsuya
and Miyazawa, Akira
and Ishigaki, Tatsuya
and Goshima, Keiichi
and Aoki, Kasumi
and Kobayashi, Ichiro
and Takamura, Hiroya
and Miyao, Yusuke},
title = {Generating Market Comments Referring to External Resources},
booktitle = {Proceedings of the 11th International Conference on Natural Language Generation},
year = {2018},
publisher = {Association for Computational Linguistics},
pages = {135--139},
location = {Tilburg University, The Netherlands},
url = {http://aclweb.org/anthology/W18-6515}
}
© 2018 Akira Miyazawa, Tatsuya Aoki, Fumiya Yamamoto, Soichiro Murakami, and Akihiko Watanabe (National Institute of Advanced Industrial Science and Technology; AIST)
この成果は、国立研究開発法人新エネルギー・産業技術総合開発機構(NEDO)の委託業務の結果得られたものです。