一种分层多算法集成的微博情感分类方法

时间:2022-08-19 09:34:21

一种分层多算法集成的微博情感分类方法

【摘要】目前主观信息情感分类常用的方法主要有基于知识工程和基于统计两类,其中基于统计的机器学习方法在效率上优于基于知识的方法,但单一的机器学习算法有各自的优缺点,难以胜任复杂的分类任务。本文将微博情感判别任务分层,在不同层次选择合适的机器学习算法,提出了一种多算法集成的微博细粒度情感分类方法。首先采用朴素贝叶斯(NB)分类器对微博进行有无情绪分类,然后采用AdaBoost集成算法对KNN进行集成训练出多个分类器,对有情绪微博基于训练出的多个分类器通过线性组合模型进行情感判别。实验结果表明,在文本分类任务中合理集成不同机器学习算法,较单一机器学习算法和基于情感词典的方法能够提高分类性能。

【关键词】微博情感判别;算法集成;机器学习算法;朴素贝叶斯;AdaBoost

1.引言

随着互联网的高速发展,“以用户为中心,用户参与”的开放式构架理念已深入人心,互联网用户逐渐由被动地接收网络信息向主动创造互联网信息迈进。门户网站、论坛、微博等网络媒介已经成为人们、传播和获取评论信息的重要平台。目前针对微博新兴社会媒体的情感分析已经成为研究热点,国内外学者对其开展了一系列的研究。国外一些学者采用基于语义的关联分析,基于情感词典和基于KNN、SVM等机器学习算法对twitter进行了大量情感分类的相关研究[2-5]。但由于中英文语言的差异,中文微博较英文微博具有更丰富的语义信息,上述方法直接应用到中文领域还存在一定局限性[6]。目前国内学者正积极针对中文微博的特点致力于中文微博情感分析方面的研究。文献[7]和[8]对不同的情感分类方法特征特征选择算法对微博情感褒贬分类进行了对比研究。文献[9]和[10]采用朴素贝叶斯算法分别对微博情感的正负分类问题进行了研究。上述研究基本上都局限在粗粒度的情感分类,粗粒度情感分类是指只对文本进行主客观分类或进一步将主观文本的情感区分成褒义和贬义两类,而在实际应用中,微博的细粒度情感(如“喜欢”、“高兴”、“悲伤”、“厌恶”等)更能体现用户对所关注事物的态度与更准确地反映用户对不同评价对象的情感。

机器学习算法对粗粒度情感分类具有较好的效果,而对细粒度情感分类采用单一的机器学习算法很难达到较高的性能。针对上述问题,本文将微博细粒度情感分类任务分解成有无情绪微博的粗粒度分类和对有情绪微博进行细粒度再分类两个子问题。首先提取文本词特征和词性特征,采用朴素贝叶斯算法对微博进行有无情感的初步划分,然后采用AdaBoost集成算法对NB简单分类器进行训练得到多个分类器,最后通过各分类器加权求和对微博进行7类细粒度情感分类。在NLP&CC2013公布微博数据集上,将本文方法与单一分类算法以及传统的基于情感词典的分类方法分别进行比较,实验结果表明本文提出的融合策略的效果较优。

2.微博情感本体库的构建

文本情感主要由情感词进行表征,但由于微博语具有达自由,存在大量变形词、新词和潜在情感词等特点,仅依靠现有情感词典对微博中情感表达词汇的覆盖率不高。本文以大连理工情感词典作为基础情感词典,其中共收录27476个词,每个词标注情感类别、情感强度等属性,并采用人工收集和程序自动获取两种方式对其扩展,构建了相对完善的情感本体库。

2.1 人工扩展

人工对情感本体库的扩展主要来源有两个方向,一是收集网络新词、热词;二是微博中常用的表情符号。新增词收集好后按基本情感词典的标注方法设置新增情感词的情感类别和强度,手工添加了如NND、MLGB、[哈哈]等情感词汇。

2.2 开方检验扩展

人工扩展虽然比较有针对性,但与数据样本的相关性不强,我们针对训练集,采用开放验证方法从中获取未收录的情感词。开方检验是一种通过比较实际值与理论值的偏差来确定理论正确与否的数理统计方法,将训练集中的词t看作是一个随机变量,将每个情感类别c看作另一个随机变量,如果t和类别c独立说明词t对类别c没有表征作用,即无法根据t出现与否来判断一篇文档是否属于c这个分类。通过假设词t与类别c不相关,计算词t与类别c的开方值,则开方值越大假设越不成立,即词t越能表征类别c。如表1所示:

表1 开方检验扩展情感词示例

特征选择 1.属于

“悲伤” 2.不属于

“悲伤” 总计

1.包含“大哭” A B A+B

2.不包含“大哭” C D C+D

总数 A+C B+D

微博中包含“大哭”的概率是(A+B)/N,属于“悲伤”类的微博数为A+C,所以在这些微博中,应该有E11=(A+C)(A+B)/N篇包含“大哭”这个词(数量乘以概率)。但实际属于“悲伤”又包含“大哭”的微博数是A,其方差为D11=(A-E11)2/E11 ,同样方法计算出D12、D21、D22的值,则可以公式(1)计算词t与类别c的开方值。

(1)

在每类情感c中按得分挑选表征作用较强的词加入基础词典,即可实现情感词典自动扩展。

3.微博情感判别

不同于新闻、产品评论,微博属于短文本,长度有最大字数限定,结构差异性大;交互性强、用语不规范偏口语化,特征关键词少、存在大量变形词和网络新词。除了分类算法以外,为分类文本作处理的特征提取算法也对最终效果有巨大影响[11],本文在分类之前先从词和词性两个方面进行特征提取构建朴素贝叶斯的特征集合。

3.1 词特征和词性特征选择

将数据样本经过分词标注、去停用词等预处理后,作为输入参数输送给特征选择算法。用特征选择评价标准去除那些不相关或冗余的特征,并保留那些满足判定条件的特征,以提高分类器的性能,并达到降维的目的。具体方法如下:

(1)词特征选择:先统计词W在有情感微博中的出现频率WFreq有和在无情感微博中出现的频率WFreq无,并根据公式2提取特征词。

(2)

WFreqi分别表示WFreq和WFreq无,对应WFreqi'则分别为WFreq无和WFreq有,当Select(w)=Ture则提取W作为WFreqi对应情感的特征词。通过对提取的特征词统计分析发现当阈值k=4,n=20时,提取的特征集具有最好表征作用。

(2)词性特征选择:词性在主观表达和客观表达中出现的频率是有很大差别,语气词、感叹词、表情符号等在有情绪的微博中出现的频率较高,对情感微博具有较高的表征作用。我们对词特征选取后剩余词的词性特征进行分析,其步骤如词特征提取一致。

综上,特征选择具体选择算法描述如下:

图1 朴素贝叶斯特征选择流程

3.2 基于朴素贝叶斯的有无情绪分类

朴素贝叶斯分类算法是一种基于概率的学习算法,在待分类项出现的条件下求解已知类别集合中各类出现的概率。将提取的特征集合与样本集合及类别标签组成新的数据集,提供NB分类器,训练分类预测模型。将微博文本表示为,类别集合为,在特征相互独立的情况下,其分类算法公式为:

(3)

其中cj分别表示cy和cn,P(cj)是类别cj的先验概率,P(wi|cj)是特征Wi在类别cj条件下的后验概率,先验概率是根据训练语料中有无情绪两类微博分别所占的比例统计所得。

本文采用多项式贝叶斯分类模型进行有无情绪分类,其具体步骤为:首先构建训练集微博的贝叶斯分类特征集合,然后统计有无情绪微博的先验概率和计算特征集合中每个特征属性分别在有无情绪两个类别中的条件概率,训练得到分类器;最后根据公式(3)计算每个待分类样本分别在有无情绪类别中可能出现的概率P(有)和P(无),以值较大的为待分类微博所属的情感类别。

3.3 基于AdaBoost+KNN实现细粒度分类

单一的分类算法通常存在各自的缺陷,如K-邻近算法(KNN)算法处理大规模数据时效率低下,C4.5对数据集中的奇异数据比较敏感,朴素贝叶斯算法(NB)的独立性假设通常不成立等。而集成算法可以综合多个分类器的结果提高繁华能力,我们采用AdaBoost集成分类算法对KNN进行串行训练,得到多个分类器,对微博进行多标签情感分类,由多个分类器采用投票的方式决定最终的分类结果,其具体流程为:

(1)对训练集S的每个样本赋予权值,初始权值为1/N,构建一个权值向量。

(2)在训练集S上进行训练,得到一个KNN分类器。

(3)计算训练得到的分类器的错误率ε,ε的计算公式为:(错误分类的样本数)|(所有样本数)。

(4)根据分类的错误率ε为每个分类器分配一个权重,。

(5)分别采用和两个公式对分对和分错的样本进行权重调整。

(6)进入下一次迭代,直到训练错误率达到要求或者分类器数目达到指定个数为止。

(7)用各分类器单独计算待测样本的类别,然后对各分类结果按权重计算最终结果。

AdaBoost算法通过为每个样本记录赋予权重,所有样本的初始权重相等均为1/N,而后随着分类的迭代,样本的权重逐渐被调整,分错样本的权重逐渐增加,分对样本的权重逐渐降低,使得分类器朝着更有利于易错样本的方向演化。每次调整样本权重时,均需要对权重进行归一化处理,保证所有样本权重之和为1。错误率最终控制在可接受范围,本文通过实验确定其可接受阈值为0.05,迭代次数阈值为21。将训练集经过有无情绪分类后将有情绪微博以规定的格式输入到AdaBoost训练程序中,训练得到多个分类器通过所有分类器加权求和对待分类微博进行多类别情绪识别。

4.实验结果分析

本文的实验数据来自2013年CCF中文信息技术专委会学术年会(NLP&CC2013)中微博情绪识别评测任务,包含4000条已标注情绪微博,随机取3000条作为训练集,剩余的1000条作为测试集。本文设计了两组对比实验,分别采用单一的分类算法NB与直接使用情感词典方法与本文方法进行对比分析,多标签NB分类器与有无情绪NB分类器的构造一致,只是类别集合为,Ci对应情感本题库中的七类情感。微博细粒度情感判别使用宏平均(Macro)和微平均(Micro)的准确率、召回率和F 值作为评价指标。各方法具体结果如表2所示。从实验结果看,机器学习算法又要优于直接基于情感词得分求和的方法,AdaBoost+KNN的方法要比单一使用NB的判别方法在性能有较大的提高。说明将微博多情感判别分层实现,在不同层次上选择合适的学习算法实现多种算法的有效集成,确实能突出各算法的优点,避免单一使用某一算法的不足。但由于实验的训练数据有限加上情感本题库的构建不够完善,使得本方法对微博多标签情感分类的评价指标还不是很理想,我们在对更多的方法进行集成对比找出最适合的搭配。

5.结论

本文采用朴素贝叶斯算法先对微博进行有无情感判别,再通过集成算法AdaBoost对KNN进行训练得到多个分类器,进行加权求和确定有情感微博的情感类别,实现了微博情感的细粒度分类。将分层融合的方法与传统基于词典的方法和单一的机器学习算法结果进行了分析比较,结果表明本文方法要优于单一的分类算法和传统基于情感词典的方法。总体来看,各项评价指标还不够理想,我们将在情感本体库扩展、特征选择、分类算法搭配选择上做更进一步的探究。

参考文献

[1]赵妍妍,秦兵,刘挺.文本情感分析[J].软件学报,2010: 1834-1848.

[2]O'Connor B,Balasubramanyan R.From tweets to polls:linking text sentiment to public opinion time series[C]//Proceedings of the International AAAI Conference on Weblogs and Social Media,Washington DC,2010:1-8.

[3]Jansen B J,Zhang Mimi.Twitter power:tweets as electronic word of mouth[J].Journal of the American Society for Information Science and Technology,2009:2169-2188.

[4]Si Jianfeng,Mukherjee A,Liu B,et al.Exploiting topic based Twitter sentiment for stock//Proceedings of the 50st Annual Meeting of the Association for Computational Linguistics.Jeju Island, Korea,2013:115-120.

[5]Barbosa L,Feng J.Robust sentiment detection on twitterfrom biased and noisy data//Proceedings of the 23rd International Conference on Computational Linguistics.Beijing:Tsinghua University Press,2010:36-44.

[6]周胜臣,瞿文婷,石英子,施询子,孙韵辰.中文微博情感分析研究综述[J].计算机应用与软件,2013(3):161-164,181.

[7]刘志明,刘鲁.基于机器学习的中文微博情感分类实证研究[J].计算机工程与应用,2012(1):1-4.

[8]韩忠明,张玉沙,张慧,万月亮,黄今慧.有效的中文微博短文本倾向性分类算法[J].计算机应用与软件,2012 (10):89-93.

[9]林江豪,阳爱民,周咏梅,陈锦,蔡泽键.一种基于朴素贝叶斯的微博情感分类[J].计算机工程与科学,2012(9):160-165.

[10]杨武,宋静静,唐继强.中文微博情感分析中主客观句分类方法[J].计算机工程与科学,2013(1):51-56

[11]寇苏玲,蔡庆生.中文文本分类中的特征选择研究[J].计算机仿真,2007(3):289-291.

本文属南华大学创新团队建设基金资助项目(项目编号:NHCXTD16)。

作者简介:左荣欣(1980―),女,辽宁铁岭人,南华大学工程硕士,湖南高速铁路职业技术学院讲师、工程师,研究方向:计算机软件、信息系统集成。

上一篇:关于大学生移动学习的研究与探索 下一篇:善良是幸福的通行证