Skip to content

Latest commit

 

History

History
212 lines (167 loc) · 8.8 KB

README-ja.md

File metadata and controls

212 lines (167 loc) · 8.8 KB

Market Reporter

CircleCI

English

Market Reporter は株価等の時系列データから、それを要約した短いテキストを自動で生成します。これは論文 Murakami et al. (ACL 2017) [bib] [paper] と Aoki et al. (INLG 2018) [bib] [paper] [poster] のPythonによる実装です。

目次

  1. 準備
    1. 構成
    2. 資源
    3. S3
    4. Docker
    5. Pipenv
    6. PostgreSQL
  2. 使い方
    1. 学習
    2. 予測
  3. Webインターフェース
  4. テスト
  5. ライセンスと参考文献
  6. 著作権と謝辞

準備

構成

システムの構成は以下の図のようになっています。

アイコンのクレジット

資源

  • 時系列データ 時系列データはThomson Reuters DatScope Selectとの契約により利用可能になるREST API を用いて取得しました。
  • テキストデータ 日経QUICKニュース社から購入したものを使用しています。

Amazon S3

本ソフトウェアはAmazon S3を使用します。 使用前にAmazonS3FullAccessが付与されていることを確認してください。 詳細については公式のドキュメントAWS Identity and Access Managementをご覧ください。

Docker

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` でコンテナの一覧が表示されます

Pipenv

このプロジェクトに必要となるPythonライブラリをインストールには、Pipenvを利用することをお薦めします。

brew install pipenv  # Linuxbrew and Homebrew
pipenv install --dev
pipenv shell

PostgreSQL

例えば自分のマシン上にある 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.logreporter.modelreporter.vocab) が config.output_dir/reporter-DATETIME 以下に出力されます。 ここで、 config.output_dirconfig.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

Webインターフェース

以下のコマンドを実行し、ブラウザで 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)の委託業務の結果得られたものです。