DeepqaはKerasの上に建てられています。 PytorchはNLP研究のより良いプラットフォームであると判断しました。 deepqaをAllennlpと呼ばれるPytorchライブラリに書き直しました。 Deepqaの開発はこれ以上ありません。しかし、私たちはAllennlpについて非常に興奮しています - あなたが自然言語加工のために深い学習をしているなら、あなたはそれをチェックするべきです!
DeepQAは、特にさまざまな種類の質問応答に焦点を当てた、深い学習を備えた高レベルのNLPタスクを実行するためのライブラリです。 DeepqaはKerasとTensorflowの上に構築されており、NLPを容易にするこれらのシステムのインターフェースと考えることができます。
具体的には、このライブラリは、プレーンケラス /テンソルフローよりも次の利点を提供します。
DeepQAはPython 3を使用して構築されています。互換性のある環境をセットアップする最も簡単な方法は、Condaを使用することです。これにより、DeepQAを実行するために必要なすべての依存関係とともに、開発に使用されるPythonの正確なバージョンを使用して仮想環境を設定します。
Condaをダウンロードしてインストールします。
Python 3を使用してConda環境を作成します。
conda create -n deep_qa python=3.5
コンドラ環境をアクティブにします。
source activate deep_qa
必要な依存関係をインストールします。
./scripts/install_requirements.sh
繰り返し可能な実験のためにPYTHONHASHSEED設定します。
export PYTHONHASHSEED=2157
これで、 pytest -vでインストールをテストできるようになりました。おめでとう!これで、CPUサポートを使用してTensorflowを使用するDeep_QAの開発環境ができました。 (GPUサポートについては、 tensorflow-gpuのインストール方法については、要件を参照してください)。
DeepQAリポジトリのクローンを使用してモデルをトレーニングまたは評価するには、推奨されるエントリポイントはrun_model.pyスクリプトを使用することです。そのスクリプトの最初の引数は、以下で詳しく説明するパラメーターファイルです。 2番目の引数は、モデルをトレーニングするか、テストデータセットに対して訓練されたモデルを評価する動作を決定します。 2番目の引数の現在の有効なオプションは、 trainとtestです(引数を省略することは、 trainを通過するのと同じです)。
パラメーターファイル使用しているモデルクラス、モデルハイパーパラメーター、トレーニングの詳細、データファイル、データジェネレーターの詳細などを指定します。例ディレクトリにパラメーターファイルの例を見ることができます。ドキュメントを調べることで、どのパラメーターが利用できるかについての概念を取得できます。
実際にモデルをトレーニングするには、入力ファイルが必要になるため、提供する必要があります。コンパニオンライブラリ、DeepQA実験があります。これは、元々入力ファイルを生成して実験を実行するように設計されており、モデルのほとんどのタスクに必要なデータファイルを生成するために使用できます。データ処理コードをDeepQAに直接配置することを目指しているため、DeepQA実験は必要ありませんが、今のところ、DeepQA実験では適切な形式のトレーニングデータファイルを最も簡単に実行できます。
DeepQAを独自のコードでライブラリとして使用している場合、モデルを実行するのはまだ簡単です。 run_model.pyスクリプトを使用してトレーニング/評価を行う代わりに、次のように自分で実行できます。
from deep_qa import run_model, evaluate_model, load_model, score_dataset
# Train a model given a json specification
run_model("/path/to/json/parameter/file")
# Load a model given a json specification
loaded_model = load_model("/path/to/json/parameter/file")
# Do some more exciting things with your model here!
# Get predictions from a pre-trained model on some test data specified in the json parameters.
predictions = score_dataset("/path/to/json/parameter/file")
# Compute your own metrics, or do beam search, or whatever you want with the predictions here.
# Compute Keras' metrics on a test dataset, using a pre-trained model.
evaluate_model("/path/to/json/parameter/file", ["/path/to/data/file"])
残りの使用ガイドライン、例などは、リポジトリのクローンで作業する場合と同じです。
DeepQAに新しいモデルを実装するには、 TextTrainerサブクラス化する必要があります。これに必要なものに関するドキュメントがあります。特に、抽象的なメソッドセクションを参照してください。完全に機能するモデルの簡単な例については、実際の実装コードの約20行があるシンプルなシーケンスタガーを参照してください。
自分で書いたモデルをトレーニング、ロード、評価するために、上記の関数に追加の引数を渡し、JSON仕様からmodel_classパラメーターを削除するだけです。例えば:
from deep_qa import run_model
from .local_project import MyGreatModel
# Train a model given a json specification (without a "model_class" attribute).
run_model("/path/to/json/parameter/file", model_class=MyGreatModel)
新しいタスク、または異なる入出力/出力仕様を備えたタスクの新しいバリアントを行っている場合は、おそらくInstanceタイプを実装する必要があります。このInstance 、ファイルからデータの読み取りを処理し、トレーニングと評価に使用できるnumpy配列に変換します。これは、各入力/出力仕様に対して1回だけ発生する必要があります。
DeepQAには、さまざまなタスクの最先端の方法の実装があります。ここにそれらのいくつかがあります:
このコードにより、次のデータセットで簡単に実験できます。
ただし、このほとんどのデータ処理コードは現在、DeepQA実験に存在していることに注意してください。
このコードを使用して、何かが改善される可能性があると思う場合、プルリクエストは大歓迎です。問題を開くことも問題ありませんが、リクエストをプルするためにはるかに迅速に対応できます。
このコードは、Apache 2ライセンスの条件の下でリリースされます。