Edited at

DrQAを試してみる

More than 1 year has passed since last update.

Facebook開発のWikipediaをコーパスとする質問応答の深層学習モデルであるDrQAを試してみた。

githubの方に、インストール手順と簡単な実行サンプルが記載されているので、そのままやってみた。


PyTorchのインストール

PyTorchの公式サイトのGetStartedに従う。cudaのバージョンを調べてから、条件にあうものをインストールした。

nvcc --version

pip install http://download.pytorch.org/whl/cu80/torch-0.3.0.post4-cp35-cp35m-linux_x86_64.whl 

pip install torchvision


DrQAの依存ライブラリのインストール


依存するPythonパッケージのインストール

githubのInstallを参照し、そのまま実行。

git clone https://github.com/facebookresearch/DrQA.git

cd DrQA; pip install -r requirements.txt; python setup.py develop


Stanford CoreNLPのインストール

以下のコマンドだけでOK。

デフォルトで環境変数の.bashrcへの設定も行ってくれる。

./install_corenlp.sh


動作確認

動作確認をしてみる。

最初の2行でCoreNLPのライブラリを読みに行くパスを指定している。これは先程のCoreNLPのインストール時に環境変数で指定していれば不要。

import drqa.tokenizers

drqa.tokenizers.set_default('corenlp_classpath', 'data/corenlp/*')

from drqa.tokenizers import CoreNLPTokenizer
tok = CoreNLPTokenizer()
tok.tokenize('hello world').words() # Should complete immediately

以下のようなリストが得られる。

['hello', 'world']


データセットの取得

データセットをダウンロードする。学習済みのモデルも含まれている。以下のコマンドだけでOKだが、全部で25GBもあり、そこそこ時間がかかる。

./download.sh


実行してみる

CoreNLPの環境変数を設定したうえで、interactive.pyを実行するとインタラクティブモードになるので、クエリを投げることができる。

定期的にTimeOutErrorが表示される場合は、おそらく環境変数が間違っている。

export CLASSPATH=$CLASSPATH:data/corenlp/*

python scripts/pipeline/interactive.py


  • What is question answering?

スクリーンショット 2017-12-11 21.54.46.png


  • What is the answer to life, the universe, and everything?

『銀河ヒッチハイクガイド』に出てくる「生命、宇宙、そして万物についての究極の疑問の答え」について聞いみると…

スクリーンショット 2017-12-11 21.54.29.png

42!


  • Who was the winning pitcher in the 1956 World Series?

スクリーンショット 2017-12-11 21.55.05.png

でも、こんな例もある。


  • Who is Barack Obama?

スクリーンショット 2017-12-11 21.55.17.png

オバマはヒラリーという回答に…。


感想

精度はともかく、論文を読んでネットワークを把握した上で自分で学習させてみたい。Tokenizerを変更すれば、日本語のwikipediaでもできるかも?