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?
- What is the answer to life, the universe, and everything?
『銀河ヒッチハイクガイド』に出てくる「生命、宇宙、そして万物についての究極の疑問の答え」について聞いみると…
42!
- Who was the winning pitcher in the 1956 World Series?
でも、こんな例もある。
- Who is Barack Obama?
オバマはヒラリーという回答に…。
感想
精度はともかく、論文を読んでネットワークを把握した上で自分で学習させてみたい。Tokenizerを変更すれば、日本語のwikipediaでもできるかも?