Github: https://github.com/OpenNMT/OpenNMT-py
OpenNMT-py:オープンソース神経機械翻訳
これはオープンソース(MIT)の神経機械翻訳システムであるOpenNMTのPytorchポートです。 翻訳、要約、イメージからテキスト、形態学、その他多くの分野で新しいアイデアを試してみることができます。
コードベースは比較的安定していますが、PyTorchはまだ進化しています。 現在、安定したコードが必要な場合は、フォークすることをお勧めします。
OpenNMT-pyは共同オープンソースプロジェクトとして実行されます。 Sasha Rush (ケンブリッジ、マサチューセッツ州)、 Ben Peters (Saarbrücken)、 Jianyu Zhan (深圳)が管理しています。 元のコードはAdam Lerer (NYC)によって書かれました。 私たちは貢献が大好きです。 Contributions Welcomeタグ付き投稿のIssuesページを参照してください。
目次
要件
pip install -r requirements.txt
特徴
次のOpenNMT機能が実装されています。
- データ前処理
- バッチ処理とビーム探索による推論(翻訳)
- 複数のソースおよびターゲットRNN(lstm / gru)タイプと注意(dotprod / mlp)タイプ
- TensorBoard /クレヨンロギング
- ソース単語の機能
- 事前に埋め込まれた埋め込み
- 注意をコピー&カバレッジ
- 画像からテキストへの処理
- 音声対テキスト処理
- “注意はあなたが必要とするすべてです”
- 推論時間損失関数。
ベータ機能(コミット済み):
- マルチGPU
- 構造化された注意
- [Conv2Conv畳み込みモデル]
- SRU「CNNよりも速いRNN」紙
クイックスタート
ステップ1:データを前処理する
python preprocess.py -train_src data/src-train.txt -train_tgt data/tgt-train.txt -valid_src data/src-val.txt -valid_tgt data/tgt-val.txt -save_data data/demo
私たちはdata/
フォルダー内のいくつかのサンプルデータを扱います。
データは、スペースで区切られたトークンを含む行ごとに1つのセンテンスを含む並列ソース( src
)およびターゲット( tgt
)データで構成されます。
-
src-train.txt
-
tgt-train.txt
-
src-val.txt
-
tgt-val.txt
バリデーションファイルが必要であり、トレーニングのコンバージェンスを評価するために使用されます。 それは通常、5000文以下である。
前処理を実行すると、次のファイルが生成されます。
-
demo.train.pt
:トレーニングデータを含むシリアル化されたPyTorchファイル -
demo.valid.pt
:検証データを含むシリアル化されたPyTorchファイル -
demo.vocab.pt
:ボキャブラリデータを含むシリアル化されたPyTorchファイル
内部的には、システムは言葉自体に触れることはありませんが、これらの指標を使用します。
ステップ2:モデルをトレーニングする
python train.py -data data/demo -save_model demo-model
主要な列車のコマンドは非常に簡単です。 最小限は、データファイルと保存ファイルが必要です。 これは、エンコーダ/デコーダの両方に500個の隠れユニットがある2層LSTMで構成されるデフォルトモデルを実行します。 -gpuid 1
を追加して-gpuid 1
を使用することもできます。
ステップ3:翻訳
python translate.py -model demo-model_acc_XX.XX_ppl_XXX.XX_eX.pt -src data/src-test.txt -output pred.txt -replace_unk -verbose
新しいデータを予測するためのモデルを作成しました。 ビーム探索を実行することでこれを行います。 予測結果をpred.txt
出力しpred.txt
。
!!! メモ “デモデータセットが小さいため、予測は非常に恐ろしいものになります。 より大きなデータセットを試してみてください! たとえば、 翻訳や要約のために何百万ものパラレルセンテンスをダウンロードすることができます。
事前に埋め込まれた埋め込み(例えば、GloVe)
チュートリアル: OpenNMT-pyにGloVeの事前に訓練された埋め込みを使用する方法
事前トレーニングされたモデル
以下の事前モデルは、translate.pyでダウンロードして使用できます。
引用
@inproceedings{opennmt,
author = {Guillaume Klein and
Yoon Kim and
Yuntian Deng and
Jean Senellart and
Alexander M. Rush},
title = {OpenNMT: Open-Source Toolkit for Neural Machine Translation},
booktitle = {Proc. ACL},
year = {2017},
url = {https://doi.org/10.18653/v1/P17-4012},
doi = {10.18653/v1/P17-4012}
}