跟随小博主,每天进步一丢丢
作者:张义策
学校:哈尔滨工业大学(深圳)
方向:自然语言处理
知乎:https://www.zhihu.com/people/zhang-yi-ce-84
这是一篇论文阅读笔记。
Synchronous Double-channel Recurrent Network for Aspect-Opinion Pair Extraction
https://www.aclweb.org/anthology/2020.acl-main.582.pdf
这是ACL2020上的一篇文章,作者来自南开大学。
在naacl2019上,南京大学的同学提出了TOWE任务,即给定一个评论和其中评价对象(aspect/target),抽取该评价对象对应的观点词(opinion words/terms)。比如,给定评论“这可真真是一个辣鸡游戏,坑爹”和其中评价对象"游戏",TOWE任务要求输出“辣鸡”和“坑爹”。属性级情感分析(ABSA)中评价对象与观点词之间的对应关系以往被忽视了,TOWE任务则考虑到了这一点。
[NAACL2019] Target-oriented Opinion Words Extraction with Target-fused Neural Sequence Labeling
后续在ACL2020上,有两个工作独立地提出了aspect-opinion对抽取任务,即给定一个评论,输出其中的aspect-opinon对。他们对这个任务的命名方式有所不同,分别是
AOPE则是本文所要介绍的文章提出的,他们在Semeval数据集的基础上进行了标注;而PAOTE则是阿里公司的人提出的,他们沿用了TOWE标注的数据集。除此之外,AAAI2020上阿里公司的人还提出了ASTE任务,全称是aspect sentiment triple extraction,即属性级情感三元组抽取。在ASTE中,一个三元组为<aspect, opinion, polarity>。可以看到去除了polarity,ASTE和aspect-opinion对抽取任务是相同的。
[ACL2020] SpanMlt: A Span-based Multi-Task Learning Framework for Pair-wise Aspect and Opinion Terms Extraction
[AAAI2020] Knowing What, How and Why: A Near Complete Solution for Aspect-based Sentiment Analysis
除此之外,可以看到aspect-opinion对和情感表达-情感原因(emotion-cause)对很相似。区别在于,emotion-cause对的抽取一般在子句级别上做。自从acl2019上,南京大学的同学提出ECPE任务以来,ACL2020上也有三篇后续的文章。
[ACL2019] Emotion-Cause Pair Extraction: A New Task to Emotion Analysis in Texts
[ACL2020] Transition-based Directed Graph Construction for Emotion-Cause Pair Extraction
[ACL2020] ECPE-2D: Emotion-Cause Pair Extraction based on Joint Two-Dimensional Representation, Interaction and Prediction
[ACL2020] Effective Inter-Clause Modeling for End-to-End Emotion-Cause Pair Extraction
aspect-opinion对和emotion-cause对的抽取和实体与关系抽取有些类似。上述的工作基本上沿着实体与关系的联合抽取来进行的。本文介绍的这篇文章也是这样。
这篇文章使用了一个联合模型进行实体和关系的联合抽取,模型名字让人头大,全称是Synchronous Double-channel Recurrent Network (SDRN),即同步多通道循环网络。其实,模型本身没有名字那么复杂。下面先介绍模型的大体思路。
给定一个句子,首先模型通过BRET模型得到句子的表示。有了句子的表示后,可以直接使用CRF进行aspect/opinion terms的抽取。那么关系的抽取呢?作者选择了在句子的表示上计算token之间的注意力,即对于句子“这真的是一个辣鸡游戏”,期望‘辣’和‘游’之间的注意力权重为1,‘辣’和‘戏’之间的注意力权重也为1,而期望‘个’和‘游’之间的注意力权重为0,即如下图。在预测阶段,则需要根据所得到的注意力权重矩阵来解码aspect term和opinion term之间的对应关系。
作者选择的解码方法是非常直观的,即将token之间的注意力进行平均,得到一个实体间的分数,即
然后使用一个阈值来判断两个实体之间有没有关系。说实话,感觉这个方法不够理想,但也是不得以而为之。
说了半天还是没有讲到这复杂的模型名称:Synchronous Double-channel Recurrent Network。总的来说,实体和关系的预测并不是直接在BRET输出的句子表示上做的,而是在两个任务上各有一套句子表示,两套句子表示相互交互。文章将实体到关系的交互称为Entity Synchronization Mechanism(ESM),将关系到实体的交互相应地称为RSM。
不妨令通过BERT得到的句子表示为
,而用于实体抽取的句子表示为
,用于关系抽取的句子表示为
。为了简略介绍由
得到
和
的过程。
ESM 由于关系抽取是在token级别上做的,所以ESM模块需要向
传递的信息是,某两个token是否属于同一个实体,即
。
RSM 而RSM模块则希望向
传递的信息是,两个token之间是否存在对应关系,即
。
具体的信息传递过程还需要经过中间变量
。此外,ESM和RSM模块可以迭代使用多次,即通过
生成
,然后通过
结合
生成
。而
通过全0的矩阵进行初始化。文章在实验中实际使用了两次。详细的过程可以结合文章和下图进行理解。
需要注意的是,由
生成
的网络和由
生成
的是同一个;
同理。这个事情我也是看了一会源码才反应过来。
老实说,实验的话没什么好介绍啊,可以简单记为这几点。
总体来说,我个人感觉本文模型设计的还不错,比起ACL2020上的另一篇文章好多了,就是实现起来复杂些,但这是往往是不可避免的。
此外,有两点体会:
对应的“由
生成
的网络”(以下简称关系预测网络)可以是不同的,都相同的反而有可能导致
不准确。而如果不同的
对应关系预测网络不同的话,就需要在每个关系预测网络上计算loss,来对其进行训练,这样就会造成新的麻烦。但是这样的话,就可以考虑在
的基础上计算
,也许模型的交互就更加充分了。除此之外,我觉得可以用上一次迭代中的
来更新
。