MultiTurnDialogZoo
1.0.0
一批現成的多輪或單輪對話基準。
歡迎 PR 和問題。
這些資料集的預處理腳本可以在data/data_process
資料夾下找到。
三個多輪開放域對話資料集(Dailydialog、DSTC7_AVSD、PersonaChat)可以透過此連結獲取
每個資料集包含6個文件
在所有文件中,一行僅包含一個對話上下文(src)或對話回應(tgt)。更多詳細資訊可以在範例文件中找到。為了建立圖表,每個句子必須以表示說話者的特殊標記<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-gram 語言模型(Lidstone,gamma 為 0.5,預設 n-gram 為 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
,無 BOW 損失(仍在開發中,歡迎 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 相同。