首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【情感分析】基于Aspect的情感分析模型总结(PART III)

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

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

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 A\left(\mathbf{e}^{\mathrm{c}}, \mathbf{e}^{\mathrm{c}}\right)
\mathbf{t}^{\text { inter }}=M H A\left(\mathbf{e}^{\mathrm{c}}, \mathbf{e}^{\mathrm{t}}\right)
  • 「Point-wise Convolution Transformation(PCT):」 逐点卷积,即卷积核的尺寸为1,对上述得到的两个attention encoder进行一下操作,
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}

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)}=\sigma\left(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层进行情感判定

p\left(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

输入为

\left\langle S,\left[A_{1}^{s}, A_{2}^{s}\right],\left[p_{1}, p_{2}\right]\right\rangle

形式,其中

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}=\left\sum_{l=1^{L} \alpha_{k l}^{2}-1\right|
  • 「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-I\right|_{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 -

下一篇
举报
领券