MultiTurnDialogZoo
1.0.0
すぐに使用できるマルチターンまたはシングルターンの対話ベースラインのバッチ。
PR や問題点を歓迎します。
これらのデータセットの前処理スクリプトはdata/data_process
フォルダーにあります。
3 つのマルチターン オープンドメイン ダイアログ データセット (Dailydialog、DSTC7_AVSD、PersonaChat) は、このリンクから入手できます。
各データセットには 6 つのファイルが含まれています
すべてのファイルにおいて、1 行には対話コンテキスト (src) または対話応答 (tgt) が 1 つだけ含まれます。詳細については、サンプル ファイルを参照してください。グラフを作成するには、各文が話者を示す特別なトークン<user0>
と<user1>
で始まる必要があります。 __eou__
は、会話コンテキスト内の複数の文を区切るために使用されます。詳細については、小規模データのケースを参照してください。
Seq2Seq, SeqSeq_MHA, HRED, HRED_RA, VHRED, WSeq, WSeq_RA, DSHRED, DSHRED_RA, HRAN, MReCoSa, MReCoSa_RA
daildydialog, ubuntu, dstc7, personachat, empchat
次のコマンドを実行する前に、必須のフォルダーが作成されていることを確認してください。
mkdir -p processed/ $DATASET
mkdir -p data/ $DATASET
mkdir -p tblogs/ $DATASET
mkdir -p ckpt/ $DATASET
変数DATASET
には、処理するデータセットの名前が含まれます
# default 25000 words
./run.sh vocab < dataset >
# only MTGCN and GatedGCN need to create the graph
# zh or en
./run.sh graph < dataset > < zh/en > < cuda >
発話の長さ、マルチターン設定のターン数などを表示します。
./run.sh stat < dataset >
NLTK による N グラム言語モデルのトレーニング (0.5 ガンマを使用した Lidstone、デフォルトの N グラムは 3):
# train the N-gram Language model by NLTK
./run.sh lm < dataset >
./run.sh train < dataset > < model > < cuda >
# translate mode, dataset dialydialog, model HRED on 4th GPU
./run.sh translate < dataset > < model > < cuda >
モデルのバッチを翻訳する
# rewrite the models and datasets you want to translate
./run_batch_translate.sh < cuda >
# get the BLEU and Distinct result of the generated sentences on 4th GPU (BERTScore need it)
./run.sh eval < dataset > < model > < cuda >
モデルのバッチを評価する
# the performance are redirected into the file `./processed/<dataset>/<model>/final_result.txt`
./run_batch_eval.sh < cuda >
# draw the performance curve, but actually, you can get all the information from the tensorboard
./run.sh curve < dataset > < model > < cuda >
論文を参照してください: Do Neural Dialog Systems Use the Conversation History Effectively? An Empirical Study
# 10 mode for perturbation
./run.sh perturbation < dataset > < zh/en >
Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation
Attention is All you Need
。バニラの Transformer では、これらのデータセットで良好なパフォーマンスを得るのが非常に難しいことに注意してください。安定したパフォーマンスを確保するために、RNN ベースの Seq2Seq-attn でマルチヘッドセルフアテンション (1 層、変更可能) を活用し、より優れたパフォーマンスを示します。Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models
。発話レベルの注意力を備えた強化された HRED。How to Make Context More Useful? An Empirical Study on Context-Aware Neural Conversational Models
A Hierarchical Latent Variable Encoder-Decoder Model for Generating Dialogues
(まだ開発中、PR 歓迎)Context-Sensitive Generation of Open-Domain Conversational Responses
、HRED の動的および静的アテンション メカニズムReCoSa: Detecting the Relevant Contexts with Self-Attention for Multi-turn Dialogue Generation
。ここでのこの実装は元のコードとは少し異なりますが、より強力で実用的であることに注意してください (3 層のマルチヘッド自己注意ですが、元の論文では 1 層のみです)。Hierarchical Recurrent Attention Network for Response Generation
。実際には、単語レベルのアテンション メカニズムを備えた HRED と同じです。