失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 浅谈 NLP 细粒度情感分析(ABSA)

浅谈 NLP 细粒度情感分析(ABSA)

时间:2019-04-07 17:34:12

相关推荐

浅谈 NLP 细粒度情感分析(ABSA)

作者|周俊贤

整理|NewBeeNLP

最近在调研细粒度情感分析的论文,主要对一些深度学习方法进行调研,看论文的同时记录下自己的一些想法。

首先,何为细粒度的情感分析?如下图,淘宝APP上某商品的买家评论。

买家除了对这个商品进行整体打分外,还会针对一些商品aspect(属性)进行文字评价,例如某个评论『这条裤子的材质很好,但是拉链太拉跨了』。从find-grained(细粒度)评价角度来说,买家对商品的“材质”这一aspect的评价为Positive,对“拉链”这一aspect评价为Negative,但aspect和对应的情感是隐式地体现在评价中,需要我们利用模型抽取出来

上面提到的细粒度情感分析,英文全称叫「Aspect Based Sentiment Analysis,简称ABSA」

对细粒度的aspect进行分析,一方面,有助买的人从自己看重的特征方面决定是否购买;另一方面,让厂家能对自身的产品有更全面的认知,从而进行针对性的改进。

End-to-End ABSA任务

论文:《A Unified Model for Opinion Target Extraction and Target Sentiment Prediction》[1]

ABSA主要有两个模式

Pipeline:两阶段建模,先抽取文本的aspect,再判断相应的情感倾向,即一个抽取任务和一个分类任务。

Joint:用同一个模型同时进行抽取aspect和判断情感倾向,如下图的Joint行,用一个模型完成aspect属性抽取任务和情感抽取任务。

个人理解,大部分所谓的「joint方法(联合建模)」其实就是用一个模型同时完成多个任务,「解节码阶段还是Pipeline的形式」

论文里提出一个「Unified」方案,如上图的Unified行,通过巧妙的标签设计,同时把aspect属性抽取和情感倾向放到一个序列标注任务中。

模型的架构如下图所示:

模型由两层双向的LSTM组成,有三个主要思想:

Target Boundary Guided TBSA

第一层的LSTM输出要做一个辅助任务,这个任务是捕捉aspect的边界信息,如上面提到的例子,这个辅助任务的label就为 【(The,O)、(AMD,B)、(Turin,I)、(Processor,E)、(seems,O)、(to,O)、(always,O)、(perform,O)、(much,O)、(better,O)、(than,O)、(Intel,S)】,标签只有 【、、、、】 五个。通过这个辅助训练,让底层的LSTM学习到边界信息;

同时,第一层的输出经过softmax后也会加入到第二层的输出里面一起预测最终的token标签,但是第一层的输出经过softmax只有5维,但是最终要预测的标签是13维的,包括 【B-POS, I-POS, E-POS, S-POS, B-NEG, I-NEG, E-NEG, S-NEG, B-NEU, I-NEU, E-NEU, S-NEU、O】共13个,因此通过一个转移矩阵 来进行映射,这个矩阵维度为 ,而且是一个「常数矩阵」,因为假如第一层预测出的标签是 ,则它映射到对应的标签只能是 、、 这三种。

第一层的输出经过softmax和转移后,得到上图左边的 ,和第二层的t输出 进行相加,但问题是怎么分配它们的权重呢?论文如提出一个小技巧,如计算得到的 是很平滑的话,证明第一层捕捉到的边界信息也不明确,这时就降低 的权重,假如是一个熵 值很低的,表示很明确的,这时就增大它的权重,这就是SG组件里干的内容,具体的可以看论文的做法。

Maintaining Sentiment Consistency

第二层的LSTM输出 ,通过一个门控机制,把上一个词的特征考虑进来,这就是SC组件干的事情。目的避免出现上一时刻是 ,这一时刻输出变成 的情况。不过个人感觉,这种也可以通过CRF来进行控制的吧。

Auxiliary Target Word Detection

论文里,提到”opinion targets are always collocated with opinion iword“,具体的上图的例子,”AMD Turin Processor”就是opinion target,“better”就为opinon word。

只要某个word的上下文窗口中出现了opinion word,我们就把这word定义为target word。根据这个定义,组织训练集时,可以得到每个word是否是target word,这样第一层LSTM输出也有一个辅助任务,做判断当前word是否是target word的二分类任务,这就是OE组件做的事情。

Aspect Sentiment Triplet Extraction (ASTE) 任务

论文:《Knowing What, How and Why: A Near Complete Solution for Aspect-based Sentiment Analysis》[2]

上面提的方法,通过巧妙的标签设计,提出一种unified方案,用一个序列标注任务,同时搞定aspect extraction和aspect sentiment classification,就是上图的红色框。这篇论文,更进一步,认为添加一个aspect sentiment triplet extraction(ASTE)任务(其实就是比unified方案多一个opinion term extraction的抽取任务以及多一个三元组判断任务),会让训练出来的模型更强大,就是上图的蓝色框。

假如赋予含义的话,博文里提到

aspect 给出了带有情感的评论目标,sentiment 给出了对目标的情感极性,opinion term 给出了情感的原因,这三者依次回答了What(对于什么),How(情感怎么样)以及 Why(为什么是这个情感)三个问题,对于评论目标构成更全面的分析。

具体的,如论文中提到的一个例子,”Waiters are very friendly and the pasta is simply average.“,假如用unified方案,只需要一个序列标注任务得到 【(Waiters,S-POS)、(are,O)、(very,O)、(friendly,O)、(and,O)、(the,O)、(pasta、S-NEG)、(is,O)、(simply,O)、(average,O)】 就搞掂。但假如同时抽取opinion term(即”friendly“和“average”),并且判断(Waiters,Positive,friendly)是匹配关系,(Waiters,Positive,average)不是匹配关系,学习出来的模型效果可能会更佳。

具体的模型架构如上图所示,分成了两个Stage,

Stage one

第一阶段做两个序列标注(SL) 任务,分别是抽取unified tag 【B-POS, I-POS, E-POS, S-POS, B-NEG, I-NEG,E-NEG, S-NEG, B-NEU, I-NEU, E-NEU, S-NEU,O】 和抽取opinion 【】。

具体的,抽取unified tag由图中Stage one的左侧结构进行标注,与上一篇论文的方法不同的是,还融合了模型右侧图卷积网络(GCN)返回的情感词信息辅助进行输出;

抽取opinion由图中stage one的右侧结构进行预测,把句子丢进一个GCN网络中,再放到双向LSTM中,最后对opinion进行序列抽取;

除此之外,还多了一个Target Guidance(TG)模块,TG模块融合了aspect的边界信息和GCN的输出,做的任务是抽取ipinion term,「其实就是跟模型第一阶段右侧的任务一样的」!作者希望通过这样有监督地训练TG模块,让 和 都能得到收益,具体的,经过训练, 也融合进了opinion的信息, 也融合进了aspect的边界信息。

Stage two

将第一阶段抽取的aspect&aspect sentiment、opinion用笛卡尔积枚举所有候选的三元组列表。训练时,文本信息加上aspect与opinion的相对位置信息,训练它们的匹配关系。

实验的结构这里就不post出来, 自然是比上一篇论文要好的,毕竟上一篇中的是 AAAI,这篇中的是 AAAI,这篇是前一篇的改造。

用预训练模型BERT做unified方案

论文:《Exploiting BERT for End-to-End Aspect-based Sentiment Analysis》[3]

一篇简单的workshop论文,主要思想是「抛弃一切”花里胡哨“的启发式组件设计」,直接用BERT加具体的任务层(论文里采用了Linear、GRU、SAN、TFM、CRF五种)来做上文提到的unified方案。实验证明,预训练模型就是YYDS。

具体看下图实验结果,红色框就是上面提到的第一种方法的实验结果,蓝色框就是本论文的实验结果。预训练模型再次打倒一切!

总结

总体来说,在预训练模型之前,用了很多「启发式」的思想去改造模型,例如认为人在判断的时候,会依据什么角度去想,顺着这个思路,在神经网络的架构中就提出一些相对应的模块跟主任务一起做训练。

更简单来说,就是各种改造,然后给出一些「合理漂亮的解释」,然后实验效果不错,就可以投会议了。但随着预训练模型的出现,发现预训练模型加简单的任务层,瞬间超过前面所有精心设计的模型架构,让人不禁感叹,预训练模型的威力是如此地强大。

不过在看这些“复杂”架构的时候,尝试去理解作者的切入点,倒是挺有意思的事情。同时,除了关注模型架构,也要关注「把问题看作什么任务来进行解决」,如上面第一种方法提到的unified方案,就是把细粒度情感分析问题看作一个序列标注任务来进行解决。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 /等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)

本文参考资料

[1]

《A Unified Model for Opinion Target Extraction and Target Sentiment Prediction》: /index.php/AAAI/article/view/4643

[2]

《Knowing What, How and Why: A Near Complete Solution for Aspect-based Sentiment Analysis》: /index.php/AAAI/article/view/6383

[3]

《Exploiting BERT for End-to-End Aspect-based Sentiment Analysis》: /abs/1910.00883

-END-

厂均 60W+ 的 秘密

-11-20

万字综述!从21篇最新论文看多模态预训练模型研究进展

-11-17

一文看懂!百度对话系统PLATO家族

-11-08

最新综述!NLP中的Transformer预训练模型

-11-06

如果觉得《浅谈 NLP 细粒度情感分析(ABSA)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。