基于特定实体的文本情感分类总结(PART II)
点击上方,选择星标或置顶,每天给你送干货!
阅读大概需要13分钟
跟随小博主,每天进步一丢丢
转载:AINLP
作者:高开远
学校:上海交通大学
研究方向:自然语言处理
0. 写在前面
继续:【论文串烧】基于特定实体的文本情感分类总结(PART I)
1. Multi-grained Attention Network for Aspect-Level Sentiment Classification
EMNLP 2018的一篇论文,作者分析了先前提出的ABSA任务模型的不足:
使用的attention mechanism都是属于粗粒度的(简单地求和操作),如果对于target word和context都很长的话会引入额外的损失;
另外,先前的工作都是将aspect和context视作是单独的instance进行训练,没有考虑到具有相同上下文的instance之间的关联,而这些关联很有可能会带有额外的信息。
于是提出了一种解决ABSA问题的多粒度注意力网络(Multi-grained Attention Network, MGAN),主要的改进有:
细粒度注意力机制(fine-grained attention mechanism): 单词级别(word-level)的target和context之间的交互,可以减少粗粒度attention的损失;
多粒度注意力机制 (multi-grained attention network): 粗粒度attention和细粒度attention结合;
aspect alignment loss: 在目标函数中加入aspect alignment loss,以增强context相同而情感极性不同的aspect对context权重学习的差异性。
模型如下,可以分为四个部分:
Input embedding layer
contextual layer
multi-grained attention layer
output layer
Input Embedding Layer
输入embedding层,使用的是预训练好的Glove,获得定长的aspect和context向量表示。
Contextual Layer
将上一步获得的aspect和context向量矩阵送入双向LSTM网络来捕获输入中词与词之间的关联,得到一个sentence contextual output
和aspect contextual output
。然后这里就可以把这两个矩阵进行交互了,但是作者又另外考虑了在上下文中与aspect word距离不同的word应该有不同的权重,引入了position encoding mechanism:context中与aspect相距为l的单词的权重w_{j}为:
注意,aspect中的词的权重设置为0。 于是最终得到的优化后的sentence contextual output
为
Multi-grained Attention Layer
前面的部分可以说跟之前的工作大同小异,重点在于接下来的多粒度注意力层。
(1)Coarse-grained Attention
粗粒度attention的话跟之前的attention是一样的,
C-Aspect2Context:对aspect矩阵Q进行求平均pool得到一个向量表示,将其与context矩阵H交互做attention,
C-Context2Aspect:这一步是跟C-Aspect2Context对称的
(2)Fine-grained Attention
细粒度attention的目的是刻画aspect对context或者context对aspect词与词之间的影响关系。首先定义H和Q元素之间的相似矩阵U,注意U的形状为[N * M],U中每个元素表示context中的第i个单词和aspect中的第j个单词之间的相似度,
F-Aspect2Context刻画的是对于每一个aspect word,context对其的影响程度。首先求出矩阵U中每一行最大的值,然后对其归一化操作得到和为一的权重分布后加权求和得到新的H表示
F-Context2Aspect刻画的是对于每一个context word,aspect对其的影响程度。首先对U中每一行做归一化操作,得到N个和为1 的权重表示,然后用N个长为M的向量去和矩阵M逐元素加权求和,最后将这N个新的表示相加取平均,得到aspect最后的细粒度表示。
Output Layer
在这一层将上述步骤得到的attention表示拼接起来,作为最终输入句子的向量表示并送入softmax层分析情感得分。
Loss Function
模型选用的损失函数为:
其中第一项为交叉熵损失,第二项为单独设计的aspect alignment loss,第三项为正则化项。这里需要重点说一下aspect alignment loss。该损失作用于C-Aspect2Context attention部分,C-Aspect2Context attention是用于确定与特定的aspect相关性最高context中的单词。加上了这个损失,在训练过程中模型就会通过与其他aspect比较而更加关注对自己更重要的context word。举个栗子,在句子I like coming back to Mac OS but this laptop is lacking in speaker quality compared to my $400 old HP laptop
中,通过与不同的aspect Mac OS
相比,speaker quality
应该更关注词语lacking
,而更少关注like
。
对于aspect列表中的任一对aspect a_{i}和 a_{j},首先求出它们对context中某一特定单词的attention权重差的平方,然后乘上a_{i}和 a_{j}之间的距离d_{ij}:
试验分析
2.Aspect Level Sentiment Classification with Attention-over-Attention Neural Networks
这篇文章的思路好像跟上一篇很像,模型可以分为四个部分:
word embedding
Bi-LSTM
Attention-over-Attention
Final Classification
Attention-over-Attention(AOA)
定义长度为n的句子和长度为m的target
经过双向LSTM得到的隐状态表示为矩阵, ,
接着计算两者的交互矩阵;
通过对交互矩阵做基于列的softmax和基于行的softmax可以得到target-to-sentence attention 和sentence-to-target attention
对beta向量求平均,也就获得target-level attention:
最后再做一次sentence层面的attention:
试验分析
3. Attentional Encoder Network for Targeted Sentiment Classification
与以往大多数RNN+Attention的思路不同,作者在这篇论文里给出了注意力编码网络(Attentional Encoder Network,AEN),避免了RNN系模型的缺点(难以并行化,需要大量数据/内存/计算);同时提到先前的工作大都忽略了标签不可信问题(label unreliability issue),这里在损失函数中引入了标签平滑正则项。模型整体框架如下
Embedding Layer
有两种embedding的方式
使用glove预训练embedding
使用bert预训练embedding:注意将输入转化成bert需要的形式, 即
[CLS] + context + [SEP]
和[CLS] + target +[SEP]
Attentional Encoder Layer
注意力编码层和LSTM层的作用一样,都是计算输入的语义表示得到隐状态矩阵。这一层包括两个子模块:
Multi-Head Attention: MHA就是在attention is all you need那篇论文里的多头注意力机制。这里对context采用的是Intra-MHA,即self-attention;对target采用的是Inter-MHA, 即传统意义上的attention。
Point-wise Convolution Transformation(PCT): 逐点卷积,即卷积核的尺寸为1,对上述得到的两个attention encoder进行一下操作,
Target-specific Attention Layer
将attention encoder后得到的关于context和aspect信息的向量表示h_{t}和h_{c}再做一次attention操作得到具有更多交互信息的向量,然后与h_{t}和h_{c} pool以后的向量拼接得到最终的输入表示送入softmax层进行情感分析
Loss Function
前面提到为了解决标签不可信任问题(比如中性情感是一种非常模糊的情感表达,具有中性情感标签的训练样本就是属于不可信任的),引入了一种新的损失计算Label Smoothing Regularization (LSR)
,关于LSR的深入理解这里不详细说了可以参考知乎问题:Label Smoothing Regularization_LSR原理是什么?
试验分析
作者非常nice地开源了论文对应的代码库:songyouwei/ABSA-PyTorch 而且里面还有很多其他模型的实现。赞!
4. Transformation Networks for Target-Oriented Sentiment Classification
作者提出用attention去提取context和aspect之间的语义相关性存在一定的缺陷,并列举了一个例子:
“This dish is my favorite and I always get it and never get tired of it.” 这句话中,attention机制会提取出相对于dish不相关的词语比如"never","tired"等。
于是提出可以利用CNN来取代attention来提取context中相对重要的信息,同时对朴素CNN进行了进一步的处理使其适合该任务,提出了Target-Specific Transformation Networks (TNet)
Bi-LSTM Layer
将文本的上下文信息融入到word的向量表示中是非常重要的
Context-Preserving Transformation(CPT)
模型再往上一层是Transformation Layer,是由多个CPT模块叠加而成。单独的CPT模块结构如下所示
在这里插入图片描述
CPT分为两个部分,Target-Specific Transformation(target转换机制)和Context-Preserving Mechanism(上下文保存机制)
Target-Specific Transformation用于动态地生成target的向量表示(这是论文的创新点)。首先将target表示通过一个Bi-LSTM来获得其抽象表示,再将该表示与上一层每个context词的表示做相似度计算,从而调整target的表示。
Context-Preserving Mechanism的提出是因为在经过TST的非线性转化之后,现有的向量表达可能已经丢失了原来Bi-LSTM层输出的信息,作者提出了两种解决方案:
Lossless Forwarding:直接将前一层的输出加入到这一层的输出上
- Adaptive Scaling:与LSTM中门控机制类似的自适应保存机制,通过门控单元来控制当前层和上层输出到下层的信息。
Convolutional Layer
作者对于卷积层提出了利用观点词与目标词的距离的改进措施。作者为每一个位置计算一个位置特征其中C是超参,相当于设置了一个窗口,在这个窗口范围内进行计算。k是target第一个词的位置,m是target的长度,i是当前词的位置。
然后将距离特征融合到词特征上:再进行卷积和最大池化的操作 最后送入softmax层进行情感判定
试验分析
原文链接:
https://blog.csdn.net/Kaiyuan_sjtu/article/details/89811824
推荐阅读:
【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译
【一分钟论文】Semi-supervised Sequence Learning半监督序列学习
详解Transition-based Dependency parser基于转移的依存句法解析器
经验 | 初入NLP领域的一些小建议
学术 | 如何写一篇合格的NLP论文
干货 | 那些高产的学者都是怎样工作的?
一个简单有效的联合模型
近年来NLP在法律领域的相关研究工作
基于特定实体的文本情感分类总结(PART II)相关推荐
- 【论文】基于特定实体的文本情感分类总结(PART I)
最近在看一个比赛:2019 搜狐校园算法大赛,赛题说的是 给定若干文章,目标是判断文章的核心实体以及对核心实体的情感态度.每篇文章识别最多三个核心实体,并分别判断文章对上述核心实体的情感倾向(积极.中 ...
- 【论文】基于特定实体的文本情感分类总结(PART III)
0. 写在前面 继续之前的系列,记录一些关于ABSA问题的paper 1. Targeted Aspect-Based Sentiment Analysis via Embedding Commons ...
- 【论文】基于特定实体的文本情感分类总结(PART II)
0. 写在前面 五一假期最后一天-太阳超棒- 1. Multi-grained Attention Network for Aspect-Level Sentiment Classification ...
- 复盘:基于attention的多任务多模态情绪情感识别,基于BERT实现文本情感分类(pytorch实战)
复盘:基于attention机制的多任务多模态情绪情感识别(pytorch实战),基于BERT实现文本情感分类 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对 ...
- 我的实践:pytorch框架下基于BERT实现文本情感分类
当前,在BERT等预训练模型的基础上进行微调已经成了NLP任务的一个定式了.为了了解BERT怎么用,在这次实践中,我实现了一个最简单的NLP任务,即文本情感分类. 文章目录 1.基于BERT进行情感分 ...
- python 多分类情感词典_基于情感词典的文本情感分类
基于情感词典的文本情感分类 传统的基于情感词典的文本情感分类,是对人的记忆和判断思维的最简单的模拟,如上图.我们首先通过学习来记忆一些基本词汇,如否定词语有"不",积极词语有&qu ...
- NLP之基于TextCNN的文本情感分类
TextCNN 文章目录 TextCNN 1.理论 1.1 基础概念 **最大汇聚(池化)层:** ![请添加图片描述](https://img-blog.csdnimg.cn/10e6e1ed6bf ...
- 基于Bert的文本情感分类
详细代码已上传到github: click me 摘 要: 情感分类是对带有感情色彩的主观性文本进行分析.推理的过程,即分析说话人的态度,推断其所包含的情感类别.传统机器学习在处理情感分类问 ...
- 基于pytorch的Bi-LSTM中文文本情感分类
基于pytorch的Bi-LSTM中文文本情感分类 目录 基于pytorch的Bi-LSTM中文文本情感分类 一.前言 二.数据集的准备与处理 2.1 数据集介绍 2.2 文本向量化 2.3 数据集处 ...
- 基于Keras搭建LSTM网络实现文本情感分类
基于Keras搭建LSTM网络实现文本情感分类 一.语料概况 1.1 数据统计 1.1.1 查看样本均衡情况,对label进行统计 1.1.2 计句子长度及长度出现的频数 1.1.3 绘制句子长度累积 ...
最新文章
- iOS开发之用到的几种锁整理
- Redis操作命令总结
- 让Spring架构减化事务配置(转)
- Gartner的预言:通向混合IT之旅
- TCP/IP入门(3) --传输层
- qt如何把父窗口的变量传给子窗口_子窗体显示的时候怎么让父窗体阻塞并且子窗体可以任意移动?...
- CSDN 蒋涛对话英特尔中国区董事长王锐:我愿是当代的一个开发者
- python open写入_Python open读写文件实现脚本
- python安装gdal ubuntu_Python与开源GIS教程:1.3. 配置Python开源GIS环境
- 软件比较 - Sniffer、Omnipeek、科来网络分析系统过滤器比较之位过滤 在捕获数据包时,有时候需要对一个字节中的某一个位进行精确匹配,这时,我们就需要用到位过滤。位过滤相对于地址、端口、协
- 把服务器当网盘玩 教你从云服务器下载自己的文件
- Windows 小工具软件:截屏,录音,音频转换
- 东京秋叶原谢幕,彼岸电子城路在何方
- 已经解决globalsign证书导致淘宝京东等chrome safari无法访问
- java Web 前后端交互
- 私人定制(附源码):弹出框统一样式一个JS文件就可以解决!
- 基于HTML旅游网站设计与实现 途游网站制作 学生DW静态旅游网页设计 html静态旅游风景区网页设计制作 web前端课程设计 web前端课程设计代码 web课程设计
- matlab自耦变压器,基于MATLAB的500kV自耦变压器建模及仿真.pdf
- 2022春秋杯 勇者山峰 Misc-Tiger WP
- 垃圾分类 小程序完整项目!
热门文章
- SSAS知识回放之订单数据分析
- iOS上线后程序崩溃日志处理-- Crashlytics
- [DOTween]使用过程中的一些注意事项记录
- EntityFramework Code-First 简易教程(八)-------一对一
- Codeforces Good Bye 2015 D. New Year and Ancient Prophecy 后缀数组 树状数组 dp
- css中的背景、边框、补丁相关属性
- 偏差-方差分解 Bias-Variance Decomposition(转载)
- 系统如何删除被其它进程占用的文件?
- 全双工音频播放器在c#中使用waveIn / waveOut api
- cocos2d-x学习记录3——CCTouch触摸响应