NAACL'19 论文“Jointly Optimizing Diversity and Relevance in Neural Response Generation”的代码/数据
SpaceFusion 是一种正则化的多任务学习范式,旨在对齐和构造通过在不同数据集上训练的不同模型学习到的非结构化潜在空间。特别令人感兴趣的是它在神经对话建模中的应用,其中 SpaceFusion 用于联合优化生成响应的相关性和多样性。
更多文档:
我们在 NAACL'19 上的论文(长,口头)。
NAACL'19 上展示的幻灯片。
我们发表了MSR博客来讨论直觉和含义
我们的后续工作,StyleFusion at EMNLP'19
我们最新的对话评估/排名模型 DialogRPT,在 EMNLP'20 上
该代码使用 Python 3.6 和 Keras 2.2.4 进行测试
我们提供了脚本来生成 Reddit 并处理 Switchboard 数据集以及此存储库中的玩具数据集以进行调试。
请查看此处了解更多详情。
训练 SpaceFusion 模型: python src/main.py mtask train --data_name=toy
可视化学习到的潜在空间: python src/vis.py --data_name=toy
要与经过训练的模型交互: python src/main.py mtask interact --data_name=toy --method=?
,其中方法可以是greedy
、 rand
、 sampling
或beam
。我们在论文中使用了rand
要生成用于使用经过训练的模型进行测试的假设: python src/main.py mtask test --data_name=toy
评估生成的假设python src/eval.py --path_hyp=? --path_ref=? --wt_len=?
,它输出论文中定义的精度、召回率和 F1。您可能需要首先使用-len_only
运行此命令,以找到合适的wt_len
,以最小化假设和参考的平均长度(标记数量)之间的差异。
main.py
是主文件
model.py
定义了 SpaceFusion 模型(参见class MTask
)和一些基线
vis.py
定义了我们用来可视化和分析潜在空间的函数
dataset.py
定义数据馈送器
shared.py
定义默认超参数
如果此存储库启发了您的工作,请引用我们的 NAACL 论文:)
@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} }