LoginSignup
5
5

More than 5 years have passed since last update.

DrQAを試してみる

Last updated at Posted at 2017-12-14

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でもできるかも?

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5