这是2021AAAI的一篇利用多轮问答(机器阅读理解)来解决aspect-opinion-sentiment三元组抽取问题的论文。把机器阅读理解的方法用到了aspect-sentiment里面。

论文下载:https://arxiv.org/pdf/2103.07665.pdf

论文代码:https://github.com/NKU-IIPLab/BMRC

image-20210507110422968

1. ASTE任务

Aspect Sentiment Triplet Extraction(ASTE)是细粒度观点挖掘任务,它包含多个子任务,比如观点实体抽取、关系检测、情感分类等。作者此次的目的是从Review中抽取出aspect-opinion-sentiment triplet。

ASTE任务是由Peng等人在2020AAAI——Knowing What, How and Why: A Near Complete Solution for Aspect-Based Sentiment Analysis中提出的。

论文地址:https://doi.org/10.1609/aaai.v34i05.6383

如图1所示,Review表示一个句子,里面的food, price称之为aspect,delicious, expensive分别是对它们的评价,称之为opinion,而情感极性是分析出来的,共三类:POS积极、NEG消极、NEU中性。

2. MRC任务

Machine Reading Comprehension(MRC),旨在基于给定的上下文回答特定的问题。而基于BERT的MRC一般会把问题和上下文进行拼接,送入BERT中得到隐藏层表示。近年来,随着BERT的兴起,愈多NLP任务都用起了BERT+MRC的方法,比如NER、关系抽取、文本摘要等。作者也顺应潮流,用上了MRC。

3. 论文贡献

  • 作者把ASTE任务作为三轮机器阅读理解任务来做,在一个统一的框架下优雅的标识出句中的triplet;
  • 提出了双向MRC框架;
  • 进行了大量实验并达到了SOTA效果。

4. 方法介绍

4.1 整体框架

上图2就是双向MRC框架。作者首先设置了非限制性抽取query和限制性抽取query,来抽取aspect和opinion,由于先抽取aspect还是先抽取opinion没有本质区别,所以作者直接设置了一个对偶形式,这就是作者所说的双向。作者将这两个方向分别命名为OAO \rightarrow AAOA \rightarrow O

模型挺简单的,实际上作者的代码里面,model.py的代码也十分的少,只有一个BERT和三个线性层。大量的代码都在数据处理部分。

4.2 问题定义

给定一个句子X={x1,x2,..,xN}X = \{x_1, x_2, .., x_N\},共有NN个token,ASTE任务就是识别出句子中所有的triplets T={(ai,oi,si)}i=1TT=\{(a_i, o_i, s_i)\}_{i=1}^{|T|}T|T|表示句子中所有三元组的数量。

将ASTE作为多轮阅读理解任务,所以需要定义问题。如图2所示,我们需要定义三类问题。

  • 非限制性抽取queries QN={qiN}i=1QNQ^{\mathcal N} = \{q_i^{\mathcal N}\}_{i=1}^{|Q^{\mathcal N}|}
  • 限制性抽取queries QR={qiR}i=1QRQ^{\mathcal R} = \{q_i^{\mathcal R}\}_{i=1}^{|Q^{\mathcal R}|}
  • 情感分类queries QS={qiS}i=1QSQ^{\mathcal S} = \{q_i^{\mathcal S}\}_{i=1}^{|Q^{\mathcal S}|}

具体来说,在第一轮中,非限制性抽取queries针对抽取aspects A={ai}i=1AA=\{a_i\}_{i=1}^{|A|}或opinions O={oi}i=1OO=\{o_i\}_{i=1}^{|O|}。在第二轮中,给定由非限制性抽取queires得到的opinion entities,经过限制性抽取queries得到对应的aspects,或者反过来由aspects得到opinions。最后一轮,则由每一个情感分类query qiSq_i^{\mathcal S}预测出每个aspect aia_i的情感极性。

4.3 Query构造

作者采用基于模板的方法构造queries。如下所示:

此外,还有情感分类query:

4.4 编码层

用BERT进行编码。

给定句子X={x1,x2,..,xN}X = \{x_1, x_2, .., x_N\}和每个query qi={qi,1,qi,2,...,qi,qi}q_i = \{q_{i, 1}, q_{i,2},...,q_{i, |q_i|}\}

构造格式如下:

作为BERT的输入,经过BERT编码后,可得序列的隐藏层表示,记为:

该向量用于答案预测。

4.5 答案预测

Answer for Extraction Query.

对于非限制性query和限制性query(也就是前两轮)来说,目的是预测出句子中的opinion或aspect。

比如句子“The food was delicious, but the price was indeed expensive”,我们在AOA \rightarrow O的第一轮中,应该得到两个span(food and price),在第二轮中应该得到两个span(delicious and expensive)。

注意,是span不是token,因为aspect和opinion都不一定只有一个词,可能有多个词。

所以作者这里用了两个分类器,一个找span的开始索引,一个找结束索引,这样就找到了一个span。

如果一个token是某个span的开始/结束位置,那么就预测输出1,否则输出0。

Answer for Sentiment Classification Query.

取[CLS]的隐藏层表示,用于预测aspect-opinion pair的情感极性,从而得到aspect-opinion-sentiment triplet。

4.6 联合学习

作者将第一轮问答的损失、第二轮问答的损失、第三轮问答的损失,都加起来。

非限制性抽取queries的损失:

限制性抽取queries的损失:

情感分类queries的损失:

总损失(使用Adam W优化):

4.7 推理

AOA \rightarrow O方向,由非限制性抽取query qAONq_{A \rightarrow O}^{\mathcal N}标识出aspect 集合A={a1,a2,...,aA}A=\{a_1, a_2, ..., a_{|A|}\}。对于每一个aspect aia_i,限制性抽取query qAORq_{A \rightarrow O}^{\mathcal R}标识出相对应的opinion集合(一个aspect可能对应多个opinion)。由此,得到aspect-opinion pairs VAO=[(ak,ok)]k=1KV_{A\rightarrow O}=[(a_k, o_k)]_{k=1}^K

同理在OAO \rightarrow A方向,最终也会得到opinion-aspect pairs VOA=[(al,ol)]l=1LV_{O\rightarrow A}=[(a_l, o_l)]_{l=1}^L

最后我们通过以下公式来进行推理:

VV'表示两个方向的VV的交集,VV''表示差集。对于差集中的pair,只有概率大于阈值δ\delta才算正确。

最后再通过第三轮情感分类query来预测每个正确aspect-opinion pair 的情感极性。