这是论文的 PyTorch 实现:
MoEL:具有同理心的听众的混合体。林兆江、Andrea Madotto、Jamin Shin、徐鹏、Pascale Fung EMNLP 2019 [PDF]
此代码是使用 PyTorch >= 0.4.1 编写的。如果您在工作中使用此工具包中包含的任何源代码或数据集,请引用以下论文。 bibtex 列出如下:
@文章{lin2019moel, title={MoEL:善解人意的听众的混合体}, 作者={Lin、赵江和Madotto、Andrea和Shin、Jamin和Xu、Peng和Fung、Pascale}, 期刊={arXiv预印本arXiv:1908.07687}, 年={2019} }
先前对移情对话系统的研究主要集中于在特定情绪下产生反应。然而,同理心不仅需要产生情绪反应的能力,更重要的是需要理解用户的情绪并做出适当的回复。在本文中,我们提出了一种新颖的端到端方法来对对话系统中的同理心进行建模:同理心听众的混合(MoEL)。我们的模型首先捕获用户情绪并输出情绪分布。基于此,MoEL 将轻柔地组合适当监听器的输出状态,每个监听器都经过优化以对某些情绪做出反应,并生成同理心响应。对同理心对话数据集的人类评估证实,MoEL 在同理心、相关性和流畅性方面优于多任务训练基线。此外,对不同听众生成的响应的案例研究显示了我们的模型的高度可解释性。
听众注意力的可视化:左侧是上下文,后面是 MoEL 生成的响应。热图显示了 32 位听众的注意力权重
检查所需的包或只需运行命令
❱❱❱ pip install -r requirements.txt
预训练的手套嵌入:文件夹 /vectors/ 内的glove.6B.300d.txt 。
速效
要跳过训练,请检查Generation_result.txt 。
数据集
数据集(empathetic-dialogue)经过预处理并以 npy 格式存储:sys_dialog_texts.train.npy、sys_target_texts.train.npy、sys_emotion_texts.train.npy,其中包含上下文(源)、响应(目标)和情感标签的并行列表(附加标签)。
训练&测试
教育部
❱❱❱ python3 main.py --model experts --label_smoothing --noam --emb_dim 300 --hidden_dim 300 --hop 1 --heads 2 --topk 5 --cuda --pretrain_emb --softmax --basic_learner --schedule 10000 --save_path save/moel/
变压器基线
❱❱❱ python3 main.py --model trs --label_smoothing --noam --emb_dim 300 --hidden_dim 300 --hop 2 --heads 2 --cuda --pretrain_emb --save_path save/trs/
多任务 Transformer 基线
❱❱❱ python3 main.py --model trs --label_smoothing --noam --emb_dim 300 --hidden_dim 300 --hop 2 --heads 2 --cuda --pretrain_emb --multitask --save_path save/multi-trs/