马 雨 解 庆 唐伶俐 刘永坚
(武汉理工大学计算机科学与技术学院 湖北 武汉 430070)
当今时代互联网迅猛发展,网络上每天都会产生大量的信息,包括各种各样的用户评论信息。比如用户可以对某个企业的某个产品做出评价,可以对刚看完的电影做出评价,也可以对政府对于重大事件的决策发表意见等。企业可以通过用户反馈的评价信息来优化产品及运营,政府可以通过分析评论来体察民情民意,用户可以通过其他用户对于某款产品的评价来决定是否消费该产品等。对这些信息做出合理的分析,不管是对于政府、企业还是用户都大有裨益。而在这些信息中用户的主观情感取向是极其重要的组成部分,因此研究者开始分析如上所述的不同类型的评论数据中所包含的个人主观情感取向,由此产生了情感分析技术。
情感分析(Sentiment Analysis)又称意见挖掘(Opinion Mining),它利用文本分析、机器学习、语言学、深度学习等方法对带有情感色彩的文本进行分析、处理、推理和归纳[1]。通俗而言,主要是对文本所表达的情感倾向做出判断,一般有三种情感极性:正面、中立和负面。基于对文档分类粒度的不同又分为:篇章级和句子级的粗粒度情感分析和方面级的细粒度情感分析。粗粒度情感分析假设每一篇或者每一句文本的评论对象以及对应的情感极性只有一个,这显然不符合实际应用中复杂的情况。
因此,近来学术研究越来越关注细粒度情感分析,即针对某一句或某一段评论文本中的多个评论对象,分别分析各自的情感极性。方面级的细粒度情感分析又分为方面类别情感分析ACSA(Aspect Category Sentiment Analysis)和方面词项情感分析ATSA(Aspect Term Sentiment Analysis)两个子任务。对于ACSA,上述细粒度情感分析定义中的“评论对象”指的是方面类别词;对于ATSA,其中的“评论对象”指的是方面词项。ACSA任务例如:“The boiled fish is delicious, but the price is too expensive.”,boiled fish对应的food类是积极的情感极性,而price对应的price类是消极的情感极性;ATSA任务的实例如下:“The boiled fish is delicious, but the beef is too salty.”,boiled fish这个词项对应的是积极的情感极性,而beef这个词项对应的是消极的情感极性。虽然两个词项都属于food类,但是ATSA的处理对象更加细化。目前的研究成果大多基于深度学习方法,且只关注方面级情感分析的其中一项任务,而且目前方面级情感分析的数据集不足,因此整体的性能表现并未达到预期。
本文提出一种基于多任务学习的方面级情感分析模型(Aspect-level sentiment analysis model based on multi-task learning,ASA-MTL)来解决方面级情感分析问题。该模型的核心思想是利用多任务学习网络的性能,同时学习方面级情感分析的两个子任务和辅助的方面词项重建任务[2],共享其中的隐层参数和各个子任务的特征表示,促进多个子任务共同学习,解决了单任务网络因不能共享自身特征而导致性能不佳的问题。同时,多任务学习框架使得每一个子任务都为其他子任务提供额外的信息,一定程度上缓解了方面级情感分析数据集不足的问题。在模型训练结构中,首先使用双向门控循环单元(Bi-GRU)及Sentence-level的注意力机制来对词向量编码,获得更好的语义向量。然后在各个任务的单独网络层,对于两个情感分析子任务,使用Aspect-level的注意力机制能够在句子中根据不同方面捕获不同的重要信息。综上所述,本文的工作有如下三个方面:
(1) 将两个方面级情感分析子任务利用多任务学习框架进行共同训练学习。
(2) 使用Sentence-level和Aspect-level两层注意力机制来更好地注意方面词和情感词,从而提升模型的总体表现。
(3) 多任务学习框架中添加方面词项重建任务在一定程度上确保方面特定的信息对其他两个子任务产生积极的影响。
本文的模型在SemEval的餐馆和电脑领域数据集上进行评测,结果表明,与当前具有代表性的方法进行比较,本文提出的模型在方面级情感分析任务中的效果有了显著的提高。
基于深度神经网络的方面级情感分析工作取得了不错的进展,尤其是基于循环神经网络RNN(Recurrent Neural Network)、长短期记忆网络LSTM(Long Short-Term Memory)、门控循环单元GRU(Gate Recurrent Unit),以及注意力机制[3](Attention Mechanism)等模型。文献[4]总结了各种深度神经网络用于情感分析任务,其中包括RNN、LSTM、CNN和基于注意力机制[5]的RNN等,同时也介绍了篇章级、句子级和方面级等几项情感分类子任务。文献[6]阐述了如何使用LSTM及其优化模型,即双向LSTM网络和“门控”对文本进行分类。文献[7]提出了两种基于长短期记忆网络的模型:TD-LSTM和TC-LSTM,并验证了这两个模型在情感分类任务上的出色表现。CNN最早应用在图像识别领域[8],而以CNN为基础的模型在自然语言处理上同样也不逊色。文献[9]首先将CNN模型用于文本分类上,CNN的特点在于能够保留句子的局部关键信息,因此取得了优异的成绩。文献[10]认为虽然深度神经网络取得了不错的进展,但是并未充分利用情感语言学知识,忽略了情感词、否定词等的重要性,因此提出了一种多情感资源增强注意网络(MEAN),通过注意力机制将情感词、否定词和强度词整合到深层神经网络来缓解该问题,用于句子级的情感分类。文献[11]提出基于注意力的LSTM用于方面级情感分析,其核心思想是学习aspect向量,让aspect向量参与到attention权重的计算中。文献[12]认为位置信息对于方面级情感分析任务是有益的,因此提出了一种基于层次关注的位置感知网络,也取得了不错的成绩。文献[13]将方面级情感分析任务细化为两个子任务:方面类别情感分析ACSA和方面词项情感分析ATSA。提出了GCAE模型,该模型由两个卷积层和两个非线性的门单元组成,继承了LSTM中门单元的特性,又比LSTM的结构简单太多,可以并行工作,获得了较短的模型训练时间和优秀的模型性能。
多任务学习(Mutli-task Learning)属于迁移学习领域,但不同于迁移学习注重从源域到目标域的知识迁移,多任务学习基于共享表示,注重任务之间的相关性,通过并行学习来改善单个任务学习的性能。多任务学习有很多形式,联合学习(Joint Learning)、自主学习(Learning to Learn)和带有辅助任务的学习(Learning with Auxiliary Task)[14]。文献[15]分析基于单任务监督目标学习的模型通常受到训练数据不足的影响,因而提出了使用多任务学习框架来共同学习多个相关任务。文献基于循环神经网络,提出了三种不同的共享信息机制,以模拟具有特定任务和共享层的文本,整个网络共同训练所有任务。对四个文本分类任务的实验表明文献提出的模型可以借助其他相关任务来提高单一任务的性能。文献[16]认为情感分析中三分类和五分类问题是相关的,因此提出了一个基于RNN的多任务学习方法。实验表明多任务模型有助于改善细粒度情感分析。文献[17]提出了一种对抗性的多任务学习框架,减轻了共享和私有潜在特征空间之间的相互干扰。对16种不同的文本分类任务进行实验验证,表明了该方法的优势。文献[18]针对当前的大多数工作无法直接优化所需任务的非监督目标,或受训练数据不足困扰的单任务监督目标来学习模型,提出了一种多任务深度神经网络,用于学习跨多个任务的表示形式。
本文提出一种基于多任务学习的方面级情感分析模型ASA-MTL,如图1所示,主要包括以下2种结构。
(1) 多任务共享提取特征结构。该结构基于Bi-GRU及Sentence-level的注意力机制,是多任务的共享部分,在此结构中共同训练各个子任务的数据,达到共同学习的目的。模型将两个任务的语料库经过共享Embedding层得到词向量,将词向量送入Bi-GRU编码获得新的向量。通过Sentence-level的注意力机制更好地捕获句子的内部结构,提高句子中方面词和情感词在词嵌入中的权重,得到最终的句子表示(图1中“H”部分)。
图1 基于多任务学习的方面级情感分析模型ASA-MTL
另外,考虑到实际评论文本中普遍存在的多方面情感交织问题,本模型采用一个额外的CNN完成方面词项的识别和提取的工作。如图2所示,模型以窗口滑动的形式提取句子的局部特征,通过最大池化层、全连接层、Softmax层,最终提取方面词项。
图2 CNN结构提取方面词项
(2) 任务特定输出结构。该结构基于Aspect-level的注意力机制,是各个子任务的独有部分,分别使用注意力机制为不同任务服务并将结果输出。首先通过上述共享层得到任务共享的句子表示。
对于ACSA任务,首先将句子表示和方面类别嵌入拼接作为该任务特定的注意力层的输入,当不同的方面类别词输入的时候,注意力机制可以专注于句子的不同部分,最后用Softmax层将结果映射至概率空间,完成方面类别情感分类。
对于ATSA任务,首先将方面词项从句子中提取出来,并得到方面词项嵌入,然后将方面词项嵌入和句子表示拼接送入该任务特定的注意力层,不同的方面词项的输入会使得注意力机制对句子的不同位置产生关注,最后用Softmax层将结果映射至概率空间,完成方面词项情感分类。
方面词项重建任务ATR(Aspect Term Reconstruction)为ACSA和ATSA的辅助任务,重建方面词项。句子中方面词项可能由多个单词组成,因此是多标签问题。该任务将共享句子向量通过解码器Bi-GRU对向量操作,之后用全连接层进行多标签分类,得到方面词项。
在多任务共享提取特征结构中,使用一个任务共享的Embedding层、Bi-GRU层、Sentence-level的注意力层来捕获三个任务的特征,其中Sentence-level的注意力层采用Self-attention机制。将文本数据经过Embedding层,得到句子的词向量表示之后共同送入Bi-GRU层,利用Bi-GRU结构,将所有任务的数据共同参与训练,得到一个共同的隐藏状态表示,并使用Self-attention机制更好地注意方面词和情感词,得到最终的句子表示,解决了单任务学习时因不能共享自身特征而导致性能不佳的问题。
2.1.1Embedding层
Embedding层将词语转化成向量的形式,实现将词语从语义空间映射到向量空间,且原本语义接近的两个词汇在向量空间中的位置也是接近的。给定一个含有n个词的句子s={w1,w2,…,wn},通过嵌入矩阵E∈RV×d来获取句子向量表示。其中:V是词汇表的大小;d是词嵌入的维度。本文采用300维的Glove[19]向量矩阵来初始化矩阵E,并在训练过程中进行微调。
2.1.2Bi-GRU层
多任务共享提取特征结构使用Bi-GRU来编码句子向量,获取句子的高维语义特征。GRU是由LSTM发展变化而来的模型。LSTM具有三个“门”机制,可以让信息选择性通过,能够较好地处理长序列,但其模型复杂,需要学习的参数较多,需要很长的训练时间[19]。GRU简化了LSTM的内部结构,去除了细胞状态,只包含更新门和重置门,使用隐藏状态来进行信息的传递,能将输入序列映射成一个包含高层语义信息的新序列。这样模型具有更少的参数,能够在提高模型训练速度的基础上保证训练效果,其结构如图3所示。
图3 GRU的内部结构
zt=σ(Wz[ht-1,xt]+bz)
(1)
rt=σ(Wr[ht-1,xt]+br)
(2)
(3)
(4)
单向的GRU从左到右编码句子,只能看到句子过去的上文信息,不能看到句子未来的下文信息。本文采用Bi-GRU从正向和反向两个方向来获取上下文信息,因此能够获得两个隐藏表示,然后级联每一个词的正向隐藏状态和反向隐藏状态。第i个词的输出为:
(5)
H1=[h1,h2,…,hi,…,hn]
(6)
式中:n为句子所含词语的个数。
2.1.3Sentence-level的注意力层
在情感分析任务中,一个句子中的不同单词对帮助方面级情感分析做出不等同的贡献。因此本文引入了一种Sentence-level注意机制,以提取更重要的单词。Self-attention能通过将所有相关单词的理解融入到正在处理的单词中,充分考虑到句子之间不同词语之间的语义关系。因此该层采用Self-attention机制对获得的隐层表示进一步编码,将方面词和其情感词等这些信息性单词的表示形式汇总起来,从而形成Sentence-level的表示形式。
Self-attention是注意力机制的一种,对每一个单词处理都能充分考虑到其他单词,也就是说可能会和所有的词语都做一个加权。而RNN及其变体在处理单词时却只能依靠上一个阶段的输出状态和当前的输入状态。如图4所示,可以看到Self-attention的处理机制,允许模型选择性地关注一些词。
图4 Self-attention的工作机制
对于上文中得到的H1中的每一个词向量,在Self-attention中都会经过计算得出三个不同的向量Q、K和V。每一个位置上词的Q向量与所有位置上词的K向量进行点积相乘后做Softmax归一化操作,得到每一个词的权重。最后,将得到的权重与每个位置上词的V向量加权求和,得到最终的向量:
(7)
在两个情感分析子任务中,为了更好地对应给定的方面来捕捉句子中重要的部分[11],使用Aspect-level的注意力机制作为共享层之后的任务特定层。在方面词项重建任务中,使用Bi-GRU作为解码器,之后接一个全连接层来进行多标签分类,重建方面词项。
该结构是在上述多任务共享结构基础上对于两个情感分析任务分别加入注意力层,当句子中有多种不同的方面时,注意力机制使得模型能够捕获句子中最重要的部分。分别将方面类别词向量或方面词项向量与多任务共享结构得到的向量H拼接起来作为注意力机制的输入表示。注意力机制将会产生一个注意力权重向量α和给定方面的句子加权表示组成的向量r。α=[α1,α2,…,αi,…,αn],其中αi代表每个词的注意力权重。
(1) 对于ACSA和ATSA任务。将H和va拼接后的向量经过tanh激活函数,得到M,然后经过Softmax得到注意力权重α,最终得到给定方面类别或方面词项的句子向量r:
(8)
α=softmax(wTM)
(9)
r=HαT
(10)
式中:va代表ACSA任务中的方面类别词向量或ATSA任务中的方面词项向量;Wh、Wa和wT是参数。
最终得到句子表示是r和最后的输出向量hN的非线性组合,并使用Softmax分类器将给定方面类别或方面词项的句子特征表示h*转化为条件概率分布:
h*=tanh(Wrr+WnhN)
(11)
y=softmax(Wsh*+bs)
(12)
式中:Wr和Wn是训练过程中需要学习的参数;h*是给定方面的句子特征表示;Ws和bs是Softmax分类器的参数。
(2) 对于ATR任务。方面类别情感分析数据集中只有几个预先定义的方面类别,例如餐饮领域的food类、service类和price类等。在方面词项情感分析数据集中,方面词项的数量有很多,而组成方面词项的词是有限的。方面词项存在于句子中,一个方面类别可以对应多个方面词项,因此在多任务学习结构中该任务对于两个情感分析子任务是有助益的。
方面词项重建是将句子中所包含的方面词项找出来,具体表现为给每个句子打上标签,标签内容为方面词项。例如:“The boiled fish is delicious, but the beef is too salty.”该句中方面词项是boiled fish和beef,那么该句子将被打上这两个标签。句子中含有的方面词项个数即为标签的个数。
在多任务共享结构中得到句子表示之后,将其输入至Bi-GRU中,这里的Bi-GRU作为解码器,然后将结果输入至全连接层进行多标签分类,当一个句子中包含多个方面词项时,则为这个句子贴上它所拥有词项的标签,重建句子中包含的方面词项。对于多标签问题,使用损失函数是Sigmoid交叉熵,公式如下:
(13)
式中:C代表构成训练例子中所有词项的单词数;yi是单词的真实值;pi是单词的预测值。
模型的损失函数采用交叉熵损失函数,通过反向传播以端到端的方式来训练模型。对于ASA-MTL模型,三个任务共有三个损失函数,总的损失函数是:
loss=αloss1+βloss2+γloss3
(14)
式中:loss1、loss2、loss3分别是ACSA、ATSA和方面词项重建任务的损失函数,均采用交叉熵来估计损失;α、β和γ分别是权重系数,系数之和为1。三个权重系数通过训练过程中反复调试得到。ACSA和ATSA任务的损失函数如下:
(15)
3.1.1实验环境
实验环境:操作系统Ubuntu 12.0.3,内存16 GB,编程平台Pycharm,Python 3.6版本,深度学习框架Keras。
3.1.2数据集与评估标准
数据集:本实验采用公共数据集SemEval 2014 task4,2015 task12、2016 task5作为两个任务的语料,其中包括餐厅和笔记本电脑的客户评论。参考该数据集上的其他工作[11,20],移除了其中的“conflict”标签,剩余三个情感标签分别是“positive”“negative”和“neutral”,即进行“积极”“消极”和“中性”三分类的实验。采用文献[13]的方法,合并了2014至2016三年的餐饮领域的数据,修复了数据的不兼容性,删除“conflict”标签而不是把它替换为“neutral”,以此作为ACSA的数据集,最后共得到餐厅领域训练集4 470条数据,测试集2 374条数据。对于ATSA的数据集,采用的是SemEval2014 task4的餐厅评论和电脑评论,其中电脑(Laptop,L)评论共有训练集2 313条数据、测试集638条数据,餐厅(Restaurant,R)评论共有训练集3 602条数据、测试集1 120条数据。表1是数据集各个类别的样本数。
表1 ACSA和ATSA任务统计的数据集
评估标准:本文采用精确率(Accuracy,Acc)和F1值作为分类任务的评价指标,采用随机初始化每种方法运行5次的平均值。使用到的统计项如表2所示。
表2 评估标准中使用到的统计项
精确率(Accuracy)及F1值的公式如下:
(16)
(17)
(18)
(19)
式中:precision和recall自身也是一种常见的评价指标,但事实上这两者在一些情况下有矛盾,故使用同时兼顾了precision和recall的F1值作为评价指标。
3.1.3实验方法
本实验验证了本文提出的多任务学习框架,根据方面词项重建任务是否引入,分别按如下方式表示:(1) 只包含ACSA和ATSA两个任务的训练模型ASA-DTL;(2) 包含ACSA、ATSA和重建三个任务的训练模型ASA-MTL。实验目的主要是期望验证多任务学习框架对比单任务学习框架的优势,以及方面词项重建任务在多任务学习框架下对两个情感分析任务的辅助作用。
本实验选用AdaGrad优化器来进行参数的更新。批处理大小和初始的学习率分别设置为32和0.01,dropout率为50%。词向量采用300维的Glove向量矩阵来初始化,并在训练过程中进行微调。不在Glove词汇表中的单词用均匀分布U(-0.25,0.25)来随机初始化。实验基于Keras来实现。
3.2.1对比实验的结果分析
为了评估本文模型的性能,需要与几种基线模型做对比实验。表3描述了对比模型和本文模型的分类精确率,实验结果均为重复实验五次的平均值。
表3 各个模型在不同数据集上的精确率和F1值
(1) LSTM[6]:由基础的LSTM得到句子表示并运用分类器来分类。
(2) AT-LSTM[11]:在LSTM的基础上做的改进,通过LSTM对句子建模,并连接方面向量以计算注意力权重,然后将其用于生成输入句子的最终表示,以判断情感极性。
(3) ATAE-LSTM[11]:通过将方面词嵌入附加到每个单词嵌入来扩展AT-LSTM,这样能够更好地发挥方面信息的优势。
(4) TD-LSTM[7]:使用两个LSTM网络对目标的前后上下文进行建模,以生成与目标相关的情感预测表示。
(5) TC-LSTM[7]:在TD-LSTM的基础上进行改进,在构建句子表示形式时更好地利用目标和每个上下文词之间的联系,将单词嵌入和目标向量的串联作为每个位置的输入,最后进行情感分析。
可以看出,LSTM是表现最差的一个模型,其分类精确率仅有0.814,因为它无法获得句子中有关方面词的任何信息。AT-LSTM模型是在LSTM的基础上做的改进,其表现优于LSTM。TD-LSTM的表现也优于LSTM,但由于该模型并未使用注意力机制,因此它无法知晓句子中的单词对于给定方面的重要性。TC-LSTM模型的性能优于TD-LSTM,这得益于其很好地利用了目标词语上下文的联系。ATAE-LSTM是这些对比实验中效果最好的,分类精确率是0.837,它既有方面向量的助益,又使用注意力机制极大地提升了性能。
ASA-DTL模型是ACSA和ATSA两个任务共同学习的结构,该模型可验证多个相关任务学习对于各自任务性能提升的有效性。从表3中可以看出,ASA-DTL模型在三个数据集上都取得了较好的情感分析效果,其中在R(ACSA)上的分类精确率为0.850,比起效果较好的TC-LSTM模型和ATAE-LSTM模型分别提升0.019和0.13;在R(ATSA)数据集上的分类精确率为0.773,而ATAE-LSTM和TC-LSTM的分类精确率分别是0.762和0.756,分别比上述两个效果好的模型分别提升了0.011和0.017;在L(ATSA)数据集上的表现也是可观的,比先前的实验均有所提升。由表3中数据可得,ASA-DTL模型在R(ATSA)数据集上的F1值为0.778,比ATAE-LSTM模型高了0.012;在另外两个数据集上的表现也都优于其他模型。综上所述,通过这些实验验证了相关任务共同学习的有效性。
ASA-MTL模型在ASA-DTL模型的基础上加入方面词项重建任务作为辅助任务。从表3中可以看出,该模型在三个数据集上表现是最好的,在R(ACSA)数据集上的分类精确率为0.856,在R(ATSA)数据集上的分类精确率为0.780,在L(ATSA)数据集上的分类精确率为0.697,均高于ASA-DTL模型。由此可见,三个相关任务共同学习的模型优于两个相关任务共同学习的模型,更进一步验证了多任务学习的有效性。
总体来看,多任务学习比起单任务学习在精确率上有较大的提升,验证了多任务学习在方面级情感分析任务上的有效性。
3.2.2方面词项重建辅助任务的影响
由表3可见,ASA-MTL和ASA-DTL在R(ACSA)数据集上的分类精确率分别是0.856和0.850,在R(ATSA)数据集的分类精确率分别是0.780和0.773,在L(ATSA)数据集的分类精确率分别是0.697和0.690,ASA-MTL在三个数据集上的分类效果均优于ASA-DTL。可以验证本文的三个任务的共同学习架构优于两个任务的共同学习结构以及方面词项重建任务的重要性。在方面类别情感分析数据集中,只有几个预先定义的方面类别。在方面词项情感分析数据集中,方面词项有很多种,组成方面词项的词语是有限的,它们分别从属于方面类别中的某一类别。方面词项和方面类别对于两个子任务能否有一个好的性能是非常关键的,重新构建方面词项能够在一定程度上确保方面特定的信息对上述两个子任务产生积极的影响,以便对特定方面的情感倾向进行更好的预测。
本文提出一种基于多任务学习的方面级情感分析模型(ASA-MTL),同时学习方面级情感分析多个子任务,共享参数,促进多个任务共同学习,解决了单任务网络不能共享每个网络自身学习到的特征进而导致性能不佳的问题。在网络结构中使用Sentence-level和Aspect-level两层注意力机制对整个句子进行分析,在句子中根据不同方面捕获不同的重要信息。添加方面词项重建任务作为多任务结构中的辅助任务,确保方面信息能更好地发挥作用。在SemEval数据集上进行的实验验证了本文模型的性能相比其他基线模型有所提升。另外,一些词在不同的领域表达的情感极性不同,因此领域特定的情感词典对于方面级情感分析任务是非常关键的。在未来的工作中,将尝试构建领域特定情感词典,充分利用情感语言学知识进一步提高情感分析的效果。