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 相同。