このプロジェクトは、ニューラル会話モデルの多様性促進目的関数で説明されている MMI アンチ モデルの pytorch 実装です。
このコードは OpenNMT-py と word_ language_model に基づいています
python preprocess.py
data/
フォルダー内のいくつかのサンプルデータを使用して作業します。データは、並列対話コンテキスト ( .en
) とその応答 ( .vi
) データで構成され、スペースで区切られたトークンを含む 1 行に 1 つの文が含まれます。
train.en
train.vi
dev.en
dev.vi
前処理を実行すると、 data/
フォルダーに次のファイルが生成されます。
dialogue.train.1.pt
: トレーニング データを含むシリアル化された PyTorch ファイルdialogue.valid.1.pt
: 検証データを含むシリアル化された PyTorch ファイルdialogue.vocab.pt
: 語彙データを含むシリアル化された PyTorch ファイル。言語モデルのトレーニング プロセスで使用されます。 cd lm/tool/
このステップでは、MMI アンチ モデル (サンプル データdata/*.vi
) の応答に基づいて言語モデルをトレーニングします。この言語モデルは MMI アンチ モデルで使用されるため、 Step1
で生成された辞書 ( data/*.vocab.pt
) を共有します。
python preprocess.py
これらの前処理により、MMI アンチ モデルのすべての応答 (サンプル データdata/*.vi
) が言語モデルの並列データに変換されます。
前処理を実行すると、 lm/data/
フォルダーに次のファイルが生成されます。
train.en
train.de
dev.en
dev.de
たとえば、ファイルdata/train.vi
内の"they just want a story"
応答は、ファイルlm/data/train.en
内の"<s> they just want a story"
に前処理され、 "they just want a story </s>"
ファイルlm/data/train.de
にあります。
cd ../
python lm.py
この train コマンドは、言語モデルをlm/model.pt
に保存します。
このコードを CPU で実行するには、pytorch を24th Feb 2018
以降のバージョンに更新し、このコードがtorchtext/data/iterator.py
に存在することを確認する必要があります。
if not torch.cuda.is_available() and self.device is None:
self.device = -1
python generate.py
このツールは、言語モデルlm/model.pt
を使用して 1000 個の発話をランダムに生成し、それらをファイルlm/generated.txt
に保存します。
cd ../
python train.py
python translate.py -model model_name
生成結果はファイルpred.txt
に保存されます。
cat pred.txt | python diversity.py