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

48 篇文章 18 订阅
29 篇文章 3 订阅

0. 写在前面

继续之前的系列,记录一些关于ABSA问题的paper

1. Targeted Aspect-Based Sentiment Analysis via Embedding Commonsense Knowledge into an Attentive LSTM(Ma/AAAI-18)

作者在对论文review之后给出了几个仍未解决的问题:

  • target包含多个实体或单词时,现有的研究都是认为各部分重要性一致并且简单地计算平均值作为向量表示;
  • 使用hierarchical attention建模得到的target和情感词之间的关联是一个黑箱;
  • 未引入包含更多信息的外部知识
  • 全局的attention会编码与任务不相关的信息

对此,文章给出了三个解决方案:

  • .创建了多层attention模型来分别明确计算目标词(target)和整个句子;
  • 将外部知识引入传统LSTM网络;
  • 将常识性情感知识融入深层神经网络。

整体框架如下所示,主要包括两个组分:sequence encoderhierarchical attention
在这里插入图片描述

  1. word embedding: 原始句子 s = { w 1 , w 2 , ⋯   , w L } s=\left\{w_{1}, w_{2}, \cdots, w_{L}\right\} s={w1,w2,,wL}变为向量表示 { v w 1 , v w 2 , ⋯   , v w L } \left\{v_{w_{1}}, v_{w_{2}}, \cdots, v_{w_{L}}\right\} {vw1,vw2,,vwL}
  2. sequence encoder: 将向量送入双向LSTM得到每一个词的隐状态表示 H = [ h 1 , h 2 … h L ] H=\left[h_{1}, h_{2} \ldots h_{L}\right] H=[h1,h2hL]
  3. Target-Level Attention: 对句子中的所有target实例(如上图中的棕色框框)做self-attention获得target word attention representation;
  4. Sentence-Level Attention: 把步骤3得到的target words attention 向量和步骤2得到的所有隐状态向量给contact起来,再做一次attention;
  5. Output: 将步骤4得到的attention向量经过一个dense层和一个softmax层,得到最终的分类概率输出。

Commonsense Knowledge: SenticNet
引入外部知识库SenticNet,含有50000个实例,每个实例对应一系列情感属性。情感属性提供了每个实例的表示,也将各个aspect与其情感链接起来。
在这里插入图片描述
Sentic LSTM
为了能够有效利用secticnet,本文对LSTM做了延伸:输入门中情感概念的存在可以防止记忆细胞受到与已有知识冲突的输入标记的影响。同样,输出门使用这些知识过滤存储在记忆网络中的无关信息,调控模型是否使用情感知识。
在这里插入图片描述


2、Aspect Level Sentiment Classification with Deep Memory Network(Tang/EMNLP2016)

文章借鉴了来自QA领域的记忆网络解决ABSA问题。Memory Network提出的目的之一就是为了解决RNN、LSTM等网络的记忆能力较差的问题。它维护了一个外部的记忆单元用于存储之前的信息,而不是通过cell内部的hidden state。关于Memory Network更为详细的解读可以参考Memory Networks论文串烧。整体解决方案如下图所示
在这里插入图片描述

Embedding

输入是一个原始句子,需要将其映射到向量空间后输入到模型中。常规操作,将context word和aspect word分别用向量表示

Attention

包括了两部分: content attention和location attention

content attention

就是传统的Key Value Query的形式
g i = tanh ⁡ ( W a t t [ m i ; v a s p e c t ] + b a t t ) g_{i}=\tanh \left(W_{a t t}\left[m_{i} ; v_{a s p e c t}\right]+b_{a t t}\right) gi=tanh(Watt[mi;vaspect]+batt) α i = exp ⁡ ( g i ) ∑ j = 1 k exp ⁡ ( g j ) \alpha_{i}=\frac{\exp \left(g_{i}\right)}{\sum_{j=1}^{k} \exp \left(g_{j}\right)} αi=j=1kexp(gj)exp(gi) v e c = ∑ i = 1 k α i m i v e c=\sum_{i=1}^{k} \alpha_{i} m_{i} vec=i=1kαimi

location attention

我们从直观上来看,通常情况下,与aspect word距离较近的context word对于相应aspect的情感倾向的判断更重要。于是就有了location attention。所谓的location attention其实就是把context word的位置信息加入到memory中。文中定义了四种方式来encode位置信息:

  • 方式一: v i k = ( 1 − l i / n ) − ( k / d ) ( 1 − 2 × l i / n ) v_{i}^{k}=\left(1-l_{i} / n\right)-(k / d)\left(1-2 \times l_{i} / n\right) vik=(1li/n)(k/d)(12×li/n) m i = e i ⊙ v i m_{i}=e_{i} \odot v_{i} mi=eivi
  • 方式二: v i = 1 − l i / n v_{i}=1-l_{i} / n vi=1li/n m i = e i ⊙ v i m_{i}=e_{i} \odot v_{i} mi=eivi
  • 方式三: v i v_{i} vi 作为模型的一个参数,随机初始化,通过梯度下降学习得到。 m i = e i + v i m_{i}=e_{i}+v_{i} mi=ei+vi
  • 方式四: 与方式三类似,加了一层sigmoid。 m i = e i ⊙ σ ( v i ) m_{i}=e_{i} \odot \sigma\left(v_{i}\right) mi=eiσ(vi)
Loss

loss ⁡ = − ∑ ( s , a ) ∈ T ∑ c ∈ C P c g ( s , a ) ⋅ log ⁡ ( P c ( s , a ) ) \operatorname{loss}=-\sum_{(s, a) \in T} \sum_{c \in C} P_{c}^{g}(s, a) \cdot \log \left(P_{c}(s, a)\right) loss=(s,a)TcCPcg(s,a)log(Pc(s,a))

CODE HERE

3、Recurrent Attention Network on Memory for Aspect Sentiment Analysis(Tencent AI Lab/EMNLP 2017)

论文采用多层注意力机制结合记忆网络去捕获句子中target word 与context word之间的联系。整体框架如下,主要分为

  • input module,
  • memory module,
  • position-weighted memory module,
  • recurrent attention module,
  • output module.
    在这里插入图片描述
BLSTM for Memory Building

在Tang(2016)的论文中的记忆网络只是简单地将word embedding作为memory,并不能准确识别例如Except Patrick, all other actors don’t play well这类的实体情感。于是在本文中引入双向LSTM来捕获这之间的深层次关联。
如果有L层BLSTM叠加,最终得到的memory vector表示为 M ∗ = { m 1 ∗ , … , m t ∗ , … , m T ∗ } M^{*}=\left\{m_{1}^{*}, \ldots, m_{t}^{*}, \ldots, m_{T}^{*}\right\} M={m1,,mt,,mT} 其中$$$$

Position-Weighted Memory

当然,作者认为target word在输入句子中的位置信息也非常重要,更靠近target word的context word应该具有更高的重要性。 w t = 1 − ∣ t − τ ∣ t max ⁡ w_{t}=1-\frac{|t-\tau|}{t_{\max }} wt=1tmaxtτ u t = t − τ t max ⁡ u_{t}=\frac{t-\tau}{t_{\max }} ut=tmaxtτ M = { m 1 , … , m t , … , m T } M=\left\{m_{1}, \dots, m_{t}, \ldots, m_{T}\right\} M={m1,,mt,,mT} m t = ( w t ∙ m t ∗ , u t ) m_{t}=\left(w_{t}\right.\bullet m_{t}^{*}, u_{t} ) mt=(wtmt,ut)

Recurrent Attention on Memory

这一部分的目的就是利用之前计算好的memory来表示出情感,然后用于分类。和上一篇论文一样,使用GRU和堆叠的attention。


4、Aspect Based Sentiment Analysis with Gated Convolutional Networks(Xue/ACL2018)

针对ABSA任务,之前研究效果较好的模型都是采用了LSTM+attention机制,这类模型过于复杂且参数较多训练起来比较费时。

LSTM processes one token in a step. Attention layer involves exponential operation and normalization of all alignment scores of all the words in the sentence. Moreover, some models needs the positional information between words and targets to produce weighted LSTM, which can be unreliable in noisy review text.

因此作者提出一种基于门控机制的可并行训练的CNN模型。

  • 将原始输入embedding后送入包含两个卷积操作的卷积层,第一个卷积对句子提取sentiment feature,第二个卷积额外加上了aspect embedding提取aspect feature,而且两者使用的非线性激活函数也不一样 s i = tanh ⁡ ( X i : : + k ∗ W s + b s ) s_{i}=\tanh \left(\mathbf{X}_{i : :+k} * \mathbf{W}_{s}+b_{s}\right) si=tanh(Xi::+kWs+bs) a i = relu ⁡ ( X i : i + k ∗ W a + V a v a + b a ) a_{i}=\operatorname{relu}\left(\mathbf{X}_{i : i+k} * \mathbf{W}_{a}+\mathbf{V}_{a} \boldsymbol{v}_{a}+b_{a}\right) ai=relu(Xi:i+kWa+Vava+ba)
  • 将上述得到的两个输出按位相乘, c i = s i × a i c_{i}=s_{i} \times a_{i} ci=si×ai在这里插入图片描述
    以上是针对Aspect-Category Sentiment Analysis(ACSA),如果是Aspect-Term Sentiment Analysis(ATSA)问题呢,我们没有给定的aspect词,每个句子需要预测的target term都不同,这时候可以用另外一个CNN来提取target term的representation
    在这里插入图片描述
CODE HERE

5、CAN—Constrained Attention Networks for Multi-Aspect Sentiment Analysis(2018)

本文的创新点有以下几个:

  • 引入orthogonal regularization,使得对于不同的aspect,attention weight聚焦在句子不同的部分;
  • 引入sparse regularization ,使得每个aspect的attention weight只关注句子中的几个单词;
  • 不同于之前大多数研究一次只得出一个aspect的sentiment,本文可以同时得到句子中所有aspect的sentiment;
  • 引入multi-task多任务学习,在学习aspect level sentiment classification(ALSC)的同时学习aspect category detection (ACD)任务

模型的整体框架如下:
在这里插入图片描述

Task-Specific Attention Layer

输入为 ⟨ S , [ A 1 s , A 2 s ] , [ p 1 , p 2 ] ⟩ \left\langle S,\left[A_{1}^{s}, A_{2}^{s}\right],\left[p_{1}, p_{2}\right]\right\rangle S,[A1s,A2s],[p1,p2]形式,其中 S S S为句子, [ A 1 s , A 2 s ] , [ p 1 , p 2 ] \left[A_{1}^{s}, A_{2}^{s}\right],\left[p_{1}, p_{2}\right] [A1s,A2s],[p1,p2]分别表示句子中的aspect及其对应的polarity。

前面的embedding和LSTM层就不具体介绍了。来看看多任务学习层,主要包括:

  • ALSC Attention Layer目的是针对不同的aspect学习到不同的attention weights。输入是LSTM层输出 H H H和句子中的aspect U U U α k = softmax ⁡ ( z a T tanh ⁡ ( W 1 a H + W 2 a ( u k s ⊗ e L ) ) ) \alpha_{k}=\operatorname{softmax}\left(z^{a \mathrm{T}} \tanh \left(W_{1}^{a} H+W_{2}^{a}\left(u_{k}^{s} \otimes e_{L}\right)\right)\right) αk=softmax(zaTtanh(W1aH+W2a(ukseL)))
  • ACD Attention Layer目的是学习句子中包含的aspect类别。输入是LSTM层输出 H H H和aspect set β n = softmax ⁡ ( z b T tanh ⁡ ( W 1 b H + W 2 b ( u n ⊗ e L ) ) ) ) \beta_{n}=\operatorname{softmax}\left(z^{b^{\mathrm{T}}} \tanh \left(W_{1}^{b} H+W_{2}^{b}\left(u_{n} \otimes e_{L}\right)\right)\right) ) βn=softmax(zbTtanh(W1bH+W2b(uneL))))
Regularization Layer

Regularization Layer用于对前面得到的attention weights加上限制,使得模型可以同时处理多个aspect。
注意:该层只在训练阶段有效,因为需要知道真实标签,在预测阶段直接略过该层。

  • Sparse Regularization用于限制每个aspect只关注句子中较少的词。以ALSC任务得到的attention weights α i \alpha_{i} αi为例 α k = { α k 1 , α k 2 , … , α k L } \alpha_{k}=\left\{\alpha_{k 1}, \alpha_{k 2}, \dots, \alpha_{k L}\right\} αk={αk1,αk2,,αkL},系数正则项定义为: R s = ∣ ∑ l = 1 L α k l 2 − 1 ∣ R_{s}=\left|\sum_{l=1}^{L} \alpha_{k l}^{2}-1\right| Rs=l=1Lαkl21
  • Orthogonal Regularization用于限制每个aspect关注句子中的不同部分,使其尽量不重叠。将两个任务得到的attention weights分别表示成二维矩阵 M ∈ R K × L M \in \mathbb{R}^{K \times L} MRK×L G ∈ R ( K + 1 ) × L G \in \mathbb{R}(K+1) \times L GR(K+1)×L,然后计算正则项 R o = ∥ M T M − I ∥ 2 R_{o}=\left\|M^{\mathrm{T}} M-I\right\|_{2} Ro=MTMI2
Task-Specific Prediction Layer
  • ALSC Prediction h ‾ k = ∑ l = 1 L α k l h l \overline{h}_{k}=\sum_{l=1}^{L} \alpha_{k l} h_{l} hk=l=1Lαklhl r k s = tanh ⁡ ( W 1 r h ‾ k + W 2 r h L ) r_{k}^{s}=\tanh \left(W_{1}^{r} \overline{h}_{k}+W_{2}^{r} h_{L}\right) rks=tanh(W1rhk+W2rhL) y ^ k = softmax ⁡ ( W p a r k s + b p a ) \hat{y}_{k}=\operatorname{softmax}\left(W_{p}^{a} r_{k}^{s}+b_{p}^{a}\right) y^k=softmax(Wparks+bpa)
  • ACD Prediction r n = h ‾ n = ∑ l = 1 L β n l h l r_{n}=\overline{h}_{n}=\sum_{l=1}^{L} \beta_{n l} h_{l} rn=hn=l=1Lβnlhl y n ^ = sigmoid ⁡ ( W p b r n + b p b ) \hat{y_{n}}=\operatorname{sigmoid}\left(W_{p}^{b} r_{n}+b_{p}^{b}\right) yn^=sigmoid(Wpbrn+bpb)
Loss
  • ALSC Loss
    L a = − ∑ k = 1 K ∑ c y k c log ⁡ y k ^ c L_{a}=-\sum_{k=1}^{K} \sum_{c} y_{k c} \log y \hat{k} c La=k=1Kcykclogyk^c
  • ACD Loss L b = − ∑ n = 1 N [ y n log ⁡ y ^ n + ( 1 − y n ) log ⁡ ( 1 − y ^ n ) ] L_{b}=-\sum_{n=1}^{N}\left[y_{n} \log \hat{y}_{n}+\left(1-y_{n}\right) \log \left(1-\hat{y}_{n}\right)\right] Lb=n=1N[ynlogy^n+(1yn)log(1y^n)]

所以总体的损失表示为 L = L a + 1 N L b + λ R L=L_{a}+\frac{1}{N} L_{b}+\lambda R L=La+N1Lb+λR其中正则项 R R R可以是前面的 R s  or  R o R_{s} \text { or } R_{o} Rs or Ro


以上~
2019.05.28

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值