system: [SYSTEM]

user: 3. 基于词注意力机制的BiLSTM和CNN集成模型的中文情感分析 本文的模型采用集成的思想将BiLSTM模型与CNN模型进行模型融合，一方面通过BiLSTM进行文本的语义提取，结合CNN模型，提取文本关键词。为了提高模型的准确度，在BiLSTM层后加入了Attention层，目的是增加文本关键词的权重，使得模型可以更好的提取关键词，来达到情感分类的目的。本文模型结构如图1所示。 图1. 集成模型架构 3.1. 词嵌入层 本文词嵌入层的输入是经过jieba分词后的结果，包括词和字。如何正确的分词对模型的训练有很大的影响。比如“电影富含哲理”可以分成“电影”，“富含”，“哲理”，也可以分成“电”，“影”，“富”，“含”，“哲”，“理”。这就加大了难度，本文考虑到中文的特殊性，采用第一种分词方式。对于分词之后的文本要进行结构化。传统的稀疏向量表示存在矩阵维度过大的缺点，无法表示出文本语义之间的联系。Hinton于1986年提出分布式表示(distributed representation)的方法很好地解决了One hot的不足 [ 8 ]。目前比较常用的word2vec方法就是属于分布式表示。Word2vec可以将文本通过低纬度稠密的向量来表示，不仅解决了稀疏性的问题，而且分布式方法可以很好的表示语义之间的关系。word2vec将语料训练成 R D × s 规模的词向量矩阵，D表示字典的大小，s表示词向量的维度。假如 x i 表示文本的第i个词，并且文本长度为L，则输入的向量可以表示为 S = [ x 1 ; x 2 ; ⋯ ; x L ] ∈ R L × d (1) 例如本文语料库为“超级，好看，准备，二刷”，其数字表示就是{1：超级 2：好看 3：准备 4：二刷}，文本即转为数字表示，结构化(1， 2， 3， 4)就表示文本“超级好看准备二刷”。将结构化语言(1， 2， 3， 4)进行word2vec训练，词向量维度是预定好的。word2vec分为CBOW模型(continuous bag-of-words model)和skip-gram模型(continuous skip-gram model)，本文的词向量表示是基于skip-gram模型，Skip-Gram模型的网络结构分为：输入层、投影层和输出层，原理是以当前词 w ( t ) 对其上下文 C o n t e x t ( w ) 中的词进行预测。 本文Skip-Gram模型更新参数的伪代码： ε = 0 FOR u ∈ C o n t e x t ( w ) DO { FOR j = 2 : l u DO { q = σ ( v ( w ) T θ j − 1 u ) g = η ( 1 − d j u − q ) θ j − 1 u : = θ j − 1 u + g v ( w ) e : = e + g θ j − 1 u } } v ( w ) : = v ( w ) + e 3.2. 文本语义学习层 BiLSTM层。循环神经网络(Recurrent neural network， RNN)是传统神经网络的变体，神经元的设计使得网络具有“记忆性”，所以RNN是深度学习的一种常用框架。对于短文本的处理上RNN具有良好的性质，但对于长文本，RNN网络的“记忆”功能越来越差。为了解决这个问题，Hochreiter & Schmidhuber于1997年提出了长短时记忆网络(Long Short-Term Memory， LSTM) [ 15 ]。本文利用的BiLSTM模型是其变种，为双向长短时记忆网络，因为情感词不仅和之前出现的文本相关，还会和后面的文本相关。 LSTM单元结构的设计体现在3个“门”结构上，这三个“门”结构使得LSTM可以实现对历史信息的重要部分的记忆，这体现在网络中的单元(cell)状态的不断更新。首先记t (当前)时刻的候选单元值为 c ¨ t ，输入值的权重为 w x c 以及 t − 1 时刻cell输出的权重为 w h c ，则t时刻的候选单元值为 c ¨ t = tanh ( w x c x t + w h c h t − 1 + b c ) (2) 激活函数tanh创建的候选单元值 c ¨ t 将会加到cell状态中。 输入门的作用是t时刻的输入对cell状态的影响，这体现在“遗忘门”机制。并且3种“门”机制的运算都受到来自当前输入、前一时刻的cell输出以及前一时刻cell记忆值的共同影响，即输入门 i t 表示为 i t = σ ( [ w x i ， w h i ， w c i ， 1 ] [ x t ， h t − 1 ， c t − 1 ， b i ] T ) (3) 遗忘门由Sigmoid层实现，控制当前输入值对cell状态的影响，可以表示为 f t = σ ( [ w x f ， w h f ， w c f ， 1 ] [ x t ， h t − 1 ， c t − 1 ， b f ] T ) (4) 所以当前时刻t的cell状态为 c t = f t ⊗ c t − 1 + i t ⊗ c ¨ t (5) 公式(5)中运算符 ⊗ 表示点积运算，从最终的cell状态可以得出，LSTM单元状态的更新由遗忘门、输入门、前一时刻的单元状态和当前候选单元共同决定。 对于输出门， o t 的表示形式为 o t = σ ( [ w x o ， w h o ， w c o ， 1 ] [ x t ， h t − 1 ， c t − 1 ， b o ] T ) (6) 最后的输出可以表示为 h t = o t ⊗ tanh ( c t ) (7) 本文采用的BiLSTM模型的输出表示为 h t → = L S T M → ( h t − 1 ， x t ， c t − 1 ) h t ← = L S T M ← ( h t + 1 ， x t ， c t + 1 ) h t = [ h t → ， h t ← ] 取其平均值作为输出，即输出为 mean ( h t ) 。对于长短文本传入BiLSTM层，“门”结构将实现信息的更新与遗弃，这体现在sigmoid函数，其输出为0~1之间，1指完全保留，0指完全遗弃。 词注意力机制层。电影评论为长短文本，评论中的情感词对于评论情感倾向至关重要，加强这些情感词的权重将可以更好的对文本进行情感挖掘。采用词注意力机制，用来学习评论语句中情感词的权重分布，如表1所示。 Table 1 Keyword distributio 评论文本 关键词 剧本做作，演技尴尬 做作，尴尬 尴尬的对白，尴尬的剧情，尴尬的逻辑，姜文想把电影拍的有趣，可是忽视了角色内在的感情，叙事的内在逻辑，花了这么长时间，这么多钱，可惜了 尴尬，忽视，可惜 非常温暖的一个片，看完心情很好 温暖，很好 单纯美好的小幸福，看的怦然心动 美好，幸福，怦然心动 表1. 关键词分布 词注意力机制最早是由google mind团队在RNN模型上运用，来进行图像分类。Bahdanau等第一次将词注意力机制运用到NLP领域，被应用到机器翻译领域的sequence to sequence模型 [ 16 ]。而后被广泛应用于CNN模型，用于图像处理。Wang等在LSTM模型中应用注意力机制来获取重要的评论信息，原因在于注意力机制可以自动学习关键词的权重分布 [ 17 ]。 本模型中，注意力机制的加入用来自动学习权重分布，自动学习的结果为 T = tanh ( W x + b ) (8) 其中W，b分别为权重和偏置项。将输出处理后，即得注意力向量矩阵。且权重分布为 α i = exp ( T ) ∑ i = 1 S exp ( T ) (9) 其中S为文本的长度。假设BiLSTM层的输出为 S = [ x 1 ; x 2 ; ⋯ ; x L ] ，则经过Attention层后的输出为 τ = ∑ i = 1 t α i x i (10) 注意力机制下，权重 α i 越大，其对应的词越重要，这对文本的关键词提取具有很好的效果。 3.3. CNN层 卷积神经网络(convolutional neural network， CNN)的出现最早应用于图像处理领域，Kim等人在2014年对传统CNN网络进行了一些调整，使得CNN第一次用于文本处理 [ 18 ]。Santos等人提出的CharSCNN模型，结合两个卷积核实现语义特征的识别，在情感分析问题上表现很好 [ 19 ]。李昊璇等利用词向量结合CNN的方法，对书籍评论进行情感分析，取得了很好的效果 [ 20 ]。李慧等将CNN用于细粒度情感分析，相比较传统分类模型具有更好的结果 [ 21 ]。下面介绍CNN模型的主要结构。 卷积层。记输入的字数长度为l，窗口大小为n，输入值到卷积单元的参数记为w，那么卷积操作后的输出值 c i ，即卷积后得到的特征为 c i = f ( w ⋅ x ′ i : i + n − 1 + b ) (15) 其中， 1 ≤ i ≤ l − n + 1 表示步长，f为非线性激活函数，b为偏置项。 池化层。通过一定的策略进行最优特征选择，常用的方法是平均值法和最大值法，本文选用最大值方法将卷积后的输出特征 c i 进行池化操作来选取最优特征。 p i = max ( C ) (16) 其中， C = ( c 1 ， c 2 ， ⋯ ， c l − n + 1 ) 。 全连接层。池化后的结果P通过全连接层后传入输出层，利用softmax函数进行分类，返回的是情感分类的预测概率，输出的值在0~1之间，0表示完全消极，1表示完全积极，公式为 p ( y | P ， w s ， b s ) = softmax ( P ⋅ w s + b s ) (17) 其中 w s ， b s 分别为输出层的权重和偏置项。