随着深度学习技术的发展, 基于神经网络的方法成为主流, 被广泛地应用于自然语言处理(NLP)领域中.与传统的机器学习方法相比, 深度学习在情感分析上表现得更为优秀, 其不需要建立情感词典.深度学习能够自动捕捉从数据本身到高层更为复杂的语义映射, 在性能上体现出比以往方法更好的效果.递归自动编码器[1, 2]、卷积神经网络(CNN)[3-5]和长短期记忆网络(LSTM)[6, 7]是目前在情感分析任务中常见的深度学习模型.
虽然这些神经网络模型在情感分类任务中取得了巨大的成功, 但依然存在着一些缺陷:
首先, 忽略了情感分析任务中现有的语言知识和情感资源, 不能充分地利用这些情感特征信息; 其次, 语言知识(如情感词汇、否定词和程度副词等), 在神经网络模型中未被充分使用.Chen等人[8]提出了一种结合情感词典和卷积神经网络的情感分类方法(WFCNN), 主要是利用情感词典中的词条对文本中的词语进行抽象表示, 再使用卷积神经网络提取抽象词语的序列特征.该方法中的情感特征依赖于人工整理的情感词典, 使用的特征单一, 难以正确的表达每个词在句子中的重要程度, 无法充分利用情感分析任务中语言知识和情感特征信息; 并且该方法使用的CNN滤波器的词容量有限的, 不能捕捉到远距离依赖, 无法获得句子中非相邻词之间的语义关系.LSTM可以通过对句子的顺序建模来解决这个限制.Qian等人[9]提出了句级标注训练的LSTM模型, 对情感词汇、否定词和程度副词等现有的语言规则进行建模, 能够有效地利用语言学规则, 实验也取得了较好的结果.但是, 该模型需要大量的人力来建立强度正则化器.
另外, 在深度学习中, 很多的NLP任务都可以看作是一个序列建模任务(sequence modeling).而序列模型存在一个问题: 无论输入的文本序列的长度为多少, 最终都会将这个文本序列解码成为某一个特定的长度向量.如果设定的向量长度过短, 那么会造成输入文本信息丢失, 最后会导致文本误判.Pei等人[10]针对这个问题提出了一种将词性注意力机制和LSTM相结合的网络模型, 利用注意力矩阵计算出给定词句的注意力特征.实验结果表示: 在一定的维度内, 该模型能够取得较好的情感分类效果; 但是, 当文本映射的维度超过了阈值, 分类的准确率会随着向量维度的提升而降低.Liu等人[11]提出了一种具有注意机制和卷积层的双向LSTM文本分类模型, 用来解决文本的任意序列长度问题, 以及文本数据的稀疏问题.
针对以上问题, 本文提出了一种基于多通道特征和自注意力的双向LSTM情感分类方法(MFSA-BiLSTM), 模型由两部分组成: 多通道特征和自注意力机制(self-attention).首先, 本文对情感分析任务中现有的语言知识和情感资源进行建模, 将输入文本句子中的词向量与词性特征向量, 位置特征向量和依存特征向量三者进行结合形成不同的特征通道向量作为BiLSTM输入, 让模型从不同的角度去学习句子中的情感特征信息, 挖掘句子中不同方面的隐藏信息.然后, 将这3个特征通道向量与3个BiLSTM的输出向量进行结合, 再利用自注意力模型来发现句子中的重要信息, 并对这些重要信息进行重点关注加强.本文采用的自注意力是注意力的一种特殊情况.与传统的注意力机制不同的是, 自注意机制能够减少对外部信息的依赖, 无视词与词之间的距离, 直接计算依赖关系, 学习每个词对句子情感倾向的权重分布, 重点关注以及加强句子中的情感特征, 可以使模型学习到更多的隐藏特征信息.本文的主要贡献如下.
(1) 本文经过研究发现, 对情感分类任务中特有的语言知识和情感资源进行建模可以增强分类效果.本文通过在序列BiLSTM模型上建立多个特征通道向量输入来解决这个问题;
(2) 提出了一种自注意力机制.将多特征向量和BiLSTM模型的隐藏输出层相结合, 为不同词赋予不同的情感权重.能够有效地提高了情感极性词的重要程度, 充分挖掘文本中的情感信息;
(3) 同时, 在本文提出的MFSA-BiLSTM模型基础上, 本文提出了用于文档级文本分类任务的MFSA- BiLSTM-D模型;
(4) 在句级和文档级据集上验证了本文提出MFSA-BiLSTM模型和MFSA-BiLSTM-D模型在情感分析任务中的有效性.
1 相关工作
1.1 用于情感分析的语言知识
在情感分析任务中, 语义知识和情感资源, 例如情感词汇、否定词语(不、从不)、程度词(非常、绝对地)等等, 能够在很大程度上提高分类效果.因此, 很多研究者尝试从语言知识和情感资源中设计出更好的特征来提高情感分析的分类性能.Tang等人[12]将生成具有情感特定词嵌入(SSWE)的特征拿来训练SVM的分类模型. Huang等人[13]将情感表情符号与微博用户性格情绪特征纳入到图模型LDA中实现微博主题与情感的同步推导, 并在LDA中加入了情感层与微博用户关系参数[14], 利用微博用户关系与微博主题来学习微博的情感极性. Vo等人[15]在情感词典中添加表情特征用来自动构建文本, 对Twitter文本进行情感分析.另外, 还有一些关于从社交数据以及多种语言[16]中自动构建情感词典的研究.Teng等人[17]提出了一种基于简单加权和上下文敏感词典的方法, 使用RNN来学习情感强度, 强化和否定词汇情感, 从而构成句子的情感价值.将方面信息、否定词、短语情感强度、解析树及其组合应用到模型中以改进其性能.
但是众所周知, 标准RNN会在其梯度下产生爆炸和消失状态.长短期记忆网络(LSTM)[6, 7]是一种以长短期记忆单元为隐藏单元的RNN结构, 能够有效地解决梯度消失和梯度爆炸问题.此外, LSTM还考虑了词序列之间的顺序依赖关系, 可以捕捉远距离的依赖, 也可以捕获近距离的依赖.Tai等人[18]提出一种将记忆细胞和门引入树形结构的神经网络模型Tree-LSTM.Qian等人[9]提出了语言规则化的LSTM模型(LR-Bi-LSTM), 其中, 情感词汇、否定词和强度词都被认为是句级情感分析的一个模型.Zhang等人[19]提出一种基于批评学习和规则优化的卷积神经网络的情感分析, 由基于特征的预测器、基于规则的预测器和批评学习网络这3个关键部分组成.其中, 对于负极性规则和句子结构规则, 模型需要人工去整理一个额外的情感词典(否定词和转折词).
与文献[9, 17]相同的是, 本文提出的MFSA-BiLSTM模型同样是对情感词汇, 否定词和强度词等语言知识进行了建模.不同的是: MFSA-BiLSTM模型对这些语言知识进行建模, 形成不同的特征通道, 让BiLSTM从不同的角度去学习句子中的特征信息; 并且不需要大量的人工来建立强度正则化器[9]和整理一个额外的情感词典(否定词和转折词)[19], 也不需要依赖解析树结构[17]以及昂贵的短语级注释的模型[18].
1.2 用于情感分类的注意力
目前, 注意力机制已经成为一种选择重要信息以获取优异结果的有效方法.注意力机制最早是在计算机视觉领域提出来的, 目的是模仿人类的注意力机制, 给图像不同的局部赋予不同的权重.
Bahdanau等人[20]在机器翻译任务上使用了注意力机制, 是第一个将注意力机制应用到了NLP领域.Ma等人[21]提出了一种基于隐藏状态的注意机制模型, 该模型从上下文和方面交互式地学习注意力.Wang等人[22]提出了基于注意的LSTM用于方面层面的情感分类与文献[23]中提出的基于内容注意的方面情感分类模型, 关键思想都是向注意力机制添加方面信息.Liang等人[24]提出一种基于多通道注意力卷积神经网络模型, 用于特定目标情感分析.Guan等人[25]使用的注意力机制直接从词向量的基础上学习每个词对句子情感倾向的权重分步, 能够学习到增强情感分类效果的词语.Zhou等人[26]提出的一种基于注意力的LSTM网络和Vaswani等人[27]提出的自注意力和多头注意力模型, 都是用来解决跨语言的情感分类任务.Lin等人[28]使用自注意力机制学习LSTM网络中句子的词嵌入, 在情感分类任务上取得了较好的结果.Wang等人[29]提出一种基于RNN的情绪分类胶囊, 使用了注意力机制来构建胶囊表示.Liu等人[11]提出了一种具有注意机制和卷积层的双向LSTM文本分类模型, 使用注意力对BiLSTM隐层输出的信息进行不同的关注, 解决文本的任意序列长度问题以及文本数据的稀疏问题.
与文献[11]中利用LSTM前一刻输出的隐含状态与当前时刻输入的隐藏状态进行对齐方式的注意力不同的是, MFSA-BiLSTM模型使用的是直接对当前输入自适应加权的自注意力机制, 无视词与词之间的距离, 直接计算依赖关系, 学习一个句子的内部结构.
2 基于多通道特征和自注意力的双向LSTM模型(MFSA-BiLSTM)
本文提出的模型总体架构如图 1所示.形式上是以一个文本中词为单位, 形成一个词序列: {x1, x2, …, xn}, 每个词都通过已训练好的词向量映射成一个多维连续值的向量wi, 1≤i≤n.再将句子序列中的词向量拼接, 得到整个句子序列的词向量矩阵, 表示为: Wd=w1⊕w2⊕…⊕wn, 维度为d.模型不直接使用词向量Wd作为BiLSTM的输入, 而是以词向量为基础分别与词性特征向量, 位置值向量和依存句法向量进行组合形成不同的通道(见第2.1节), 目的是为了让模型从不同角度去学习情感特征信息, 充分地挖掘句子中的隐藏信息.
Fig. 1 Architecture of the MFSA-BiLSTM
图 1 MFSA-BiLSTM的体系结构
如图 1所示, BiLSTM提取了3个通道特征输入的特征信息, 分别经过层归一化得到VLN, 再通过自注意力机制来学习一个加权矩阵Satt对原来的VLN进行加权, 为不同词赋予了不同的情感权重, 从而进行情感分类.具体设计将在以下小节中介绍, MFSA-BiLSTM的算法如下所示.
Algorithm 1. MFSA-BiLSTM算法.
Input: 使用后文公式(1)~公式(3), 将词向量Wd、词性向量Tagm、位置值向量Posl和依存句法向量Parp构造成多通道特征输入;
Output: 返回pk, 其中, k为任务.
for iteration t do
1: 使用后文公式(5)和公式(6), 从多通道特征序列中获取前向后向上下文特征;
2: 使用后文公式(7)~公式(9)计算BiLSTM隐层中神经元的求和输入的均差和方差, 得到隐层的输出VLN;
3: 使用后文公式(11)~公式(13)来计算每个通道的词自注意力权重矩阵watt;
4: 使用后文公式(14), 对每个通道BiLSTM的隐层输出VLN进行加权, 即加权后的注意力特征向量为Ove;
5: 将3个通道的注意力特征向量进行融合得到Satt, 再利用softmax函数对其进行分类;
6: 最后使用后文损失函数公式(17)、Adadelta方法来更新模型参数.
end
2.1 多通道特征
本文中的多通道特征由整个数据集中的词向量Wd、词性特征向量Tagm、位置值向量Posl和依存句法向量Parp构成.
● 词性特征向量.利用HowNet情感集合, 对输入的句子中词语重新标注词性.通过词性标注, 让模型去学习对情感分类有重要影响的词语.其中, 重点对特殊的情感词进行标注: 程度副词(如非常、极其)、正面/负面评价词(如好、不好)、正面/负面情感词(喜欢、失望)和否定词(如不、从不).与词向量Wd操作一样, 使ti∈Tagm, 其中, ti为第i个词性特征向量, m是词性向量的维度;
● 位置值向量.在句子中, 词与词之间的位置往往隐藏着重要信息, 同一个词语出现在不同的位置, 可能表达着不同的情感信息.将每个位置值映射成一个多维的连续值向量pi∈Posl, 其中, pi为第i个位置特征向量, l是位置特征向量的维度;
● 依存句法向量.依存句法分析是通过分析语言单位内成分之间的依存关系揭示其句法结构.通过对输入的句子进行句法分析, 确定句子的句法结构和句子中词汇之间的依存关系, 可以让模型在更大程度上学习情感分析任务中现有的语言知识, 挖掘更多的隐藏情感信息.将每个句法特征映射成一个多维连续值向量parseri∈Parp, 其中, parseri为句子s中第i个词的句法特征, p是句法特征向量的维度.
接着, 本文以词向量为基础, 与词性特征向量, 位置值向量和依存句法向量进行两两结合, 形成3个通道作为网络模型的输入.让模型从不同角度去学习句子中不同方面的情感特征信息, 挖掘句子中不同角度的隐藏信息.在实验中, 本文使用一种简单行向量方向拼接操作:
$
{R_{wt}} = {W^d} \oplus Ta{g^m}
$
(1)
$
{R_{wp}} = {W^d} \oplus Po{s^l}
$
(2)
$
{R_{wpa}} = {W^d} \oplus Pa{r^p}
$
(3)
2.2 长短期记忆网络和层归一化
长短期记忆网络(LSTM)[6, 7]是对递归神经网络(RNN)的改进.在LSTM中, 隐藏状态ht和存储器单元ct是之前的ht-1和ct-1和输入向量Wt的函数.每个位置(ht)的隐藏状态只考虑前向, 而不考虑后向, 形式如下:
$
{c_t},{h_t} = {g^{LSTM}}\left( {{c_{t - 1}},{h_{t - 1}},{W_t}} \right)
$
(4)
双向LSTM[30]考虑前向和后向, 学习两个方向的信息, 能够更好地捕捉双向的语义依赖, 如图 2所示.
Fig. 2 Bidirectional LSTM network structure
图 2 双向LSTM网络结构
双向LSTM是使用两个LSTM沿着序列的两个方向(前向和后向)扫描, 并将两个LSTM的隐藏状态串联起来表示每个位置, 前向和后向的LSTM分别表示为
${\vec c_t},{\vec h_t} = {g^{LSTM}}({\vec c_{t - 1}},{\vec h_{t - 1}},{W_t})$
(5)
${\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\leftarrow}$}}{c} _t},{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\leftarrow}$}}{h} _t} = {g^{LSTM}}({\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\leftarrow}$}}{c} _{t + 1}},{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\leftarrow}$}}{h} _{t + 1}},{W_t})$
(6)
其中, gLSTM与公式(4)中的相同, 两个LSTM中的参数是共享的.整个句子的表示形式是$[{\vec h_n},{\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\leftarrow}$}}{h} _1}]$, 其中, n是句子词语的总个数.在位置t表示为${h_t} = {\vec h_t} \oplus {\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\leftarrow}$}}{h} _t}$, 这是前向LSTM和后向LSTM隐藏状态的级联.通过这种方式, 可以同时考虑前向和后向上下文.
接下来, 本文使用文献[31]提出的层归一化来计算隐藏层中神经元的求和输入的均差和方差, 目的是稳定LSTM网络中隐藏动态, 防止模型过拟合.在层归一化中, 本文对每个BiLSTM隐藏层ht的每一个神经元赋予它们自己的自适应偏差和增益.层中的所有隐藏单元共享同样的归一化项μ和σ, 形式如下:
${h'_t} = f\left[ {\frac{g}{{{\sigma ^t}}} \odot ({h_t} - {\mu _t}) + b} \right]$
(7)
${\mu _t} = \frac{1}{H}\sum\limits_{i = 1}^H {{h_{{t_i}}}} $
(8)
${\sigma _t} = \sqrt {\frac{1}{H}\sum\limits_{i = 1}^H {{{({h_{{t_i}}} - {\mu _t})}^2}} } $
(9)
其中, H为隐藏单元数量, ε为两个向量之间的元素乘法, g和b定义为与${h'_t}$相同维度的偏差和增益参数.则BiLSTM所有隐藏层状态的输出为公式(10), 其中, VLN维度为n×H:
${V_{LN}} = ({h'_1},{h'_2},...,{h'_n})$
(10)
2.3 自注意力机制
注意力机制最早是在图像处理领域提出来的, 目的是为了在模型训练时, 重点关注某些特征信息.常规的注意力机制做法是利用LSTM最后一个隐藏层的状态, 或者是利用LSTM前一刻输出的隐层状态与当前输入的隐藏状态进行对齐.采用直接对当前输入自适应加权的自注意力, 更合适用于情感分析任务中.
如表 1所示, 本文以词性特征为例对句子级MR数据集样例进行了分析.在样例中的情感词(如impressively)能够体现出句子的情感倾向.为了加强这些情感词在分类时的作用, 本文使用自注意力机制来学习一个句子的内部结构, 重点加强句子中带有情感的特征信息.
Table 1 Analysis of key words in MR data samples
表 1 MR数据样本关键词分析
图 3是Rwt通道的自注意力, 其中, Rwp通道的VLN2和Rwpa通道的VLN3作为额外辅助权值参与了Rwt通道的自注意力权重矩阵watt1的计算:
$\left\{ {\begin{array}{*{20}{l}}
{{P_{VLN}} = {V_{LN1}}} \\
{{I_{tpp}} = Ta{g^m}} \\
{{L_{nor}} = L({V_{LN2}} \oplus {V_{LN3}})}
\end{array}} \right.$
(11)
$
{{a_{wt1}} = {P_{VLN}} \oplus {I_{tpp}} \oplus {L_{nor}}}
$
(12)
$
{{w_{att1{\rm{ }}}} = softmax \left( {{L_3}\left( {\tanh \left( {{L_2}\left( {\tanh \left( {{L_1}{a_{wt1}}} \right)} \right)} \right)} \right)} \right.}
$
(13)
Fig. 3 Self-Attention structure of Rwt
图 3 Rwt通道的自注意力结构
在上述公式中, PVLN, Itpp和Lnor为分别为自辅助矩阵、初始注意矩阵和额外辅助矩阵.L, L1, L2和L3分别是维度大小为H, 3×H+m+1, H+m和m的权重, 使用softmax进行归一化操作.然后, 用自注意力权重watt1对BiLSTM的隐藏状态VLN1进行加权, 即加权后的注意力特征向量Ove1:
$
{O_{ve1}} = {w_{att1}} \otimes {V_{LN1}}
$
(14)
与计算Rwt通道的注意力特征向量一样, 得到Rwp和Rwpa通道的注意力特征向量为Ove2和Ove3.情感分析本质上是一个分类问题, 所以在模型的最后, 将3个通道的注意力特征向量进行融合得到Satt, 再利用softmax函数对其进行分类.如下:
$
{{S_{att}} = \left[ {{O_{ve1}},{O_{ve2}},{O_{ve3}}} \right]}
$
(15)
$
{p = softmax \left( {{w_c}{S_{att}} + {b_c}} \right)}
$
(16)
其中, wc为权重矩阵, bc为偏置.在模型训练的过程中, 本文使用交叉熵作为损失函数, 且在模型参数上面使用权重衰减来对参数进行正则化.损失函数表示如下:
$loss = - \sum\limits_{i = 1}^D {\sum\limits_{k = 1}^C {y_i^k\log p_i^k + \lambda