欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[情感分析] 基于方面的情感分析模型摘要(第三部分)

最编程 2024-05-08 16:05:16
...

看完冉冉的转载发现这个标题可能更加一目了然一些,学习了

继续来看基于Aspect的情感分析模型总结第三部分,回顾一下之前:

  • 【情感分析】ABSA模型总结(PART I)
  • 【情感分析】ABSA模型总结(PART II)

Attentional Encoder Network for Targeted Sentiment Classification[1]

与以往大多数RNN+Attention的思路不同,作者在这篇论文里给出了注意力编码网络(Attentional Encoder Network,AEN),避免了RNN系模型的缺点(难以并行化,需要大量数据/内存/计算);同时提到先前的工作大都忽略了标签不可信问题(label unreliability issue),这里在损失函数中引入了标签平滑正则项。模型整体框架如下

1.1 Embedding Layer

有两种embedding的方式

  • 使用glove预训练embedding
  • 使用bert预训练embedding:注意将输入转化成bert需要的形式, 即[CLS] + context + [SEP][CLS] + target +[SEP]

1.2 Attentional Encoder Layer

注意力编码层和LSTM层的作用一样,都是计算输入的语义表示得到隐状态矩阵。这一层包括两个子模块:

  • 「Multi-Head Attention:」 MHA就是在attention is all you need那篇论文里的多头注意力机制。这里对context采用的是「Intra-MHA」,即「self-attention」;对target采用的是「Inter-MHA」, 即传统意义上的attention。
mathbf{c}^{mathrm{intra}}=M H Aleft(mathbf{e}^{mathrm{c}}, mathbf{e}^{mathrm{c}}right)
mathbf{t}^{text { inter }}=M H Aleft(mathbf{e}^{mathrm{c}}, mathbf{e}^{mathrm{t}}right)
  • 「Point-wise Convolution Transformation(PCT):」 逐点卷积,即卷积核的尺寸为1,对上述得到的两个attention encoder进行一下操作,
P C T(mathbf{h})=sigmaleft(mathbf{h} * W_{p c}^{1}+b_{p c}^{1}right) * W_{p c}^{2}+b_{p c}^{2}

1.3 Target-specific Attention Layer

将attention encoder后得到的关于context和aspect信息的向量表示

h_{t}|

h_{c}

再做一次attention操作得到具有更多交互信息的向量,然后与

h_{t}|

h_{c}

pool以后的向量拼接得到最终的输入表示送入softmax层进行情感分析

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}

1.4 Loss Function

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}

前面提到为了解决标签不可信任问题(比如中性情感是一种非常模糊的情感表达,具有中性情感标签的训练样本就是属于不可信任的),引入了一种新的损失计算Label Smoothing Regularization (LSR),关于LSR的深入理解这里不详细说了可以参考知乎问题:Label Smoothing Regularization_LSR原理是什么?[2]

1.5 试验分析

作者非常nice地开源了论文对应的代码库:songyouwei/ABSA-PyTorch[3] 而且里面还有很多其他模型的实现。赞!

Transformation Networks for Target-Oriented Sentiment Classification[4]

作者提出用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)」

2.1 Bi-LSTM Layer

将文本的上下文信息融入到word的向量表示中是非常重要的

2.2 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}^{tau}=sum_{j=1}^{m} h_{j}^{tau} * mathcal{F}left(h_{i}^{(l)}, h_{j}^{tau}right)
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)}
  • 「Context-Preserving Mechanism」的提出是因为在经过TST的非线性转化之后,现有的向量表达可能已经丢失了原来Bi-LSTM层输出的信息,作者提出了两种解决方案:
    • Lossless Forwarding:直接将前一层的输出加入到这一层的输出上
h_{i}^{(l+1)}=h_{i}^{(l)}+tilde{h}_{i}^{(l)}, i in[1, n], l in[0, L]
    • Adaptive Scaling:与LSTM中门控机制类似的自适应保存机制,通过门控单元来控制当前层和上层输出到下层的信息。
t_{i}^{(l)}=sigmaleft(W_{text {trans}} h_{i}^{(l)}+b_{text {trans}}right)
h_{i}^{(l+1)}=t_{i}^{(l)} odot tilde{h}_{i}^{(l)}+left(1-t_{i}^{(l)}right) odot h_{i}^{(l)}

2.3 Convolutional Layer

作者对于卷积层提出了利用观点词与目标词的距离的改进措施。作者为每一个位置计算一个位置特征

v_{i}=left{begin{array}{l} {1-frac{(k+m-i)}{C},i<k+m} \ {1-frac{i-k}{C},k+m<i<n} \ {0,i>n} end{array}right.

其中C是超参,相当于设置了一个窗口,在这个窗口范围内进行计算。k是target第一个词的位置,m是target的长度,i是当前词的位置。

然后将距离特征融合到词特征上:

hat{h}_{i}^{(l)}=h_{i}^{(l)} * v_{i}, i in[1, n], l in[1, L]

再进行卷积和最大池化的操作

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)
z=left[max left(mathbf{c}_{1}right), cdots, max left(mathbf{c}_{n_{k}}right)right]^{top}

最后送入softmax层进行情感判定

pleft(y | mathbf{w}^{tau}, mathbf{w}right)=operatorname{Softmax}left(W_{f} z+b_{f}right)

2.4 试验分析

CAN---Constrained Attention Networks for Multi-Aspect Sentiment Analysis(2018)[5]

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

  • 引入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)任务

模型的整体框架如下:

3.1 Task-Specific Attention Layer

输入为

leftlangle S,left[A_{1}^{s}, A_{2}^{s}right],left[p_{1}, p_{2}right]rightrangle

形式,其中

S

为句子,

left[A_{1}^{s}, A_{2}^{s}right],left[p_{1}, p_{2}right]

分别表示句子中的aspect及其对应的polarity。

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

  • 「ALSC Attention Layer」目的是针对不同的aspect学习到不同的attention weights。输入是LSTM层输出
H

和句子中的aspect

U
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)
  • 「ACD Attention Layer」目的是学习句子中包含的aspect类别。输入是LSTM层输出
H

和aspect set

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) )

3.2 Regularization Layer

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

  • 「Sparse Regularization」用于限制每个aspect只关注句子中较少的词。以ALSC任务得到的attention weights 为例 ,系数正则项定义为:
R_s}=leftsum_{l=1^{L} alpha_{k l}^{2}-1right|
  • 「Orthogonal Regularization」用于限制每个aspect关注句子中的不同部分,使其尽量不重叠。将两个任务得到的attention weights分别表示成二维矩阵
M in mathbb{R}^{K times L}

G in mathbb{R}(K+1) times L

,然后计算正则项

R_{o}=left|M^{mathrm{T}} M-Iright|_{2}

3.3 Task-Specific Prediction Layer

  • 「ALSC Prediction」
overline{h}_{k}=sum_{l=1}^{L} alpha_{k l} h_{l}
r_{k}^{s}=tanh left(W_{1}^{r} overline{h}_{k}+W_{2}^{r} h_{L}right)
hat{y}_{k}=operatorname{softmax}left(W_{p}^{a} r_{k}^{s}+b_{p}^{a}right)
  • 「ACD Prediction」
r_{n}=overline{h}_{n}=sum_{l=1}^{L} beta_{n l} h_{l}
hat{y_{n}}=operatorname{sigmoid}left(W_{p}^{b} r_{n}+b_{p}^{b}right)

3.4 Loss

  • 「ALSC Loss」
L_{a}=-sum_{k=1}^{K} sum_{c} y_{k c} log y hat{k} c
  • 「ACD Loss」
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]

所以总体的损失表示为

L=L_{a}+frac{1}{N} L_{b}+lambda R

其中正则项

R

可以是前面的

R_{s} text { or } R_{o}

本文参考资料

[1]

Attentional Encoder Network for Targeted Sentiment Classification: https://arxiv.org/abs/1902.09314

[2]

Label Smoothing Regularization_LSR原理是什么?: https://www.zhihu.com/question/61971817

[3]

songyouwei/ABSA-PyTorch: https://github.com/songyouwei/ABSA-PyTorch/tree/aen

[4]

Transformation Networks for Target-Oriented Sentiment Classification: https://arxiv.org/abs/1805.01086

[5]

CAN---Constrained Attention Networks for Multi-Aspect Sentiment Analysis(2018): https://arxiv.org/pdf/1812.10735.pdf

- END -