任 勉,甘 刚
(成都信息工程大学 网络空间安全学院,四川 成都 610225)
通常对文本情感倾向性的传统方法有基于词典、基于语义分析等[1-6]。在之前的自然语言处理中,通常针对文本分类部分采用的是基于机器学习[7]的分类算法。发展至今,深度学习在自然语言处理中应用广泛。其中Yong Zhang等提出基于卷积神经网络的语句建模情感分析方法[8],Bolan su等提出基于循环神经网络进行对文本的分词处理[9]。但这些方法存在训练过程中会丢失单词在上下文中关系的问题,因此在后续的情感倾向性分析任务中引入了深度循环神经网络。通过对比以上信息,循环神经网络中的长短期记忆网络(long short-term memory,LSTM)作为语言模型在解决文本分类问题上有很大的进步[10],但也存在梯度消失和爆炸等问题,在上下文的记忆关联上也容易丢失信息。
针对以上问题,本文提出基于双向长短时记忆的循环神经网络模型(bi-directional long short-term memory,Bi-LSTM)。通过该模型中的双向传播机制能降低上下文丢失信息的情况,在文本情感分析任务中获得更好的分类效果。
本文采用CBOW(continuous bag of words)来训练词向量[11]。CBOW是一种预测模型,是从原始语句来推测目标字词,在CBOW模型中,已知词w中上下文context(w),同时预测w,因此指定context(w),词w就是一个正样本,其它词就是负样本,可以通过采样负样本得到一个关于w的负样本子集NEG(w),因此词的标签可以表示如下
(1)
CBOW模型目标函数表示如下
(2)
其中
(3)
长短时记忆网络(LSTM)解决了长程依赖的问题,不需要特别复杂地调试超参数,默认地记住了长期信息。而且解决了传统RNN模型存在梯度的消失和爆炸的问题[12]。
图1为一个LSTM网络单元[13],使用门控单元来控制信息的流向。
图1 LSTM单元网络结构
图1中的it代表输入门、ot代表输出门、ft代表遗忘门、Ct代表细胞控制单元结构。
LSTM单元结构中Wij是指神经元i到j的连接权重,神经元输入是用a表示,输出用b表示。
从细胞初始状态值到输入门状态值,遗忘门状态值和输出门状态值的权重分别记做Wc ι,Wc φ以及Wc ω,Sc表示Cell的状态。
控制门的激活函数用f表示,g,h分别表示cell的输入输出激活函数。
(4)
it=σ(Wixt+Uiht-1+bi)
(5)
其次计算当时存储单元的遗忘门的激活值
ft=σ(Wfxt+Ufht-1+bf)
(6)
(7)
随着存储单元的新状态,我们可以计算其输出门激活值,然后计算其输出值
οt=σ(Woxt+Uoht-1+VoCt+bo)
(8)
(1)lstm-peephole连接模型:
lstm-peephole连接模型(如图2所示)在LSTM单元网络结构上增加了peephole connection,控制门层接收输入门的激活值,同时接收细胞状态的输入[14,15]。
图2 lstm-peephole连接模型
改进的peephole设计门结构用来除去或增加信息细胞状态值,包含一个sigmoid神经网络层和一个逐点乘法操作。Sigmoid层输出[0,1]间的数据,叙述每个连接之间有多少流量可以通过,0表示“禁止任何量通过”,1代表“允许任意量通过”。
通常在语言模型中,我们可以基于已经看到的词来预测下一个词,比如说“中国”-“北京”这对词组。一般细胞状态可能包含当前语句中主语的类别,选择出正确的代词,在此出现新的代词时,该结构会忘记较为久的代词。在式(9)中,Ct-1代表前一个时序的向量,首先读取Ct-1和xt,输出一个在0到1之间的数值给每个细胞状态Ct-1的数字
ft=σ(Wf·[Ct-1,ht-1,xt]+bf)
(9)
式(10)是确定更新的信息
it=σ(Wi·[Ct-1,ht-1,xt]+bi)
(10)
更新细胞状态在Ct-1状态的值更新为Ct,把旧状态Ct-1与ft相乘,丢弃将要确定丢弃的信息,加上it与Ct就是候选的新值,最终根据每个状态的跟新程度进行变化
(11)
在语言模型的例子中,如果首先得到一个代词,可能需要输出与一个与动词相关的信息
οt=σ(Wo·[Ct,ht-1,xt]+bo)
(12)
通过确定需要输出的值来决定当前cell的状态,也是一个过滤后的状态。首先运行一个sigmoid层来确定细胞状态的哪个部分将输出出去。把细胞状态通过tanh进行处理,得到一个在-1到1之间的值并将它和sigmoid门的输出相乘,最终输出确定输出的那部分。
(2)coupled遗忘门和输入门
双门结构[16]通过使用coupled遗忘门和输入门如图3所示。
图3 coupled遗忘门和输入门
不同于其它结构中把遗忘门的更新信息与其它位置信息分开,此结构可以同时完成把遗忘门和输入门值信息更新,在未来时间段输入在当前位置时忘记。输入新的值到已经忘记的旧信息的状态位置处
(13)
通过改进两种LSTM模型后,结合分类器实现基于双向循环网络的情感倾向性分类模型。
该模型主要分为以下3个部分:词向量化、通过Bi-LSTM特征提取、深度神经网络分类器,如图4所示。
图4 基于Bi-LSTB语言模型情感倾向性分类模型结构
词向量化部分:词向量通常用于分类的文本数据量比较大,需要从大量未标注的普通文本数据中无监督地学习出词向量。在在词向量训练之前,通常将字词转换成离散的单独的符号,一个词对应一个向量,接着在文本分类模型中,将文章对应的稀疏矩阵合并成一个向量,即把每一个词对应的向量加到一起,此部分采用CBOW模型。
特征抽取部分:采用Bi-LSTM作为特征提取部分模型,同时在该部分的矩形框单元格代表一个LSTM单元,在后续的训练模型中,采用两种变型的LSTM模型。
Bi-LSTM训练层:通过构造两个循环神经网络实现以两个不同的方向获取信息,同时这两层都连接相同的输入层。这个结构能够提供给上一层中每个单元结构完整的上下文信息。
其中一层信息在同一时步向前传递,更新所有隐含层的信息
(14)
另一层信息的传播是与上一层相反,通过先计算输出层然后得到不同方向的隐含层值
(15)
情感分类层:此处采用栈式自编码式神经网络作为分类器[17]。栈式自编码神经网络参数是通过逐层贪婪训练获得。以包含2个隐藏层,输出层为softmax的神经网络。
实验工具采用的是TensorFlow,TensorFlow使用数据流式图来规划计算流程,它可以将计算映射到不同的硬件和操作系统平台。本文使用TensorFlow工具结合Word2vec生成词向量并实现Bi-LSTM模型的训练。
本次实验设计两组对比实验,第一组是利用不同的LSTM单元结构进行对比,其中一个LSTM变型结构是LSTM-peephole连接模型,另一个LSTM变型结构是coupled遗忘门和输入门构成。第二组对比实验是基于Bi-LSTM和LSTM结构,测试双向循环网络结构对分类的影响。
实验语料来自Github上开源两万条中文标注预料,涉及到书籍、酒店、计算机、牛奶、热水器、手机6个方面的购物评论数。其中16 000条评论作为训练数据、4000条作为测试数据。另一部分语料来自已经标注分类的两万条微博数据,主要是针对网络上某些热点事件的评论,其中10 000条为积极评价,另10 000条为消极评价。其中以15 000 条作为训练数据,5000条作为测试数据。
首先是利用语料文本生成词向量,首先使用CBOW模型训练用少量噪声词汇来估计。当模型预测到真正的目标词汇为最高概率,同时预测其它噪声词汇为低概率。用编造的噪声词汇训练的方法被称为Negative Sampling。这种方法计算loss function有非常高的效率,方法是选择K个随机词汇而非词汇表中的词汇。
在训练模型时通过调整词向量的维度、词频阈值、窗口大小来调整参数。
首先词向量的维度是从50到200之间进行测试,通过测试发现词向量维度在120左右时,测试数据F值最优,如图5所示。
图5 基于词向量维度增长的F值变化
由于词频阈值在小于5时不能生成词向量同时也会造成不能产生索引,因此词频阈值选择为5。
窗口大小在训练过程中接近20时为准确率最高,如图6所示。
图6 基于窗口大小增长的准确率值变化
在训练Bi-LSTM时,通过损失值来观察迭代次数。在实验过程中,发现使用LSTM模型时,迭代次数到5之后损失值维持不变,而Bi-LSTM在迭代次数到10时损失值维持不变,如图7所示。
图7 基于迭代次数增加损失值变化
最后分类器训练结果是一个[0,1]区间的连续的实数,而程序的在默认的情况下将0.5设置为阈值,因此最后将大于0.5的值判断为正,小于0.5的结果判断为负。
本实验通过两组对比实验,分析LSTM的两种变型结构与Bi-LSTM模型之间的评价指标数据。
首先第一组是利用不同的LSTM单元结构进行对比,第一组LSTM变型结构是LSTM-peephole连接模型,另一个是coupled 遗忘门和输入门在下表中分别称为Bi-LSTM-1与Bi-LSTM-2,见表1。
第二组对比实验是通过分析标准LSTM与Bi-LSTM之间的差异,见表2。
表1 两种LSTM结构对比
表2 标准LSTM与Bi-LSTM对比
下面对实验结果数据进行分析:
(1)根据第一组的对比实验看,LSTM结构的两种变型运用在情感分类的语言模型中,第二种模型使用coupled遗忘门和输入门的结构有较高的准确率。
(2)从第二组对比实验来看,使用双向循环神经网络对只使用单层LSTM结构准确率要高,说明使用上下文信息之间关联同时考虑时序问题的这种方式能够更好地解决文本情感倾向性分类问题。
本文在总结之间的文本情感分类基础上,提出一种Bi-LSTM语言模型来完成对文本倾向性的分类,通过训练序列向前和向后的两个循环神经网络,得到完整的过去和未来的上下文信息。通过实验对比不同的LSTM变型结构,结合深度神经网络分类器更好地完成分类任务,得到双向循环网络结构能更好地解决上下文联系的问题。本次实验中同时也有待完善的部分,如在语料的选择上,需要对比不同语料的分类情况来完善模型,在后续的工作中将会改进这一部分并研究不同的分类器构造方法。