Un lote de líneas base de diálogo de un solo o varios turnos listas para usar.
Bienvenidos relaciones públicas y problemas.
El script de preproceso para estos conjuntos de datos se puede encontrar en la carpeta data/data_process
.
En este enlace se pueden obtener tres conjuntos de datos de diálogo de dominio abierto de múltiples turnos (Dailydialog, DSTC7_AVSD, PersonaChat)
Cada conjunto de datos contiene 6 archivos.
En todos los archivos, una línea contiene solo un contexto de diálogo (src) o la respuesta del diálogo (tgt). Se pueden encontrar más detalles en los archivos de ejemplo. Para crear el gráfico, cada oración debe comenzar con los tokens especiales <user0>
y <user1>
que denotan al hablante. El __eou__
se utiliza para separar varias oraciones en el contexto de la conversación. Se pueden encontrar más detalles en el caso de datos pequeños.
Seq2Seq, SeqSeq_MHA, HRED, HRED_RA, VHRED, WSeq, WSeq_RA, DSHRED, DSHRED_RA, HRAN, MReCoSa, MReCoSa_RA
daildydialog, ubuntu, dstc7, personachat, empchat
Antes de ejecutar los siguientes comandos, asegúrese de que estén creadas las carpetas esenciales:
mkdir -p processed/ $DATASET
mkdir -p data/ $DATASET
mkdir -p tblogs/ $DATASET
mkdir -p ckpt/ $DATASET
La variable DATASET
contiene el nombre del conjunto de datos que desea procesar.
# 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 >
Muestre la duración de las expresiones, los turnos de la configuración de múltiples turnos, etc.
./run.sh stat < dataset >
Entrene el modelo de lenguaje N-gram mediante NLTK (Lidstone con gamma 0,5, el n-gram predeterminado es 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 >
Traducir un lote de modelos
# 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 >
Evaluar un lote de modelos.
# 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 >
Consulte el artículo: 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
. Cabe señalar que Vanilla Transformer es muy difícil de obtener un buen rendimiento en estos conjuntos de datos. Para garantizar un rendimiento estable, aprovecho la autoatención de múltiples cabezales (1 capa, puede cambiarla) en Seq2Seq-attn basado en RNN, que muestra un mejor rendimiento.Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models
. HRED mejorado con atención a nivel de expresión.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
, sin pérdida de BOW (aún en desarrollo, bienvenido PR)Context-Sensitive Generation of Open-Domain Conversational Responses
, mecanismo de atención dinámico y estático en HREDReCoSa: Detecting the Relevant Contexts with Self-Attention for Multi-turn Dialogue Generation
. Cabe señalar que esta implementación aquí es un poco diferente de los códigos originales, pero más poderosa y práctica (autoatención de múltiples cabezales de 3 capas pero solo 1 capa en el documento original).Hierarchical Recurrent Attention Network for Response Generation
, en realidad es lo mismo que HRED con mecanismo de atención a nivel de palabra.