作者 | 周俊贤

整理 | 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

  1. 第一层的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学习到边界信息;

  2. 同时,第一层的输出经过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个,因此通过一个转移矩阵 来进行映射,这个矩阵维度为 ,而且是一个「常数矩阵」,因为假如第一层预测出的标签是 ,则它映射到对应的标签只能是 、、 这三种。

  3. 第一层的输出经过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出来, 自然是比上一篇论文要好的,毕竟上一篇中的是2019 AAAI,这篇中的是2020 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》: https://ojs.aaai.org/index.php/AAAI/article/view/4643

[2]

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

[3]

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

END -

厂均 60W+ 的 秘密

2021-11-20

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

2021-11-17

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

2021-11-08

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

2021-11-06

浅谈 NLP 细粒度情感分析(ABSA)相关推荐

  1. 细粒度情感分析(Aspect Based Sentiment Analysis, ABSA),一个从零开始的案例教程【Python实现】

    目录 前言 数据和源码 你要了解的基础 1. 细粒度情感分析(ABSA)案例背景 1.1 任务介绍 1.2 数据基本介绍 1.3 如何评估ABSA的结果 2. 任务一:Aspect Term Extr ...

  2. 细粒度情感分析:还在用各种花式GNN?或许只用RoBERTa就够了

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自 | 知乎 作者 | 邱锡鹏 地址 | https://zhuanlan.zhih ...

  3. 情感分析 | 细粒度情感分析在美团到餐场景中的应用

    每天给你送来NLP技术干货! 来自:美团技术团队 经典的细粒度情感分析(ABSA,Aspect-based Sentiment Analysis)主要包含三个子任务,分别为属性抽取.观点抽取以及属性- ...

  4. 【自然语言处理】【细粒度情感分析】细粒度情感分析:了解文本情感的What、How、Why

    细粒度情感分析:了解文本情感的What.How.Why Knowing What,How and Way:A Near Complete Solution for Aspect-based Senti ...

  5. NLP:文本情感分析快速入门

    最近由中国计算机学会(CCF)主办,雷锋网,香港中文大学(深圳)承办的2018全球人工智能与机器人峰会(CCF-GAIR)在深圳召开,由于博主主要做NLP方向,主要在做情感分析,文本生成方面,所以主要 ...

  6. 复旦大学邢晓渝:细粒度情感分析中模型的鲁棒性研究

    ⬆⬆⬆              点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 细粒度情感分析,也叫做基于方面的情感分析是情感分析中的一个子任务.虽然现有的模型在该任务上的效果很好, ...

  7. 自然语言处理前沿研究之细粒度情感分析

    自然语言处理前沿研究之细粒度情感分析 情感分析综述   文本情感分析:又称意见挖掘.倾向性分析等.简单而言,是对带有情感色彩的主观性文本进行分析.处理.归纳和推理的过程.对于意见.情感或观点,我们进行 ...

  8. NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码

    NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码 目录 全部代码 相关文章 NLP之情感分析:基于python编程(jieba库)实现中文文本情 ...

  9. 浅谈:Spring Boot原理分析,切换内置web服务器,SpringBoot监听项目(使用springboot-admin),将springboot的项目打成war包

    浅谈:Spring Boot原理分析(更多细节解释在代码注释中) 通过@EnableAutoConfiguration注解加载Springboot内置的自动初始化类(加载什么类是配置在spring.f ...

最新文章

  1. Android 关于Handler
  2. linux入门级知识回顾
  3. 生活中的实验 —— 磁铁的使用
  4. Ubuntu下装QQ2014(http://my.oschina.net/oscfox/blog/315951)
  5. 时艳强对话酒儿:gate首发平台币的时机选择
  6. Chart Share
  7. sklearn自学指南(part60)--神经网络模型(无监督)
  8. SpringBoot集成Druid不支持多条SQL
  9. C#LeetCode刷题之#581-最短无序连续子数组( Shortest Unsorted Continuous Subarray)
  10. (3)Node.js APIS
  11. 火了!杭州程序员自编“购房宝典”,点击超40万,业内人士惊呆
  12. 手把手带你玩转Spark机器学习-专栏介绍
  13. 【笔记1-4】陈丹琦毕业论文 NEURAL READING COMPREHENSION AND BEYOND
  14. 微信小程序漂亮按钮(中间矩形两端半圆形)
  15. css网站变灰色代码
  16. redmine backlogs的tracker使用
  17. 长期成本曲线为何是短期成本曲线包络线?——用包络定理证明
  18. icloud验证失败连接服务器时出现问题,登录 iCloud 提示验证失败连接到服务器时出现问题怎么办及苹果iPhone手机安装两个微信教程...
  19. 基于select2的二级联动
  20. 文本预处理学习(2)

热门文章

  1. SAP License:SAP采购信息系统
  2. SAP License:BSEG与FAGLFLEXA (A)表数据不一致问题
  3. SAP License:SAP行业近期走向
  4. 赛锐信息:集团化公司SAP权限管控解决方案
  5. Luogu4725 【模板】多项式对数函数(NTT+多项式求逆)
  6. Ex 6_23 一个生产系统共包含n个顺序执行的阶段..._第七次作业
  7. Django REST framework 的快速入门教程
  8. java20 创建服务器:ServerSocket
  9. shareplex的安装起停服务(添加新用户)
  10. Hive操作语句实例讲解(帮助你了解 桶 bucket)