基于E-CNN的情绪原因识别方法
2018-04-16慕永利王素格
慕永利,李 旸,王素格,2
(1山西大学 计算机与信息技术学院,山西 太原 030006;2山西大学 计算机智能与中文信息处理教育部重点实验室,山西 太原 030006)
0 引言
文本情绪分析是自然语言处理领域非常重要的研究方向之一,它主要研究文本所蕴含的情绪及与情绪相关的深层信息。目前,文本情绪分析大都将研究聚焦在情绪分类方法上。王蓉等人[1]采用bag-of-words表示文本,通过联合学习对文本的情感和情绪进行分类。Shoushan Li等人[2]同样采用bag-of-words表示文本,再利用依赖因子图模型预测句子级别的情绪类型。伴随着深度学习技术的成熟,基于深度学习的情绪分类方法也呈现出比传统机器学习方法更为有效的结果。张志华[3]提出基于卷积神经网络对长文本进行情感语义建模,解决了长文本(句子)的情感分类问题。Yaqi Wang等人[4]利用卷积神经网络对句子建模,实现了微博文本数据的多标签情绪分类。然而对于情绪分析问题,若忽略了文本情绪相关的深层次信息的挖掘,将影响其分析的效果。例如,2016年的罗尔诈捐门事件,公众情绪从最初的同情演变为后面的愤怒,引起一系列的社会问题。因此,不仅要关注公众情绪是什么,更应该关注公众为什么会从同情演变为愤怒的情绪,由此可见,事件中的情绪原因的识别是非常重要和必需的。所谓情绪原因识别就是针对文本中出现的被描述者的情绪,抽取出触发被描述者情绪产生的原因信息。
随着深度学习在自然语言处理领域中的广泛应用,人们开始利用神经网络模型,通过对句子进行建模来处理文本分类任务。Xinchi Chen[5]采用GRNN(gated recursive neural network)、Nal Kalchbrenner[6]和Yoon Kim[7]通过不同卷积和池化的CNN神经网络对句子建模,最后他们都在SST[8]、TREC[9]数据集上分别进行情感分类和问题分类,通过实验验证了采用CNN的句子建模可以获得最好的分类性能。由此可见,神经网络不仅可以应用到文本情感分类任务(SST[8]数据集上的情感分类),还可以应用到文本问答类型的分类任务(TREC[9]数据集上的问题分类)。此前,情绪归因一般研究人员大都采用基于规则和统计的方法[10-16]。
本文针对文本情绪原因识别任务,提出了一种基于卷积神经网络的集成(E-CNN模型)的情绪原因识别方法,首先利用卷积神经网络对句子进行建模,在词向量的训练表示上,融合上下文语义信息,然后通过多个CNN的集成,用于文本情绪原因的识别。实验结果表明,本文提出的E-CNN(Ensemble Convolution Neural Network)方法,在情绪原因识别方面获得了较好的实验性能。
1 相关工作
针对情绪原因的识别,Ying Chen[10]等人通过对标注语料的分析,发现超过80%的情绪原因信息位于出现情绪的核心子句的前后两个子句中,Sophia Yat Mei Lee[10]同样根据对标注的语料分析,获得情绪原因信息大多位于出现情绪的核心子句的上下文信息中。为了获得这些情绪原因,研究人员主要采用基于规则和基于统计的方法。
基于规则的情绪原因识别方法方面,Ying Chen[10]和Sophia Yat Mei Lee[10-11]等人建立了一个情绪归因的语料库,并且根据标注的语料库建立了相应的规则,用于情绪原因子句的识别。Kai Gao[13]等人提出一种基于规则的情绪原因识别模型,然后对相应的微博数据进行情绪原因的抽取,然而,制定的规则并不能完全覆盖所有的语言现象,而且同一个子句可能同时匹配多个规则,很容易造成规则冲突。再者不同领域语料的语言结构有一定的区别,针对特定领域的文本制定的规则并不能很好地适用于其他领域的文本,需要耗费巨大的人力物力重新分析语言结构来添加新的规则。Alena Neviarouskaya[14]通过句法、语法和规则相结合的方法,分析八种情绪原因的语言现象,以此来推测一段文本的情绪类别和情绪原因。Weiyuan Li[15]等人通过抽取情绪原因特征进行情绪分类,其特征抽取仍采用基于规则的方法。
在基于统计方法的情绪原因识别方面,袁丽[16]提取语言学线索词的特征、句子距离特征、候选词词法特征等信息,然后得到特征向量空间,最后应用SVM分类器和条件随机场对文本情绪归因进行了判别。Lin Gui等人[17]不仅通过建立25条规则来进行文本情绪原因的预测,还运用分类方法来预测文本情绪原因。李逸薇等[18]将情绪归因识别任务看成序列标注,并建立了相应的模型,将所有候选原因子句当成一个序列,从而标记出哪些属于原因子句,她特别指出在利用序列标注模型进行情绪原因识别的过程中,上下文特征尤为重要。Ghazi D等人[19]利用FrameNet建立了情绪和情绪原因相关联的数据集,然后利用CRF来预测文本句子级别的情绪。Gaoyan Ou等人[20]建立文本公众情绪和情绪事件之间关系,利用文本情绪对文本中事件进行预测。Lin Gui等人[21]首先构建了一个情绪归因语料库,标注了表达情绪的核心子句,在核心句的前后子句中标注情绪原因子句,然后从核心句的前后每个子句中抽取候选原因事件,通过训练分类器,最后判定抽取的候选原因事件是否是情绪核心子句的原因事件。
综上可知,无论是基于规则的情绪原因识别方法,还是基于统计的情绪原因识别方法,二者都表明情绪原因的相关信息一般都位于文本中情绪核心句的上下文信息中。针对这一重要的语言现象,本文提出了一种基于E-CNN模型的情绪原因识别方法,该方法不同于目前的情绪原因识别方法,而是利用了词向量和卷积神经网络,同时融合了句子的语义信息进行情绪原因识别。
2 E-CNN情绪原因识别方法
2.1 情绪原因问题描述
为了分析情绪和情绪原因在句子中出现的情况,我们将情绪出现的文本子句称为情绪核心子句,被描述者情绪原因信息所在的子句称为情绪原因子句,这里所描述的子句可以是逗号、问号、感叹号、句号为结尾的句子,子句示例信息见表1。通过在数据集中的统计,获得情绪原因子句在数据集中的统计信息,如表2所示。
表1 情绪原因识别示例表
表2 数据集相关统计信息示例表
其中,表1中的S0表示情绪核心子句所在位置,S-3、S-2、S-1表示紧邻情绪核心子句前的三个子句,S+1、S+2、S+3表示紧邻情绪核心子句的后三个子句。标签信息为1表示情绪原因子句,标签信息为0表示非情绪原因子句。
(1) 从表1可知,示例中的上下文句子中情绪原因子句仅有一个,非情绪原因子句有六个,就单个示例来看,情绪原因信息在整个示例的上下文信息中所占比例较小,导致在对情绪核心子句上下文中的子句进行情绪原因识别时,可以利用的信息也较少,从而使非情绪原因信息所占比重较大。因此,在整个上下文信息中进行情绪原因信息的识别存在不平衡问题。
(2) 由表2可知,整个数据集中情绪原因子句约占整个句子的18.366%,原因信息位于包含情绪核心子句在内的上下文7个子句中约占98.06%,原因信息位于其他位置约占1.94%;包含一个原因子句信息的示例约占98.06%,包含多个原因子句信息的示例占1.94%。通过我们的考察以及对Lin Gui标注语料的统计,发现几乎所有的情绪原因信息都位于紧邻情绪核心子句的上下文信息中。这与文献[10]得到的结论相同。因此,从紧邻情绪核心子句的上下文中识别情绪原因信息将成为情绪原因识别问题的关键。
2.2 情绪原因识别模型整体框架
由2.1节对情绪原因识别问题的分析,可将情绪原因识别任务看成一个分类问题,主要判别一个核心子句的上下文子句是否包含情绪原因信息。传统的分类方法普遍采用词袋模型对句子进行向量表示,再采用SVM等传统机器学习方法进行分类。其不足是不能很好地充分融合句子中词与词之间的语义信息。另外,由于非情绪原因信息所占比重较大,使得情绪原因信息与非情绪原因信息之间的比例存在非平衡问题。因此,本文结合CNN卷积神经网络提出了一种集成的卷积神经网络(E-CNN)情绪归因模型,对情绪原因进行分类识别。模型整体框架如图1所示。
图1 E-CNN情绪原因识别框架图
如表1所示,对于一组文本,通过E-CNN模型得到每个子句的概率值,数据集中多原因子句的情况所占比例很小,因此,将概率最大的一个候选原因子句作为每组示例的情绪原因子句。
2.3 E-CNN模型
利用情绪核心子句的上下文子句识别情绪原因子句时,由于原因子句与非原因子句所占比例是不平衡的,我们将每个示例的原因子句和非原因子句分别构成多个较平衡的数据集,分别在各个新数据集上进行相对应的CNN卷积神经网络的训练;然后将训练好的多个CNN集成组合,构建E-CNN模型;最后在E-CNN模型上进行情绪原因子句的分类,以识别包含情绪原因信息的子句。
基于E-CNN模型进行情绪原因识别的过程如图2所示。
图2 E-CNN情绪原因识别过程图
由图2可知,E-CNN由多个训练好的CNN集成。
在E-CNN模型中:(1)将句子中的词语利用Word2Vec工具进行词向量表示,然后通过词向量矩阵化操作将句子中的词向量组合成为一个词向量矩阵;(2)通过CNN模型中的卷积操作融合词与词之间的语义信息;(3)通过CNN模型中Max-pooling池化操作、连接操作和attention操作将候选原因子句表示为一个向量;(4)通过sigmoid函数和集成操作得到候选原因子句的概率值,在核心子句的上下文的七个候选子句中,概率最大的子句即为情绪原因子句。
本文建立的CNN卷积神经网络模型如图3所示,CNN包含输入层、卷积层、池化层、Attention层,连接层。
图3 CNN模型图
(1) 输入层:该层主要是初始化输入数据,通过Word2Vec将句子中的词语表示成词向量,采用⊕运算操作将词向量连接表示为一个词向量矩阵X,如式(1)所示。
(1)
(2) 卷积层:该层采用不同大小的卷积窗口进行卷积操作,将句子中的局部语义信息融合。通过卷积窗口选取c个句子中的局部词向量首尾相连,gj被表示为一个具有局部语义信息的新向量,如公式(2)所示。G(n-c+1)×(c×k)为将gj通过连接运算操作表示为一个具有句子全局语义信息的新矩阵,如式(3)所示。Md×(n-c+1)为G(n-c+1)×(c×k)通过σ函数表示为最终的卷积层矩阵,如式(4)所示。
σ表示sigmoid函数,c表示卷积窗口大小,Wd×(c×k)是卷积核系数矩阵,Bd×(n-c+1)是卷积核偏置矩阵。
(3) 池化层:该层通过Max-pooling操作[6]从一个卷积层矩阵中选取代表句子全局语义信息中的有效特征。Q表示池化后代表句子语义信息的池化层向量。Md×(n-c+1)表示卷积层矩阵,如式(5)和式(6)所示。
(5)
(6)
(5) Attention层:根据对所有情绪原因子句的句子结构的分析可以得知,超过90%的原因子句含有动词和动词短语,而且很多情绪原因子句还含有代表原因信息的连词,如“由于”“因为”等连词。针对这些情绪原因子句特殊的语言结构,我们通过在CNN中添加Attention层来增强情绪原因子句语言现象对情绪原因子句识别的影响。在模型中通过句法分析和词性标注选取动词和原因连词。
如图4所示,如果一个句子中至少含有一个动词,那么该句子的核心词(HED表示核心关系)就是动词。通过词性标注可知,图4中的“因”(词性标注中的c表示连词)为连词。综上所述,从候选原因子
图4 句法分析示例图
句中选取核心词(通过HED关系选取句子的核心词)和原因连词(词性标注中的c表示连词,如果没有连词则不选),选取核心词和连词构成新的词向量矩阵E,然后通过全连接操作得到一个attention向量,如式(7)所示。
A1×k=W1×a·Ea×k
(7)
如图3中的Attention层所示,a为被选中的词的总个数,k表示词向量的维度。
(10)
3 实验与分析
3.1 实验数据与评价
(11)
3.2 参数设置
通过在3.1节数据集上进行了大量实验,并进行了参数调整,获得的超参数设置如下:词向量维数k设为50,CNN的个数h设为5,卷积窗口s的个数为3,3个卷积窗口c的大小分别为设为3、4、5,卷积核的大小d设为300,学习率α设为0.01,批大小batchsize设为50,λ设为10-8。
为了验证在一个CNN模型的迭代次数对情绪原因发现的影响,本文随机选取原因子句和非原因子句为1∶1的数据集(原因子句2 167,非原因子句2 167)上进行迭代实验。实验结果如图5所示。
图5 测试集上的F值随迭代次数变化图
由图5可知,随着iteration的增大,在测试集上的情绪原因发现的F值也逐渐增大。当iteration超过100时,F值就快速达到0.672 1,说明在前100词迭代过程中,模型快速收敛靠近最优解。当iteration超过1 100以后,情绪原因发现的F值基本保持不变,甚至略有下降,说明当iteration达到1 100时,模型基本达到了稳定状态;iteration超过1 100以后,可能出现了过拟合的现象。因此,为了使模型达到情绪原因识别的最优状态,也为了防止过拟合的出现,在实验过程中我们将iteration设为1 100。
3.3 实验结果与分析
为了验证本文所提方法的有效性,设置了方法间的比较实验和不同评价方法的实验。
(1) 方法间的对比实验
选用了如下的方法进行对比实验:
① 基于规则
• RB(Rule based method):基于规则的方法[11];
• CB(Commonsense based method):基于常识的方法[22-23];
• ML(Rule base features for machine learning):利用基于规则的方法进行特征抽取,然后利用机器学习方法进行分类[24]。
② 基于SVM分类器
KET-O、KET-M:均是利用词袋模型进行句子中候选原因事件的向量表示[21],然后利用树核SVM[21]和修改后的树核SVM进行分类[21],如果子句中包含了原因事件,则该子句为原因子句;
Knew+O、Knew*O、Knew+M、Knew*M:均是利用词袋模型进行句子中候选原因事件的向量表示[21],然后利用多种不用核函数结合的SVM进行分类[21],如果子句中包含了原因事件,则该子句为原因子句。
③ 基于深度学习
• CNN:采用单个CNN在数据集上进行实验;
• E-CNN:采用E-CNN在数据集上进行实验。
最后CNN和E-CNN均选取概率最大候选原因子句作为该组示例的情绪原因子句。
上述方法数据集与参数均在3.1和3.2节进行了介绍。规则、SVM和CNN三大类方法间的比较实验结果如表3所示。
表3 各种方法的实验结果比较
由表3可知:
① 与基于规则的情绪归因方法比较,E-CNN在准确率、召回率和F值上均高于RB+CB,准确率、召回率、F值分别达到0.571 4、0.543 7、0.556 9。同时E-CNN的召回率高于RB+CB+ML。由上述分析可知,E-CNN比基于规则的情绪原因识别方法效果更好。
② 与基于SVM分类器的情绪归因方法比较,E-CNN方法在精确率、召回率、F值都明显高于KET-M。而Knew×M中由于加入了NER以及Parsering结果,所以E-CNN方法不及Knew×M。同时Knew×M在候选原因子句抽取原因事件时,将会丢失不包含情绪原因事件的句子,主要原因在事件抽取时需要每个子句必须包含动词或者动词短语,而有些原因子句中并不一定包含动词或动词短语。另一方面,E-CNN虽然实验效果低于Knew×M方法,但是可以识别不包含事件信息的情绪原因子句,以及各种类型语言结构的情绪原因子句。
③ 在和单个CNN方法比较中,E-CNN方法的精确率、召回率、F值都明显高于本文单个CNN方法。主要原因是:使用E-CNN方法,可以分别将每组示例(表1所示)中的各个非情绪原因子句和同一个情绪原因子句组成新的数据集,分别训练CNN会充分融合情绪原因子句和各个子句的句间关系。因此,E-CNN的实验效果更好。
(2) 三种评价方法
由于情绪原因识别问题本身存在不平衡问题,有时抽取概率最大的一个候选原因子句并不能很好地帮助研究人员进行情绪原因识别问题的研究,因此,在用E-CNN模型进行情绪原因子句识别后,对每组示例预测的情绪原因子句按概率从大到小排序,分别选取概率较大的一个和多个子句同时作为情绪原因子句。这里选取概率最大的一个候选原因子句作为该组示例的情绪原因子句(E-CNN),选取概率最大的两个候选原因子句作为原因子句,且只要两个子句至少包含一个原因子句即视为正确(E-CNN-2),选取概率最大的三个候选原因子句作为原因子句,且只要三个子句中至少包含一个原因子句即视为正确(E-CNN-3);三种方式的实验结果如表4所示
表4 E-CNN实验结果对比表
由表4可知,利用E-CNN-2识别两个候选原因子句中至少包含一个原因子句的精确率达到0.825 2,召回率达到0.758 6。在E-CNN-3识别三个候选原因子句中至少包含一个原因子句的精确率高达0.959 3,召回率高达0.936 7。由此可知,E-CNN模型可以帮助情绪原因识别研究方法进行情绪原因的前期识别过滤,同时也可以用于有关情绪原因识别的问答类问题的候选子句的选取。
4 结束语
情绪原因识别方法需要对上下文信息进行很好的融合和处理,而CNN卷积神经网络可以在句子建模过程中充分考虑句子中所有的词义信息的融合,并且还可以从所有语义信息中选取有效的全局语义信息。另一方面,情绪原因子句与非情绪原因子句在实际语料中存在极不平衡情况。基于两种因素,本文提出的E-CNN模型,为了增强因果句子的显式特征,在E-CNN模型中加入了attention机制,以增强对情绪原因子句的识别。
在E-CNN模型中,虽然E-CNN-2和E-CNN-3两种实验的结果是最佳的,但E-CNN的识别结果不及Knew×M,下一步,需要将事件的主体信息考虑到模型中,同时引入句法信息和命名体信息。另一方面,需要给出一个更为合理的度量,用于判断候选情绪原因子句中真正的情绪原因子句。
[1]R Wang,S Li,G Zhou,et al.Joint sentiment and emotion classification with integer linear programming[C]//Proceedings of International Conference on Database Systems for Advanced Applications.Springer International Publishing,2015:259-265.
[2]Shoushan Li,Lei Huang,Rong Wang.et al.Sentence-level emotion classification with label and context dependence[C]//Proceedings of the 53rd Annual Meeting of the Association for Computational Linguistics and the 7th International Joint Conference on Natural Language Processing,2015:1045-1053.
[3]张志华.基于深度学习的情感词向量及文本情感分析的研究[D].上海:华东师范大学硕士学位论文,2016.
[4]Yaqi Wang,S Feng,D Wang,et al.Multi-label Chinese microblog emotion classification via convolutional neural network[C]//Proceedings of Asia-Pacific Web Conference:Springer International Publishing,2016:567-580.
[5]Xinchi Chen,Xipeng Qiu,Chenxi Zhu,et al.Sentence modeling with gated recursive neural network[C]//Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing,2015:793-798.
[6]Nal Kalchbrenner,Edward Grefenstette,Phil Blunsom.A convolutional neural network for modeling sentences[C]//Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics,2014:655-665.
[7]Yoon Kim.Convolutional neural networks for sentence classification[C]//Proceedings of Conference on Empirical Methods in Natural Language Processing,2014:1746-1751.
[8]Richard Socher,Alex Perelygin,Jean Y Wu,et al.Recursive deep models for semantic compositionality over a sentiment treebank[C]//Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing,2013:1631-1642.
[9]Xin Li,Dan Roth.Learning question classifiers[C]//Proceedings of the International Conference on Computational Linguistics,2002,12(24):556-562.
[10]Ying Chen,Sophia Yat Mei Lee,Shoushan Li,et al.Emotion cause detection with linguistic constructions[C]//Proceedings of the 23rd International Conference on Computational Linguistics,2010:179-187.
[11]Sophia Yat Mei Lee,Ying Chen,Chu-Ren Huang.A text-driven rule-based system for emotion cause detection[C]//Proceedings of the NAACL HLT 2010 Workshop on Computational Approaches to Analysis and Generation of Emotion in Tex,2010:45-53.
[12]S Y M Lee,Ying Chen,Shoushan Li,et al.Emotioncause events:corpus construction and analysis[C]//Proceedings of the International Conference on Language Resources and Evaluation,Computational Intelligence,2010:1121-1128.
[13]Kai Gao,Hua Xu,Jiushuo Wang.A rule-based approach to emotion cause detection for Chinese micro-blogs[J].Expert Systems with Applications,2015,42(9):4517-4528.
[14]A Neviarouskaya,M Aono.Extracting causes of emotions from text[C]//Proceedings of International Joint Conference on Natural Language Processing,2013:932-936.
[15]Weiyuan Li,Hua Xu.Text-based emotion classification using emotion cause extraction[J].Expert Systems with Applications,2014,41(4):1742-1749.
[16]袁丽.基于文本的情绪自动归因方法研究[D].哈尔滨:哈尔滨工业大学硕士学位论文,2014.
[17]Lin Gui,Li Yuan,RuifengXu,Bin Liu,et al.Emotion cause detection with linguistic construction in chinese weibo text[J].Communications in Computer & Information Science,2014,496(s 3-4):457-464.
[18]李逸薇,李寿山,黄居仁,等.基于序列标注模型的情绪原因识别方法[J].中文信息学报,2013,27(5):93-99.
[19]Ghazi D,Inkpen D,Szpakowicz S.Detecting emotion stimuli in emotion-bearing sentences[M]//Computational Linguistics and Intelligent Text Processing.Springer International Publishing,2015,152-165.
[20]Gaoyan Ou,Wei Chen,Tengjiao Wang,et al.Exploiting community emotion for microblog event detection[C]//Proceedings of Conference on Empirical Methods in Natural Language Processing,2014:1159-1168.
[21]Lin Gui,Dongyin Wu,Ruifeng Xu,et al.Event-driven emotion cause extraction with corpus construction[C]//Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing,2016:1639-1649.
[22]Irene Russo,Tommaso Caselli,Francesco Rubino,et al.EMO-cause:An easy-adaptable approach to emotion cause contexts[C]//Proceedings of the 2nd Workshop on Computational Approaches to Subjectivity and Sentiment Analysis,2011:153-160.
[23]Ruifeng Xu,Chengtian Zou,Yanzhen Zheng,et al.A new emotion dictionary based on the distinguish of emotion expression and emotion cognition[J].Journal of Chinese Information Processing,2013,27(6):82-90.
[24]Y Chen,S Y M Lee,S Li,et al.Emotion cause detection with linguistic constructions[C]//Proceedings of International Conference on Computational Linguistics,2010:179-187.
慕永利(1990—),硕士研究生,主要研究领域为文本情感分析。E-mail:1203962063@qq.com
李旸(1990—),博士研究生,主要研究领域为文本情感分析。E-mail:770624917@qq.com
王素格(1964—),博士,教授,主要研究领域为自然语言处理。E-mail:wsg@sxu.edu.cn