一种基于情感句模的文本情感分类方法
2013-10-15徐睿峰吴明芬
陈 涛,徐睿峰,吴明芬,刘 滨
(1.哈尔滨工业大学 深圳研究生院,广东 深圳518055;2.五邑大学 计算机学院,广东 江门529020)
1 引言
情感(Sentiment)是一种复杂的生理和心理现象,包括情绪 (Emotion)、感觉(Feeling)和心情(Mood)等。它是人类智能的重要特征,是人类生活的重要内容。随着Web 2.0、社交网络的兴起,越来越多的人通过网络分享自己的观点、体验和心情,包含有情感的文本也越来越多。对文本中蕴含的情感和情绪进行自动分析正在成为新的研究热点。这些分析技术的研究对于大数据行业挖掘文本潜在的情感表达,发现用户兴趣与需求,提高服务质量等应用领域都具有重要的意义。
目前文本情感分类的典型方法包括:(1)基于关键词的方法。如Turney[1]等使用词之间的点式 互信息(Point-wise mutual information)和 SO(Semantic orientation)对评论进行非监督的分类;Kamps[2]等利用 WordNet记录的信息来分析形容词的极性;朱嫣岚[3]等基于HowNet分析词汇的倾向性进行句子倾向性分析。这类方法对分析显式的、含有情感词的文本比较有效。(2)基于规则或常识知识库的方法,如Hu[4]等使用关联规则挖掘客户的主观评论;姚天昉[5]等使用句法规则的方法对汽车评论中的情感倾向进行挖掘;刘鸿宇[6]等基于句法树中的路径对评价对象进行抽取;任巨伟[7]等在陈健美[8]等人的情感常识表示框架基础上构建了二元结构的情感常识库,进行文本情感分析和倾向性分析。这类方法具有一定的分析隐含情感和领域相关情感文本的能力。(3)基于统计和机器学习的方法。如Bo Pang[9]应用朴素贝叶斯、最大熵、支持向量机SVM(Support Vector Machine)等分类器对电影评论进行分类;谷学静[10]等利用隐马尔科夫模型HMM对情感进行建模;王根[11]等采用多重冗余标记的条件随机场分类器,通过求联合解码最优,减少了单分类的错误传递;Li[12]等利用多分类器融合的方法改进单一分器的效果;李寿山[13]等采用了基于Stacking组合分类方法对分类器进行情感倾向分析。这类方法得到了较多的应用。
考虑到同类别的情感句往往有相同或者相似的句法和语义表达模式,本文提出一种基于情感句模的文本情感分类方法。首先,从《现代汉语基本句模》[14]中选取与情感表达相关的三大类句模,并进行人工补充获得105个二级分类句模。而后,利用情感标注语料,对基础情感句模无法覆盖的情感句进行分词、句法分析和依存关系分析,从中找出句子的核心谓词和与其直接关联的句子主干词以及对句子情感有直接影响的其他词,通过半自动的方法获取情感表达句模,从而建立一个情感句模库。在情感分类任务中,将情感句分类问题转换为最相似句模分类和排序,从而实现情感分类。在NLP&CC 2013中文微博情绪分类评测数据集及RenCECps博客情绪语料[15]进行的评估实验显示,本文提出的方法对语料多标签情感分类准确率分别达到43%和60%,明显优于基于词语特征的SVM分类器方法,本文提出的基于情感句模的方法可以有效地提高文本情感分类性能。
2 基于情感句模的文本情感分类方法
通过对大量情感句的表达方式进行分析和总结,可以发现句子的主要语义往往通过句子的主干来表达,很多时候具有相同或者类似主干的句子所表达的情感也相同。例如,表示喜爱情感的两个句子“我喜欢你”与“我爱自然语言处理”具有共同的句子主干“情感的持有者+表示喜爱的词语+情感的对象”。为此,本文引入朱晓亚[16]提出的汉语句模的概念进行描述。这里,句模定义为动核结构生成句子时与句型结合在一起的语义成分的配置模式,是根据句子语义平面的特征分出来的类别。上述例子中的句子主干可以用句模“<感事><喜爱词类><向事>”来描述,其中“感事”表示情感的主体,“向事”表示情感施加的对象。每一类句模包含对应的词类。在利用句模对情感句表达方式进行分析和总结的基础上,本文提出以下假设:
假设1:情感句模能够表达句子的主要语义。
假设2:如果句子S能用情感句模M表示(即与该句模匹配),则S与M表达的情感分类相同。
基于情感句模的文本情感分类方法的基本设计思想是:将待分类句子与情感句模进行匹配,找出匹配程度最高的句模,句模所属的情感类别即为此句子的情感分类。
2.1 情感分类及句模库构建
考虑到情感表达的灵活多样,因此需要对情感表达句和对应的情感句模进行相对精细的区分。鲁川[14]等人在论文《现代汉语基本句模》中将常见的汉语句模分为26个大类,122个二级分类。本文首先从中选择出与情感表达有着密切关系的包括“态度、感受、思想”3个大类和14个二级分类,其中“态度”大类分为“热情类、细心类”等,“感受”大类分为“感知类、感觉类”等,“思想”大类分为“希望类、愿意类”等。从这些分类对应的句模库中抽取了14个句模和14个对应的词类构成基本情感句模库。考虑到文献[14]存在对情感表达句式覆盖率有所不足的问题,结合对大规模情感语料库的观察和分析,本文对上述二级分类进行了扩展,最终得到对应于“态度”大类的41个二级分类、对应于“感受”大类的48个二级分类、对应于“思想”大类的16个二级分类。详细的分类列表在附录中给出。
由于基本情感句模库不能够覆盖所有对应类别情感句的表达方式。另一方面,本文新扩展出的二级分类无法从现有的《现代汉语基本句模》资源中获得对应的句模。为此,本文提出了一种情感句模的半自动获取方法,基本过程如下。
(1)从情感语料库中抽取情感句,利用基本情感句模库进行匹配。对能匹配的句子作为对应句模的实例存储。对不能匹配的句子,人工标注其对应的情感二级分类,并继续处理。
(2)对这些句子进行分词、句法分析和依存关系分析。从中找出句子的核心谓词和与其直接关联的句子主干词,以及对句子情感有直接影响的其他词(称为:附属词)。
(3)借助《同义词词林》,查找核心谓词和附属词所在的同义词词类,用同义词词类名代替该核心谓词和附属词。如果这些词语不属于任何同义词词类,则创建新的词类。这里,为区别词和词类,将词类名用尖括号括起来。
(4)参考《现代汉语基本句模》中定义的语义角色,将句子主干词抽象成语义角色。这里,为区别词和语义角色,将语义角色用尖括号括起来。
(5)将制作好的句模存入句模库。
下面以例句1“我爱自然语言处理。”说明“喜爱类”中句模的构建过程:
(1)生成句子的分词结果“我/爱/自然/语言/处理/。”,以及对应的句法分析和依存关系分析结果如图1和图2所示。结合句法分析和依存分析结果,可知例句1的核心谓词是“爱”,与其直接关联的句子主干词分别是“我”和“处理”,而“自然”和“语言”则不被视为句子主干。
图1 例句1依存关系树
表1 典型情感句模及其所属情感分类
图2 例句1句法树
(2)在句模库中查找“爱”是否属于某个已知词类,如果匹配则使用该词类名代替“爱”;如果无法匹配,则在《同义词词林》中查找“爱”的同义词,在句模库中创建“喜爱词类”,并将“爱”和它的同义词添加到该词类中。而后用“<喜爱词类>”替代“爱”,此时例句1的主干为:“我 <喜爱词类> 处理”。
(3)参考《现代汉语基本句模》中定义的语义角色,通过将“我”抽象为“感事”,将“处理”抽象为“向事”,则从例句1获得句模“<感事><喜爱词类><向事>”。
(4)将新句模存入情感句模库。
按照上述步骤,我们共从约3500个情感句中获得了413个情感句模,表1列举了一些典型情感句模及其所属的情感分类,其中中括号里面的词是可以省略的词。
2.2 基于情感句模的情感分类算法
2.2.1 分类特征选择
利用情感分类句模库,可以将句子的情感分类转换为对情感句模的分类问题,只要找出与待分类
其中,向量w=[w1,w2,w3,w4],是对向量f=[f1,f2,f3,f4]的权重向量。b为阈值,y=1表示匹配成功,该句模所属情感分类记为待分类句子的分类,y=-1表示不匹配。
例如,例句2“我 喜爱 信息 检索。”的核心词为“喜爱”,查找句模库得到可能的类别为喜爱类。对应喜爱类中的句模1“<感事><喜爱词类><向事>”,其中“<喜爱词类>”包括核心词“喜爱”,所以f1=1;句模1中没有附属词匹配,所以f2=0;句模1的依存关系树与句法树分别如图3和4所示。依存关系树与核心词连接的边“SBV”和“VOB”,两条边都匹配,所以f3=2;句法树中有4个分支匹配:分别是“ROOT→IP→NP→PN”、“ROOT→IP→VP→ VV”、“ROOT→IP→VP→NP→NN”和“ROOT→IP→PU”,所以f4=4。因此f=[1,0,2,4]。类似可以生成其他句模对应的f向量。句子匹配程度最高的句模,即可使用句模的情感分类作为此句子的情感分类。本文设计和选择了4种句模匹配特征用于描述句模匹配的相似性。
图3 句模1依存树
图4 句模1句法树
f1:是否匹配核心词,匹配则f1=1,不匹配则为0。
f2:匹配附属词个数。
f3:匹配依存关系树中与核心词连接的边的个数。
f4:匹配句法树中从根到叶子节点的路径(或称为句法树分支)的个数。
随后,使用下面的线性分类器模型结合上述4种匹配特征进行分类:
利用线性分类器分类结果可得到句模1为最近似句模分类结果,对应的例句2的情感分类结果可以由句模1的分类“喜爱”获得。
本文设计的基于情感句模的情感分类算法分类成功的标准是至少找到一个匹配得分超过阈值的句模。每个情感分类中所有句模的最高得分为该分类的得分,按总得分由高到低对情感分类进行排序,分数最高的一个或多个分类为最终分类结果,其他分类作为参考结果。也就意味着本文的分类方法支持多标签分类。
2.2.2 基于感知机的权重参数优化
为提高线性分类器的性能,本文使用感知机学习算法,利用标注训练语料对情感分类算法中的权重参数w进行优化。算法伪代码描述如下:
其中fi是训练语料中第i个句子匹配特征向量,2.2.1节中例句1匹配句模1的匹配特征向量fi=[1,0,2,4]。w 是分类算法的4个匹配特征的打分权重向量。zi是期望分类,表示当前句模所在情感类与第i个句子标注的情感分类是否相同,相同则zi=1,不相同则zi=0,例句1标注的情感分类是喜爱类,与句模1所在分类相同,所以zi=1。training_set是训练语料对应的匹配特征向量t与期望分类z的集合。error_count记录变量error不为0的个数,当训练语料中所有的句子对应的error变量值都为0时程序结束。ɑ为学习因子,取值在0到1之间。
2.2.3 特殊词语处理
在算法设计与分析过程中,发现以下几点问题。
(1)不规则词问题:一些语料尤其是微博语料中经常出现不规则词和短语,分类算法无法识别句模库中没有的词。例如,句子:“刚才的拔河比赛,太鸡冻了”,句模库的激动词类中只有“激动”而没有“鸡冻”。解决办法是搜集不规则词将其添加到词类库中。
(2)分词错误问题。例如,对“自己是最棒的”的分词结果为“自己/是/最/棒/的”,如果能将“最棒的”作为一个独立单元来处理,更有利于根据关键词选择候选分类。解决办法是将具有明显情感的短语加入到自定义词表中作为一个词处理。
3 实验结果与分析
3.1 实验设置
本文实验使用两个领域的语料:语料1为NLP&CC 2013中文微博情绪识别评测数据,简称NLP&CC语料。共包括4000条微博中的13250个句子,其中情感句4949句,无情感句8301句。情感句共分7类:Anger愤怒、Disgust厌恶、Fear恐惧、Happiness高兴、Like喜好、Sadness悲伤、Surprise惊讶。每个句子最多属于两个情感分类。语料2为RenCECps博客情绪语料,包括1487篇博客短文共34954个句子,其中情感句32171句,无情感句2783句。情感句共分8类:Sorrow,Anger,Anxiety,Surprise,Hate,Love,Joy,Expect。每个句子可属于一个或多个情感分类。
实验使用评估指标为:
准确率:
召回率:
待分类句子的多标签分类结果中任意一个标签分类正确,则视为正确分类句。#system_correct(emotion=Y)是对语料中情感句分类正确的句子数目,#system_proposed(emotion=Y)是语料中的情感句总数,#gold(emotion=Y)是语料中被划分为情感句的句子数目。
本文采用的Baseline系统是基于词语特征SVM分类器的方法。
3.2 实验结果及分析
实验1 与Baseline系统对比实验。
Baseline系统使用SVM分类器和词语特征分别对NLP&CC微博语料和RenCECps博客情绪语料进行分类,具体方法是:对情感句进行分词标注词性后挑选所有的名词、动词和形容词组成一个词汇表,以待分类句子中的词是否在词汇表中出现以及出现的频率为特征,随机挑选2/3的句子为训练语料,1/3的句子为测试语料,使用SVM Multi-Class工具进行训练和测试。Baseline系统和本文提出的分类器获得的最高准确率统计结果如表2所示。
表2 NLP&CC微博语料Baseline系统对比实验结果
表3 RenCECps博客情绪语料Baseline系统对比实验结果
由此可见,基于情感句模的分类算法相比Baseline方法可以达到较高的准确率。特别是RenCECps博客情绪语料上可以达到很高性能,这是由于这个语料中用词比较规范,因此,基于情感句模的分类算法准确率较高。
实验2 权重优化影响实验。
使用2.2.2节描述的感知机算法,取α=0.1,threshold=0.5,对NLP&CC语料中情感句进行训练,得到w=[0.6,0.2,0.6,-0.2],为方便计算将每个权值放大10倍后取整,得到w=[6,2,6,-2]。分别使用均等权重、经验权重和感知机优化特征权重,对NLP&CC语料中情感句和无情感句进行分类,分类结果如表4所示。
表4 评估特征权重影响实验结果
与均等权重相比,采用感知机学习算法优化特征权重后,分类算法性能提升了约3%。与经验权重相比,召回率略有上升,准确率有所下降,F值略微上升。
实验3 句模数量与分类准确度及句模库对中文情感句的覆盖率的评估。
对NLP&CC语料中情感句进行分类,统计与分类正确的情感句匹配频率最高的10个句模,如表5所示。
表5 与分类正确情感句匹配频率最高的10个句模
进一步,分别统计与分类正确的情感句统计匹配频率最高的10个、20个、50个、100个、150个句模,以及与它们匹配的句子个数,统计结果如图5所示。
图5中横坐标为高频句模数量,实线图的纵坐标为高频句模匹配的句子占全部分类正确的情感句的百分比,虚线图的纵坐标为高频句模匹配的句子占全部情感句的百分比。可以发现前150个高频句模匹配了97.6%的分类正确的情感句,覆盖了绝大多数分类正确的情感句,对NLP&CC语料中全部情感句的覆盖率为40.7%。
此外,分别只使用匹配频率最高的10个、20个、30个、50个、100个、150个句模对NLP&CC语料进行分类,统计分类准确率如图6所示。
图5 句模数量与匹配句子百分比统计图
图6 句模数量与分类准确率统计图
图中横坐标为高频句模的数量,纵坐标为只使用这些句模对NLP&CC语料中情感句进行分类的准确率。可以发现只使用前10个高频句模对NLP&CC语料7个分类的分类准确率为16.6%,只比随机分配1/7=14.3%的概率高2个百分点。随着高频句模数量的增加,分类准确率迅速提高。当使用前150个句模时,分类准确率为40.7%,与使用全部413个句模的准确率43.4%只相差3个百分点。由此可见,前150个高频句模对分类效果起到决定性影响,继续增加句模数量对分类准确率提高效果不明显。
实验4 分类特征、自定义词表与分类效果关系实验。
分别使用以下3种方法进行实验。
方法1:只使用分类算法4个分类特征中词级特征f1和f2,对NLP&CC语料进行分类。
方法2:使用全部4个特征对NLP&CC语料进行分类。
方法3:使用全部4个特征加自定义词表对NLP&CC语料进行分类。
分类统计结果如表6所示。
表6 实验4统计结果
由表6可知,方法2在方法1的基础上使用依存关系特征f3和句法特征f4分类性能提升明显。方法1效果较差的原因是句模库中有些同义词的含义并不能与句模匹配。例如:《同义词词林》中“细心”的同义词包括“致密”、“逐字逐句”、“细瞧”、“有心人”等,与细心类的句模:“<当事><细心词类>”中的“细心词类”并不匹配,这些词在细心词类中会降低分类系统的召回率。方法3比方法2多了自定义分词词表,分类效果略有提高。这说明自定义词表能够提高分类效果,但自定义词都是针对特定句子的情感表达手工抽取添加,目前的规模还不够,覆盖范围有限,对分类效果提升有限。
3.3 实验结果分析
实验1至4表明,继续增加分类系统的句模数量和优化打分权重对分类效果提高影响不大。下一步考虑增加新的匹配特征,例如,句模中的语义角色特征等。
实验过程中发现下列问题:(1)句模库中只有情感类句模,没有无情感类句模。任何与4个匹配特征中任意1个匹配的句子都会划分为情感句,导致无情感句被划为情感句的概率较高,降低了系统的性能。下一步将考虑优化特征匹配得分的阈值或完善三大情感分类以外的基于谓词的分类,并构建相应的句模库。(2)情感分类和句模都是基于谓词和相应规则构建的,对显式含有情感词或情感搭配的句子比较有效。而类似“如同观看一部真正的大片一样”这样的句子中,表达情感的要素是名词“大片”和它的修饰语“真正的”,比较难用句模匹配的方法划分情感类别。类比句或比喻句的情感分类是十分困难的,下一步考虑增加相应的匹配特征,尝试结合基于统计的方法,提高隐含情感句子的分类效果。
4 结语
本文设计和实现了一种半自动获取情感句模的方法,使用句模分类的方法实现对情感句的分类,在两个情感测试数据集上的实验结果显示本文提出的方法可以稳定有效地提高文本情感分类性能。目前情感分类的细致划分还在继续进行中,计划细化同义词词类和尝试添加更多匹配特征。另外还将加入基于统计的情感分类方法,构筑相应的训练语料和测试语料,提高对隐含情感句子的分类效果。
附录A.情感句模分类
① 态度类分为:支持类,反对类,怀疑类,沉默类,耐心类,怨气类,果断类,信心类,冒险类,妥协类,热情类,冷淡类,粗暴类,诚恳类,温柔类,和蔼类,客气类,宽容类,霸道类,谦虚类,细心类,勤奋类,负责类,积极类,谨慎类,粗心类,亲密类,团结类,一见如故类,熟悉类,恋爱类,和睦类,疏远类,友好类,纠纷类,纠缠类,挑逗类,苛刻类,重视类,严格类,轻视类。共41个二级分类。
② 感受类分为:吸引类,为荣类,自娱类,为耻类,不知所措类,伤感情类,感知类,记得类,生理感觉类,非生理感觉类,听到类,偷听类,看见类,偷看类,知道类,不知道类,发现类,惭愧类,愤怒类,义愤类,幸灾乐祸类,敬佩类,羡慕类,感激类,谴责类,害怕类,喜爱类,溺爱类,讨厌类,仇恨类,宽慰类,失望类,担忧类,高兴类,悲伤类,惊讶类,满意类,不满意类,没耐心类,懊悔类,紧张情绪类,心安类,自豪类,慌张类,眼熟类,耳熟类,眼生类,耳生类。共48个二级分类。
③ 思想类分为:希望类,自愿类,向往类,思考类,想象类,相信类,鉴别类,主张类,接受类,看待类,信任类,宠信类,看得起类,另眼相看类,想念类,着想类。共16个二级分类。
[1]Peter D Turney.Thumbs Up or Thumbs Down?Senmantic Orientition Applied to Unsupervised Classification of Reviews[C]//Proceedings of ACL 2002:417-424.
[2]Kamps J,Marx M,Mokken RJ.Using WordNet to Measure Semantic Orientation of Adjectives.[C]//Proceedings of LREC.2004:1115-1118.
[3]朱嫣岚,闵锦,周雅倩,等.基于HowNet的词汇语义倾向计算[J].中文信息学报,2006,20(1):14-20.
[4]Hu Minqing,Liu B.Mining Opinion Features in Customer Reviews.[C]//Proceedings of AAAI 2004:755-760.
[5]姚天昉,聂青阳,李建超,等.一个用于汉语汽车评论的意见挖掘系统.[C]//中文信息处理前沿进展——中国中文信息学会二十五周年学术会议论文集.北京:清华大学出版社,2006:260-280.
[6]刘鸿宇,赵妍妍,秦兵,等.评价对象抽取及其倾向性分析[J].中文信息学报,2010,24(1):84-89.
[7]任巨伟,杨源,王昊,等.二元情感常识库建设及其在文本情感分析中的应用[OL].中国科技论文在线,2013,http://www.paper.edu.cn/releasepaper/content/201301-158.
[8]陈健美,林鸿飞.中文情感常识知识库的构建[J].情报学报,2009,28(4):492-498.
[9]Bo Pang,Lillian Lee,Shivakumar Vaithyanathan.Thumbs up?Sentiment Classification using Machine Learning Techniques [C]//Proceedings of EMNLP 2002:79-86.
[10]谷学静,王志良,刘冀伟,等.基于 HMM的人工心理建模方法的研究[C].第一届中国情感计算及智能交互学术会议,北京,2003:31-36.
[11]王根,赵军.基于多重冗余标记CRFs的句子情感分析研究[J].中文信息学报,2007,21(5):51-56.
[12]S Li and C Zong,Multi-domain Sentiment Classification[C]//Proceedings of ACL-HLT 2008:257-260.
[13]李寿山,黄居仁.基于Stacking组合分类方法的中文情感分类研究[J].中文信息学报,2010,24(5):56-61.
[14]鲁川,缑瑞隆,董丽萍.现代汉语基本句模[J].世界汉语教学,2000,54(4):11-24.
[15]Changqin Quan,Fuji Ren.Construction of a Blog E-motion Corpus for Chinese Emotional Expression A-nalysis[C]//Proceedings of the 2009Conference on Empirical Methods in Natural Language Processing,pages:1446-1454.
[16]朱晓亚,范晓.二价动作动词形成的基干句模[J].语言教学与研究,1999:111-122.