Kumpulan garis dasar dialog multi-putaran atau satu putaran yang siap digunakan.
Selamat datang PR dan isu.
Skrip praproses untuk kumpulan data ini dapat ditemukan di folder data/data_process
.
Tiga kumpulan data dialog domain terbuka multi-putaran (Dialog Harian, DSTC7_AVSD, PersonaChat) dapat diperoleh melalui tautan ini
Setiap dataset berisi 6 file
Di semua file, satu baris hanya berisi satu konteks dialog (src) atau respons dialog (tgt). Detail lebih lanjut dapat ditemukan di file contoh. Untuk membuat grafik, setiap kalimat harus dimulai dengan token khusus <user0>
dan <user1>
yang menunjukkan pembicara. __eou__
digunakan untuk memisahkan beberapa kalimat dalam konteks percakapan. Detail lebih lanjut dapat ditemukan dalam kasus data kecil.
Seq2Seq, SeqSeq_MHA, HRED, HRED_RA, VHRED, WSeq, WSeq_RA, DSHRED, DSHRED_RA, HRAN, MReCoSa, MReCoSa_RA
daildydialog, ubuntu, dstc7, personachat, empchat
Sebelum menjalankan perintah berikut, pastikan folder penting telah dibuat:
mkdir -p processed/ $DATASET
mkdir -p data/ $DATASET
mkdir -p tblogs/ $DATASET
mkdir -p ckpt/ $DATASET
Variabel DATASET
berisi nama dataset yang ingin diproses
# 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 >
Tunjukkan panjang ucapan, putaran setting multi-turn dan sebagainya.
./run.sh stat < dataset >
Latih Model Bahasa N-gram dengan NLTK (Lidstone dengan gamma 0,5, n-gram default adalah 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 >
Terjemahkan sejumlah model
# 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 >
Evaluasi sejumlah model
# 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 >
Lihat makalah: 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
. Perlu dicatat bahwa vanilla Transformer sangat sulit mendapatkan kinerja yang baik pada kumpulan data ini. Untuk memastikan kinerja yang stabil, saya memanfaatkan perhatian mandiri multi-head (1 lapisan, Anda dapat mengubahnya) pada Seq2Seq-attn berbasis RNN, yang menunjukkan kinerja lebih baik.Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models
. Peningkatan HRED dengan perhatian tingkat ucapan.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
, tanpa kehilangan BOW (masih dalam pengembangan, selamat datang PR)Context-Sensitive Generation of Open-Domain Conversational Responses
, mekanisme perhatian dinamis dan statis pada HREDReCoSa: Detecting the Relevant Contexts with Self-Attention for Multi-turn Dialogue Generation
. Perlu dicatat bahwa implementasi di sini sedikit berbeda dari kode aslinya, tetapi lebih kuat dan praktis (perhatian mandiri multi-head 3 lapis tetapi hanya 1 lapis di kertas asli).Hierarchical Recurrent Attention Network for Response Generation
, sebenarnya sama dengan HRED dengan mekanisme perhatian tingkat kata.