一种基于事件提取和多核支持向量机的用于情绪原因检测的集成学习方法

TSINGHUA SCIENCE AND TECHNOLOGY

ISSNll1007-0214ll08/15llpp646-659 Volume 22, Number 6, December 2017

Ruifeng Xu, Jiannan Hu, Qin Lu, Dongyin Wu, and Lin Gui⇤

 

摘要:本文中,我们提出了一种新的具有挑战性的情绪分析任务,即情绪原因提取。在这个任务中,我们关注情绪的原因,也就是引发情绪的因素或刺激,而不是常规的情绪分类或情绪成分提取。由于此任务没有开源的数据集,因此我们设计并注释了一个遵循W3C Emotion Markup Language标准的情绪原因数据集。然后,我们通过使用事件提取框架来呈现情绪原因检测方法,其中使用了基于树的结构来表示事件。由于事件在训练数据中分布不均衡,我们提出了一种基于欠采样的装袋 (Bagging) 算法来解决这个问题。即使使用有限的训练集,这种以多核支持向量机(SVM)为基训练器的装袋算法仍然能提取出有效的特征用于分析。评分显示我们的方法达到的F-值比最先进的方法高出7.04%。

 

关键字: 情绪原因检测; 事件提取; 多核支持向量机; 装袋(Bagging)算法

 

1.  简介

近年来,随着互联网的快速发展,人们很容易随时随地分享经验和情绪。由于情绪信息的迅速膨胀,如何分析个人情绪成为自然语言处理(NLP)面临的新挑战。最近,情绪分析的研究通常侧重于情绪分类,包括对文本作者表达的情绪的检测,预测读者的情绪,等等。情绪分析中也有一些信息提取任务,比如提取感情的触发原因、用户建模,以及不平衡数据处理等等。还有一些其他研究集中在推文或博客中的情绪以及情绪词汇构建的关联学习。 然而,这些作品都集中在情绪表达这一层面上。 事实上,我们有时更关心产生情绪的刺激或原因。 例如,作为读者,当我们阅读文本并看到像激动人心这样的情绪关键词时,我们更愿意知道激动人心这个词的原因,而不是这种情绪的范畴。 再比如,制造商想知道人们为什么喜欢或讨厌某种产品,因为顾客产生情绪的原因相比起这种情绪本身而言,对产品的功能更有用。 白宫也更想知道产生让我们走上街头这种情绪的原因,而不是大家有什么具体的情绪。

  直到现在,情绪原因检测依然存在两个主要的挑战。一是开源资料的匮乏严重限制了研究者的研究工作。由于研究者们难以承担构建大规模语料库所花费的昂贵费用,只能使用较小的数据集,因此许多机器学习算法难以在这个领域中得到应用。另外一个挑战是目前在情绪原因检测领域内缺少对事件的正式定义,这导致了无约束的度量。

  举例1 当日,跟中新网记者谈起建言献策的初衷,白跃金陷入回忆,并略显激动。

  此例中的情绪是指激动,引发情绪的原因是陷入回忆。我们提出的任务就是检测文本中引发情绪的原因。此时关注的度量是在分句层面上。这意味着我们需要去分辨哪个分句中包含了情绪的原因。在这个例子中,引发情绪的原因是第三个分句白金跃陷入回忆

  在本文中,我们首次构建并注释了一个情绪原因提取数据库并公之于众,为了建立研究的基本条件,我们对事件进行了正式的定义。之后,我们提出了一种情绪原因提取的新手段。基本思想是通过对包含情绪的文本上下文进行独立的解析并提取出事件,之后,使用一个七元祖的表达结构来表示相邻的事件。在事件结构化表示的基础上,使用基于多项式内核和树内核的多核SVM算法来判断一个事件是不是属于情绪原因。这种方法能在有限的数据集中检测及乎所有可能的词汇组合并得到对情绪分析有价值的特征。即使是在数据不平衡的情况下,我们提出了一种集成学习方法来解决这个问题。现有的技术手段要么是人工制定规则集要么是根据常识来拓展数据,与这些方法相比,我们提出的基于机器学习的方法依然达到了国家最高标准。我们的工作同时为资源和算法的发展提供了帮助。

 

本文的其他部分结构如下。第二节回顾了情绪分析和情绪原因提取的相关工作;第三节表述了情绪原因提取语料库的构建过程;第四节展示了事件提取的方法;第五节展示了一种事件驱动的情绪原因提取方法以及评估和讨论的细节。第六节总结了本文的工作以及对未来发展方向的展望。

 

2 国内外相关研究工作

情绪分析是NLP一个很重要的课题和应用。然而,很多研究者们更关注与情绪的分类而不是为什么有这种情绪。在本节中,我们会介绍情绪分析和情绪原因提取的相关工作。

 

第一个问题是定义情绪的分类。研究者们提出了一个主要情绪的列表。在本研究中,我们采取了 Ekman 的情绪分析规则,这是一种包含六种主要情绪的规则——快乐、悲伤、恐惧、生气、厌恶和惊喜,也就是W3C Emotion Markup Language著名的“Big 6”规则。这种规则在中国人的情绪分析中被广泛应用。

 

第二个问题是怎么展示情绪分类和情绪信息提取。Beck针对情绪分类提出了一种基于高斯进程的多任务处理方法。Gui 用一种由粗糙到精细到方法来分析中文博客中的情绪。Gao 提出了一种关联模型来联合训练一种极性分类器和情绪分类器。 Change 用一种语言的模板来预测阅读者的情绪。DasBandyopadyay用一种无监督的方法来提取孟加拉人的博客中的情绪触发器。还有一些其他研究集中在推文或博客中的情绪以及情绪词汇构建的关联学习。同时,情绪分析在社交网络中也扮演着重要的角色。然而,这些研究都只关注于情绪的表达而不是引发情绪的原因。

Lee 首先提出了情绪原因提取的工作。他们从Academia Sinica Balanced Chinese Corpus 手动注释了一个小规模的语料库,在此基础上,他们尝试提取出一种情绪变化到另一种情绪的关系以及触发的原因。然后他们将之与语义学上的线索联系起来。在这些研究的基础上, Chen 提出了一种基于模版匹配的情绪原因提取方法。另外,他们还有一些其他的研究来拓展这种基于规则的提取中文微博中的信息文本的方法。GuiLiXu使用这种方法来从微博登文本中提取情绪的原因。Gao OCC模型的基础上提出了一种新的方法。与这种基于规则的方法不同的是,GhaziCRF用来标记这些情绪文字中的语义学上的角色。但是这种方法需要情绪原因和他们对应的关键字出现于同一句话中。

对于情绪原因提取提取,从上面的陈述中,我们知道上面使用的资源都很小,且不能公开访问。 大多数方法都基于规则提取。 由于缺乏这些小规模数据集中的信息,机器学习方法以及深度学习方法在这一领域的应用并不活跃。 而且,现有的方法缺乏理解和概括情绪事件本质的能力。

构建语料库

在这一节中,我们首先描述情绪表达中的语言现象,也正是它激励了我们开发注释数据集。 然后分别介绍注释方案的细节和数据集的构造。

3.1 情绪原因的语言表达

情绪原因在情绪表达中起着重要作用。 情绪原因是一种对情绪的刺激。 在书面文本中,情绪的原因通常表现在情绪关键词的上下文中。 因此,在注释中找到合适的情绪关键词背景是识别原因的先决条件。 找出情绪原因与情情绪关键词之间的关系是提取原因的关键。

其他重要特征是连词和介词的存在。 这些提示词表示子句之间的话语信息。 为了充分利用话语信息,基本分析单元应该是在子句上而非句子。。

文本的体裁也很重要。 研究表明,在非正式文本中,情绪表达可以具有重叠的情绪原因和情绪目标[28]。 因此,有些原因在非正式文本中被简单标注为目标。 并且,一些研究甚至将原因提取与目标识别结合起来以提高性能。 但是我们关注的是情绪原因的识别。 所以,我们使用正式的新闻文本来避免混淆。 总之,我们遵循三个基本原则:(1)保持情绪关键词的整体情境; 2)基本处理单元处于子句级别; 和(3)使用正式文本。

3.2 收集和注释

我们首先用从新浪新闻中获取的2万篇2013-2015年间关于中国城市的新闻文章为原始语料库。根据10259个中国主要情绪关键词(简称关键词)列表,我们从原始数据中提取了15687个实例。在这里,我们将语气关键字的存在称为语料库中的一个实例。对于每个匹配关键字,我们提取三个前面的子句和三个后面的子句作为实例的上下文。如果一个句子在每个方向上有3个以上的从句,上下文将包括句子的其余所有部分以提供完整的上下文。为了简单起见,我们省略了跨段落上下文。

需要注意的是,由于可能的原因不同,关键字的存在并不一定表达情绪信息,例如负极性和感觉模糊性。例如,幸福/ happiness”是正极性的情绪关键词。它也可以是歌曲的名称。此外,情绪关键词的存在并不一定能保证情绪原因的存在。

删除这些不相关的实例后,仍然有2105个实例。 对于每个情感实例,两个注释者手动注释情绪类别和W3C情绪标记语言格式的原因。 这里有两个例子。 示例2显示了语料库中带注释的情感句子,以简体中文显示,后面跟着英文翻译。 为了节省空间,我们删除了xml格式。 基本分析单位是一个子句。 情绪原因被标记为<cause>,并且情绪关键字被标记为<keywords>。另外,表情类型、POS、位置以及注释长度都根据Emotion Markup Language 规范详细注释了。

 

示例2.

当日,跟中新网记者谈起建言献策的初衷,<cause POS=“v” Dis=“-1” >白跃金陷入回忆,并略显< keywords type=“happiness” >激动</keywords>。

如上,我们构造的语料库的格式与示例2中的类似。这里,示例2仅包含一个原因。 然而,一种情绪会导致多于一种相应的情绪原因。 示例3显示了针对一个情感关键字具有两个相关原因的示例。 在我们的数据集中,只有59个实例有两个或多个原因。

 

示例3. 他们要顾及龙龙养父的感受。李涛夫妇告诉记者,<cause POS = “v” Dis = “-2”> 知道龙龙现在还活着</cause >,还<cause POS = ‘v’ Dis=’-1’> 这么有出息</cause>, 真的是非常<keywords type=’happiness’>高兴</keywords>,这件事是天大的喜事和好事。

3.3 数据集详情以及注释

在我们的数据集中,每个实例只有一个问题,并且至少有一个相应的原因。 我们确保同一事件中的问题及其原因是相关的。 表1列出了实例,子句和情绪原因的数量。

从表1可以看出,大多数情况下只有一个情绪原因(97.2%),其中只有2.6%有两个情绪原因,0.2%有三个情绪原因。

表2中几乎一半的情绪表现为“幸福”和“悲伤”。

原因位置的分布如表3所示,从中我们可以看到,78%的情绪原因和情绪在本文中的位置关系处于子句水平。

显然,位置是情绪因素提取的重要特征。 这激励我们考虑基于距离的特征来提取情绪因素。表4显示了情绪原因的句子类型。 动词和动词短语形成了所有原因事件中的93%。 因此,它们是我们学习算法的重点。

 

 

在注释过程中,两个注释器独立工作。 在注释原因中区分子句级别和句子级别很重要。 子句级别标注包含情绪原因的子句。 这句话是为了确定情感原因的边界。 在条款层面,如果两名注释者彼此不同意,则第三名注释员担任仲裁员。 在句子级别,他们将在子句级别具有相同的注释。 子句级注释的kappa值是0.9287,这意味着这种类型的注释非常可靠。

 

4. 一种情绪原因检测的集成学习方法

 

在本文中,我们使用基于多核SVM和事件提取框架来提取情绪原因。 我们首先根据依赖解析结果提取事件。 然后,我们用树形格式来表示事件。 事件树(ET)是一种树结构,它情感原因将标记为正和负。 由于负样本的规模远大于正样本的大小,因此我们采用欠采样方法和分类器的装袋方法来确保正负样本的平衡。 然后,我们使用这个分类器来获得每个ET的情感概率,以产生候选ET的排名列表。 排名最高的ET将被标记为当前实例的ET树。 这种方法的框架如图1所示。

 

4.1 事件提取方法

由于我们的情绪原因检测方法是基于事件提取的,所以事件的结构成为我们模型的关键点。 在本节中,我们将介绍事件提取的方法。

4.1.1 事件的定义

如上所述,动词和动词短语可以构建几乎所有的情感原因,所以我们把情感原因看成是一个基于动词的事件。其基本思想是使用一种事件表示方法从原始数据中捕获足够的特征以进行情绪原因识别。 因此,首先正式定义事件很重要。

            例如,RadinskyDavidovich AI中事件的定义为灵感,将事件的形式定义为行动,演员,对象,乐器,地点和时间。 在我们的研究中,我们使用了类似的定义。 事实上,在情绪原因提取中,事件的组成部分更简单。 我们只对动作,演员和对象感兴趣(按照AI的传统,分别将它们表示为PO1O2)。 由于中文是一种SVO语言,演员是主语,动作就是动词。 主语和宾语可以有属性,谓语可以有副词和补语。 这些组件也可能有助于情绪原因提取。 总而言之,我们正式将情绪事件定义为七元组:

这里,ATTO1O1的属性,ATTO2O2的属性。 Adv是一个副词,Cpl是一个补充。 请注意,在某些情况下,句法成分可能是隐含的,在这种情况下,可以用NIL值填充相应的属性。

4.1.2 事件提取方法

为了获得上述结构,我们首先执行分词,然后使用子句级别的依赖分析来提取任意两个相关词之间的所有可能关系。 依赖分析结果具有图2和表5所示的形式。

基于依赖解析结果,我们可以使用以下方法从原始数据中提取事件元组。

由于中文是一种SVO语言,中文的三个基本组成部分是S(主语),V(动词)和O(宾语),在我们的论文中分别表示事件定义中的actoractionobject

现在,我们开始构造事件元组。首先,我们在解析结果中找到“SBV”(主谓关系)字符串来获取主题。

其次,我们在解析结果中搜索下面的“VOB”(直接宾语),“IOB”(间接宾语)或“FOB”(前置宾语)以获得对象。然后,我们可以采取类似的方式。现在,我们有两种类型的前期事件:动词主语模式和动词宾语模式。由于这两种模式之间有重叠,因此有必要将模式与相同的动词合并。

接下来,我们应该关注事件的修饰语,如动词的状语(标记为“Adv”)和补语(标记为“Cpl”)以及主语的属性(标记为“Att”)或对象。

最后,我们可以从原始文本中以上述形式构建许多事件七元组。伪码显示在算法1中。

很显然,并非所有的子句都可以从事件元组中提取出来。在某些情况下,子句可能不包含动词,更不用说主语和宾语,因为它们依赖于动词。但是,在其他一些情况下,一个子句可能包含一些动词。在这些情况下,同一个子句中可以有多个不同动词的事件元组。总之,一个子句可以产生n个事件元组,这里n >= 0。尽管子句中可能没有事件,但是一个语句必须包含一个或多个事件。 由于在一个句子中,必须有一个或多个动词来维持正式文本中的句子的补充。 确定子句级别和句子级别之间的差异非常重要。

4.2 事件驱动的情绪原因提取

在事件元组(ETu)的构建之后,情绪原因提取问题成为分类问题。 如果一个ETu是从情绪原因中提取的,那么为正,否则为负。 所以,我们需要一个二进制分类算法来确定一个ETu是否是一个情感原因。 由于样本数量不足,有必要提供有关这些ETus的更详细信息。 我们选择具有多项式内核和树核的多核SVM,因为基于多内核的函数可以搜索几乎所有可能的语法特征。

4.2.1 事件表示

根据ETuSVO结构,我们可以构建一个ET。 我们假设一个ET具有四个等级的固定高度。 第一级是ROOT节点。 由于中文是SVO语言,因此ROOT的后代是S(主语),V(动词)和O(宾语)。 基于这个基本结构,ET可以分为三部分。 (AttO1O1)属于S,(AdvPCpl)属于V,(AttO2O2)属于O. 最后,我们将ET的每个时隙中的词作为ET的叶。 让我们再看看例2和例3。 我们在图3.5中列出了两个情绪原因子句及其相应的ET

 

 

在这里,既然两个动词都在第二个例子子句中出现,我们可以从这个子句构造两个ET。 基于这种ET结构,我们决定使用基于树核的SVM来处理ET

另外,我们需要添加一些词汇特征来补充任务所需的信息。 根据七元组事件结构,我们可以获得每个组件的独热表示(one-hot representation)作为特征。 假设每一个的表示都是Ri,在这里我们可以通过一个联合操作捕获ETu的特征,称为ETu特征:

这里,是联合操作, 即将这两个表示按顺序组合成新的表示。 此外,如上所述,一个组件与情感关键词之间的距离是如此重要,以至于我们把它作为其中一个特征,同时也是联合操作。 对于这些特征,我们决定使用多项式核函数来构成词汇特征。

4.2.2 多核函数

            正如上面提到的,我们提取了树结构的特征并从事件树中提取了词汇特征。我们需要通过一种分类器来组合这些特征来挖掘更深层次的信息,以检测情感原因提取的基本特征。 在这里,我们选择一个具有多项式核和树核的多核SVM来解决这个问题。

多内核函数

多内核函数用一组预定义的内核进行设计,并学习内核的最优线性或非线性组合作为算法的一部分。 可以使用多内核函数来组合已经为每个单独数据集建立的内核,而不是创建新的内核。 在我们的方法中,我们使用基于树核函数的多内核与基于多项式核函数的基于SVM的函数来从ET中挖掘更深的信息。 对于树核函数的任意两个输入T1T2,对于多项式核函数的各个特征V1V2,如下定义两种类型的多核函数:

这里,Kvec指的是一个多项式核函数。 由于我们的数据可以用两种不同的格式表示,因此我们使用上述两种类型的多内核从较大的内核集合中选择最佳内核和参数,并减少内核选择造成的偏差。 接下来,我们介绍多项式核函数和树核函数。

多项式内核

多项式内核是用于SVM的最广泛使用的内核函数之一。 直观上,多项式内核不仅看输入样本的给定特征以确定它们的相似性,而且还看它们的组合。 多项式核的定义如下:对于任意两个输入V1V2,其中V表示特征向量,核函数定义为:

这里,V1V2是特征空间中的矢量。y、rd是参数。 “.”是内积,其中:

如果那么

多项式核可以表示特征空间中的向量(在训练集中)与原始变量的多项式之间的相似度。 我们想从原始的词汇特征中获得更多的信息,所以多项式核函数是一个很好的例子选择。

 

树内核

NLP中,通常需要比较树结构的相似性。 这种比较可以通过计算树的特征向量的点积来执行。 一个精心设计的树核允许你计算树之间的相似度,而不需要明确地计算这些树的特征向量。 对于基于树结构的任何两个输入T1T2,内核被定义为

其中n1, n2是树节点, 是递归定义的函数:

           

 

4.2.3 装袋(Bagging)分类器

在我们的框架中,我们将情绪成因相关事件作为正面样本。 然而,大部分事件与情绪因素无关。 这意味着训练数据的分布是不平衡的。 在我们以前的工作中,我们使用了一种简单的欠采样方法来随机选择部分负样本进行训练,以保持训练数据的平衡。 在这种方法中,训练数据没有充分利用。 在本文中,我们使用分类器的装袋方法来解决这个问题。 本质上,我们随机选择负样本数次以生成不同的负数据集。 然后,我们将不同的负数据集与完整的正样本组合,并训练不同的分类器,以充分利用训练数据。 我们提出的方法的框架如图6所示。

这里,对于每个分类器Hi,将输入样本作为xj,并且xj isyj的有关标签。此外,yj D 1表示xj是情绪原因事件。 由于我们使用SVM作为基本分类器,因此分类器的输出是样本和边距之间的距离。 所以,我们可以通过sigmoid函数得到xj的可能条件可能性:

然后,K个分类器的融合公式是:

在这里,等式 (9)是似然条件概率的平均值。 如果H(xj) /大于0.5,则表示xj是情绪原因事件。 否则,xj不是情绪原因。 此外,较高的H(xj)表示xj更喜欢情绪事件。 所以,方程 (9)可以在排序算法中实现,比如我们在图1中提出的框架。

5.实验

5.1 实验准备

在实验中,我们随机选择数据集中90%的样本作为训练集,其余10%作为测试集。为了获得统计上可信的结果,我们分别评估了我们的方法和参考方法25次。我们进行了两组实验。第一个实验评估子句级别的表现,以确定包含情绪原因的子句。第二个实验通过动词分类评估情绪成因。这是因为93.21%的情绪因素是动词或动词短语,而动词则是我们事件定义中的动作成分。特别是Gui等对同一组数据进行了一系列类似的实验。但是,他们修改了树内核以将词汇单词带入具有同义词信息的子句中。在这项工作中,我们表明不需要修改任何内核函数,只使用我们的事件提取方法与原始的内核函数,我们可以实现更高的性能。

 

5.2 情感原因提取

我们决定使用Lee等提出的已经被广泛使用的测量方法来做情感原因提取。 在这种测量中,如果提出的情绪原因涵盖了注释的答案,则所提出的序列被认为是正确的。 在这个实验中,我们将我们的方法与以下工作进行比较:

RB(基于规则的方法):有几项关于RB方法的研究。我们使用规则的联合,并删除一些与我们的数据集无关的规则。

  CB(基于常识的方法):为了再现这种方法,我们使用中国情感认知词典作为常识。这个词典资源包含超过5000个情绪刺激及其相应的反映词。

  ML(机器学习的基于规则的特征):将规则用作特征,并添加其他用于情感原因分类的手动特征。

  Kvec:使用我们以前的工作中的特性,以及原始的线性核函数。

  Kword2vecWord2vec 用于学习单词表示。根据我们以前的工作使用表示法来进行分类器的训练。

  KET-O:我们以前的工作中使用的原始树内核。

  KET-M:在我们以前的工作中使用的修改过的树内核。

  Knew + O:在Ref中加入多核函数与原始树核的多内核。

  Knew * O:参考文献中多项式核与原始树核相乘的多核。

  KnewCM:在参考文献中用修改的树核添加多项式核函数的多核。

  Knew M:将多项式核与修改后的树核相乘的多核。

  Bpoly:只使用多项式核函数的袋装和词汇特征来提取情绪原因。

  Btree:只使用事件树的树核函数装袋进行情感原因提取。

  B + multi:通过添加具有树核函数的多项式内核来使用多核函数的装箱。

  B * multi:通过将多项式内核与树内核相加来使用多内核函数的装箱功能。

在表6中给出了在子句中情绪原因检测的性能。从表6可以看出,B * multiF-measure中达到了最高性能。与其他方法相比,在t检验中p值小于0.001的改进是显着的。

在基本方法中,RB达到最高精度。然而,它的F-measure受到回忆率低的限制。由于CBRB相反,当我们将输出用作在RB + CB方法中训练分类器的特征时,性能得到改善。然而,这种改进非常有限,F-measure = 0.0127。我们复制的RBF-measure与其他结果类似。他们重复了Lee等人的方法,实现了0.55或更少的F-measure

陈等人报告说,通过使用手工制作的规则作为特征来训练带有一些附加特征的分类器,例如连词,动作和认知动词,可以显着提高性能。 然而,在我们的实验中,结果与这一说法相悖。 主要原因是他们所使用的样本并不复杂。 大约85%的情绪原因与情绪关键词在相同的子句中。 我们的语料库完全不同。 与情绪关键词在同一个子句中的原因百分比只有大约23.6%。 Chen等人的方法不能很好地处理远距离关系。 这解释了为什么它不适合我们的数据集。 尽管(RB + CB + ML)表现不佳,但与RB相比F值仍有0.0354的改善。 这意味着这些规则结合常识,对于获取机器学习方法的一些基础信息很有用。

 

Gui等人的工作中,我们看到,修改后树内核KET-MF-measure比原始树核KET-O的性能高0.0605。 终端节点的考虑确实可以显着提高树内核的性能。 修改后的树核KET-M中的F-measure也比Kvec0.0377,比Kword2vec0.0526。 在这里,我们可以看到基于内核的句法表示具有泛化的能力。 没有词汇信息的原始树核心与KET-M相比表现不佳,但仍获得比KvecKword2vec更高的性能。 在将线性核函数和树核函数结合起来之后,K multi实现了0.6756F-measure,这比所有其他方法都高。

 

在我们提出的方法中,我们首先按照上面提到的方式提取事件,并且使用原始多项式核和树核而不做任何修改。 BpolyF-measure0.6365,比Kvec0.2080,比Kword2vec0.2229。这是一个令人振奋的改进,这意味着我们提取事件的方法非常有效,可以比Gui等人的工作探索更多的潜在特征。此外,Bpoly也实现了比(RB + CB + ML)高0.0768F-measure。这表明我们的方法可以挖掘比规则和常识更多的语法信息。对于树核,我们只能达到0.4266F-measure。虽然低于我们的其他性能,但它仍然比KET-O0.0209KET-O在该作品中使用了带ET的原始树核[33]。这个结果进一步证明了我们的提取方法要好得多,其中B + multi获得了0.6393F-度量。与基础方法相比,它比(RB + CB + ML)高出0.0794,在基础方法中取得了最好的结果。同时比Bpoly0.0028,比Btree0.2127。尽管从原始多项式内核到多(+)内核几乎没有改进,但它仍然可以揭示多核内核可以从多项式内核和树内核中受益。因此,我们获得比任何基于一个内核的函数更多的功能。另一方面,多(+)内核也可以比(RB + CB + ML)更好地工作,它只是简单地将规则和常识结合在一起。值得一提的是,B * multi获得了0.7456F-measure,这是所有现有方法中性能最高的。这个性能比多(+)内核高0.1063,这意味着多(*)内核可以通过乘多项式内核和树内核来提取更多有用的内部特性。与Knew * M相比,在我们以前的工作[33]中,使用改进的树核与提取方法相比,B * multiF-measure中的性能提高了0.0700。这意味着我们的装袋方法非常有效,任何修改都不是必需的。对于基本方法,B * multi可以在F-measure中获得0.1859的更高性能。原因在于我们的方法同时使用了句法级别和词汇级别的事件信息。充分利用这些信息为模型提供了泛化能力,并且可以实现更好的性能。

 

5.3 情感原因的动词分类

在我们的方法中,有三种表示级别:句子,子句和事件元组(ETu)。 ETu是最基本的结构。 我们的分类器对ETus执行分类操作,以通过选择具有最高概率的候选原因事件来确定当前ETu是否与情绪相关。 表现是通过识别事件中的动词来衡量的。 在这里,我们将我们的方法与基础方法以及参考文献中的工作进行了比较。 结果如表7所示。

在实验中,我们对每个ETu进行评分。在这里,由于ETu是从一个子句中提取出来的,并且一个子句来自一个句子,所以每个ETu都有一个用于其句子ID和子句ID的唯一ID。这意味着一个句子中有很多ETus。遵循这个逻辑,我们将ETus的分数排列在同一个句子中,并选择最高的一个。对于这个ETu,它与具有唯一句子ID的子句ID相匹配。此外,如上所述,可以从一个子句提取一个或多个ETus。换句话说,ETus和相应的条款必须有多对一的关系。因此,我们发现动词分类实验的整体表现略低于子句层次的情感事件提取。

正如我们所看到的,Bpoly可以在KvecKword2vec和它本身中获得F-measure中最高的性能,而Bpoly在召回值中比Kword2vec0.0138。原因是提取结果是基于排名的,只有排名最高的事件会影响性能。所以,精确度比这里的召回更重要。出于同样的原因,Btree在召回值和F测量值方面的KET-M值更低。当使用B + multi时,我们得到的性能低于Ref中的所有基于多内核的方法。 [33]。这意味着我们的事件元组结构不太适合原始的多核。然而,当我们使用B multi时,F-measure中的性能可以达到0.6330,这是所有现有方法中最高的分数。这个结果表明,使用基于多运算的SVM的多内核不仅为这些组件提供了简单的投票或联合方法,还可以从这两个内核中受益,以实现更好的性能。结合我们的提取方法,结果可能是最佳的。

 

5.4 错误分析

即使我们可以获得最佳性能,结果仍然主要有三种类型的错误。 这些包括以下内容:

  • 情绪以其他形式产生。 在某些情况下,情绪原因可能没有动词。 例如:

          在这种情况下,情绪原因应该是“情急之下不择手段”,这个句子只包含了两个副词,没有任何动词。但我们的方法输出为“为了保住脸面”,因为这里包含了一个ETu.作为一个基于ETu的方法,我们的模型不能分辨这种类似的情况。

 

            (2) 情感关键词的宾语。

情感关键字是动词,在这种情况下,言语情绪关键词可能有一个宾语,而情绪关键词的对象很大程度上可能是情感因素。 但在某些情况下,例外情况可能会发生如下。

在这种情况下,为什么妈妈喜欢这个男人的妻子是因为没吵过嘴。 但是,我们的方法输出喜欢这个儿媳妇。该模型将此子句作为事件元组,其中包含喜欢/ like”的对象。 它忽略了情绪关键字之前的真实答案。 由于感情关键词宾语的强大线索,我们的方法无法说明这个例外。

3 

在这种情况下,情绪原因发生在远离情绪关键词的位置。 这与我们输入模型的正常信息不同。 由于数据集规模较小,我们的模型无法识别这种类型的情绪原因。

事实上,部分错误可以归因于我们对事件元组的定义。 当我们决定把情绪因素作为事件的结构,如式 (1),我们逃避了以其他格式表现的许多情绪原因。 但结果表明,我们的事件元组结构是有效的。 另一方面,这个位置也是造成这些错误的主要原因。 我们的模型被加权以支持与情感关键词最接近的条款。 然而,情感原因可能发生在最远的条款上。 在我们需要挖掘的语义层面上有更深层的信息,不仅是简单的和外部的。

6.总结

在本文中,我们介绍了我们关于情绪原因提取的工作。 我们的论文中主要有两处贡献。 我们首先从新闻文本中构建一个带有情绪原因的语料库并详细注释。 然后,我们基于事件提取方法提出一种情绪原因提取方法。 在这种方法中,我们使用语法信息来呈现事件中的情绪原因。 基于这种类型的事件结构,设计了一种基于多内核的方法来提取情感原因。 与使用人工构建的规则和常识知识库来检测情绪原因的普通方法相比,我们提出的模型能够自动获得结构特征和词汇特征并在该数据集的上达到了国内最先进的性能。 在今后的工作中,我们计划将这项工作扩展到英语,并探讨解决这个问题的双语方法。

 

致谢

感谢国家自然科学基金(编号:61370165U1636103,61632011),深圳市基金资助项目(编号:JCYJ20150625142543470JCYJ20170307150024907),广东省数据科学工程技术研究中心(编号:2016KF09)对本研究的支持。

分类: 自然语言处理

发表评论

电子邮件地址不会被公开。 必填项已用*标注