王红
摘 要:目前大部分微博情绪分析研究集中在粗粒度情绪的划分,但细粒度微博情绪更能反映公众对舆论热点、政策的反应。因此提出了一种结合朴素贝叶斯和K最近邻的集成算法,着重对新浪微博展开了情绪识别与分析的研究。首先采用朴素贝叶斯分类算法将微博分为有无情绪两类。然后根据情绪本体库的分类规则,分别构建待预测微博和已标注微博的21维情绪向量。最后采用K最近邻算法,计算待预测情绪微博与已标注情绪微博的向量相似度,从而获取待预测微博的细粒度情绪。实验表明K最近邻算法的引入,在微博细粒度情绪识别的准确率上取得了较好的效果。
关键词:情绪分析;细粒度;朴素贝叶斯;K最近邻;微博
中图分类号:TP391 文献标识码:A 文章编号:2095-2163(2015)01-
Abstract: Currently, most sentiment analysis of micro-blog has been focused on coarse-grained sentiment analysis, but fine-grained sentiment is better for reflecting the opinion of the public when they are facing the social focus. Therefore, an integrated algorithm which is a combination of Naive Bayes and K-Nearest Neighbor is put forward, which has been applied to the sentiment recognition and analysis of sina microblog. First, microblog is classified into two types: sentiment and non- sentiment by using Bayesian classification algorithm. And then a 21 dimension vector is built for the predicted and the marked microblog on the basis of the sentiment ontology. Finally the vector similarity between the predicted microblog and the marked ones is calculated by using K-nearest neighbor algorithm, which could help to identify the fine-grained sentiment of microblog. Experimental results show that a good result is achieved in fine-grained sentiment recognition of microblog based on the combination of Naive Bayes and K-nearest neighbor algorithm.
Keywords: Sentiment Analysis; Fine-grained; Native Bayes; K-Nearest Neighbor; Microblog
0 引 言
近年来,Web2.0技术获得了迅速发展,而与此同时,微博作为一种新兴的网络交流媒介,正因其独具的及时性、简洁性和对信息传播的便捷性特点[1],心音了越来越多的使用者和研究者。以国内的新浪微博为例,目前其上的注册用户已超过3亿,用户每日的发博量则突破1亿条[2]。微博中用户发表的大量信息直接反映了该用户本体对某个事件或者政府出台的某项政策的反应和倾向。而且,情绪作为人的内心感受和表达,在判读其对事物的观点倾向具有重要作用[3]。可以说微博中涉及到的任何观点都与作者的情绪有着紧密的联系,因而开展微博情绪的识别和划分研究对于分析微博中海量的评论信息即具有实际现实的参考价值。但目前大部分的微博情绪分析却只是集中在粗粒度的情绪划分(也就是有无情绪的判断),这在某些情况下已经无法满足对文本信息处理的高精要求。基于此,本文根据对目前分类方法的研究提出了一种用于对微博进行细粒度情绪划分(也就是文本情绪具体类别)的集成算法。具体来说,就是对于一条微博,先识别其是否包含情绪,而对于包含情绪的微博,则需判别其具体的情绪分类。
本文第0节分析了微博情绪识别的背景和意义,简要介绍了本文的研究内容。第1节概略介绍了微博情绪细粒度划分的目标以及在微博情绪方面国内外的一些研究现状。第2节框架性地提出了本文针对微博情绪细粒度识别的总体方案,第3节完整给出了情绪细粒度识别的关键性技术,第4节则是集成算法的设计,而且通过实验结合其他的算法对比了对情绪分类的效果,第5节即总结了本文工作的不足以及对下一步研究的展望。
1 相关工作
细粒度的微博情绪划分包含两个方面,首先判断一条微博是否包含情绪,然后对于包含情绪的微博再进行细粒度的情绪划分,判断出该微博博主的主要情绪。针对于目前对情绪的分类[4],即anger(愤怒)、disgust(厌恶)、fear(恐惧)、happiness(高兴)、like(喜好)、sadness(悲伤)、surprise(惊讶)、none(无情绪),细粒度的情绪划分旨在能够对一条微博进行上述分类的单分类输出。
目前,国内外针对微博情绪方面取得了一定的研究成果。Alec等使用微博中的表情符号来标注正负情绪的训练集,并通过训练集运用距离监督的方法对微博信息解决了正负情绪的自动分类[5]。Aman等则通过一种基于知识的方法实现句子级的情绪识别[3,6]。在此基础上,Quan Changqin等使用情绪词对句子的情绪进行了识别,同时也研究了基于情绪词的句子级情绪分析[3,7]。进一步地,刘欢欢等人针对微博语料中类别样本数不平衡的问题,提出了一种提高情绪识别方法性能的样本集成方法,主要是针对微博粗粒度的划分,即判断其是否包含情绪[3]。另外,庞磊等人又通过表情图片和情绪关键词对微博语料进行收集和标注,而且将情绪知识运用到了中文微博的情感分类方面[8]。
由此可见,目前对微博情绪的分析研究仍然主要集中在粗粒度情绪识别,一方面是有无情绪的识别,另一方面是正负情绪的识别。微博作为一种开放化的社交服务,无论在商业领域或是在管理领域都有着极高的应用价值。企业可以将其作为一个理想的营销平台,而政府则可凭此了解人们对社会公共事件和热点问题的看法观点。但由于其特有的语言风格和本身内容信息的多样、海量等特点,粗粒度的情绪划分在某些情况下已经不能满足已经发展变化的要求,因而对微博情绪的细粒度划分将会日益突显其核心且先进的研究价值。
2 情绪细粒度识别的总体方案
图1给出了情绪细粒度识别的总体流程图,从图中可以看到细粒度划分微博情绪的总体流程是先扩展本体库,在大连理工构建的情感本体词汇库的基础上扩展针对微博中网络用语的词汇,而后对测试集和训练集中的微博进行分词。分词结束后,将根据一定规则统计出词语中用于贝叶斯分类的特征项,再通过特征项进行微博有无情绪的识别。下一步,即对测试集和训练集中有情绪的微博文本进行向量化处理,采用K最近邻算法,计算待预测情绪微博与已标注情绪微博的向量相似度,从而获取待预测微博的细粒度情绪。
3关键性技术
3.1 扩展本体库
本文对微博的情绪分类识别沿用大连理工大学建立的情感词汇本体。该资源从不同的角度描述一个中文词汇或者短语,包括词语词性种类、情感类别、情感强度连同极性等信息。该本体库的情感共分为7大类21小类,具体来说,7类为乐、好、怒、哀、惧、恶、惊;21类为快乐(PA)、安心(PE)、尊敬(PD)、赞扬(PH)、相信(PG)、喜爱(PB)、祝愿(PK)、愤怒(NA)、悲伤(NB)、失望(NJ)、疚(NH)、思(PF)、慌(NI)、恐惧(NC)、羞(NG)、烦闷(NE)、憎恶(ND)、贬责(NN)、妒忌(NK)、怀疑(NL)、惊奇(PC),情感强度分为1,3,5,7,9五档,9表示强度最大,1为强度最小[4]。
微博作为目前流行的一种互联网应用,内容中综合着各式各样的网络用语,因此研究从4 000条已经人工标注了情绪分类的新浪微博中人为地筛选出常用的网络用语和所有的QQ表情所代表的词语以及对情绪识别有表征意义的其他词汇,从而完成了对极性和强度等相应属性的标注,由此获得了对情感本体库的有效扩展。
3.2 分词
针对于待分类的每条微博,首先采用中科院计算所开发的ICTCLAS分词系统进行分词,但考虑到微博语言的特殊性,研究中构建了分词器中特有的停用词库。这样做是因为在微博的情绪识别中,有很多诸如语气词之类的所谓停用词在情绪识别的过程中都发挥了重要的表征作用。另外,研究中进一步将情绪识别所用到的大连理工构建的情感词汇本体库和扩展的网络语言情感词汇库加入到分词器的用户词典以保证分词器对微博语句分词的准确性。
3.3 特征项提取
为了便于对微博进行有无情绪的贝叶斯分类,则对训练集中的每条微博进行了科学的抽象,即进行了特征项的提取。而将微博进行分词之后,就要统计出各个词在有无情绪两种情况下分别出现的次数,再会选择出一部分在有无情绪这两种情况下出现次数差别较大的词,并将其作为特征项。
3.4 文本表示
文本表示是指将文本从一个非结构化格式转化成计算机可识别的结构化格式的处理过程[1]。针对于那些包含情绪的微博,在此选择的文本表示模型则是向量空间模型,也就是将微博文本向量化。根据本体库的构建规则,可将每条微博表示成21维的向量。其中,每一维的分量相应代表本体库中的每一个具体的小情感分类,即每条微博均有21个小类情绪特征。并且,每个分量值将依赖于本体库,如果微博中的词能与本体库中的词相匹配,则将该词的强度作为分量值,出现多个词的小情感类别相同的情况就将各个词对应的强度累加作为分量值;而对于那些小情感类别中没有出现词的情况,则在向量中对应的该分量值将设定为零。例如对于如下的一条真实的微博:“妹妹2年多的顽固性失眠,这次经刘医生3次针术后,已连续一周安然入睡到自然醒,我真高兴。”经过分词之后该微博与本体库匹配的词为:顽固、失眠、安然、自然、高兴。在本体库中,顽固属于NN(贬责),强度为3;失眠属于NE(烦闷),强度为5;安然和自然都属于PE(安心),强度分别为5、3;高兴属于PA(快乐),强度为5。那么对于该微博形成的21维向量的各分量值即可表述为:PA(5.0),PE(8.0),PD(0.0),PH(0.0),PG(0.0),PB(0.0),PK(0.0),NA(0.0),NB(0.0), NJ(0.0),NH(0.0),PF(0.0), NI(0.0),NC(0.0),NG(0.0),NE(5.0),ND(0.0),NN(3.0) , NK(0.0) , NL(0.0),PC(0.0)。
4 算法设计与实验分析
4.1 算法思想
本文对微博细粒度情绪划分采用朴素贝叶斯和K最近邻的集成算法[9]。其中,用朴素贝叶斯算法进行大粒度的划分,也就是有无情绪的划分;在此基础上,针对包含情绪的微博,即运用K最近邻的算法进行细粒度的情绪划分。
4.2 实验设置
实验使用的语料是由计算机学会发布的训练语料,该语料是基于相对细粒度情绪标注规则的语料库,以XML文档格式组织,包括了微博的整体细粒度情绪标注以及单个句子的细粒度情绪标注。语料主要来自新浪微博,共有4 000条微博数据。语料中有8种基本的情绪:即anger(愤怒)、disgust(厌恶)、fear(恐惧)、happiness(高兴)、like(喜好)、sadness(悲伤)、surprise(惊讶)、none(无情绪)。
实验中使用了3种分类方法:支持向量机分类方法、K最近邻分类方法、以及朴素贝叶斯-K最近邻集成方法,针对衡量分类的性能,采用准确率作为细粒度情绪划分的衡量标准,准确率计算如公式(1)所示:
其中#sample_correct是被正确划分测试样本的数目,#sample_proposed是提供的测试样本总数。
4.3 实验结果分析
实验使用的训练语料中共有4 000条微博数据,其中有情绪的微博为2 647条,无情绪的微博为1 533条。在这次实验中,将用3 500条微博作为训练集,其中包含有情绪的2 172条,来训练分类模型,而用剩下的500条微博来做测试。使用SVM做8类分类预测,特征值的计算来源于对大连理工本体库扩展后的词汇,使用21维情绪作为最终的特征,准确率为46.8%。使用K最近邻算法,用待测试的500条微博特征向量分别与训练集中的3 500条微博特征向量实行余弦相似度计算得到3 500个相似度值,并取K=21(试验中得到)个最大值,对这21个分量情绪做相似度累加,累加和最大的情绪将作为预测情绪,准确率为51.6%。使用基于朴素贝叶斯-K最近邻集成算法,先通过朴素贝叶斯进行有无情绪的识别,在此基础上,对有情绪的微博,则用K最近邻算法进行细粒度的情绪划分,做法同上,准确率为60.6%。图2为分别使用支持向量机分类方法、K最近邻分类方法、以及朴素贝叶斯-K最近邻集成方法的情绪细粒度分类的效果。
由图2可以很直观地看出,基于朴素贝叶斯-K最近邻的集成方法对微博细粒度情绪分类的效果要明显好于其他两个方法,而其提升的幅度已然都超过了5%。
5 总结与展望
本文主要研究了微博细粒度情绪识别的集成方法,通过对大连理工构建的本体库进行针对于微博网络语言词库的扩展,以特征词为驱动,先由朴素贝叶斯分类的算法对微博进行有无情绪的二分类,而后针对有情绪的微博采用K最近邻算法对其进行细粒度情绪的划分。通过对两种分类算法的集成,充分发挥了每个分类算法各自性能上的优势,提高了对微博细粒度情绪的识别准确率。但是通过训练集数据的测试过程也看到了一定的不足,在整个算法中过度地依赖了情感本体库,而现实中的词语多是动态更新变化的,因而对于那些本身是有情绪的而不包含本体库中的词的微博,该算法效果并不明显。针对这些情况的后续处理,即是下一步要做的研究工作。
参考文献:
[1] 麦艺华.面向中文微博的社会网络分析及应用[D].广州:华南理工大学,2012.
[2] 周胜臣,瞿文婷,石英子,等.中文微博情感分析研究综述[J].计算机应用与软件,2013,30(3); 161-164.
[3] 刘欢欢,李寿山,周国栋,等.中文情绪识别方法研究[J].江西师范大学(自然科学版),2013,37(2):120-124.
[4] 徐琳宏,林鸿飞,陈建美.情感词汇本体的构造[J].情报学报,2008,27(2):180-185.
[5] GO A, BHAYANI R, HUANG L. Twitter sentiment classification using distant supervision[R]. Stanford :Stanford Digital Library Technologies Project, 2009
[6] AMAN S, SZPAKOWICZ S. Identifying expressions of emotion in text[M]// MATOUSEK V, MAUTNER P: Text, speech and dialogue, Springer:Lecture notes in computer science, ,2007,4629:196-205.
[7] QUAN Changqin,REN Fuji. Sentence emotion analysis and recognition based on emotion words Using Ren-CECps[J].International Journal of Advanced Intelligence,2010,2(1) :105-117.
[8] 庞磊,李寿山,周国栋.基于情绪知识的中文微博情感分类方法[J].计算机工程,2012,38(13):156-158.
[9] 孙凉艳.基于K近邻集成算法的分类挖掘研究[D].西安:西北大学,2010.