ชุดของพื้นฐานการสนทนาแบบหลายเทิร์นหรือเทิร์นเดียวที่พร้อมใช้งาน
ยินดีต้อนรับประชาสัมพันธ์และประเด็นต่างๆ
สคริปต์การประมวลผลล่วงหน้าสำหรับชุดข้อมูลเหล่านี้สามารถพบได้ในโฟลเดอร์ 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
Variable 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 >
ฝึกฝนโมเดลภาษา N-gram โดย NLTK (Lidstone ที่มี 0.5 gamma ค่าเริ่มต้น 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
ควรสังเกตว่า vanilla Transformer นั้นยากมากที่จะได้รับประสิทธิภาพที่ดีบนชุดข้อมูลเหล่านี้ เพื่อให้แน่ใจว่าประสิทธิภาพมีเสถียรภาพ ฉันใช้ประโยชน์จากการเอาใจใส่ตนเองแบบหลายหัว (1 เลเยอร์ คุณสามารถเปลี่ยนได้) บน Seq2Seq-attn ที่ใช้ RNN ซึ่งแสดงประสิทธิภาพที่ดีขึ้น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
กลไกความสนใจแบบไดนามิกและแบบคงที่บน HREDReCoSa: Detecting the Relevant Contexts with Self-Attention for Multi-turn Dialogue Generation
ควรสังเกตว่าการใช้งานนี้แตกต่างจากโค้ดต้นฉบับเล็กน้อย แต่มีประสิทธิภาพและใช้งานได้จริงมากกว่า (การเอาใจใส่ตนเองแบบหลายหัว 3 ชั้น แต่มีเพียง 1 เลเยอร์ในเอกสารต้นฉบับ)Hierarchical Recurrent Attention Network for Response Generation
จริงๆ แล้วเหมือนกับ HRED ที่มีกลไกความสนใจระดับคำ