APP下载

基于上下文和位置交互协同注意力的文本情绪原因识别

2022-04-12刘德喜

中文信息学报 2022年2期
关键词:语义注意力神经网络

徐 秀,刘德喜

(江西财经大学 信息管理学院,江西 南昌 330013)

0 引言

文本情绪分析是自然语言处理领域的重要研究方向之一,它主要研究文本所蕴含的情绪及与情绪相关的深层信息。文本情绪分析的研究大多集中在情绪类别和情绪对象识别等方面,在实际应用中,若忽略更加深入和丰富的情绪信息,将影响分析的效果。挖掘文本中造成情绪的原因,可以为舆情监控、经济预测、公众意见挖掘、产品设计等应用提供可用信息,还可以帮助有关部门及时且有针对性地介入控制,有利于重大政策的决策。文本情绪原因识别(emotion cause detection,ECD)旨在发现文本中某一情绪表达背后的潜在原因。

传统基于规则的方法[1-4]耗费人工且规则构建复杂,而基于统计与机器学习的方法[5-10]在特征抽取上存在主观性过强的问题。近年来,深度学习方法[11-25]在文本情绪原因识别任务上取得了较好的效果,但现有工作中仍存在一些不足。例如,Li等人[13]提出了一种基于协同注意力神经网络的情绪原因识别方法(Co-Attention Neural Network,CANN),借助协同注意力机制来捕获每个候选原因子句和情绪子句之间的交互关系,但忽略了文本中候选原因子句的上下文语义信息。考虑子句的相对位置信息,Xia等人[16]将相对位置嵌入向量连接到子句的表示中,这种方法对相对位置信息的利用较弱,对候选原因子句的分类影响较小,且增加了特征维数,可能会导致过拟合。

为了解决语义和相对位置信息利用不充分的问题,本文在CANN方法的基础上提出一种基于上下文和位置交互的协同注意力神经网络模型(CPC-ANN),该模型先将相对位置信息编码到子句的每个词向量中,利用双向长短时记忆网络(Bi-Directional Long Short-Term Memory,Bi-LSTM)、Transformer网络来捕捉子句的语义信息,以帮助产生更好的子句表示。然后,引入上下文子句信息,采用注意力机制捕获候选原因子句和情绪子句之间的语义关系。最后,利用卷积神经网络(Convolutional Neural Network,CNN)对候选原因子句进行分类(识别)。

本文的主要贡献包括:

(1) 提出了一种新的CPC-ANN模型,该模型通过Bi-LSTM和Transformer来提取更深层次的子句语义信息。

(2) 将子句的相对位置信息通过相加的方式编码到词向量中,以增强子句相对位置信息的影响。

(3) 在候选原因子句中融合其上下文子句,以提供更多的语义信息。

(4) 在一个公共基准情绪原因数据集上验证了CPC-ANN模型的效果。本文还通过消融实验,证实了不同模块的有效性。

本文的组织结构如下: 引言部分介绍研究背景;第1节总结相关研究现状;第2节介绍CPC-ANN模型及其各层的搭建与作用;第3节介绍实验结果和案例;最后,对全文进行总结并提出下一步的工作。

1 相关工作

文本情绪原因分析是从情绪出发,探索产生情绪背后的原因,属于情绪的深层次分析。在早期,很多学者采用基于规则的方法来研究文本情绪原因识别问题。Lee等人[1]首次给出了情绪原因识别的正式定义,并构建了基于人工标注方案的中文情绪原因注释语料库,同时归纳了提取情绪原因的语言学线索词。基于该语料库,Lee等人[2]设计了基于语言学线索构建的两套特征,利用系统自动提取特征和手动提取特征相结合的方式来检测情绪原因。此外,许多学者将基于规则的方法扩展到微博等非正式文本。Li等人[3]提出了一种识别微博情绪原因的方法,通过引入社会学等其他领域的知识和理论来抽取情绪原因。Gao等人[4]以情绪认知模型为基础提出了一个基于规则的情绪原因认知模型,从事件的主体、客体和动因来识别微博文本中情绪的原因。

为了解决人工耗费大的问题,一些学者使用基于统计与机器学习的方法。Russo等人[5]采用聚类的方法,通过基于相关语言模式和常识库来识别情绪原因,并在其标注的意大利语语料库上进行实验。Xu等人[6]提出了一种基于学习排序的情绪原因识别方法,通过提取大量情绪依赖特征和情绪独立特征,对候选原因子句排序。一些学者将情绪原因识别看作分类任务,即判别文本中的每一个子句是否是情绪原因。Chen等人[7]将文本情绪原因识别视为一个多标签分类问题,基于最大熵分类构建多标签情绪原因识别模型,该模型不仅可以识别多个情绪原因,还可以捕获远距离句子信息。Gui等人[8]则提出了一种基于多核支持向量机(support vector machines,SVM)分类模型,借助树结构表示事件,来确定事件是否表达了情绪原因。

虽然分类模型的构建相对容易,并且取得了较好的识别效果,但是其难以捕捉文本中子句之间的关系。为解决此问题,一些学者将情绪原因识别问题看作序列标注问题。其中,李逸薇等人[9]利用条件随机场(Conditional Random Field,CRF)来识别情绪原因,不仅能很好地融合多种统计特征,还能够充分考虑文本上下文之间的特征信息。Ghazi等人[10]则利用CRF来预测子句级别的情绪原因,并通过FrameNet构建了包含情绪和情绪原因的英文数据集。

受到深度学习方法的启发,神经网络模型和注意力机制在情绪原因识别任务中得到了广泛的应用。慕永利等人[11]采用集成的CNN模型,来判别一个子句是否包含情绪原因信息。考虑子句与情绪词的关系,Gui等人[12]采用深度记忆网络的方法,将情绪原因提取作为一项问答任务,来识别文本情绪原因。Li等人[13]提出了协同注意力神经网络,通过注意力机制捕捉子句与情绪词的关系,并进一步利用CNN来进行情绪原因识别。考虑到情绪词周围的语境可以提供重要线索,Li等人[14]提出了一种基于多注意力神经网络的方法,该方法结合情绪词与情绪语境,以及情绪子句与候选原因子句之间的相互作用,来进行情绪原因的提取。

以上工作[11-14]大多将情绪原因识别任务视为对多个子句独立的分类任务,这导致一篇文本中被识别为情绪原因的子句可能不存在或者存在多个。为解决此问题,Ding等人[15]提出了一个基于神经网络架构的模型,将情绪原因识别任务从一个独立预测问题转化为包含动态全局标签信息的排序预测问题。Xia等人[16]提出了一个基于循环神经网络(Recurrent Neural Networks,RNN)和Transformer的层次结构网络,通过建模文本中多个子句之间的关系,并结合编码相对位置和全局预测信息,在一个联合框架中对多个子句进行同步分类。巫继鹏等人[17]提出了一种结合规则蒸馏和层级注意力网络的方法,采用残差结构的层级注意力网络和基于对抗学习的知识蒸馏框架,实现结合深度神经网络和语言学规则的情感原因发现。

除此之外,文本的语篇结构信息、文本中多个子句之间的语义关系也能为情绪原因识别提供重要线索。Yu等人[18]提出了一种基于多级层次网络的子句选择方法,将词的位置、不同层次的语义信息以及多个子句之间的语义关系都考虑在内,进行情绪原因的提取。Fan等人[19]结合文本语篇结构信息、先验知识(情绪词、相对位置信息等)的规则,提出了一个正则化的层次神经网络,来进行情绪原因分析。Liang等人[20]在Bi-LSTM-CRF模型上,通过两种注意力机制来编码情绪表达与候选子句、相对位置与候选子句之间的相互影响。Diao等人[21-22]提出了一种多粒度双向注意流网络,利用双向注意流机制获得情感词与上下文之间的潜在语义信息,以提高情绪原因识别的性能。此外,他们还提出了一种基于增强表示的注意力卷积上下文网络,通过增强表征和注意力机制来提取深层情绪语义信息,同时引入层次上下文信息,从而更好地识别情绪原因。Hu等人[23]提出一种基于子句间依存关系的图卷积网络,通过构造一个在子句级别编码依赖的图,来融合语义和结构信息,有效地进行情绪原因分析。

为了增强原因和情绪之间的隐含联系,Xia等人[24]将情绪原因提取任务扩展为情绪-原因对提取任务,即通过情绪子句和原因子句的相互学习,提取出文本中的情绪-原因对。Ding等人[25-26]则提出了一个2D一体化方法,将文本中的所有子句都看作情绪子句和原因子句来进行两两组合配对,以提高情绪原因识别性能。

2 CPC-ANN模型

文本情绪原因识别的主要目的是从一段包含情绪的文本中识别情绪产生的原因信息,示例如表1所示。

一般地,待识别的文本中只标注一个情绪子句和至少一个与之对应的情绪原因子句。文本情绪原因识别任务即: 给定文本中的情绪子句C0,从C-3到C+2六个子句中识别出情绪原因子句C-1。

基于上下文和位置交互协同注意力神经网络模型(CPC-ANN)如图1所示。CPC-ANN模型主要分为五层: 相对位置嵌入层、Bi-LSTM层、Transformer层、注意力层以及CNN输出层。下面分别对模型的五个模块进行介绍。

2.1 相对位置嵌入层

在CPC-ANN模型中,相对位置被定义为当前子句和情绪子句之间的相对距离。例如,情绪子句左边最近子句的相对位置是-1,情绪子句右边最近子句的相对位置是+1,等等。

给定一个包含情绪和情绪原因的文本D={c1,c2,…,ck}, 该文本由k个子句组成,假设文本中包含唯一一个情绪子句ce和至少一个对应的情绪原因子句ca,子句ci={w1,w2,…,wn}由n个词组成。对于子句ci,1≤i≤k, 首 先通 过Word2Vec将每个单词wt,1≤t≤n, 映射到一个d维向量ut∈Rd, 并计算出子句ci相对于情绪子句ce的相对位置pi。

为了增强相对位置信息的作用,将子句的相对位置信息通过相加的方式嵌入到子句的每个词向量中,其计算方法如式(1)所示。

因此,子句ci可以表示为一个特征映射Xi={x1,x2,…,xn}。 特别地,将情绪子句ce和情绪候选原因子句ca的特征映射分别记为Xe={x1e,x2e,…,xne}和Xa={x1a,x2a,…,xna}。

对训练语料中的原始输入序列长度进行统计,将所有输入序列用占位符补充至最大长度,将统一了长度的输入序列输入到模型中。

2.2 Bi-LSTM层

CPC-ANN模型用Bi-LSTM编码子句中词的上下文信息。将子句ci的向量表示Xi输入到Bi-LSTM中获得两个方向的隐藏层输出信息,如式(2)、式(3)所示。

其中,xt为子句Xi的第t个词wt的嵌入向量,通过Bi-LSTM得到该词的隐变量表示如式(4)所示。

最后,将子句ci中所有词的隐变量表示拼接起来,得到ci的上下文嵌入矩阵Hi∈Rn×2h, 其中,h为隐藏单元数。特别地,情绪子句Xe和候选原因子句Xa通过Bi-LSTM编码表示记为He和Ha。

2.3 Transformer层

为挖掘子句内词语之间的关系,获得更深层的文本语义信息,CPC-ANN模型采用Transformer对子句进行编码。Transformer主要包括多头自注意力机制和前馈神经网络。

多头自注意力机制的目的是得出句子中其余部分对所关注部分的影响,其计算过程可以表示为将查询Q、关键字K和值V映射到输出上,表示如式(5)~式(7)所示。

其中,WQ、WK和WV分别是查询、关键字和值的可学习权值矩阵。

然后,计算出子句的注意力表示Zi,如式(8)、式(9)所示。

在注意力子层之后是一个前馈神经网络子层,其计算如式(11)所示。

多头自注意力层和前馈神经网络层都使用残差连接,然后在输出处使用归一化。

最后,得到子句向量Hi的输出向量oi。特别地,情绪子句表示为oe,候选原因子句表示为oa。

2.4 注意力层

CPC-ANN模型借助注意力机制捕获情绪子句与候选原因子句之间的语义关系,为子句的词序列语义特征分配不同的权重。

首先,将上下文语义信息融入到候选原因子句中,如式(13)所示。

其中,of、ob是候选原因子句上下文子句的向量表示。

如果候选原因子句的上下文子句为空,即当前候选原因子句为文本的第一个子句或最后一个子句,则只融入其下文子句或上文子句,如式(14)所示。

其次,构造注意力矩阵A∈Rn×n来测量候选原因子句和情绪子句之间的语义关系,其计算如式(15)所示。

其中,score为余弦距离,Ai,j表示候选原因子句o的第i个词向量oi与情绪子句oe的第j个词向量oje之间的语义关系强度。

然后,将注意力矩阵用于子句的原始向量表示,获得两个子句的最后的输出,如式(16)、式(17)所示。

2.5 CNN输出层

CPC-ANN模型利用CNN从子句中获取局部上下文特征,经过多次卷积运算,将这些局部特征形成一个全局特征向量。将两个子句序列化输出Ca和Ce送入CNN层,应用三个长度分别为2、3、4的卷积滤波器和最大池化操作, 以选 择信息最丰富的特性。将3个卷积操作得到的输出结果进行拼接,其候选原因子句Ca的计算如式(18)~式(20)所示。

其中,cnn2,3,4为卷积操作,poolmax为最大池化操作,WC为全连接层的权重。

同理,情绪子句最后通过CNN层生成特征向量Oe,将它们连接起来通过一层全连接层并送入softmax层来进行分类。最后,模型的训练过程采用反向传播方法进行参数调整,损失函数采用交叉熵损失函数,计算方法如式(21)、式(22)所示。

3 实验与结果分析

3.1 数据集和实验设置

CPC-ANN模型是在Gui等人[8]标注的中文情绪原因数据集上进行的实验,数据集的统计信息如表2所示。

表2 中文情绪原因语料库的统计信息

模型的参数设置: 词向量的维度d设为30,文本子句最大字数n为42。实验过程中,随机将数据集的90%作为训练集,10%作为测试集,重复实验15次,求取各个衡量指标的平均值。模型超参数设置如表3所示。

实验评估使用精确率P(Precision)、召回率R(Recall)以及F1值。其计算如式(23)~式(25)所示。

表3 模型超参数设置

其中,Ccauses是模型预测的正例与真实正例重叠部分的数量,Pcauses是模型预测为正例的数量,Acauses为样本中真实正例的数量。

3.2 对比模型

为了验证CPC-ANN模型的有效性,将CPC-ANN模型与以下几组方法进行比较:

(1) 基于规则和常识的方法:

① 基于规则的方法(RB)[1]。

② 基于常识的方法(CB)[5]。

(2) 基于机器学习方法:

③ Multi-kernel[8]。

(3) 基于深度神经网络的方法:

④ ConvMS-Memnet[12]: 卷积多插槽深度记忆网络模型。

⑤ CANN[13]: 协同注意力神经网络模型。

⑥ HCS[18]: 多层次神经网络模型。

⑦ RTHN[16]: 基于RNN和Transformer的层次神经网络模型。

⑧ MANN[14]: 基于多注意力的神经网络模型。

⑨ RHNN[19]: 基于知识正则化方法的层次神经网络模型,该方法为当前已知最佳性能方法。

⑩ CPC-ANN: 本文提出的基于上下文及位置交互的协同注意力模型。

3.3 实验结果分析

各模型的实验结果如表4所示。

表4 CPC-ANN模型实验结果

由表4可以看出,总体上,CPC-ANN模型在各个评测指标上都显著优于其他模型,P、R和F1值分别为0.845 5、0.796 2和0.820 1,其中,F1值比目前最先进的方法RHNN提升了2.87%。

在基于规则和常识的方法中,RB精确率较高,而CB的召回率较高。主要原因是该类方法主要依赖于规则和线索词来识别情绪原因,规则准确但覆盖受限,常识词典有更高的覆盖但过滤不够精准,而RB+CB则利用了二者的互补关系。

在基于机器学习方法中,Multi-kernel通过句法结构来表示引起情绪的事件,提升了模型的性能。然而该方法依赖于昂贵的人工成本,缺乏对不同数据集的可扩展性。

在基于深度神经网络方法中,CANN和HCS在数据集上的性能相近,均比ConvMS-Memne的F1值提升了3.1%,其中CANN能够捕捉情绪子句与每个候选原因子句之间的相互关系,HCS则通过学习不同层次的语义信息以及多个子句之间的语义关系,来进行情绪原因的提取。RTHN比HCS在F1值上提升了4.08%,说明考虑子句的相对位置信息以及全局标签信息有利于情绪原因的识别。MANN模型比CANN在F1值上提升了4.40%,说明多注意力机制的有效性。而RHNN在数据集上有更好的表现,是因为其可以捕捉到更多的情绪线索。

本文所提出的CPC-ANN模型进一步提高情绪原因识别的性能。具体来说,与MANN相比,CPC-ANN在F1值上提升了4.95%,这表明Transformer在提取子句语义特征上具有优越性,子句的相对位置信息对情绪原因识别有辅助作用。与RHNN相比,CPC-ANN在F1值上提升了2.87%,原因是CPC-ANN融合了候选原因子句的上下文语义信息,可以使注意力机制在捕捉每个候选原因子句和情绪子句之间的语义关系时获得更多的语义信息。

3.4 消融实验

为了验证CPC-ANN模型各个模块的作用,本节对其进行消融实验。以CPC-ANN模型为基准,在模型参数不变的前提下,分别减少相对位置嵌入层中子句的相对位置信息(Relative Position,-RP)、注意力层中的原因子句上下文语义信息(Contextual Information,-CI)以及Transformer层(-TR)。其实验结果如表5所示。

表5 消融实验结果

从表5可以看出,去掉相应模块后,CPC-ANN模型的效果都有不同程度的下降,从而验证了各个模块的有效性。实验结果显示,子句的相对位置信息(-RP)对模型的影响最大,去掉RP后,CPC-ANN的F1值下降了6%。

除相对位置信息外,去掉候选原因子句的上下文语义信息(-CI),模型的F1值下降了1.74%,这表明上下文信息是理解情绪原因的重要辅助线索。最后Transformer层对模型的性能有一定的影响,这表明相对使用Bi-LSTM提取语义,Transformer在提取文本语义信息上有优越性。

3.5 位置平衡数据集上的实验

Gui等人[8]标注的中文情绪原因数据集中,情绪原因相对位置严重不平衡,如表6所示。对数据的统计显示,相对位置为“0”或“-1”的原因子句很普遍,占比高达78%。这种位置不平衡可能是导致深度神经网络模型表现出高性能的重要原因[26],或者说,模型的优异表现可能并不是建立在对语义充分理解的基础上,而是充分利用了位置信息。

表6 原因子句相对位置分布情况 (单位:%)

为了验证CPC-ANN模型在学习深层语义信息方面的能力,本文构建一个具有平衡位置分布的数据集。该数据集通过随机选择子句位置为“-1”“0”“-2”的子句,将其比例降低到与相对位置为“1”的子句对等的比例,同时保持其他相对位置的子句数量不变,从而构建一个新的具有792个实例的相对位置平衡数据集,其位置分布如表6所示。各模型在位置平衡数据集上的识别结果如表7所示。

表7 位置平衡数据集上情绪原因识别结果

由表7可以看出,在使用了位置平衡数据集后,CPC-ANN模型的F1值从0.820 1下降到0.694 8,F1值下降比例为15.27%,小于CANN在F1值上的下降比例,表明CPC-ANN能够获得更多的语义信息来识别情绪原因。RTHN模型与位置信息相关性更强,其性能受位置偏差影响最大,下降比例达到24.37%。RHNN由于引入了基于位置和情绪的知识正则化约束项,当位置不再起重要作用时,模型倾向于将更高的概率分配给那些与情感词有关的子句,增强了学习特征与预测之间的因果联系,因此在位置平衡数据上的F1值下降比例最小。与RHNN相比,CPC-ANN下降比例高于RHNN,但总体上的F1值仍优于RHNN,说明在语义信息的利用上,CPC-ANN也较RHNN更有优势。

3.6 案例分析

本节通过一些案例,来分析CPC-ANN模型的优势与不足。

3.6.1 正确示例分析

CPC-ANN模型是对CANN模型的改进。除此之外,RHNN模型是当前已知性能最佳的模型。因此本节通过案例对比这三种模型。

(1)各模型对示例1的识别结果。如表8所示,CANN模型识别错误,而RHNN模型和CPC-ANN模型识别正确。其中,CPC-ANN模型融入了候选原因子句相对情绪子句的位置信息,RHNN模型则引入了基于位置的知识正则化约束项。这个示例证明了子句的相对位置信息能为情绪原因识别提供有效线索。

表8 各模型对示例1的识别结果

(2)各模型对示例2的识别结果。如表9所示,CANN模型和RHNN都识别错误,而CPC-ANN模型识别正确。其中,CPC-ANN模型采用了Bi-LSTM以及Transformer来提取子句特征,同时融入了候选原因子句的上下文信息,使模型能更好地学习子句的深层语义信息来识别情绪原因。

表9 各模型对示例2的识别结果

3.6.2 错误示例分析

CPC-ANN模型虽然取得了不错的实验效果,但有些情绪原因子句并不能很好地被识别。其错误的主要原因如下:

(1) 真实的情绪原因子句太短,使得可利用的语义信息太少,不能很好地建模候选原因子句与情绪子句之间的关系。如表10所示,示例3中,CPC-ANN模型对“-1”子句语义建模效果不好,导致CPC-ANN模型识别错误。

表10 CPC-ANN模型对示例3的识别结果

续表

(2) 在模型训练的过程中,位置信息被过多地融入模型中,使得模型对距离情绪子句较远的情绪原因子句有较低的识别敏感度。如表11所示,示例4中,“-5”位置子句相对于情绪子句“0”距离较远,导致CPC-ANN模型识别错误。

表11 CPC-ANN模型对示例4的识别结果

4 总结展望

本文提出上下文及位置交互的协同注意力模型CPC-ANN,利用Transformer得到深层语义的子句表示,增强子句的相对位置信息,引入候选原因子句上下文信息,使得模型对于文本情绪原因特征的学习更加深入,大幅提高了情绪原因识别的准确性。实验结果表明,本文方法在公开的数据集上达到了最先进的性能,案例分析也证实了充分利用子句相对位置信息和上下文信息的有效性。

在未来的研究中,可以从以下几个方面对模型进行改进。首先,可以扩充中文情绪原因的数据集,解决标注语料库情绪原因的位置分布不平衡的问题。其次,可以考虑文本的语义结构关系,探索如何将篇章信息融入文本情绪原因识别任务中,以进一步提高情绪原因识别的性能。

猜你喜欢

语义注意力神经网络
真实场景水下语义分割方法及数据集
基于递归模糊神经网络的风电平滑控制策略
让注意力“飞”回来
如何培养一年级学生的注意力
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析
A Beautiful Way Of Looking At Things
“吃+NP”的语义生成机制研究
情感形容词‘うっとうしい’、‘わずらわしい’、‘めんどうくさい’的语义分析
基于支持向量机回归和RBF神经网络的PID整定