中立的语句也是原因: 用社交常识知识增强对话中的情绪原因蕴含
论文地址:https://arxiv.org/abs/2205.00759
Tips: 对话情感原因,不同在于情感原因提取任务(ECE)是针对新闻等较为正规的文本展开研究的,而是面向语句关系、人物关系更加复杂且信息更加稀疏的对话场景。
1 引言
任务:对话中的情绪原因蕴含 (Conversational Causal Emotion Entailment, C2E2) 是识别对话中的情绪原因中的一个重要子任务。旨在从对话历史中找到引起某个语句情绪的原因语句, 是一个分类类型的任务。
现有方法:
(1) 将【①目标句子的情绪;②目标句子 ;③原因候选句子 ; ④目标句的历史上下文句子】进行拼接,组成一个添加了“额外信息”的句对文本,然后传给预训练模型RoBERTa进行二分类。优点: 囊括了所有的历史上下文,缺点: 忽略了对对话中语句之间交互关系的显式建模,这种交互关系不仅仅是语句语义层面的,还有语句所属说话者之间的交互。
(2) 基于图的C2E2,同时考虑语句的情绪信息。优点: 建图的方式能建模语句交互关系,取得更好的性能,并且增加情绪信息能够大幅度提升与目标语句情绪相同的原因语句的抽取性能,缺点: 原因句子有87%没有明显情感倾向,“ 图网络+情绪 ” 的方法效果不好。例如对于某个情绪为“伤心”的语句,情绪信息可以帮助抽取那些负面情绪的原因语句,而不一定能够帮助抽取“中立”的没有明显情感倾向的原因语句。
科学问题:
如何提高模型推理引起情绪的原因线索的能力,实现从一个中立的语句中判断出该语句能够对其他语句产生什么样的情绪影响。例如,模型应具有推理能力,识别中性句子:“ 别人打错电话 ” 会引起某人的 “ 负面情绪 ”。
想法: 引入社交常识知识
社交常识知识可以根据语句的内容来推理这个语句能够对当前说话的人和其他听者产生什么样的影响,这种影响通常会作用于行为和心情。如上图所示:社交常识知识通过分析u2 “ 不对,是你打错了电话 ”,可以推理出这句话会对其他人产生以下影响:“ 会使得别人觉得迷惑 ”,“ 会使得别人觉得沮丧 ”。“迷惑”、“沮丧” 这些负面词能够使得其他人产生“伤心”这种情绪,在社交常识知识的帮助下,模型可以做出正确判断。
论文方法: 提出一种知识增强的对话图结构(KEC)
亮点1.. 提出一个对说话者和情绪感知的知识选择策略
亮点2. 扩展对话图结构(KEC) ,使其支持额外的知识传递。
亮点3. KEC可以更好地发掘与目标语句情绪不同的原因语句。
2 知识增强的对话图结构KEC
2.1 数据与任务额外说明
C2E2除了提供历史上下文外,还提供了每个语句 u i u_i ui 的情绪 e i ∈ [ h a p p i n e s s , n e u t r u a l , . . . ] e_i \in[happiness,neutrual,...] ei∈[happiness,neutrual,...]和对应的说话者 p i ∈ [ S p e a k e r 1 , S p e a k e r 2 ] p_i \in[Speaker1,Speaker2] pi∈[Speaker1,Speaker2] 。对于对话中的每个语句,都可以将其作为目标语句,即使它的情绪为“中立”,这样以该语句为目标语句的语句对的标签都为0 (即不存在原因语句)。
情绪-原因对 | train | dev | test |
---|---|---|---|
正 | 7027 | 328 | 1767 |
负样本 | 45392 | 2842 | 14052 |
2.2 图的构造
KEC可以表示为 g = ( V , A c , A k ) g=(V,A_c,A_k) g=(V,Ac,Ak) ,其中 V V V 表示对话中的语句节点集合, A c A_c Ac 代表语句交互关系的邻接矩阵, A k A_k Ak 代表知识传递的邻接矩阵。
V V V 包含了对话中所有语句节点 v i v_i vi, v i v_i vi 的 向量表示 s i s_i si 由预训练模型RoBERTa编码而得
A c A_c Ac 是一个下三角矩阵,因为C2E2只考虑对话历史上下文,因此对于未来的语句节点,当前节点没法访问. A c A_c Ac 包含两种属性: i t e m item item 和 r e l rel rel 其中 i t e m item item储存0或1,来代表某条边是否存在,存储这条边的类型。对于节点 v i v_i vi 和 v j v_j vj , A c [ i , j ] . i t e m = 1 A_c[i,j].item= 1 Ac[i,j].item=1 代表有一条边从 v j v_j vj 出发指向 v i v_i vi,0则不存在。关于边的关系,边关系主要有两种:相同说话者依赖 (Self-Dependency, SD) 和 不同说话者依赖 (Inter-speaker Dependency, ID),因此,如果 A c [ i , j ] . r e a l = S D A_c[i,j].real=SD Ac[i,j].real=SD,则代表 v i v_i vi 和 v j v_j vj 是同一个说话者,否则 A c [ i , j ] . r e a l = I D A_c[i,j].real=ID Ac[i,j].real=