潘艳茜,姚天昉
(上海交通大学 计算机科学与工程系,上海 200240)
近年来,微博逐渐成为人们表达自己看法,交流意见的平台。微博中包含的大量主观性信息在许多应用领域有很大的潜在价值。然而人工浏览这些信息成本高,效率低。所以,针对微博文本的情感分析成为国内外的一个研究热点。与传统的在产品评论等领域的情感分析相比,由于微博主题包罗万象且内容简短,对其进行情感分析更加困难。目前国外有关英文Twitter①① https://twitter.com/的情感分析研究已有较为成熟的成果,但基于中文微博的相关研究工作相对较少。中文中经常会使用比喻、反讽等修辞手法表达情感,使得单纯用情感词典或语义规则的方法并不能准确地对其情感进行判断。
情感分析的第一步通常是进行主客观文本分类,主客观分类要比情感倾向性(正面、负面)分类更具有挑战性,因为有时区分一篇文本是否包含主观观点的界线要比区分一篇含有观点的文本是正面还是负面评价更加模糊。此外,由于本文研究的微博汽车领域还包含大量企业宣传的信息,本文不仅仅要进行主客观分类,还需要区分用户发出的观点句和企业发布的官方宣传。
本文选取了微博汽车领域的文本作为实验数据集,其中的观点句指用户对特定品牌的汽车或其属性评价的句子。例如,微博“最近想买车,12万左右的预算,自己看上了新福克斯1.6AT舒适型。我觉得福克斯操控和安全,最担心K3漆薄皮儿薄,老婆却钟情它的配置和外观。”中第一句为非观点句,第二句为观点句。一些官方微博发布的新闻和新车推广虽可能包含对汽车的评价,但均不属于本文定义的观点句。如“#福特•历史# 2004年巴黎车展上福特发布了第二代福克斯,为了延续上代车型良好操控性的传统,第二代福克斯对车身刚性又做了加强。”这条微博虽然含有“良好操控性”、“加强”这些词,但属于官方微博为新车发布做的宣传,不属于观点句。
本文对于微博汽车领域的文本进行用户观点句识别,取得了如下研究结果: 提出了用户观点句识别问题,对过滤官方微博的宣传和广告进行了探究;比较了不同特征集合对观点句识别性能的影响,实验结果表明评价词特征和部分微博相关特征使得分类器的F值提高了1%以上;对于微博汽车领域文本中非观点句远远多于观点句的问题,本文利用汽车评论语料补充了训练语料,在相同的测试数据上测试表明,使用汽车评论和微博做训练数据的分类器的F值比只用微博做训练数据的方法高4%左右。
主客观文本分类即判断一篇文章、一句话或一个词是主观的还是客观的。早期的研究表明主观性文本与形容词有很大关系[1],尤其是带有感情色彩的形容词和形容词比较级[2],并通过计算候选词与形容词词典中的词的相似性来抽取主观性形容词,从而判断文本的主客观性[3]。主客观分类通常采用监督学习算法。如2003年,Riloff等人利用主观性名词、话语特征和主观线索建立朴素贝叶斯分类器(Naïve Bayes classifier)[4]。但监督学习的弊端是需要大量人工标注的数据,于是2005年,Riloff和Wiebe研究了如何在未标记的文本上建立主客观句分类器,他们首先利用基于规则的分类器建立训练语料,再利用Naïve Bayes模型和自学习算法训练分类器,所达到的性能与监督学习的分类器相当[5]。
对于中文的主客观分类研究,姚和彭在2007年探究了人称代词、不规范的标点符号等特征对篇章级主客观文本分类的作用[6]。2009年,姚和张提出了仅依赖于正例的半监督学习的主观性文本分类方法[7]。2011年COAE评测(Chinese Opinion Analysis Evaluation)中的一项任务为中文观点句抽取,最好结果的F值为0.583 4。该最好结果首先构建领域相关的情感词典,然后利用该词典筛选出观点句[8]。
微博情感分析是近几年随着社交网络的发展而产生的新的研究领域。除传统文本分类所用的特征外,微博中还含有一些特殊的对情感分类有所帮助的特征,如tweet标签(hashtag)、链接和表情符号等[9-10]。2011年,Jiang等人加入了与情感对象相关的特征来判断tweet的情感,并利用转发、回复,同一作者发布的微博等信息用图模型进行优化[11]。2012年,Liu和Li提出一种基于表情符号的Twitter情感分类模型,将Twitter上大量带有表情符号的tweets与人工标记的数据有机结合,共同训练分类器[12]。
目前关于中文微博情感分析的相关研究还比较少。谢等人在2012年提出了基于SVM(Support Vector Machine)的层次结构的多策略方法进行微博情感分类[13]。2012年由中国计算机学会中文信息技术专业委员会(CCF TCCI)举办的中文微博情感分析评测中,第一个任务为观点句识别。最好结果的F值可达0.784,该系统选用了基于VFI(Voting Feature Interval)分类器的方法,抽取了词性、标点符号、评价词个数等特征。
本系统选取汽车相关微博和汽车评论作为语料,首先对语料进行人工标注,然后利用现有工具对数据进行分词、词性标注和语法分析等预处理。本文共抽取出四类特征进行基于SVM分类器的分类,分别为: 单词、评价词、与评价对象有特定语法关系的词,以及微博相关的特征。其中评价词和评价对象由种子词利用语法规则扩展得到。整体结构如图1所示。
图1 系统结构
3.2.1 词语特征
本文将句子中所有词语的TF·IDF(term frequency-inverse document frequency)值作为特征。TF·IDF反映了一个词在数据集中的重要性,其计算公式如式(1)~(3)所示。
其中fij为词i在句子j中出现的次数,ni为有词i出现的句子数,N为总句子数。
3.2.2 评价词特征
基于领域内评价词词典的特征通常对判断句子的主客观性起到很大作用,故本文将句子中包含的领域评价词个数作为一维特征。
在抽取该特征之前,需要先构建领域内评价词词典。本系统采用了文献[14]中的方法,先手动选取少量评价词和评价对象种子词,再在所有观点句语料上根据评价词之间、评价对象之间以及评价词和评价对象之间的语法依赖关系扩展出符合微博汽车领域语料的评价词词典和评价对象词典。该方法只考虑词与词之间的直接依赖关系,即词A直接依赖于词B,或词A和词B都依赖于词C。用于抽取评价词和评价对象的语法规则如表1所示。
表1 情感词和评价对象抽取规则
其中s(或f)表示被抽取出的评价词(或评价对象),{S}(或{F})为已知的评价词(或评价对象)集合。SS-DepF表示S和F符合依赖关系S-Dep(S, F)。POS(S)(或POS(F))表示S(或F)的词性。{JJ}包含JJ和VA(形容词),{NN}包含NN(名词)、DC(数字)和NR(专有名词),{CONJ}为conj(连词),{MR}包括nsubj(主谓)、dobj(动宾)、amod(形容词性修饰语)和pnmod(名词性后置修饰语)等关系。每当有新词符合这四种规则,则将该词添加进评价词词典或评价对象词典,循环运行直至没有新词再加入词典。
3.2.3 与评价对象有语法关系的词语特征
除利用词汇信息外,句子的语法结构特征也被证明在情感分析问题上十分有效。本文将与评价对象有语法依赖关系的词也作为分类器的特征,评价对象来自上节构建的评价对象词典。具体的提取特征的规则如下所述:
• 如果词w是动词,评价对象t是w的宾语,则产生一个D_w_arg1特征。例如,“我觉得福克斯操控和安全,最担心K3漆薄皮儿薄,老婆却钟情它的配置和外观。”这句话中,针对“外观”这个评价对象,可产生“D_钟情_arg1”的特征。
• 如果词w是动词,评价对象t是w的主语,则产生一个D_w_arg2的特征。例如,“试乘了福克斯,感觉动力不错,外形也挺好,就是内饰太难看了。”这句话,对于“动力”这个评价对象,可产生“D_不错_arg2”的特征,对于“外形”,可产生“D_好_arg2”的特征,关于“内饰”,可抽取出“D_看_arg2”的特征。
• 如果w是形容词或名词,评价对象t是w所修饰的中心词,则产生一个D_w_arg3的特征。例如,“我实在舍不得轩逸的舒适空间和低油耗,可它操控性也确实不如福克斯。”,针对评价对象“空间”,可产生“D_舒适_arg3”的特征,对于“油耗”,则产生了“D_低_arg3”的特征。
• 如果w是副词,并且评价对象t是w所修饰的动词的主语,则产生D_w_arg4的特征。例如,“20来万的越野,还是先推荐福特新出的翼虎,操控性出色,舒适性也挺好。”,对于评价对象“舒适性”产生了“D_也_arg4”和“D_挺_arg4”两个特征。
3.2.4 与微博相关的特征
由于微博除文本之外还包含一些微博特有的信息,如用户类型、微博类型(是否为原创)、链接信息、表情符号等,通过观察,本系统选取了一系列与微博特点相关的特征:
• 用户类型。新浪微博共有四类用户,分别是个人认证用户(红V)、机构认证用户(蓝V)、达人和普通用户。其中机构认证用户发出的信息最有可能是汽车厂商或4S店对新车的宣传和广告,故本文将是否为机构认证用户作为一个特征。
• 微博类型。此处微博类型指该微博是原创的还是转发的。通常用户评价都来自原创微博,而被转发的微博通常是基于事实的描述。
• 链接数和图片数。非用户观点句通常含有链接和图片。
• 转发数、回复数和赞的数量。直观来讲,客观的微博传播范围比较广,所以转发和回复较多,而主观的微博(若不是由粉丝众多的用户发出的)传播范围较小,转发和回复均不会太多,故本本文将转发数、回复数和赞的数量分别作为三个特征。
• 微博长度和句子长度。通过观察微博数据发现,客观性微博的字数一般要比主观评价的微博字数要多。在统计了3 063条训练数据(2 602条非观点句、461条观点句)后得出含有观点句的微博的平均长度为95字,不含观点句的微博平均长度为108字,观点句平均含45字,非观点句平均39字。说明微博长度和句子长度可作为区分观点句和非观点句的依据。
• 表情符号。将句子中所有被中括号包含的词作为表情符号提取出来,作为特征。例如,“新福克斯操控性很好,新天籁驾驶舒适,速腾马上要出的GLI很偏运动,马6睿翼操控运动元素齐聚,锐志不说了后驱车[嘻嘻]”将产生“E_嘻嘻”的特征。
本系统用于用户观点句识别的所有特征总结如表2。
表2 用户观点句识别特征集合
由于汽车领域的微博中包含大量的企业宣传信息,真正的用户评价非常少,训练集中的非观点句数量远远多于观点句(比例为6∶1左右)。前人的研究表明训练数据的不平衡对分类器的性能有很大影响,分类结果将偏向于训练语料中较多的那一类,而训练语料中较少的那一类的分类效果很差。由于本文的主要目的是找出观点句,所以应侧重于提高观点句那一类的分类性能。于是,本文利用了新浪汽车频道中的用户评论信息,将所有用户评论中的句子作为用户观点句训练语料加入训练集合,使得训练集中的观点句与非观点句达到平衡。由于用户评论不含有用户类型、链接等具有微博特点的特征,本文将微博观点句数据对应特征的平均值赋给用户评论数据。
本文之所以将新浪汽车频道中的用户口碑直接作为观点句,一是因为其句子特征与微博句子比较像,都是短句且都包含一些非规范词。例如,这条评论: “油耗低,车内驾乘空间较小。我是1.6AT自动舒适型,油耗确实低,我现在是加的97#汽油,平均每公里油耗0.63元左右,车子暂时没有什么毛病”。二是因为用等量的用户评论数据代替微博观点句做训练集,训练出的分类器效果相似,说明该数据符合微博观点句的特征。表3为分别用260句微博用户观点句和260句用户评论句与260句微博非观点句进行训练得出的结果。
表3用用户评论句代替微博用户观点句在训练集上进行十倍交叉验证的效果比较
训练集组成PrecisionRecallF微博观点句+微博非观点句0.8060.8020.801汽车频道用户评论+微博非观点句0.7980.7960.796
在最后的实验中,本系统先选取等量的人工标记的微博观点句和非观点句作为训练数据进行训练,再加入等量未人工标记的用户评论句和人工标记的微博非观点句进行训练。
实验中所用到的数据集来自新浪微博*http://weibo.com/和新浪汽车频道*http://data.auto.sina.com.cn/car_comment/,包括福克斯、新宝来和思域三个车型。数据规模为1 000条微博,1 000条汽车评论。去掉与汽车领域无关的句子和重复的句子后,还剩余3 063个微博句子,2 141个汽车评论句子。本文对3 063条微博句子进行了人工标注,观点句和非观点句的数据分布情况如表4所示。
表4 观点句与非观点句数据分布
本系统在对句子进行分词之前做了如下预处理工作:
• 将大写的英文字母全部替换为小写,将全角字符替换为半角字符,删除多余的空格,为分词做准备。
• 将“。。。”、“。。”等不规范的省略号替换为ETC。
• 将微博中出现的“@用户名”全部替换为USERNAME。因为用户名通常与微博内容没有关联,对含有用户名的句子进行分词和语法分析会产生错误,故将用户名替换为USERNAME。
本文中采用的观点句识别的评价标准为准确率(Accuracy),正确率(Precision),召回率(Recall)和F值(F-score),计算公式如式(4)~(7)所示。
4.3.1 不同特征集合对观点句识别效果的影响
在本实验中,仅使用微博语料作为训练和测试数据。为了使训练数据中观点句与非观点句平衡,本文选取了461句非观点句与461句观点句构成训练集。在该训练集上做10倍交叉验证,结果如表5所示。
表5 使用不同特征集合时观点句识别效果
续表
从表5中可以看出,评价词个数、用户类型、链接数和图片数的特征对分类器的性能有较大提高。加入与评价对象有语法关系的词、微博类型、句子长度和表情符号的特征使得分类器的F值稍有提高。而加入转发数、回复数和赞数以及微博长度的特征却使得分类器性能下降。究其原因,转发、回复和赞的数量除跟微博的热门程度有关,还跟微博抓取和发布的时间差有关,发布时间越长的微博,转发数也会越多。所以这个特征并不能很好地反映微博的主客观性。而微博长度不能明确反映每句话是否含有观点,相比之下句子长度的特征效果就比较好。最终,本文选取了所有使分类器的F值有所提高的特征,即最后一栏的有效特征,使得分类器的F值比只用词语做特征时提高了1.2%。
4.3.2 汽车评论数据对观点句识别的作用
为考察汽车评论语料对微博中观点句与非观点句分类的作用,本文将上述922个句子(观点句非观点句各461句)作为微博语料,将剩余的2 141句微博非观点句与2 141句汽车评论作为补充训练语料。每次随机从微博语料中抽取数量相等的观点句和非观点句(各X句)与补充训练语料一起作为训练数据,将其余(922-2X)句句子作为测试数据。随机抽取并测试10次,结果取平均值。抽取不同数量的微博训练数据得到的F值和准确率分别如图2和图3所示。
图2 汽车评论数据对观点句识别的作用(F值)
图3 汽车评论数据对观点句识别的作用(Accuracy)
从图2和图3中首先可以看出,随着训练数据的增加,分类器的性能越来越好。这是监督学习的一个特点,但获取大规模的人工标注的数据集又很困难,尤其是在数据不平衡的情况下。而加入汽车评论做训练数据后,即使人工标注的数据量很小,也可使分类器的性能稳定在较好水平。使用800条微博训练数据与汽车评论数据一起训练时,分类器的F值和准确率分别提高了4%和5%。
本文对识别微博汽车领域文本中的用户观点句进行研究,提出结合词语、评价词、与评价对象有语法依赖关系的词以及微博相关特征的基于SVM分类器的方法,并利用新浪汽车频道的汽车评论语料解决了微博中用户观点句和非观点句不平衡的问题。实验表明评价词个数、用户类型、链接数和图片数的特征对分类器的性能提高帮助最大。利用这些特征使用户观点句识别的F值达到86.2%。当微博训练语料较少时,加入用户评论数据可大幅度提高分类器效果,使得分类器的F值和准确率分别提高4%和5%。
[1] Bruce R F, Wiebe J M. Recognizing subjectivity: a case study in manual tagging[J]. Natural Language Engineering, 1999, 5(2): 187-205.
[2] Hatzivassiloglou V, Wiebe J M. Effects of adjective orientation and gradability on sentence subjectivity[C]//Proceedings of the 18th conference on Computational linguistics-Volume 1. Association for Computational Linguistics, 2000: 299-305.
[3] Wiebe J M. Learning subjective adjectives from corpora[C]//Proceedings of the National Conference on Artificial Intelligence. Menlo Park, CA; Cambridge, MA; London; AAAI Press; MIT Press; 1999, 2000: 735-741.
[4] Riloff E, Wiebe J, Wilson T. Learning subjective nouns using extraction pattern bootstrapping[C]//Proceedings of the seventh conference on Natural language learning at HLT-NAACL 2003-Volume 4. Association for Computational Linguistics, 2003: 25-32.
[5] Wiebe J, Riloff E. Creating subjective and objective sentence classifiers from unannotated texts[J]. Computational Linguistics and Intelligent Text Processing, 2005: 486-497.
[6] 姚天昉, 彭思崴. 汉语主客观文本分类方法的研究[C]//第三届全国信息检索与内容安全学术会议论文集. 2007 年.
[7] 姚天昉,张鑫. 一种基于正例的汉语意见型主观性文本分类方法. 第十二届中国少数民族语言信息处理学术研讨会论文集. 拉萨, 2009年7月.
[8] 许洪波, 孙乐, 姚天昉. 第三届中文倾向性分析评测 (COAE2011) 总结报告[C]. 第三届中文倾向性分析评测会议, 山东, 2011.
[9] Barbosa L, Feng J. Robust sentiment detection on twitter from biased and noisy data[C]//Proceedings of the 23rd International Conference on Computational Linguistics: Posters. Association for Computational Linguistics, 2010: 36-44.
[10] Davidov D, Tsur O, Rappoport A. Enhanced sentiment learning using twitter hashtags and smileys[C]//Proceedings of the 23rd International Conference on Computational Linguistics: Posters. Association for Computational Linguistics, 2010: 241-249.
[11] Jiang L, Yu M, Zhou M, et al. Target-dependent twitter sentiment classification[C]//Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies. 2011, 1: 151-160.
[12] Liu K L, Li W J, Guo M. Emoticon smoothed language models for twitter sentiment analysis[C]//Proceedings of the twenty-Sixth AAAI Conference on Artificial Intelligence. 2012.
[13] 谢丽星, 周明, 孙茂松. 基于层次结构的多策略中文微博情感分析和特征抽取[J]. 中文信息学报, 2012, 26(1): 73-83.
[14] Qiu G, Liu B, Bu J, et al. Expanding domain sentiment lexicon through double propagation[C]//Proceedings of the 21st international jont conference on Artifical intelligence. 2009: 1199-1204.