《Emotion-Cause Pair Extraction》论文解读

《Emotion-Cause Pair Extraction》论文解读

这是一篇2019ACL的杰出论文,链接: https://arxiv.org/abs/1906.01267v1.

Abstract

       Emotion cause extraction (ECE),实现的是在文本中给定情感,提取出潜在的原因。这个问题近些年广泛应用而得到人们的关注,然而ECE有两个不足:

  • 在原因提取之前情感必须要被标注;
  • 先标注、再提取忽视了二者的相互关系。

所以该论文提出了新的任务:emotion-cause pair extraction (ECPE),用来提取潜在的“情感-原因”对。在ECPE中分为两步,首先通过多任务学习分别提取情感和原因,然后进行情感和原因的配对并进行过滤。

Main contributions:
  • 提出了新任务ECPE,解决了传统ECE任务依赖于标注的短板
  • 提出了two-step框架解决ECPE
  • 基于ECE语料库构造了适合ECPE任务的语料库
1.Introduction

       如下图所示,有五个子句,情感“happy”在第四个句子中,并称之为emotion clause,它有两个对应的cause clause:“a policeman visited the old man with the lost money”和“told him that the thief was caught”,由于包含着原因,所以这两个定义为cause clause。

       ECE任务是一个二分类问题,目标是检查文档中的每一个子句是否是被标注情感的原因。这篇论文提出的ECPE与ECE的区别如下图所示,ECPE的输出为“情感-原因”对,不需要事先对情感进行标注。在下图的例子中,在ECE中,已知情感是“happy”,目标是提取出两个cause clause:“a policeman visited the old man with the lost money”和“and told him that the thief was caught”;在ECPE中,目标是直接提取所有的 “情感-原因” 对,有:(“The old man was very happy”, “a policeman visited the old man with the lost money”)和(“The old man was very happy”,“and told him that the thief was caught”)

本文提出的任务主要有两个步骤:

  • 把“情感-原因”提取任务通过多任务学习网络分为两个独立的任务:提取出情感子句 E = { c 1 e , ⋯   , c m e } E=\{c_1^e,\cdots,c_m^e\} E={c1e,,cme}和原因子句 C = { c 1 c , ⋯   , c n c } C=\{c_1^c,\cdots,c_n^c\} C={c1c,,cnc}
  • 将 E 和 C 通过笛卡尔乘积进行配对,通过训练一个filter过滤掉不包含情感和原因关系的配对
2.Approach

        首先给出ECPE符号定义:一个包含多个子句的文档 d = { c 1 , c 2 , ⋯   , c ∣ d ∣ } d=\{c_1,c_2,\cdots,c_{\vert d\vert}\} d={c1,c2,,cd}
ECPE的目标是提取“情感-原因”对: P = { ⋯   , ( c e , c c ) , ⋯   } P=\{\cdots,(c^e,c^c),\cdots\} P={,(ce,cc),}
其中, c e c^e ce是情感子句, c c c^c cc是原因子句;在传统抽取任务中,目标是在给定 c e c^e ce的条件下抽取 c c c^c cc c e → c c c^e \rightarrow c^c cecc

  • Step 1:情感提取和原因提取
            第一步有Independent Multi-task Learning和 Interactive Multi-task Learning两种方法,后者要优于前者,可以在前者基础上进一步抓取了情感和原因之间的联系,下面对这两种方法进行介绍:
    • Independent Multi-task Learning
              有文档 d = { c 1 , c 2 , ⋯   , c ∣ d ∣ } d=\{c_1,c_2,\cdots,c_{\vert d\vert}\} d={c1,c2,,cd},每个句子 c i c^i ci包含多个单词 c i = { w i , 1 , w i , 2 , ⋯   , w i , ∣ c i ∣ } c_i=\{w_{i,1},w_{i,2},\cdots,w_{i,\vert c_i\vert}\} ci={wi,1,wi,2,,wi,ci}, 使用2层的Bi-LSTM,如下图所示
      在这里插入图片描述
      底层用的是word-level的Bi-LSTM,每个Bi-LSTM对应一个子句,获得每个子句中单词的上下文信息,通过attention机制获得句子的表示 s i s^i si,(原文中没有写具体形式,个人认为这里的attention,大概体现在子句中每个单词的重要程度);第二层对应为两部分,一个是情感提取一个是原因提取,每个Bi-LSTM都是句子级别的,接收下层传上来的句子的表示 [ s 1 , s 2 , ⋯   , s ∣ d ∣ ] \lbrack s_1,s_2,\cdots,s_{\vert d\vert}\rbrack [s1,s2,,sd],隐藏状态 r i e r_i^e rie r i c r_i^c ric可以看作是句子 c i c^i ci的context-aware representation,最终送入softmax层进行情感预测和原因预测(下标e和c分布代表情感和原因):
      y ^ i e = s o f t m a x ( W e r i e + b e ) ; y ^ i c = s o f t m a x ( W c r i c + b c ) \widehat y_i^e=softmax(W^er_i^e+b^e); \widehat y_i^c=softmax(W^cr_i^c+b^c) y ie=softmax(Werie+be)y ic=softmax(Wcric+bc) L e L^e Le L c L^c Lc是情感预测和原因预测的交叉熵损失,λ为权衡参数,模型的损失函数为:
      L p = λ L e + ( 1 − λ ) L c L^p=\lambda L^e+(1-\lambda)L^c Lp=λLe+(1λ)Lc
    • Interactive Multi-task Learning
              上一方法中顶层的两部分是相互独立的,给定情感可以有助于提取原因,但是给定原因也有助于提取情感,于是Interactive Multi-task Learning致力于捕捉情感和原因之间的关系。使用情感抽取来帮助原因抽取的方法称为Inter-EC,用原因抽取来帮助情感抽取的方法称为Inter-CE,二者的结构相似,文章只对Inter-EC进行了介绍,结构如下图所示:
      在这里插入图片描述
      底层得到的句子表示 [ s 1 , s 2 , ⋯   , s ∣ d ∣ ] \lbrack s_1,s_2,\cdots,s_{\vert d\vert}\rbrack [s1,s2,,sd]作为情感提取的输入,隐藏状态 r i e r_i^e rie是标签 y ^ i e \widehat y_i^e y ie的特征, y ^ i e \widehat y_i^e y ie经过嵌入得到 Y i e Y_i^e Yie,继续向上走, ( s 1 ⊕ Y i e , s 2 ⊕ Y 2 e , ⋯   , s ∣ d ∣ ⊕ Y ∣ d ∣ e ) (s_1\oplus Y_i^e,s_2\oplus Y_2^e,\cdots,s_{\vert d\vert}\oplus Y_{\vert d\vert}^e) (s1Yie,s2Y2e,,sdYde)(⊕代表concatenation)作为原因提取的输入,隐藏态 r i c r_i^c ric用来预测 y ^ i c \widehat y_i^c y ic,至此实现了两者的交互
  • Step 2:情感原因的配对和过滤
           经过Step 1,得到了一组情感情感子句 E = { c 1 e , ⋯   , c m e } E=\{c_1^e,\cdots,c_m^e\} E={c1e,,cme}和原因子句 C = { c 1 c , ⋯   , c n c } C=\{c_1^c,\cdots,c_n^c\} C={c1c,,cnc};Step 2中,E和C做笛卡尔乘积,得到所有可能的配对 P a l l = { ⋯   , ( c i e , c j c ) , ⋯   } P_{all}=\{\cdots,(c_i^e,c_j^c),\cdots\} Pall={,(cie,cjc),},接下来 P a l l P_{all} Pall中的每一对都用有三种特征构成的特征向量表示:
    x ( c i e , c j c ) = [ s i e , s j c , v d ] x_{(c_i^e,c_j^c)}=\lbrack s_i^e,s_j^c,v^d\rbrack x(cie,cjc)=[sie,sjc,vd]
    其中 s e s^e se s c s^c sc是情感子句和原因子句的表示, v d v^d vd代表两个句子的距离。
            接着用逻辑回归检测每个候选对 ( c i e , c j c ) (c_i^e,c_j^c) (cie,cjc)是否有因果关系,
    y ^ ( c i e , c j c ) ← δ ( θ T x ( c i e , c j c ) ) {\widehat y}_{(c_i^e,c_j^c)\leftarrow\delta(\theta^Tx_{(c_i^e,c_j^c)})} y (cie,cjc)δ(θTx(cie,cjc))
    ( c i e , c j c ) (c_i^e,c_j^c) (cie,cjc)存在因果关系时 y ^ ( c i e , c j c ) = 1 {\widehat y}_{(c_i^e,c_j^c)}=1 y (cie,cjc)=1,否则 y ^ ( c i e , c j c ) = 0 {\widehat y}_{(c_i^e,c_j^c)}=0 y (cie,cjc)=0; δ ( ) \delta() δ()是Sigmoid函数,最终将 P a l l P_{all} Pall y ^ ( c i e , c j c ) = 0 {\widehat y}_{(c_i^e,c_j^c)}=0 y (cie,cjc)=0的对移除,就得到了最终的“情感-原因”对。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值