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

0. 写在前面

五一假期最后一天…太阳超棒…

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权重学习的差异性。

模型如下,可以分为四个部分:

  1. Input embedding layer
  2. contextual layer
  3. multi-grained attention layer
  4. output layer
    在这里插入图片描述
Input Embedding Layer

输入embedding层,使用的是预训练好的Glove,获得定长的aspect和context向量表示。

Contextual Layer

将上一步获得的aspect和context向量矩阵送入双向LSTM网络来捕获输入中词与词之间的关联,得到一个sentence contextual output H ∈ R 2 d ∗ N H \in \mathbb{R}^{2 d * N} HR2dNaspect contextual output Q ∈ R 2 d ∗ M Q \in \mathbb{R}^{2 d * M} QR2dM。然后这里就可以把这两个矩阵进行交互了,但是作者又另外考虑了在上下文中与aspect word距离不同的word应该有不同的权重,引入了position encoding mechanism:context中与aspect相距为l的单词的权重 w j w_{j} wj为:
w t = 1 − l N − M + 1 w_{t}=1-\frac{l}{N-M+1} wt=1NM+1l
注意,aspect中的词的权重设置为0。 于是最终得到的优化后的sentence contextual output H ∈ R 2 d ∗ N H \in \mathbb{R}^{2 d * N} HR2dN H = [ H 1 ∗ w 1 , ⋯   , H N ∗ w N ] H = \left[H_{1} * w_{1}, \cdots, H_{N} * w_{N}\right] H=[H1w1,,HNwN]

Multi-grained Attention Layer

前面的部分可以说跟之前的工作大同小异,重点在于接下来的多粒度注意力层
(1)Coarse-grained Attention
粗粒度attention的话跟之前的attention是一样的,

  • C-Aspect2Context:对aspect矩阵Q进行求平均pool得到一个向量表示,将其与context矩阵H交互做attention, s c a ( Q a v g , H i ) = Q a v g ∗ W c a ∗ H i s_{c a}\left(Q_{a v g}, H_{i}\right)=Q_{a v g} * W_{c a} * H_{i} sca(Qavg,Hi)=QavgWcaHi a i c a = exp ⁡ ( s c a ( Q a v g , H i ) ) ∑ k = 1 N exp ⁡ ( s c a ( Q a v g , H k ) ) a_{i}^{c a}=\frac{\exp \left(s_{c a}\left(Q_{a v g}, H_{i}\right)\right)}{\sum_{k=1}^{N} \exp \left(s_{c a}\left(Q_{a v g}, H_{k}\right)\right)} aica=k=1Nexp(sca(Qavg,Hk))exp(sca(Qavg,Hi)) m c a = ∑ i = 1 N a i c a ⋅ H i m^{c a}=\sum_{i=1}^{N} a_{i}^{c a} \cdot H_{i} mca=i=1NaicaHi
  • C-Context2Aspect:这一步是跟C-Aspect2Context对称的
    s c c ( H a v g , Q i ) = H a v g ∗ W c c ∗ Q i s_{c c}\left(H_{a v g}, Q_{i}\right)=H_{a v g} * W_{c c} * Q_{i} scc(Havg,Qi)=HavgWccQi a i c c = exp ⁡ ( s c c ( H a v g , Q i ) ) ∑ k = 1 M exp ⁡ ( s c c ( H a v g , Q k ) ) a_{i}^{c c}=\frac{\exp \left(s_{c c}\left(H_{a v g}, Q_{i}\right)\right)}{\sum_{k=1}^{M} \exp \left(s_{c c}\left(H_{a v g}, Q_{k}\right)\right)} aicc=k=1Mexp(scc(Havg,Qk))exp(scc(Havg,Qi)) m c c = ∑ i = 1 M a i c c ⋅ Q i m^{c c}=\sum_{i=1}^{M} a_{i}^{c c} \cdot Q_{i} mcc=i=1MaiccQi

(2)Fine-grained Attention
细粒度attention的目的是刻画aspect对context或者context对aspect词与词之间的影响关系。首先定义H和Q元素之间的相似矩阵U,注意U的形状为[N * M],U中每个元素 U i j U_{ij} Uij表示context中的第i个单词和aspect中的第j个单词之间的相似度, U i j = W u ( [ H i ; Q j ; H i ∗ Q j ] ) U_{i j}=W_{u}\left(\left[H_{i} ; Q_{j} ; H_{i} * Q_{j}\right]\right) Uij=Wu([Hi;Qj;HiQj])

  • F-Aspect2Context刻画的是对于每一个aspect word,context对其的影响程度。首先求出矩阵U中每一行最大的值,然后对其归一化操作得到和为一的权重分布后加权求和得到新的H表示
    s i f a = max ⁡ ( U i , : ) s_{i}^{f a}=\max \left(U_{i, :}\right) sifa=max(Ui,:) a i f a = exp ⁡ ( s i f a ) ∑ k = 1 N exp ⁡ ( s k f a ) a_{i}^{f a}=\frac{\exp \left(s_{i}^{f a}\right)}{\sum_{k=1}^{N} \exp \left(s_{k}^{f a}\right)} aifa=k=1Nexp(skfa)exp(sifa) m f a = ∑ i = 1 N a i f a ⋅ H i m^{f a}=\sum_{i=1}^{N} a_{i}^{f a} \cdot H_{i} mfa=i=1NaifaHi
  • F-Context2Aspect刻画的是对于每一个context word,aspect对其的影响程度。首先对U中每一行做归一化操作,得到N个和为1 的权重表示,然后用N个长为M的向量去和矩阵M逐元素加权求和,最后将这N个新的表示相加取平均,得到aspect最后的细粒度表示。 a i j f c = exp ⁡ ( U i j ) ∑ k = 1 M exp ⁡ ( U i k ) a_{i j}^{f c}=\frac{\exp \left(U_{i j}\right)}{\sum_{k=1}^{M} \exp \left(U_{i k}\right)} aijfc=k=1Mexp(Uik)exp(Uij) q i f c = ∑ j = 1 M a i j f c ⋅ Q j q_{i}^{f c}=\sum_{j=1}^{M} a_{i j}^{f c} \cdot Q_{j} qifc=j=1MaijfcQj m f c = Pooling ⁡ ( [ q 1 f c , ⋯   , q N f c ] ) m^{f c}=\operatorname{Pooling}\left(\left[q_{1}^{f c}, \cdots, q_{N}^{f c}\right]\right) mfc=Pooling([q1fc,,qNfc])
Output Layer

在这一层将上述步骤得到的attention表示拼接起来,作为最终输入句子的向量表示并送入softmax层分析情感得分。

Loss Function

模型选用的损失函数为:
L = − ∑ i = 1 C y i log ⁡ ( p i ) + β L a l i g n + λ ∥ Θ ∥ 2 \mathcal{L}=-\sum_{i=1}^{C} y_{i} \log \left(p_{i}\right)+\beta \mathcal{L}_{a l i g n}+\lambda\|\Theta\|^{2} L=i=1Cyilog(pi)+βLalign+λΘ2
其中第一项为交叉熵损失,第二项为单独设计的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_{i} ai a j a_{j} aj,首先求出它们对context中某一特定单词的attention权重差的平方,然后乘上 a i a_{i} ai a j a_{j} aj之间的距离 d i j d_{ij} dij
d i j = σ ( W d ( [ Q i ; Q j ; Q i ∗ Q j ] ) d_{i j}=\sigma\left(W_{d}\left(\left[Q_{i} ; Q_{j} ; Q_{i} * Q_{j}\right]\right)\right. dij=σ(Wd([Qi;Qj;QiQj]) L align = − ∑ i = 1 M − 1 ∑ j = i + 1 , y i ≠ y j M ∑ k = 1 N d i j ⋅ ( a i k c a − a j k c a ) 2 \mathcal{L}_{\text {align}}=-\sum_{i=1}^{M-1} \sum_{j=i+1, y_{i} \neq y_{j}}^{M} \sum_{k=1}^{N} d_{i j} \cdot\left(a_{i k}^{c a}-a_{j k}^{c a}\right)^{2} Lalign=i=1M1j=i+1,yi=yjMk=1Ndij(aikcaajkca)2

试验分析

在这里插入图片描述


2.Aspect Level Sentiment Classification with Attention-over-Attention Neural Networks

这篇文章的思路好像跟上一篇很像,模型可以分为四个部分:

  1. word embedding
  2. Bi-LSTM
  3. Attention-over-Attention
  4. Final Classification
    在这里插入图片描述
Attention-over-Attention(AOA)

定义长度为n的句子 s = [ w 1 , w 2 , … , w i , … , w j , … , w n ] s=\left[w_{1}, w_{2}, \dots, w_{i}, \dots, w_{j}, \dots, w_{n}\right] s=[w1,w2,,wi,,wj,,wn]和长度为m的target t = [ w i , w i + 1 , … , w i + m − 1 ] t = \left[w_{i}, w_{i+1}, \dots, w_{i+m-1}\right] t=[wi,wi+1,,wi+m1]

  1. 经过双向LSTM得到的隐状态表示为矩阵 h s ∈ R n × 2 d h h_{s}\in R^{n \times 2 d_{h}} hsRn×2dh, h t ∈ R m × 2 d h h_{t} \in R^{m \times 2 d_{h}} htRm×2dh
  2. 接着计算两者的交互矩阵 I = h s ⋅ h t T ∈ R n × m I=h_{s} \cdot h_{t}^{T}\in R^{n \times m} I=hshtTRn×m;
  3. 通过对交互矩阵做基于列的softmax和基于行的softmax可以得到target-to-sentence attention 和sentence-to-target attention
    α i j = exp ⁡ ( I i j ) ∑ i exp ⁡ ( I i j ) \alpha_{i j}=\frac{\exp \left(I_{i j}\right)}{\sum_{i} \exp \left(I_{i j}\right)} αij=iexp(Iij)exp(Iij) β i j = exp ⁡ ( I i j ) ∑ j exp ⁡ ( I i j ) \beta_{i j}=\frac{\exp \left(I_{i j}\right)}{\sum_{j} \exp \left(I_{i j}\right)} βij=jexp(Iij)exp(Iij)
  4. 对beta向量求平均,也就获得target-level attention: β ‾ j = 1 n ∑ i β i j \overline{\beta}_{j}=\frac{1}{n} \sum_{i} \beta_{i j} βj=n1iβij
  5. 最后再做一次sentence层面的attention: γ = α ⋅ β ‾ T \gamma=\alpha \cdot \overline{\beta}^{T} γ=αβT
试验分析

在这里插入图片描述


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。
    c i n t r a = M H A ( e c , e c ) \mathbf{c}^{\mathrm{intra}}=M H A\left(\mathbf{e}^{\mathrm{c}}, \mathbf{e}^{\mathrm{c}}\right) cintra=MHA(ec,ec) t  inter  = M H A ( e c , e t ) \mathbf{t}^{\text { inter }}=M H A\left(\mathbf{e}^{\mathrm{c}}, \mathbf{e}^{\mathrm{t}}\right) t inter =MHA(ec,et)
  • Point-wise Convolution Transformation(PCT): 逐点卷积,即卷积核的尺寸为1,对上述得到的两个attention encoder进行一下操作,
    P C T ( h ) = σ ( h ∗ W p c 1 + b p c 1 ) ∗ W p c 2 + b p c 2 P C T(\mathbf{h})=\sigma\left(\mathbf{h} * W_{p c}^{1}+b_{p c}^{1}\right) * W_{p c}^{2}+b_{p c}^{2} PCT(h)=σ(hWpc1+bpc1)Wpc2+bpc2
Target-specific Attention Layer

将attention encoder后得到的关于context和aspect信息的向量表示 h t ∣ h_{t}| ht h c h_{c} hc再做一次attention操作得到具有更多交互信息的向量,然后与 h t ∣ h_{t}| ht h c h_{c} hc pool以后的向量拼接得到最终的输入表示送入softmax层进行情感分析
o ~ = [ h a v g c ; h a v g t ; h a v g t s c ] x = W o T o ~ + b ~ o y = softmax ⁡ ( x ) = exp ⁡ ( x ) ∑ k = 1 C exp ⁡ ( x ) \begin{aligned} \tilde{\mathbf{o}} &=\left[h_{a v g}^{c} ; h_{a v g}^{t} ; h_{a v g}^{t s c}\right] \\ x &=W_{o}^{T} \tilde{\mathbf{o}}+\tilde{b}_{o} \\ y &=\operatorname{softmax}(x) \\ &=\frac{\exp (x)}{\sum_{k=1}^{C} \exp (x)} \end{aligned} o~xy=[havgc;havgt;havgtsc]=WoTo~+b~o=softmax(x)=k=1Cexp(x)exp(x)

Loss Function

L ( θ ) = − ∑ i = 1 C y ^ c log ⁡ ( y c ) + L l s r + λ ∑ θ ∈ Θ θ 2 \mathcal{L}(\theta)=-\sum_{i=1}^{C} \hat{y}^{c} \log \left(y^{c}\right)+\mathcal{L}_{l s r}+\lambda \sum_{\theta \in \Theta} \theta^{2} L(θ)=i=1Cy^clog(yc)+Llsr+λθΘθ2前面提到为了解决标签不可信任问题(比如中性情感是一种非常模糊的情感表达,具有中性情感标签的训练样本就是属于不可信任的),引入了一种新的损失计算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的表示。
    r i τ = ∑ j = 1 m h j τ ∗ F ( h i ( l ) , h j τ ) r_{i}^{\tau}=\sum_{j=1}^{m} h_{j}^{\tau} * \mathcal{F}\left(h_{i}^{(l)}, h_{j}^{\tau}\right) riτ=j=1mhjτF(hi(l),hjτ) F ( h i ( l ) , h j τ ) = exp ⁡ ( h i ( l ) ⊤ h j τ ) ∑ k = 1 m exp ⁡ ( h i ( l ) ⊤ h k τ ) \mathcal{F}\left(h_{i}^{(l)}, h_{j}^{\tau}\right)=\frac{\exp \left(h_{i}^{(l) \top} h_{j}^{\tau}\right)}{\sum_{k=1}^{m} \exp \left(h_{i}^{(l) \top} h_{k}^{\tau}\right)} F(hi(l),hjτ)=k=1mexp(hi(l)hkτ)exp(hi(l)hjτ)
  • Context-Preserving Mechanism的提出是因为在经过TST的非线性转化之后,现有的向量表达可能已经丢失了原来Bi-LSTM层输出的信息,作者提出了两种解决方案:
    • Lossless Forwarding:直接将前一层的输出加入到这一层的输出上
      h i ( l + 1 ) = h i ( l ) + h ~ i ( l ) , i ∈ [ 1 , n ] , l ∈ [ 0 , L ] h_{i}^{(l+1)}=h_{i}^{(l)}+\tilde{h}_{i}^{(l)}, i \in[1, n], l \in[0, L] hi(l+1)=hi(l)+h~i(l),i[1,n],l[0,L]
    • Adaptive Scaling:与LSTM中门控机制类似的自适应保存机制,通过门控单元来控制当前层和上层输出到下层的信息。
      t i ( l ) = σ ( W trans h i ( l ) + b trans ) t_{i}^{(l)}=\sigma\left(W_{\text {trans}} h_{i}^{(l)}+b_{\text {trans}}\right) ti(l)=σ(Wtranshi(l)+btrans) h i ( l + 1 ) = t i ( l ) ⊙ h ~ i ( l ) + ( 1 − t i ( l ) ) ⊙ h i ( l ) h_{i}^{(l+1)}=t_{i}^{(l)} \odot \tilde{h}_{i}^{(l)}+\left(1-t_{i}^{(l)}\right) \odot h_{i}^{(l)} hi(l+1)=ti(l)h~i(l)+(1ti(l))hi(l)
Convolutional Layer

作者对于卷积层提出了利用观点词与目标词的距离的改进措施。作者为每一个位置计算一个位置特征 v i = { 1 − ( k + m − i ) C i < k + m 1 − i − k C k + m ≤ i ≤ n 0 i > n v_{i}=\left\{\begin{array}{ll}{1-\frac{(k+m-i)}{C}} & {i<k+m} \\ {1-\frac{i-k}{C}} & {k+m \leq i \leq n} \\ {0} & {i>n}\end{array}\right. vi=1C(k+mi)1Cik0i<k+mk+mini>n其中C是超参,相当于设置了一个窗口,在这个窗口范围内进行计算。k是target第一个词的位置,m是target的长度,i是当前词的位置。

然后将距离特征融合到词特征上: h ^ i ( l ) = h i ( l ) ∗ v i , i ∈ [ 1 , n ] , l ∈ [ 1 , L ] \hat{h}_{i}^{(l)}=h_{i}^{(l)} * v_{i}, i \in[1, n], l \in[1, L] h^i(l)=hi(l)vi,i[1,n],l[1,L]再进行卷积和最大池化的操作 c i = ReLU ⁡ ( w c o n v ⊤ h i : i + s − 1 ( L ) + b c o n v ) c_{i}=\operatorname{ReLU}\left(\boldsymbol{w}_{c o n v}^{\top} \mathbf{h}_{i : i+s-1}^{(L)}+b_{c o n v}\right) ci=ReLU(wconvhi:i+s1(L)+bconv) z = [ max ⁡ ( c 1 ) , ⋯   , max ⁡ ( c n k ) ] ⊤ z=\left[\max \left(\mathbf{c}_{1}\right), \cdots, \max \left(\mathbf{c}_{n_{k}}\right)\right]^{\top} z=[max(c1),,max(cnk)] 最后送入softmax层进行情感判定 p ( y ∣ w τ , w ) = Softmax ⁡ ( W f z + b f ) p\left(y | \mathbf{w}^{\tau}, \mathbf{w}\right)=\operatorname{Softmax}\left(W_{f} z+b_{f}\right) p(ywτ,w)=Softmax(Wfz+bf)

试验分析

在这里插入图片描述


以上~
2019.05.04

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值