código/datos para el documento NAACL'19 Optimización conjunta de la diversidad y la relevancia en la generación de respuestas neuronales
SpaceFusion es un paradigma de aprendizaje multitarea regularizado propuesto para alinear y estructurar los espacios latentes no estructurados aprendidos por diferentes modelos entrenados en diferentes conjuntos de datos. De particular interés es su aplicación al modelado de conversaciones neuronales, donde se utiliza SpaceFusion para optimizar conjuntamente la relevancia y diversidad de las respuestas generadas.
Más documentos:
nuestro artículo en NAACL'19 (largo, oral).
Las diapositivas presentadas en NAACL'19.
Publicamos un blog de MSR para discutir la intuición y la implicación.
nuestro trabajo de seguimiento, StyleFusion en EMNLP'19
nuestros últimos modelos de evaluación/clasificación de diálogo, DialogRPT, en EMNLP'20
el código se prueba usando Python 3.6 y Keras 2.2.4
Proporcionamos scripts para generar Reddit y procesar conjuntos de datos de Switchboard, así como un conjunto de datos de juguete en este repositorio para depuración.
Por favor consulte aquí para más detalles.
Para entrenar un modelo SpaceFusion: python src/main.py mtask train --data_name=toy
Para visualizar el espacio latente aprendido: python src/vis.py --data_name=toy
Para interactuar con el modelo entrenado: python src/main.py mtask interact --data_name=toy --method=?
, donde el método puede ser greedy
, rand
, sampling
o beam
. Usamos rand
en el periódico.
Para generar hipótesis para probar con el modelo entrenado: python src/main.py mtask test --data_name=toy
Para evaluar las hipótesis generadas python src/eval.py --path_hyp=? --path_ref=? --wt_len=?
, que genera la precisión, la recuperación y F1 como se define en el documento. Es posible que desee ejecutar primero este comando con -len_only
para encontrar un wt_len
adecuado que minimice la diferencia entre la longitud promedio (número de tokens) de la hipótesis y la referencia.
main.py
es el archivo principal
model.py
define el modelo SpaceFusion (ver class MTask
) y algunas líneas base
vis.py
define la función que utilizamos para visualizar y analizar el espacio latente
dataset.py
define el alimentador de datos
shared.py
define los hiperparámetros predeterminados.
Cite nuestro artículo NAACL si este repositorio inspiró su trabajo :)
@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} }