引入注意力机制的BiGRU-CNN情感分类模型
2020-09-03胡玉琦常艳鹏梁顺攀原福永
胡玉琦,李 婧,常艳鹏,梁顺攀,原福永
1(燕山大学 信息科学与工程学院,河北 秦皇岛 066004)
2(河北省计算机虚拟技术与系统集成重点实验室,河北 秦皇岛 066004)E-mail:2529044203@qq.com
1 引 言
情感分析的目的旨在确定人们对某个话题,或对文档、互动或事件的整体极性,是根据人们生成的文本来分析他们的情感或观点,在数据挖掘和自然语言处理领域发挥着至关重要的作用[1].怎样从海量的文本中将有用的信息自动提取出来深受许多研究者的关注,本世纪初期,情感分析被首次提出[2,3],它受到工业界和学术界的广泛关注,并且逐步成为了一个十分活跃的研究领域,而且在实际应用中,评论文本中情感极性的挖掘,具有很高的研究价值.
情感分类是情感分析和意见挖掘领域的一项基础性任务.这项任务的目的是推断用户为产品撰写的评论文本的总体情绪强度(例如点评网站上的1~5颗星或1~10颗星),研究遵循将情感分类作为文本分类问题的特例.Pang和Lee等人通常使用用户标记的情感极性或评分作为标签,并使用机器学习算法构建具有文本特征的情感分类器[4].由于机器学习的性能在很大程度上取决于数据表示的选择[5],许多工作着重于设计有效特征或使用神经网络从数据中学习判别特征.
尽管基于神经网络的方法在情感分类上已经取得了很大的成功,但是它们通常只关注文本信息,而忽略了用户偏好和产品性能对评分的重要影响.对于不同的用户,同一个词可能会表达不同的情感强度.以评分1-5颗星的等级评价为例,一个宽容的用户可能用“好”来评价一个普通的产品,并打5颗星,而对于一个挑剔的用户来讲,“好”就是表达一个优秀的态度,但他评价为4颗星.同样产品的性能也会对评价的等级产生影响,与低质量的产品相比,高质量的产品通常会得到更高的评价.
针对以上问题,本文提出一种引入注意力机制的BiGRU-CNN文本情感分类模型(BiGRU-CNN Sentiment Classification Model with Attention Mechanism,简称GCA情感分类模型),该模型分别考虑用户和产品特征,将BiGRU和CNN相结合,并引入注意力机制,充分提取了评论文本的特征,实验结果表明,该模型在IMDB和Yelp数据集上提高了情感分类的准确率.
2 相关工作
随着深度学习在语音识别,图像识别和文本分析等领域上取得的发展,神经网络模型因其具有文本表示学习的能力而被应用到情感分类领域中.
Glorot[6]等首次在情感分类中使用叠加去燥编码器,Socher通过一系列递归神经网络模型学习基于句子递归树结构的表示,其中包括递归自编码器(RAE)[7]、矩阵向量递归神经网络(MV-RNN)[8]以及递归神经张量网络(RNTN)[9].并且Kim[10]和Johnson等[11]采用卷积神经网络学习句子表示,在情感分类方面取得了显著的成绩.神经网络可以更好的提取文本特征,同时还可以减小数据维度,克服数据稀疏问题,但是CNN没有记忆功能,存在记忆缺失,而循环神经网络(Recurrent Neural Network,RNN)存在着梯度消失的不足.
为了避免上述问题,便有学者将二者结合起来进行研究.Hassan等人[12]提出联合卷积神经网络和循环神经网络的模型,该模型将卷积神经网络和递归神经网络结合在无监督,预训练的单词向量之上,取得了更出色的结果.Wen等人[13]提出了一个名为ATTCONV的更为细化的卷积神经网络,该方法在提取本地上下文特征的同时,还使用RNN中常用的注意机制提取非本地上下文中信息中派生出来的单词的高级特征,实验证明,该方法具有更好的灵活性和有效性.由此可见,应用神经网络来做情感分析研究是很有价值的.
近年来,随着注意力机制的不断发展,很多学者也将注意力机制运用到了情感分类中.武等[14]提出基于CNN-LSTM模型的系统,在该模型中,应用LSTM从文本中提取上下文信息,之后引入注意力机制,为特征序列分配不同注意力权重,最后用四种不同卷积核大小的CNN来提取局部特征对对话的情绪进行分类.葛等[15]提出了一个端对端的LSTM-CNN网络模型,用BiLSTM作为编码器来捕获来自两个方向的信息,之后加入注意层,然后用CNN来获取局部上下文信息,最后用带有softmax激活函数的致密层对情绪进行分类.胡荣磊等[16]将LSTM与前馈注意力模型相结合最终实现情感分类.李梅等[17]针对时序数据特征,提出基于注意力机制的CNN联合LSTM的神经网络预测模型,CNN与注意力并行提取细粒度特征,LSTM提取细粒度特征中的粗粒度特征,融合粗细粒度特征实现准确的时间序列预测.
但现有的情感分类方法大多忽略了用户偏好和产品性能对情感极性的重要影响.因此,本文分别考虑用户和产品特征,并在神经网络中引入注意力机制,充分提取评论文本的特征,提出GCA情感分类模型.
3 神经网络情感分类模型
3.1 基于注意力机制的BiGRU-CNN情感分类模型-GCA情感分类模型
GCA情感分类模型图如图1所示.
图1 GCA情感分类模型图
GCA情感分类模型主要分为三大部分:
1)用户特征的提取;
2)产品特征的提取;
3)将用户特征和产品特征融合在一起进行分类.
GCA情感分类模型又分为四层,即BiGRU层、注意力层、CNN层以及全连接层和分类层,并对文本进行单词级和句子级的分析.
1)在进行单词级语义分析时,将词向量输入到BiGRU层,然后在BiGRU层提取文本的上下文特征;
2)在注意力机制层将BiGRU层的隐藏层状态作为输入,计算注意力权重,得到赋予权重的特征向量,得到句子表示;
3)在进行句子级分析时,将在注意力机制层得到的句子表示输入到CNN层,得到文档表示.
4)在全连接层和分类层将得到的文档融合在一起进行最后的情感分类.
3.2 BiGRU层
门控循环神经网络(Gated Recurrent Unit,简称GRU)是对长短期记忆网络(Long Short Term Memory Neural Networks,简称LSTM)的一种改进,GRU也具有一个从头至尾持续不变的记忆状态单元,在这个这个记忆单元中,原来LSTM中的输入门和遗忘门被更新门所替代,这便使得在网络结构上GRU要比LSTM变的简单,并且GRU需要的张量操作较少,需要的参数也更少,因此GRU训练起来要比LSTM更为简单,训练速度也更快一些.GRU模型图如图2所示.
图2 GRU模型图
但是GRU只学习了当前词前面的信息,而并没有学习到当前词后面的信息.对于一个词来说,这个词的语义理解与其之前和之后的词语都密切相关,因此本文选取了双向门控循环神经网络BiGRU来搭建模型,充分考虑了当前词的上下文信息.
3.3 注意力机制层
从用户的角度上来看,用户的偏好或者感情不是所有的词语都能同等反应出来的.为了解决这个问题,本文使用用户注意力机制来提取对句子意义重要的用户特定词语,最后的句子表示由这些词的表示聚合而成.增强的句子表示就是用户视图中单词级隐藏层状态的加权和,如公式(1)所示:
(1)
(2)
(3)
(4)
本文中每个评论都有一个用户ID和一个产品ID,以指示用户为某产品撰写评论,例如[u1,p1,r1],[u2,p1,r2],[u1,p2,r3].使用向量初始化每个用户和每个产品,因此,当给定评论r1和r3时,u1向量将被更新.当给定r1和r2时,网络将更新向量p1.可以看到,u和p用不同的评论进行了更新.因此它们是不同的,并学会了分别指示用户喜好和产品特性.
3.4 CNN层
CNN是一种包含卷积计算且具有深度结构的前馈神经网络.它分为四层,分别为输入层、卷积层、池化层、全连接层以及输出层.
本文将注意力机制层得到的用户句子表示和产品句子表示分别作为卷积层的输入,利用CNN局部特征的强学习能力,提取两部分评论文本的局部特征,最终分别得到用户文档表示du,如公式(5),和产品文档表示dp,如公式(6)所示:
(5)
(6)
3.5 全连接层和分类层
在全连接层,将用户文档表示du和产品文档表示dp融合在一起,得到最终的情感分类文档d.
本文将情感分析问题看成一个多分类问题,分类函数选用softmax函数.情感概率p的推算方法如公式(7)所示.
pi=softmax(Wd+b)
(7)
其中,pi代表情感概率分布,W代表权重矩阵,b代表偏置量.
3.6 训练模型
为了使预测文本所属类别更接近真实类别,在本文的情感分析模型中,定义如公式(8)所示的交叉熵损失函数:
(8)
GCA情感分类模型算法:
1.文本d由n个句子{s1,s2,…,sn}组成,li为第i个句字的长度,第i个句子si由li个单词{wi1,wi2,…,wili}组成,将文本d输入到Glove模型中训练,把评论文本中的词映射为对应的词向量;
2.将词向量输入到BiGRU层,得到隐藏层状态[hi1,hi2,…,hili];
3.将隐藏层的状态加入注意力机制得到赋予注意力权重的句子表示si;
4.将句子表示[s1,s2,…,sn]输入到CNN层,经过CNN池化层下采样得到隐藏层表示,对隐藏层状态值求和得到文档表示d;
5.用上述方法同时分别提取用户特征和产品特征,将得到的用户文档表示du和产品文档表示dp通过全连接层融合在一起,最后,通过softmax函数映射到情感分类的C个类别进行分类.
4 实验与结果
4.1 数据集
本文选用IMDB、yelp2013和yelp2014三个公开的数据集进行实验,并将上述数据集中用户对电影的评分作为用户的情感极性.IMDB、yelp2013和yelp2014三个数据集的详情信息请见表1所示.
表1 三个数据集的具体描述
4.2 实验参数设置
实验参数的设置会直接影响到模型的分类效果,本文中GCA情感分类模型的具体实验参数一部分是根据前人WU等人[18]在实验中建议设置的,另一部分是在每一次迭代完成后根据实验的准确率调整,经过多次迭代而确定的,综上所述实验的参数设置如下:词嵌入维度为200,BiGRU隐藏层大小为128,最大句子长度为50,最大评论文本长度为40,卷积核滑动窗口大小为3,4,5,学习率为0.001.
4.3 评价指标
本文选取准确率(Accuracy)和均方根误差(RMSE)两个评价指标来评估模型.准确率可以判断模型正确预测的概率,均方根误差作为评价指标可计算模型预测的情感极性与真实情感极性之间的偏差.
假设评论数据一共有N条,其中分类正确的数据有T条,那么准确率的计算如公式(9)所示.
(9)
假设用户评论的真实情感类别为gdi,对用户评论情感的预测为pri,则均方根误差公式如公式(10)所示.
(10)
4.4 实验对比方法
本文将提出的GCA情感分类模型与以下几种情感分类方法进行了对比.
Trigram:使用一元、二元和三元模型提取特征来训练SVM分类器[19].
TextFeature:通过提取文本的单词、字符和情感词典等特征来训练SVM分类器[20].
AvgWordvec:对文档中的词嵌入进行平均生成文档表示,然后将其作为特征输入到SVM分类器中[21].
SSWE:使用特定情感的词嵌入生成特征,然后分别对特征使用最大池化、最小池化和均值池化,将这些特征融合作为文本表示输入到SVM分类器[22].
RNTN+RNN:使用递归神经张量网络获得句子表示,然后将其作为循环神经网络的输入得到隐藏层向量,之后平均隐藏层向量生成文档表示用于情感分类,实现了文献[9]中的方法.
Paragraph Vrctor:实现了用于文档情感分类的段落向量的分布式存储模型[23].
UPNN:将用户和产品的字级偏好矩阵和文档表示向量引入CNN情感分类器,得到用户和产品向量表示和评论文本表示,然后将其结合到一起作为特征输入到softmax层进行情感分类[24].
NSC+LA:基于NSC(采用分层LSTM模型对评论文本进行编码),用于情感分类实现局部语义注意的思想[25].
HUAPA:该模型使用两个独立的层次神经网络BiLSTM来生成用户注意和产品注意两个表示,然后用组合策略充分利用这两种表示进行训练和最终预测,实现了文献[18]中的方法.
本文的数据集采用文献[18]中的数据集,因此对于以上的实验对比方法均采用文献[18]中的实验结果.
4.5 实验结果分析
实验结果数据如表2所示.本文将实验结果划分为两部分:一是只考虑评论文本信息;二是综合考虑用户和产品信息.
表2 实验结果
为了验证GCA情感分类模型的分类有效性,将其与Trigram、TextFeature、AvgWordvec+SVM、SSWE+SVM、Paragraph Vrctor、RNTN+Recurrent、UPNN、NSC+LA八种只考虑文本信息的方法分在IMDB、Yelp2013和Yelp2014三个数据集上做对比,从表中可以看出,GCA情感分类模型在三个真实数据集上的情感分类准确率均高于这八种方法,其中相比这八种方法中最好的实验结果,GCA情感分类模型的准确率在三个数据集上分别提升了2.2%、0.5%、2.5%,GCA情感分类模型的表现在均方根误差上也有明显改善,相比于这八种方法中表现最好的NSC+LA方法,GCA情感分类模型的均方根误差在上述的三个数据集上,分别减少了3.9%,1.2%,4.7%.
其次将GCA情感分类模型与考虑用户和产品信息的Trigram+UPF、TextFeature+UPF、UPNN(CNN)及HUAPA四种方法进行比较,相比于前三种方法,GCA情感分类模型的准确率较其最好的结果在三个数据集上分别提升了7.4%,4.0%,4.7%,均方根误差减少了26.0%,9.0%,9.6%,而相比于HUAPA方法,GCA情感分类模型在三个数据集上的准确率均没有HUAPA方法的准确率高,在三个数据集上分别相差4.1%,4.7%,3.1%,均方根误差也较HUAPA方法差一些,在三个数据集上分别增加了15.7%,6.6%,4.2%,分析原因是因为HUAPA方法相比于本文的方法运用了两次注意力机制,更加精准的提取了情感特征,从而使精确度更高,更准确,并且在数据集很大的情况下,BiLSTM的表达性能比BiGRU要更好,还有BiLSTM能够充分考虑上下文,运用两次BiLSTM模型更加充分的提取了所需的情感特征,使得结果更加的精准,而CNN偏向于提取局部特征,而且没有时序性的概念,但在文本处理时,上一个词很大程度上影响了下一个词.但是HUAPA方法要比本文的方法复杂,它使用两次注意力机制,重复了两次,必定造成了空间和时间复杂度的增加,而且一般情况下,BiLSTM的训练时间要比CNN要长,训练的效率也差一些,再有BiGRU模型参数较BiLSTM更少,训练起来比BiLSTM更简单,且不容易过拟合.
综上所述,GCA情感分类模型在一定程度上能够有效的提取文本的全局和局部特征,并且通过引入注意力机制,获取文本中的有效特征,能降低噪音特征干扰,从而进一步提高分类的准确率.
4.6 模型分析
为了研究和证明加入用户注意和产品注意对情感分类有更好的效果,本文还做了只考虑文本信息的研究.此研究中的模型将BiGRU换为了BiLSTM,并将该模型命名为BiLSTM-CNN(no UP)情感分类模型,该模型方法具体如下:
1)首先将文本输入到Glove模型中训练,把评论文本中的词映射为对应的词向量;
2)将词向量输入到BiLSTM层,得到隐藏层状态;
3)将隐藏层的状态加入注意力机制得到赋予注意力权重的句子表示;
4)将句子表示输入到CNN层,经过CNN池化层下采样得到隐藏层表示,对隐藏层状态值求和得到文档表示;
5)最后,通过softmax函数映射到情感分类的C个类别进行分类.
由文献[26]实验研究可知,无论是用GRU还是LSTM,其最后结果并不会有太大的差异,只是GRU参数更少一些,训练起来比LSTM更简单.但在数据集很大的情况下,LSTM的表达性能更好.所以将BiLSTM-CNN(no UP)情感分类模型的实验结果与本文GCA模型的实验结果进行对比,来进行分析.由表2的实验结果显示,BiLSTM-CNN(no UP)情感分类模型在IMDB、Yelp2013和Yelp2014三个数据集上的准确率分别为0.457,0.613和0.625,相比于本文的GCA模型,其准确率分别降低了5.2%,2.3%和3.0%,而均方根误差也分别增加了12.9%,1.9%和3.6%,由此可见,加入用户注意和产品注意要比只考虑文本信息的准确率要更高,均方根误差要更小.
5 结 论
本文提出一种引入注意力机制的BiGRU-CNN文本情感分类模型-GCA情感分类模型,该模型结合BiGRU模型能够充分提取文本上下文信息特征的优势和CNN模型具有提取局部特征的特点,引入注意力机制对评论文本进行情感分类.并且该模型分别提取用户特征和产品特征,弥补了传统方法只考虑文本信息的不足.将该模型应用于IMDB、yelp2013以及yelp2014三个数据集,并与多种基线方法进行对比,实验结果表明,本文提出的模型在一定程度上提高了情感分类的准确性.