código/dados para o artigo NAACL'19 Otimizando conjuntamente a diversidade e a relevância na geração de respostas neurais
SpaceFusion é um paradigma de aprendizagem multitarefa regularizado proposto para alinhar e estruturar os espaços latentes não estruturados aprendidos por diferentes modelos treinados em diferentes conjuntos de dados. De particular interesse é a sua aplicação à modelagem de conversas neurais, onde o SpaceFusion é usado para otimizar conjuntamente a relevância e a diversidade das respostas geradas.
Mais documentos:
nosso artigo na NAACL'19 (longo, oral).
Os slides apresentados na NAACL'19.
Publicamos um blog MSR para discutir a intuição e as implicações
nosso trabalho de acompanhamento, StyleFusion no EMNLP'19
nossos mais recentes modelos de avaliação/classificação de diálogo, DialogRPT, no EMNLP'20
o código é testado usando Python 3.6 e Keras 2.2.4
Fornecemos scripts para gerar Reddit e processar conjuntos de dados do Switchboard, bem como um conjunto de dados de brinquedo neste repositório para depuração.
Por favor, verifique aqui para mais detalhes.
Para treinar um modelo SpaceFusion: python src/main.py mtask train --data_name=toy
Para visualizar o espaço latente aprendido: python src/vis.py --data_name=toy
Para interagir com o modelo treinado: python src/main.py mtask interact --data_name=toy --method=?
, onde o método pode ser greedy
, rand
, sampling
ou beam
. Usamos rand
no jornal
Para gerar hipóteses para teste com o modelo treinado: python src/main.py mtask test --data_name=toy
Para avaliar as hipóteses geradas python src/eval.py --path_hyp=? --path_ref=? --wt_len=?
, que gera a precisão, recall e F1 conforme definido no artigo. Você pode primeiro executar este comando com -len_only
para encontrar um wt_len
adequado que minimize a diferença entre o comprimento médio (número de tokens) da hipótese e da referência.
main.py
é o arquivo principal
model.py
define o modelo SpaceFusion (consulte class MTask
) e algumas linhas de base
vis.py
define a função que usamos para visualizar e analisar o espaço latente
dataset.py
define o alimentador de dados
shared.py
define os hiperparâmetros padrão
Por favor, cite nosso artigo da NAACL se este repositório inspirou seu trabalho :)
@article{gao2019spacefusion, title={Jointly Optimizing Diversity and Relevance in Neural Response Generation}, author={Gao, Xiang and Lee, Sungjin and Zhang, Yizhe and Brockett, Chris and Galley, Michel and Gao, Jianfeng and Dolan, Bill}, journal={NAACL-HLT 2019}, year={2019} }