Um lote de linhas de base de diálogo multivoltas ou de volta única prontas para uso.
Bem-vindos, PRs e problemas.
O script de pré-processamento para esses conjuntos de dados pode ser encontrado na pasta data/data_process
.
Três conjuntos de dados de diálogo de domínio aberto multivoltas (Dailydialog, DSTC7_AVSD, PersonaChat) podem ser obtidos por este link
Cada conjunto de dados contém 6 arquivos
Em todos os arquivos, uma linha contém apenas um contexto de diálogo (src) ou a resposta do diálogo (tgt). Mais detalhes podem ser encontrados nos arquivos de exemplo. Para criar o gráfico, cada frase deve começar com os tokens especiais <user0>
e <user1>
que denotam o locutor. O __eou__
é usado para separar as múltiplas frases no contexto da conversa. Mais detalhes podem ser encontrados no caso de pequenos dados.
Seq2Seq, SeqSeq_MHA, HRED, HRED_RA, VHRED, WSeq, WSeq_RA, DSHRED, DSHRED_RA, HRAN, MReCoSa, MReCoSa_RA
daildydialog, ubuntu, dstc7, personachat, empchat
Antes de executar os seguintes comandos, certifique-se de que as pastas essenciais foram criadas:
mkdir -p processed/ $DATASET
mkdir -p data/ $DATASET
mkdir -p tblogs/ $DATASET
mkdir -p ckpt/ $DATASET
A variável DATASET
contém o nome do conjunto de dados que você deseja processar
# 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 >
Mostre a duração das declarações, as voltas da configuração multi-voltas e assim por diante.
./run.sh stat < dataset >
Treine o modelo de linguagem N-gram por NLTK (Lidstone com gama 0,5, n-gram padrão é 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 >
Traduzir um 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 >
Avaliar um 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 o artigo: 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
. Deve-se notar que o Vanilla Transformer é muito difícil de obter um bom desempenho nesses conjuntos de dados. Para garantir o desempenho estável, aproveito a autoatenção de vários cabeçotes (1 camada, você pode alterá-la) no Seq2Seq-attn baseado em RNN, que mostra o melhor desempenho.Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models
. HRED aprimorado com atenção no nível da expressão.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
, sem perda de BOW (ainda em desenvolvimento, bem-vindo PR)Context-Sensitive Generation of Open-Domain Conversational Responses
, mecanismo de atenção dinâmico e estático no HREDReCoSa: Detecting the Relevant Contexts with Self-Attention for Multi-turn Dialogue Generation
. Deve-se notar que esta implementação aqui é um pouco diferente dos códigos originais, mas mais poderosa e prática (autoatenção multicabeças de 3 camadas, mas apenas 1 camada no papel original).Hierarchical Recurrent Attention Network for Response Generation
, na verdade é o mesmo que o HRED com mecanismo de atenção em nível de palavra.