最近在看一个比赛:2019 搜狐校园算法大赛,赛题说的是

给定若干文章,目标是判断文章的核心实体以及对核心实体的情感态度。每篇文章识别最多三个核心实体,并分别判断文章对上述核心实体的情感倾向(积极、中立、消极三种)。

这里说的是实体识别,马上想到的就是利用分步走解决:先去对文章进行实体识别,然后对提取出来的实体进行情感分类。但是后来一想这样两步的话会使得最终结果的错误率叠加,也就是说第一步做的不好的话会很大程度影响到第二步的结果。其实仔细看一下数据集会发现,它给出的很多样本实体并不是传统实体识别的实体,而是句子中的某一个token。这就跟SemEval2014的subtask 4非常像了,也就是Aspect Based Sentiment Analysis (ABSA)。不说废话了,接下来我们来看看关于ABSA问题都有哪些常用的算法。

1. A glance at ABSA(什么是ABSA)

在介绍具体算法之前,先来看一下什么是ABSA?可以粗暴翻译为基于方面的情感分析,本质就是对句子中不同对象可能会存在不同的情感倾向,例如:“I bought a new camera. The picture quality is amazing but the battery life is too short”,这句话中对于target=picture quality,情感是正的;而对于target=battery,情感就是负的了。ABSA任务的目的就是去找出给定句子中的不同target的情感倾向。

一个关于ABSA的PPT介绍


2. Effective LSTMs for Target-Dependent Sentiment Classification(Tang/COLING2016)

在这篇论文里面作者主要是介绍了三种解决ABSA任务的模型:

LSTM

第一种方法就是直接使用NLP中的万金油模型LSTM,在该模型中,target words是被忽略的,也就是说跟普通的对文本情感分析的做法没有区别,最终得到的也是这个句子的全局情感,可想而知最后的效果一般般。具体做法就是对句子中的token进行embedding处理作为模型的输入,经过一次一次的计算隐层和输入之后得到一个句子表示hnh_{n}hn,接着对这个向量进行softmax计算概率, 其中C是情感类别种类。
softmax⁡i=exp⁡(xi)∑i′=1Cexp⁡(xi′)\operatorname{softmax}_{i}=\frac{\exp \left(x_{i}\right)}{\sum_{i^{\prime}=1}^{C} \exp \left(x_{i^{\prime}}\right)} softmaxi=i=1Cexp(xi)exp(xi)

TD-LSTM

为了解决上面LSTM忽略目标词的问题,提出了TD-LSTM模型,如下图所示。

其基本思想是对于一个target-word,充分考虑其上下文信息,具体来说使用了两个LSTM,从左往右的和从右往左的,分别对target word的左边和右边的信息建模。接着将两个LSTM得到的隐状态hlh_{l}hlhrh_{r}hr concat一下,也就得到了关于这个词的句子情感表示,然后一样也是送入到softmax进行分类。除了concat作者也提到可以尝试进行sum或者average。

TC-LSTM

TC-LSTM在TD-LSTM的基础上进一步加强了target-word与句子中每个token的关联,看模型框架就会很清晰,

可以看出,这里在模型输入的时候多加入了一部分:vtargetv_{target}vtarget,这样就可以加强target与句子的交互,使得最后的表示更为确切。那么这个vtargetv_{target}vtarget是怎么得到的呢?其实就是简单地对target words的向量表示进行平均化处理得到一个向量。

实验结果比对


3. Attention-based LSTM for Aspect-level Sentiment Classification(Wang/EMNLP2016)

这是在Effective LSTMs for Target-Dependent Sentiment Classification后面发出的文章,指出前者的不足之处:

However, those models can only take into consideration the target but not aspect information which is proved to be crucial for aspect-level classification.

作者这里提到了两个概念:target和aspect。我们可以认为target是包含在句子中出现的词,而aspect属于预先定义的比较high-level的类别刻画。
基于以上,提出了两种模型:

  • Attention-based LSTM (AT-LSTM)
  • Attention-based LSTM with Aspect Embedding (ATAE-LSTM)
Aspect Embedding

对于ABSA问题,aspect信息对于最终的情感判别是非常重要的。因此作者对每个aspect都学习一个相应地aspect embedding来表示, vaiv_{a_{i}}vai

AT-LSTM

既然学习出了aspect embedding,那么怎么把它结合进模型里呢?这里使用的是超级火的注意力机制,如下图所示

为了更好地理解上述模型,首先回顾一下 vanilla attention mechanism,也就是key-value-query模型,具体可以参考理解Attention机制原理及模型。这里可以认为key=H, value=H, query=aspect embedding,整个attention的过程可以用数学表示为:

M=tanh⁡([WhHWvva⊗eN])α=softmax⁡(wTM)r=HαT\begin{array}{l}{M=\tanh \left(\left[ \begin{array}{c}{W_{h} H} \\ {W_{v} v_{a} \otimes e_{N}}\end{array}\right]\right)} \\ {\alpha=\operatorname{softmax}\left(w^{T} M\right)} \\ {r=H \alpha^{T}}\end{array} M=tanh([WhHWvvaeN])α=softmax(wTM)r=HαT
其中r表示各hidden state带权重后的表示,然后最终句子的表示为:
h∗=tanh⁡(Wpr+WxhN)h^{*}=\tanh \left(W_{p} r+W_{x} h_{N}\right)h=tanh(Wpr+WxhN)
得到句子的表示后再进行情感判别:
y=softmax⁡(Wsh∗+bs)y=\operatorname{softmax}\left(W_{s} h^{*}+b_{s}\right)y=softmax(Wsh+bs)

ATAE-LSTM

为了进一步利用aspect embedding的信息,类似于上一节中TC-LSTM中的思想,即将aspect embedding与word embedding共同组合成模型的输入。模型的其他部分与AT-LSTM相同。

注意力结果可视化

试验分析

论文使用的数据集是SemEval 2014 Task 4,正如开篇提到的一样。


4. Learning to Attend via Word-Aspect Associative Fusion for Aspect-based Sentiment Analysis(Tay/AAAI2018)

对于上一节的ATAE-LSTM,作者认为仍然存在以下不足:

针对以上提出了Aspect Fusion LSTM (AF-LSTM),模型整体框架如下:

Word-Aspect Fusion Attention Layer

在输入经过embedding层和LSTM层之后进入到Word-Aspect Fusion Attention Layer,这也是该模型的重点。

  1. Normalization Layer(optional): 在隐状态矩阵和aspect vector进行交互之前可以选择性地对其进行正规化操作,可以选用Batch Normalization;
  2. Associative Memory Operators: 用于计算context word 和 aspect word之间的关系。有两种:
    • circular correlation和circular convolution

      [h⋆s]k=∑i=0d−1his(k+i)modd[h \star s]_{k}=\sum_{i=0}^{d-1} h_{i} s_{(k+i)} \bmod d[hs]k=i=0d1his(k+i)modd
      也可以用傅里叶变化得到:h⋆a=F−1(F(h)‾⊙F(a))h \star a=\mathcal{F}^{-1}(\overline{\mathcal{F}(h)} \odot \mathcal{F}(a))ha=F1(F(h)F(a))
    • circular convolution

      [h∗s]k=∑i=0d−1his(k−i)modd[h * s]_{k}=\sum_{i=0}^{d-1} h_{i} s_{(k-i) \bmod d}[hs]k=i=0d1his(ki)modd
  3. Learning Attentive Representations: 将aspect和context进行fusion之后得到的向量表示进行attention操作
试验分析

5. Interactive Attention Networks for Aspect-Level Sentiment Classification(Ma/IJCAI2017)

这篇文章作者的思路也是将target和context进行交互获取句子的准确表达,利用的模型是attention。与上面几个模型不同的在于,这里考虑了target可能存在好几个word组成的短语,另外添加了一层对于target的attention操作用于计算权重。提出了Interactive Attention Networks(IAN), 整体模型框架如下:

IAN
  1. 输入包括n个单词的context[wc1,wc2,…,wcn]\left[w_{c}^{1}, w_{c}^{2}, \ldots, w_{c}^{n}\right][wc1,wc2,,wcn]和m个单词的target[wt1,wt2,…,wtm]\left[w_{t}^{1}, w_{t}^{2}, \ldots, w_{t}^{m}\right][wt1,wt2,,wtm]
  2. 对输入进行embedding层后输入到LSTM网络中得到各个隐状态表示;
  3. 对所有隐状态求平均分别得到target和context的隐状态表示,以此作为后续attention两者的交互:
    cavg=∑i=1nhci/nc_{a v g}=\sum_{i=1}^{n} h_{c}^{i} / ncavg=i=1nhci/n tavg=∑i=1mhti/mt_{a v g}=\sum_{i=1}^{m} h_{t}^{i} / mtavg=i=1mhti/m
  4. 分别计算attention权重得分:
    γ(hci,tavg)=tanh⁡(hci⋅Wa⋅tavgT+ba)\gamma\left(h_{c}^{i}, t_{a v g}\right)=\tanh \left(h_{c}^{i} \cdot W_{a} \cdot t_{a v g}^{T}+b_{a}\right)γ(hci,tavg)=tanh(hciWatavgT+ba)αi=exp⁡(γ(hci,tavg))∑j=1nexp⁡(γ(hcj,tavg))\alpha_{i}=\frac{\exp \left(\gamma\left(h_{c}^{i}, t_{a v g}\right)\right)}{\sum_{j=1}^{n} \exp \left(\gamma\left(h_{c}^{j}, t_{a v g}\right)\right)}αi=j=1nexp(γ(hcj,tavg))exp(γ(hci,tavg))
    γ(hti,cavg)=tanh⁡(hti⋅Wa′⋅cavgT+ba′)\gamma\left(h_{t}^{i}, c_{a v g}\right)=\tanh \left(h_{t}^{i} \cdot W_{a'} \cdot c_{a v g}^{T}+b_{a'}\right)γ(hti,cavg)=tanh(htiWacavgT+ba)βi=exp⁡(γ(hti,cavg))∑j=1mexp⁡(γ(htj,cavg))\beta_{i}=\frac{\exp \left(\gamma\left(h_{t}^{i}, c_{a v g}\right)\right)}{\sum_{j=1}^{m} \exp \left(\gamma\left(h_{t}^{j}, c_{a v g}\right)\right)}βi=j=1mexp(γ(htj,cavg))exp(γ(hti,cavg))
  5. 根据单词权重计算target和context的最终表示:
    cr=∑i=1nαihcitr=∑i=1mβihti\begin{aligned} c_{r} &=\sum_{i=1}^{n} \alpha_{i} h_{c}^{i} \\ t_{r} &=\sum_{i=1}^{m} \beta_{i} h_{t}^{i} \end{aligned}crtr=i=1nαihci=i=1mβihti
  6. crc_{r}crtrt_{r}tr拼接起来作为整个输入句子的向量表示,并送入softmax计算类别概率
试验分析

同样数据集选用的也是SemEval 2014 Task 4,


以上~
2019.05.03

【论文】基于特定实体的文本情感分类总结(PART I)相关推荐

  1. 【论文】基于特定实体的文本情感分类总结(PART III)

    0. 写在前面 继续之前的系列,记录一些关于ABSA问题的paper 1. Targeted Aspect-Based Sentiment Analysis via Embedding Commons ...

  2. 【论文】基于特定实体的文本情感分类总结(PART II)

    0. 写在前面 五一假期最后一天-太阳超棒- 1. Multi-grained Attention Network for Aspect-Level Sentiment Classification ...

  3. 基于Bert的文本情感分类

    详细代码已上传到github: click me 摘  要:     情感分类是对带有感情色彩的主观性文本进行分析.推理的过程,即分析说话人的态度,推断其所包含的情感类别.传统机器学习在处理情感分类问 ...

  4. 复盘:基于attention的多任务多模态情绪情感识别,基于BERT实现文本情感分类(pytorch实战)

    复盘:基于attention机制的多任务多模态情绪情感识别(pytorch实战),基于BERT实现文本情感分类 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对 ...

  5. 我的实践:pytorch框架下基于BERT实现文本情感分类

    当前,在BERT等预训练模型的基础上进行微调已经成了NLP任务的一个定式了.为了了解BERT怎么用,在这次实践中,我实现了一个最简单的NLP任务,即文本情感分类. 文章目录 1.基于BERT进行情感分 ...

  6. python 多分类情感词典_基于情感词典的文本情感分类

    基于情感词典的文本情感分类 传统的基于情感词典的文本情感分类,是对人的记忆和判断思维的最简单的模拟,如上图.我们首先通过学习来记忆一些基本词汇,如否定词语有"不",积极词语有&qu ...

  7. NLP之基于TextCNN的文本情感分类

    TextCNN 文章目录 TextCNN 1.理论 1.1 基础概念 **最大汇聚(池化)层:** ![请添加图片描述](https://img-blog.csdnimg.cn/10e6e1ed6bf ...

  8. 基于pytorch的Bi-LSTM中文文本情感分类

    基于pytorch的Bi-LSTM中文文本情感分类 目录 基于pytorch的Bi-LSTM中文文本情感分类 一.前言 二.数据集的准备与处理 2.1 数据集介绍 2.2 文本向量化 2.3 数据集处 ...

  9. 基于Keras搭建LSTM网络实现文本情感分类

    基于Keras搭建LSTM网络实现文本情感分类 一.语料概况 1.1 数据统计 1.1.1 查看样本均衡情况,对label进行统计 1.1.2 计句子长度及长度出现的频数 1.1.3 绘制句子长度累积 ...

最新文章

  1. 复习HTML+CSS(2)
  2. 使用UISearchDisplayController
  3. linux安装的mysql没有密码_linux系统安装的mysql数据库root帐户密码忘记的两种处理方法...
  4. 大学学计算机的有作业吗,有没有电脑高手,大学计算机专业的作业
  5. linux监控nginx占用,使用zabbix 2.4 监控nginx
  6. python 数据分析库_五个 Python 常用数据分析库
  7. 第一百一十八期:运行 JavaScript 代码片段的 20 种工具
  8. Android 5.1 - 状态栏充电标志问题
  9. Oracle DB优化
  10. 提高网站第一次加载速度
  11. HT for Web 中Painter的介绍及用法
  12. Verilog作业(一)
  13. 关于C++的建议,仅仅为了规范代码(二)
  14. Android进阶之利用Tablayout+ViewPager+Fragment实现神奇的滑动效果
  15. 征信考量社交化和大数据化
  16. python 通信调制方式_python实现BPSK调制信号解调
  17. 【VIP视频网站项目一】搭建视频网站的前台页面(导航栏+轮播图+电影列表+底部友情链接)
  18. raid控制器2大厂商阵营并购史
  19. 通过故障恢复控制台修复xp系统引导文件丢失的方法
  20. 微信小程序token过期后重新执行失效的请求封装(用户无感刷新token)

热门文章

  1. Hive与Hbase数据表关联
  2. 医疗用户端app原型/问诊/挂号/开药/视频问诊/电子处方/预约/互联网医疗平台用户端/Axure原型/电话问诊/药品/就诊开药/远程医疗平台/线上问诊/线上看病/rp源文件/移动端医疗原型/门诊
  3. 互联网金融数据分析-笔记
  4. Installing OwnCloud 9 on Debian 8
  5. 如何去掉UITableViewController中的分隔线setSeparatorStyle
  6. 甭给《程序员》把脉——你不是主编
  7. 洛谷 2312 / bzoj 3751 解方程——取模
  8. IT增值服务,客户案例(一)--山东青岛在职人士,2年.Net经验,转Java开发半年
  9. lr常用的几个函数(不完整)
  10. Leetcode - 广度优先遍历专题