APP下载

基于词典和规则集的微博情绪分类方法研究

2022-01-09彭雪淳

关键词:表情符号博文词典

华 蓓,彭雪淳

(广西大学 计算机与电子信息学院,广西 南宁 530004)

0 引言

新浪微博作为国内访问量最高的社交平台之一,凭借其简洁、互动性强等特征,成为网友们获取和发布信息的重要平台.研究微博文本的情绪分类对于把握社会人群或指定用户的情感动态起到了至关重要的作用,正确而有效的研究结果对于市场分析和预测、舆情监控等方面具有着重要参考价值.

现有的文本情绪分类方法可分为两种:基于情绪词典的分类方法以及基于机器学习的分类方法.在对中文文本进行情绪分析的研究中,王世泓[1]提出了一种可以有效提高情绪识别准确率的情绪词典扩展方法.郑燕珍[2]以Word Net-Affect词典作为基础,搭建了一个性能较高、覆盖较广的中文情绪词典,并构建了一细粒度的中文情绪表达常识库.蒋盛益等人[3]使用深度学习工具word2Dec,计算文本向量空间的相似度,并使用迭代的方式实现了词典的增量式扩展.李继东[4]提出通过筛选候选词对用于扩充词典的SO-PMI算法进行改进.陈欣等人[5]提出了一种融合基于词典和规则分类方法与基于深度学习的分类方法的情绪分析模型.石天一[6]针对于Twitter的多标签标注进行了研究,提出了一种能够自动标注短文本情绪的方法.刘钏[7]针对文本情绪分析任务,提出一种以自注意力机制为基础的双向长短期记忆算法框架.张璐[8]关注标注语料匮乏问题,面向微博文本数据,进行了情绪分类方法研究.

传统的以词典为核心的情绪分析方法仅仅考虑了不同类别情绪词数目和权重的叠加,而忽略了语义规则在文本分析中起到的关键作用;以机器学习算法为基础的情绪分析在进行特征训练时考虑了语境,但却过于依赖目标语料,且繁琐的人工标注为研究人员带来了不小的困难,从而导致训练模型的适用性较差.

本文以情绪词典和语义分析规则集为基础,通过扩充情绪词典完善基准情绪词和改进情感分类策略,得到较为完备的情感分类模型,基于该模型对中文微博文本进行情感分类.

1 情绪词典构建

在基于词典的情绪识别当中,情绪词典的覆盖率、情绪词的完备度在很大程度上决定了情绪分类的准确率.本文选取目前研究领域中几个较为知名的权威性词典,将它们按照统一的格式和标准进行整合,再通过去重等操作,整理得到一个基础中文情绪词典.由于微博文本具有文字与表情符混合使用、涵盖大量网络热词等特征,本文对表情符号和网络词汇进行了收集、整理和标注,用以辅助基础情绪词典进行判断,以增强适配性.同时,还收集了程度副词词典、否定词词典以及转折连词词典,丰富词典的多样性.最后,使用SO-PMI算法[9]对中文基础情绪词典进行了扩充,增添了一部分未被情绪词典所收录的词汇,扩大情绪词典的涵盖率.情绪词典主要的构成成分如图1所示.

图1 情绪词典的主要构成成分

1.1 中文基础情绪词典构建

本文所选取的原始词典包括知网发布的情感分析用词语集HowNet[10]、台湾大学发布的简体中文情感极性词典NTUSD[11]、清华大学李军发布的中文褒贬义词典TSING[12]、大连理工大学发布的中文情感词汇本体库DUTIR[13]、中文版语文探索与字词计算词典C-LIWC[14]和网络发布的情绪词典HelloNLP[15].其中DUTIR词典和C-LIWC词典情绪分类方式与其他词典不同.

按照HowNet的情绪分类方式,对上述词典进行整理和合并,将所有词典中的情绪词分成积极和消极两类.分别针对两类情绪词进行去重合并,最终得到16 617个积极情绪词和22 239个消极情绪词,初步完成中文基础情绪词典的构建.

1.2 表情符号词典构建

相对于文本,表情符号可以更直接地传达出用户所要表达的情绪.本文选择新浪微博平台中用户使用较多的175个默认表情符号以及系统输入法中的241个emoji进行情绪类别分析,共计416个表情符号.

基于基础情绪词典中收录的词汇可以得到表情符号的情感极性,从而构建出表情符号词典.对于微博表情符号,按照对应文本形式内容,在中文基础情绪词典中进行查找.查找成功则以其在中文基础情绪词典中的情绪标注作为该表情符号的情绪标注;否则,对其情感分类和情绪强度进行人工标注.

1.3 网络词汇词典构建

新浪微博是一个流动的网络社交平台,网络词汇在微博当中占有很大的比重,搜集和标注网络词汇,并将其加入基础情绪词典中,对于判断微博文本的情绪类别具有很大的帮助.

本文通过网络爬虫技术收集了500个网络词汇以及对应的解释,作为判断词汇情感分类的依据.构建网络词汇词典时,首先对网络词汇解释进行分词,在基础情绪词典中查找有无相应的词汇,以判断该网络词汇的情感分类.若同一解释中包含多个情感类型词汇,则通过各类情感词汇的数目来判定该网络词汇最终的情绪倾向;对于未能在基础情绪词典中匹配到情绪分类的网络词汇,则人工对其进行分类.

1.4 程度副词词典构建

在文本的语义结构中,程度副词常常被用于修饰情绪词.不同的程度副词对于情绪词的修饰作用不同,可能使情绪词的情感强度增强、减弱,甚至逆转情感极性.

本文对程度副词设置了不同的权值,按照对情感强度的影响力度由强到弱分成most、very、more、ish、insufficiently、over 共6个等级,对应权值分别设置为6、4、2、0.7、0.2、-0.5.其中情感强度over,表示“过于”,此类程度副词在某种程度上会对情绪的极性起到反转作用,故权值设置为-0.5.

1.5 否定词词典和转折连词词典

在文本的语义结构中,否定词也会被用于修饰情绪词.当情绪词前方出现否定词时,情绪词的情感极性会发生反转.本文整理和收录的否定词如“从未”“从不”“不可”等共55个,构成否定词词典

当文本中出现转折连词时,转折连词后面的句子所蕴含的情绪更能反映文本的整体情绪.因此搜索和识别转折连词并加强位于转折词后面的句子的情感权值就显得尤为重要.本文收集整理的转折连词如“但”“依然”“岂料”等共20个,构成转折连词词典.

2 基于SO-PMI算法的情绪词典扩展

由于新兴词汇的不断涌现,且词典的规模和容量受限,有大量的情绪词未被收录进基础情绪词典.在本文的研究中,采用了SO-PMI算法对基础情绪词典进行扩充.该算法通过计算目标词与基准词的共现概率来判断目标词是否能被收录为情绪词.

传统的SO-PMI算法对短文本进行处理时可能会出现以下两个缺点:一是目标词和单个情绪词在同一条微博中共同出现的频率过少,导致点互信息(PMI)的计算无意义,严重影响算法性能.二是仅仅考察一对词语之间的共现概率时,往往可能会存在偏差.

为了提高精度,弥补上述不足,本文对SO-PMI算法进行改进,具体措施如下.

1) 引入Laplace平滑因子以规避没有意义的点互信息计算.

将情绪分为积极、中性和消极三类,其中具有倾向性的情感类型为积极和消极,对应情绪基准词集合P1和P2.针对每个基准词集合Pi={p1,p2,….,pm} (i=1,2),m表示第i类情绪基准词个数,这里选取了积极和消极基准词各50个.为提高匹配精度,从表情符号词典中分别选取积极和消极表情符号各10个加入基准词典,辅助判断目标词的情绪类别

对于待计算情感强度值的目标词集合C,其中单个目标词表示为cj(j=1,2,…,n),cj与基准词之间的PMI计算公式如(1)所示[16].

(1)

其中,p(cj)、p(pi)分别表示目标词cj和基准词pi在文本中出现的概率,p(cj,pi)表示目标词与基准词在文本中共同出现的概率.

在计算概率时,为避免单个词汇在一条微博中多次出现而影响结果,采用文档频率进行近似计算,整理后得到PMI计算公式如(2)所示.

(2)

其中,count(cj,pi)、count(cj)、count(pi)分别代表目标词cj和基准词pi共同出现的微博文本数量、包含目标词cj的微博文本数量以及包含基准词pi的微博文本数量,q表示参与计算的微博文本总条数.

由于当目标词和基准词出现在同一条微博中的次数为零时会导致PMI值无意义,故在共现概率计算公式中引入Laplace平滑进行改进,如(3)所示.

(3)

得到PMI公式如(4)所示.

(4)

2) 引入多点扩充,解决目标词语与单个基准词共现概率过低的问题[17].

将每一情绪类别下的情绪基准词都整合成一基准词集合.对于每一个目标词,计算其与集合中每一个基准词的PMI值,最终综合集合整体的PMI值,得到目标词最终所属的情绪类别.(5)为单一集合下SO-PMI均值计算公式.

(5)

根据(5)可以得到目标词cj与基准词集合Pi(i=1,2) 之间的SO-PMI平均值.以平均值中最大项所对应的基准词所在集合的情绪类型作为目标词的情绪分类.

3 融合词典的语义分析规则集

传统的以词典为核心的情绪分类中,文本的情感强度仅仅通过情绪词数目的累加计算得到,忽略了文本中语义规则对于情绪词所产生的影响.另外,由于微博文本的长度较短,不具备丰富的上下文环境,因此在利用考虑上下文环境和句法修辞这一方法对文本进行情绪类别的划分时,所得到的效果往往不尽人意.针对上述缺点,本文采用情绪词典和语义规则集相结合的方式对微博文本进行情绪类别划分.

3.1 情绪分析语义规则

对微博文本进行分词后得到分词列表,然后以列表中情绪词为核心,在微博文本中查找情绪词前面或者后面出现的修饰词,根据查找的结果构成情绪词组合.

通过对情绪词的组合方式进行分析后,可以得出以下的语义规律:以情绪词为核心,当情绪词前面或后面出现程度副词时,会对情绪的强度产生影响;而当情绪词前面出现否定词时,会使情绪的极性发生反转.整理得出常见的情绪词组合类型如表1所示.

表1 情绪词组合类型表

3.2 情感强度值计算

3.2.1 情绪词组合类型情感强度值计算

对各情绪词组合类型按下述规则计算情感强度值E:

1)仅含情感词:情感强度E的值为组合中情绪词的个数,即E=1.

2)否定词+情感词:情绪词的情感极性发生变化,取E=(-1)*1.

3)程度副词+情感词:情绪词的情感强度会发生变化,取E=α*1.其中,α表示组合中程度词的强度权值.

4)否定词+程度副词+情感词:此种情况否定词和程度副词对于情绪词产生的影响需要分情况讨论.对于积极情绪词如“没有/很/开心”,修饰词不仅改变了组合的情感极性,还削弱了组合的情感强度,在计算情感强度时引入修正权值m=0.5,取E=(-1)*αm;对于消极情绪词如“不/太/讨厌”,修饰词没有改变组合的情感极性,只削弱了组合的情感强度,此时取m值设置为0.2,E=αm.

5)程度副词+否定词+情感词:此时否定词对情绪词的情感极性产生影响,程度副词对情绪词的情感强度产生影响,情感强度E=(-1)*α.

6)否定词+否定词+情感词:情绪词的情感极性未发生改变,情感强度E=(-1)* (-1)*1.

3.2.2 单句情感强度值计算

计算完组合情绪词的情感强度值,得到组合整体在第i类情绪分类下的情感强度值为EWi.单个句子第i类情绪的情感强度值计算公式如(6).

(6)

其中变量n表示单个句子中该类情绪划分下组合情绪词的个数.

句末出现感叹号,则情绪被加强,取权值为2,修正单个句子i类情绪强弱程度值公式如(7).

Ei=2*Ei

(7)

句末出现问号,此时情感偏向消极.对于整体情绪为积极、消极的句子,分别取权值-1.5和1.5,修正i类情绪的强弱程度值的计算公式分别如(8)和(9)所示.

Ei=(-1.5)*Ei

(8)

Ei=1.5*Ei

(9)

若句中包含转折连词,位于转折连词后面句子的情感词组合类型的权重会被加强.对于转折连词后方的情感词组合类型,仍按照前述计算得到对应i类情绪的强弱程度值Ei’.此时引入组合修正权值4,修正组合整体对应i类情绪的强弱程度值公式如(10)所示.

(10)

3.2.3 文本整体情感强度值计算

在计算微博文本整体情感强度时,还需计算微博中表情符号的情感强度.对于第i类情绪,表情符号的情感强度计算公式如(11)所示.

EMi=βi

(11)

其中,βi表示该表情符号在表情符号词典中的i分类下的情感强度值.

综上得到单条微博中第i类情绪的情感强度值的计算公式如(12)所示.

(12)

其中,变量c表示每条微博文本中划分子句的个数,变量n'表示转折连词后的子句中组合情绪词的个数,s为第k类情绪下表情符号的个数.

3.3 微博文本情绪分类

用积极情绪强度值减去消极情绪强度值得到最终微博总体情绪强度值,得到单条微博文本Item的情绪强度值计算公式如(13)所示.

EItem=E1-E2

(13)

情绪判断规则公式如(14)所示.

(14)

对于单条微博,本文提出的情绪类别识别方法分为四个步骤:

1)对微博文本进行预处理,去除表情符号、网页链接等噪声信息,完成过滤操作后,对微博进行分句;

2)对于每一条句子,对其进行分词,并在情绪词典中匹配和查找是否有对应的词汇,若找到,则进一步搜索情绪词附近是否含有修饰词语,最终得到组合情绪词;

3)叠加每个组合情绪词在对应情绪类别下的情绪强度;

4)加入微博中表情符号所对应的情绪强度,得到单条微博最终的情绪强度,并判断得出微博的情绪类别.

4 实验分析

4.1 实验数据集

本实验采用数据集包括中国计算机学会中文信息技术专业委员会发布的微博测评语料集NLP&CC和开源微博数据集weibo_senti_100k.考虑到微博不断更新换代,新的表达方式不断涌现,实验爬取了近半年“热门”专栏下发布的微博内容,获得大约20万条微博语料,筛除和整理后,选取了其中的7 000条进行标注,将微博的情感分为积极、中性和消极三大类.

将上述三种语料整合到一起,得到共计27 768条带标注的数据,数据集中各情绪类别对应的微博条数如表2所示.

表2 实验数据集的情绪类别分布

4.2 实验评价标准

本次实验采用正确率P(Precision)作为指标来衡量情绪分类模型的效能,它直观地反映出了系统识别情绪类别的精确程度.正确率的求值公式如(15)所示.

(15)

其中,c表示情绪分类模型所判定的情绪类别与人工标注的情绪类别相同的微博语料数量,a是参与判定的微博语料总数.

4.3 实验结果及分析

本文最终构建得到的情绪词典包含了多个组成成分,包括基础情绪词典、表情符号情绪词典、网络词汇情绪词典以及根据SO-PMI算法扩充得到的情绪词典等.本实验依照单一变量的原则,以基础情绪词典为基准,依次向其中添加各个附加词典,以观察加入不同词典对情绪识别正确率的影响.最终得到的实验结果如表3所示.

表3 实验结果表格

根据表3实验结果,可以得出以下结论:

1)单独使用中文基础情绪词典来判断微博情感类别时正确率较低,分析原因可能是因为忽略了微博中俚语、方言等非正式用语对于判断造成的影响.

2)引入表情符号词典和网络词汇词典后,可以看到机器识别的正确率得到了明显的提升,这说明表情符号和网络词汇在情绪强度计算以及情绪类别判断当中起到了重要的作用,成为独立于文本的重要判断依据.

3)使用SO-PMI算法对情绪词典进行扩充之后,可以看到情绪识别的正确率得到了一定的提升.这说明词典的完备性在情绪的识别中也很重要,情绪词典越完善,微博文本的情绪倾向就更容易被识别出来.

4)引入规则集进行计算之后,情绪识别的正确率提升到了87.18%.这说明分析文本中蕴含的语义规则在情绪识别中至关重要,完备的情感强度值计算体系有助于提高情绪类别划分的准确率.

5 小结

本文对现有情绪词典进行标注和整合,加入表情符号和网络词汇等辅助词典,并使用改进的SO-PMI算法进行新词扩充,得到一个较为完备的中文情绪词典.设计了一套组合情绪判定规则,基于此规则构建了情绪分类模型.实验表明,利用该模型进行微博用户情绪分类具有较高的精确度.

猜你喜欢

表情符号博文词典
微信表情符号写入判决:你发的每个表情都可能成为呈堂证供
第一次挣钱
世界表情符号日
米兰·昆德拉的A-Z词典(节选)
米沃什词典
词典引发的政治辩论由来已久 精读
谁和谁好
这个表情符号,你用对了吗
Review on Tang Wenzhi’s The Gist of Chinese Writing Gamut
表情符号玩上瘾 时尚爱尝鲜