曹 宇,李天瑞,贾 真,殷成凤
西南交通大学 信息科学与技术学院,成都 611756
伴随着Web2.0技术的迅速发展,互联网已经占据了每个人生活的方方面面。其中社交网络已成为人们获取外界信息、发表观点、表述情感的重要平台。微博、论坛、博客等社交平台每天产生着大量的带有情感倾向的非结构化文本信息,而通过对这些信息利用情感分析技术进行数据挖掘,可以发现用户在产品、事件上的情感倾向信息。这些信息对多个行业有着十分重要的作用,例如商业产品推荐、网络舆情分析以及群众意见调查[1]。目前,由于大数据时代的到来,社交网络信息呈爆炸式增长,而如何高效、快速地从中获取用户的情感倾向信息变得极其重要。因此,文本情感分析已成为自然语言处理领域的一个研究热点[2]。
目前,文本情感分析的方法主要有两种:基于语义的情感词典方法和基于机器学习的方法。基于语义的情感词典方法首先需要构建情感词典,然后设计倾向性计算算法,最后通过确定阈值来判断文本的情感倾向性。例如,赵妍妍等[3]利用海量的微博数据构建了一个十万词语的大规模情感词典,以提高情感分类性能。该方法的优点在于实现较为简单,不需要人工标注好的训练集,但其效果却十分依赖情感词典的大小和质量。基于机器学习的方法首先需要人工标注的文本情感倾向性训练集,然后通过人工设计特征,对文本情感特征进行提取,最后利用机器学习的方法构建分类器,对文本情感倾向性分类。常用的机器学习方法有朴素贝叶斯、最大熵模型和支持向量机等。例如,汪淳[4]改进情感词的选取方式和权值计算方式,并把集成学习方法和投票方法与传统机器学习方法进行融合。该方法具有计算量小、容易实现的特点,但在面对复杂分类问题的时候,其泛化能力表现不足。本文提出一种基于BGRU(bidirectional gated recurrent unit)的中文文本情感分析方法。该方法不需要人工构造情感特征,而直接由深度神经网络训练提取文本情感特征,再对文本情感倾向性分类。通过实验结果证明该方法在解决中文文本情感分析问题上具有较好的效果。
本文的组织结构如下:第2章概述情感分析以及深度学习的相关研究工作;第3章阐述了BGRU网络结构和模型训练方法;第4章为实验验证与性能对比;第5章对本文进行了总结,并给出了下一步工作方向。
情感分析又称为倾向性分析,自2002年提出后,受到了广大学者的关注[2]。目前情感分析领域研究最多的部分是将文本分为褒扬或贬抑两种。例如,Pang等[5]利用词袋模型将文本的N元语法和词性作为其情感特征,然后分别利用朴素贝叶斯、最大熵模型和支持向量机对文本情感特征分类,在电影评论数据上获得了较好的效果。后续研究则主要是针对文本的情感特征进行优化[6-8]。姚天昉等[9]提出通过提取语句的主题,然后通过句法分析,对主题和情感描述项进行判别,从而确定情感倾向性。Ding等[10]提出特定领域下的情感词配对方法来判断情感倾向性。Hu等[11]通过利用WordNet中的同义词、反义词关系,得到词汇的情感极性,然后根据句子中占主导的词汇情感极性来确定句子的情感倾向。朱嫣然等[12]通过对知网HowNet进行扩充,利用语义相似度和语义相关词来判断词语的情感倾向。
自2006年Hinton等[13]首次提出深度学习概念后,伴随着其成功应用于计算机视觉和语言识别领域,国内外开始将深度学习方法应用在自然语言处理上。Bengio等[14]提出通过神经网络来构建语言模型的方法。Mikolov等[15]在Log-Bilinear[16]模型基础上提出了word2vec模型,将词转换成空间词向量。随后Kim[17]使用基于深度学习的卷积神经网络模型处理文本情感分类问题,但在处理中文文本过程中存在多重语义现象。梁军等[18]使用LSTM(long short term memory)递归神经网络提取特征并结合情感极性转移模型来进行中文微博文本的情感分类。Xiao等[19]提出基于双向LSTM和词向量的中文情感分析模型。刘龙飞等[20]提出的利用字级别词向量和词级别词向量作为特征,利用卷积神经网络进行微博情感倾向性分析。冯兴杰等[21]提出基于卷积神经网络和注意力模型的方法进行文本情感分析。梁斌等[22]提出基于多注意力卷积神经网络的特定目标情感分析方法。
目前,深度学习模型已在中文文本情感分析领域取得了不错的效果,其中CNN(convolutional neural network)不完全适用于文本序列问题,而LSTM能记忆序列上下文,具有十分适合文本序列情感特征提取的特点。鉴于GRU(gated recurrent unit)作为LSTM的变体模型,不仅能解决长距离依赖问题,而且结构相比LSTM更为简单,训练速度较快。本文提出了基于BGRU的模型结构来解决中文文本情感分析的方法,并通过实验验证了该方法的有效性。
词向量(word embedding)是词语通过神经网络模型得到的一种低维实数向量表示,通过将离散型词汇映射到N维实数空间上,表达词汇丰富的语义信息,解决词袋模型的向量稀疏问题,同时挖掘出词语间的语义关联[23]。本文选用Google提供的开源词向量工具word2vec[15],基于skip-gram模型训练得到词向量。skip-gram模型如图1所示。
Fig.1 Model of skip-gram图1 skip-gram模型
该模型是由窗口中间词语w(t)预测其上下文词语,该目标函数如式(1)所示:
式中,t为训练时的上下文窗口的大小。本文设置t的大小为5,词向量维度为100。
在传统的神经网络模型中,一般由输入层、隐含层、输出层组成,层与层之间的节点进行全连接,而每层之间的节点是没有连接的。这种传统模型在处理序列问题上因无法刻画输入序列前后之间的关联而导致效果较差。而RNN(recurrent neural networks)便是在传统网络的基础上,将隐藏层之间的节点进行了连接[24]。对于给定的输入序列(x1,x2,…,xn),RNN能有效地动态学习数据的序列特征,并具有一定的记忆能力。所谓的记忆能力指的是网络会将t-1时刻的输出信息保存在网络的内部状态中,并应用于t时刻的计算中。即在t时刻隐含层的输入包含了t时刻输入层的输出和t-1时刻的隐含层输出。
RNN应用于中文文本情感分析上,其网络结构如图2所示。图中,输入文本为“今天的天气真好”,在分词处理后变为“今天/的/天气/真好”,首先将每个词语转换成对应的词向量(x1,x2,x3,x4),然后依次输入到RNN网络中,U为从输入层连接到隐含层的权重,W为隐含层连接到自身的权重,V为隐含层到输出层的权重。
Fig.2 Sentiment analysis network based on RNN图2 RNN情感分析网络模型
RNN的计算过程如下:
(1)在t时刻,输入xt到隐含层。
(2)st为隐含层第t步的输出,st是根据当前输入层的输出xt和前一时刻隐含层的状态st-1得到的,st=f(Uxt+Wst-1),其中f一般取用非线性函数,如tanh或ReLU。
(3)给出输出ot,ot=softmax(Vst)。
对于文本情感分析问题,不需要每个词语的输出,只需要文本的最后一个词语的输出作为该序列的情感特征表示,将其输入到分类器中,对文本的情感信息进行分类。
RNN模型按时间序列展开,则为多层前馈神经网络,在训练过程中会存在梯度消失和梯度爆炸的问题。RNN在面对处理长序列时,无法解决长时间依赖的问题,而出现难以学习长距离信息的现象。Hochreiter等提出的LSTM记忆单元是在RNN记忆单元的基础上加入了门限机制[25],其结构如图3所示。从图中可以看出LSTM记忆单元主要由细胞状态和门结构组成,细胞状态负责对历史信息进行存储,门结构负责保护和控制细胞状态。一个记忆单元具有三个门结构,分别是输入门i、输出门o、遗忘门f。其中遗忘门f决定了从细胞状态中舍弃的信息,从而可以达到对历史信息进行过滤的效果,解决了梯度消失的问题。
Fig.3 Memory unit of LSTM图3 LSTM记忆单元
由于LSTM记忆单元的结构较为复杂,存在着训练时间较长的问题。Cho等提出一种LSTM的变体模型GRU[26],其结构如图4所示。
Fig.4 Memory unit of GRU图4 GRU记忆单元
从图4中可看出,GRU记忆单元将LSTM中的遗忘门f和输入门i合成为一个更新门z,不仅能将重要特征保留,解决长依赖问题,同时结构相比LSTM更加简单。在t时刻,对于给定的输入xt,GRU的隐藏层输出ht,其具体计算过程如下所示:
(1)zt=σ(Wz∙[ht-1,xt])
(2)rt=σ(Wr∙[ht-1,xt])
(4)ht=(1-zt)*ht-1+zt*h͂t
其中,W为连接两层的权重矩阵,σ和tanh为激活函数,z、r分别为更新门和重置门。
标准的RNN在处理序列问题上,按正向输入序列,利用到了过去的上文信息,却没有考虑到未来的下文信息。针对该问题,Schuster等提出的BRNN(bidirectional recurrent neural network)模型[27],在记忆上文信息的同时,也记忆了下文信息,其基本思想是用两个RNN分别处理正向、反向序列,然后再将其输出连接到同一个输出层上,这样便能记录特征序列的双向上下文信息。在BRNN的基础上,将BRNN中的隐藏层神经元替换成GRU记忆单元,可得到BGRU模型。本文将BGRU应用于中文文本情感分析上,其网络结构如图5所示。
对于给定的n维输入(x1,x2,…,xn),在t时刻,BGRU的隐藏层输出ht,其具体计算过程如下所示:
Fig.5 Sentiment analysis network based on BGRU图5BGRU情感分析网络模型
其中,W为连接两层的权重矩阵,b为偏置向量,σ为激活函数,t和t分别为正向、负向GRU的输出。
本文模型将正向、反向GRU的最后一个节点的输出进行拼接,作为文本的情感特征,然后连接到输出层,得到输出y,如式(2)所示:
文本情感分析实则为一个分类问题。本文将其作为二分类进行处理,将文本情感分为正极和负极,因此在训练BGRU过程中,本文的激活函数选择sigmoid函数,如式(3)所示:
则模型的输出取值为{0,1},而目标函数选择对数损失函数,如式(4)所示:
式中,X为文本的真实情感分布,Y为模型的预测情感分布。模型训练的目标为最小化对数损失函数。对于模型优化器选择,由于Adam(adaptive moment estimation)算法能计算每个参数的自适应学习率,具有快速实现优良结果的特点,因此使用Adam作为优化器。同时为了在网络权重的更新速度和更新次数之间取得平衡,采用了Mini-batch梯度下降策略,并设置batch-size为128,达到提高学习速度、保证模型收敛性的效果。为了防止深度学习网络训练过程中过拟合现象的发生,在BGRU层与输出层之间加入了Dropout策略,通过放弃部分权重的修改以提高模型的泛化能力,其中Dropout的丢弃率设置为0.5。
本文实验选用了中科院谭松波博士收集整理的一个较大规模的酒店评论中文语料ChnSentiCorp(http://www.datatang.com/data/11936)。该语料是从携程网上自动采集并经整理后得到,其总规模为10 000篇,标签分为两类(正类,负类),示例如表1所示。
语料被整理成了4个子集,其信息如表2所示。其中ChnSentiCorp-Htl-ba-10000的数据量最大,但是正负样本是非平衡的,另外3个子集为平衡数据。为避免训练模型过拟合,本文决定使用平衡数据集中数量最大的ChnSentiCorp-Htl-ba-6000作为数据集,并结合10折交叉验证进行实验。
在数据预处理阶段,首先需要对数据样本进行分词处理。然后,出于减少数据噪声的考虑,将样本中与情感无关的停用词进行过滤。本文通过对各停用词表进行整理,集成了哈工大停用词表、百度停用词表、四川大学机器智能实验室停用词等词表,并对集成后的词表进行去重处理后,得到集合停用词表,其规模为2 043条。清理后的数据再作为词向量的训练语料,利用word2vec工具进行词向量的训练,得到词向量模型。
Table1 Examples of ChnSentiCorp表1 ChnSentiCorp示例
Table2 Information of ChnSentiCorp subset表2 ChnSentiCorp子集信息
数据集中样本所含有的词语数量为该样本的长度,对数据集的样本长度进行统计,其分布情况如图6所示,其中长度小于100的样本数量占据90%以上。本文设定MaxLen为样本长度的最大值,若样本长度大于MaxLen,则将对样本进行截断处理,大于MaxLen的部分进行舍弃,若样本长度小于MaxLen,则需要对样本进行填充处理,在样本末尾添加零向量,直到长度达到MaxLen。
Fig.6 Sample length of data set图6 数据集的样本长度情况
MaxLen的设置关系到输入模型的数据,若MaxLen过大,数据中零向量填充过多,若MaxLen过小,数据舍弃的信息过多,故MaxLen对模型的性能有较大的影响。因此进行MaxLen的选择实验。通过改变MaxLen的大小,观察模型的性能变化。实验结果如表3所示。MaxLen对F1值的影响如图7所示。
Table3 Experimental results of different MaxLen表3 不同MaxLen的实验结果
Fig.7 F1of different MaxLen图7 不同MaxLen的F1值
根据实验结果,可以看出当MaxLen为25的时候,由于对数据的信息舍弃过多,F1值只有88.45%,而当MaxLen增加后,F1值开始上升,MaxLen=75时,F1值为最高,达到90.61%。当MaxLen再继续增加,F1值又呈现出下降趋势,这是因为数据中零向量填充过多,影响了模型记录数据的情感特征。因此模型的MaxLen大小选择为表现最好的75。
BGRU的隐含层节点数对模型的复杂度和效果具有一定的影响,若节点数过少,则网络缺少必要的学习能力和信息处理能力;若节点数过多,不仅会增加网络结构的复杂性,而且在训练过程中更容易陷入局部极小点,网络学习速度会下降。因此进行节点数的选择实验,通过改变隐含层节点数大小,观察模型的性能变化。实验结果如表4所示。节点数对F1值的影响如图8所示。
Table4 Experimental results of different units表4 不同节点数的实验结果
Fig.8 F1of different units图8 不同节点数的F1值
根据实验结果,可以看出当节点数由50个增加为100个时,F1值有略微提升,而当节点数超过100个时,F1值开始呈现下降趋势,说明随着节点数增加,模型的效果开始越来越差。因此模型的隐含层节点数选择为100个最为合适。
本文将BGRU与SVM(support vector machine)、CNN、Att-CNN、BLSTM(bidirectional long short-term memory)等模型进行对比。实验结果如表5所示。通过实验结果,可以看出在处理中文文本情感分析问题上,BGRU模型具有较好的效果,与BLSTM模型相比F1值提高了0.74%,与Att-CNN模型相比F1值提高了3.42%。对该实验结果进行分析,BGRU、BLSTM模型相比Att-CNN模型,在处理文本序列的特征提取问题上,能够充分利用文本的上下文信息,得到了更好的情感特征,使得模型达到了更好的效果;BGRU模型相比BLSTM模型,由于对细胞状态进行了融合和改进,得到了效果的提升。
Table5 Experimental results of different models表5 不同模型的实验结果
为进一步说明BGRU模型的学习效率,将其与BLSTM模型在不同词向量维度下的训练时间进行对比,实验结果如图9所示。
Fig.9 Comparison of training time by different embedding sizes图9 不同词向量维度的训练时间对比
根据实验结果,可以看出BGRU模型相比BLSTM模型在训练速度上有着明显优势。当取不同的词向量维度时,BGRU模型的平均训练速度是BLSTM模型的1.36倍。这得益于GRU融合了LSTM中的输入门和遗忘门为更新门,模型结构简化,因此训练速度更快。
本文提出了一种基于BGRU深度神经网络解决中文文本情感分析的有效方法。该方法将文本转换为词向量序列后,通过BGRU网络自动提取文本的上下文情感特征,再对文本情感倾向性进行分类。实验结果表明了该方法的有效性,相比其他模型在中文文本情感分析问题上能更好地捕获情感特征,具有更好的效果,而且训练速度是BLSTM的1.36倍。在下一步的工作中,可以考虑将注意力模型、语言学知识结合到本文模型中,使得网络模型对情感特征更具有针对性,能更有效地学习文本的情感特征。