基于中文微博的情感分析方法研究
2020-01-16李大舟
刘 阳, 高 巍, 李大舟
(沈阳化工大学 计算机科学与技术学院, 辽宁 沈阳 110142)
随着微博的快速发展,越来越多的人习惯用微博来发表自己对事物的看法.在微博上,人们有一定的言论自由,各抒己见,因此,如果我们想要得到一个正确的观点,就需要对大量的微博文本进行情感分析.而且随着舆情信息越来越多,舆情的监控也变得更加困难,所以,对微博情感分析的研究具有重要意义.
情感分析又称倾向性分析,它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程[1].情感倾向性分析主要有以下几个方面:中文语料处理,抽取情感词、程度副词及否定词,计算情感得分.其中在中文语料处理方面,基于词典的分词方法虽然算法简单,运算效率高,但是随着互联网的发展,对一些新的词汇或符号等的加入,词典不能及时自动更新,其弊端也逐渐暴露[2].所以,本文采用基于隐马尔可夫模型(HMM)的维特比算法做中文分词处理[3].在语义分析方面,基于情感词典的情感分析方法因具有简单、易于理解、处理速度快、情感倾向性判断准确等优势利用率比较高.因此,本文利用知网开放的情感分析用词语集[4]进行语义分析,计算情感得分,判断情感倾向.
1 中文分词
1.1 隐马尔可夫模型
马尔可夫模型是由俄国化学家Markovnikov于1870年提出的一种统计模型,在语音识别、词性自动标注、音字转换、概率文法等各个自然语言处理领域有着广泛的应用.马尔可夫模型本质上是一种随机过程,即表示在某事件发展的过程中,每一次状态的转移都取决于前一时刻的状态,与过去的状态无关,这样的状态链称为马尔可夫链.而马尔可夫预测法就是一种基于马尔可夫链去预测事件发生概率的方法[5].
隐马尔可夫模型是一个二重马尔可夫随机过程,包括具有状态转移概率的马尔可夫链和输出观测值的随机过程,其状态只有通过观测序列的随机过程才能表现出来.隐马尔可夫模型提供了一种基于训练数据的概率自动构造识别系统,在信息抽取领域己经表现出很好的发展势头.
隐马尔可夫模型可以用5个元素来描述,包括2个状态集合和3个概率矩阵.
(1) 可观测状态O:在模型中与隐含状态相关联,可通过直接观测得到.
O={o1,o2,…,on}.
(1)
其中n为可观测值的个数.
(2) 隐含状态S:这些状态之间满足马尔可夫性质,是马尔可夫模型中实际所隐含的状态.这些状态通常无法通过直接观测得到.
S={s1,s2,…,sm}.
(2)
其中m为隐含状态个数.
(3) 初始状态概率矩阵П={πi},表示隐含在初始时刻的概率矩阵.
(3)
其中πi表示状态si在初始时刻的概率.
(4) 隐含状态概率矩阵A:描述了HMM模型中各个状态之间的转移概率.
A=[aij]M×M,aij=Q(pt+1=sj|pt=st),
1≤i,j≤N.
(4)
其中:A是一个M×M阶的状态转移概率矩阵;aij表示状态si到sj之间的转换概率.
(5) 观测状态转移概率矩阵B.
B=[bj(k)]M×N,bj(k)=Q(Ht=
Ok|Pt=Sj), 1≤i≤M, 1≤k≤N.
(5)
bj(k)表示在状态sj时刻观测值OK的概率.
通过以上内容可知:隐含状态概率矩阵A和观测状态转移概率矩阵B中皆有对可观测状态O和隐含状态S的说明,因此,将隐马尔可夫模型表示为λ=(П,A,B).
1.2 维特比算法
维特比算法由安德鲁·维特比(Andrew Viterbi)于1967年提出,是一个特殊但应用最广的动态规划算法.其用于寻找最有可能产生观测事件序列的维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中,利用动态规划,可以解决任何一个图中的最短路径问题.而维特比算法是针对一个特殊的图——篱笆网络(Lattice)的有向图的最短路径问题提出的[6],使用HMM描述的问题都可以用它来解码,中文分词即是其中一个.
算法实现主要步骤如下:
(1) 初始化,计算t=1时刻的概率,参数δt(i)表示在t时刻到状态为i的各个节点的最大概率,即最短路径
δ1(i)=πibi(o1),φ1(i)=0 .
(6)
(2) 迭代计算,计算t=2时刻的概率,参数φt(i)表示在t时刻到i状态经过的最大概率的路径之前的一个节点,并且它将经过的最短路径的节点依次保存.
δ1(j)=max1≪i≪N[δi-1(i)aij]bj(ot),
2i≪t≪T, 1≪j≪N,
(7)
2≪t≪T, 1≪j≪N.
(8)
(9)
(10)
(4) 回溯,根据最终得出的最短路径,依次向前回溯每个节点.
t=T-1,T-2,…,1.
(11)
1.3 利用维特比算法求解中文分词问题
以“小明硕士毕业于中国科学院计算所”为例,将初始状态概率矩阵Π、隐含状态概率矩阵A和观测状态转移概率矩阵B利用维特比算法求解,根据表1得到两个矩阵δ[4][15]和φ[4][15].
δ[4][15],其中4是状态数(0:B,1:E,2:M,3:S),15代表句子的总字数.φ[4][15]同δ[4][15]一样,4是状态数(0:B,1:E,2:M,3:S),15代表句子的总字数.这里对最大概率的前一个字的状态做记录,就是为了下一步利用维特比算法计算完整矩阵δ[4][15]之后,对之前输入的句子进行反向回溯,即得出最优的状态序列.
表1 各分词初始状态表Table 1 Initial state table of each participle
先对δ进行初始化,使用初始状态概率矩阵Π和观测状态转移概率矩阵B对δ二维数组进行初始化.由观测状态转移概率矩阵B可以得出表2所示概率.
表2 下标0观测状态转移概率矩阵Table 2 Subscript 0 observation state transition probability matrix
接下来初始化δ[i][0] 的值如表3所示.
表3 对0初始化Table 3 Initialization of 0
最后遍历找出δ的最大值,并且记录出φ的值:
for(size_ti=1;i<15;i++)//遍历句子,对0已初始化结束,即从1开始
{
for(size_tj=0;j<4;j++)//遍历可能的状态
{δ[j][i]=MIN_DOUBLE;
φ[j][i]=-1;
for(size_tk=0;k<4;k++)//遍历前一个字可能的状态
{
double tmp=δ[k][i-1]+_transProb[j][sentence[i]];
If 9tmp>δ[j][i])//找出最大的δ[j][i]值
{
δ[j][i]=tmp;
φ[j][i]=k;
}
}
}
}
算法执行完毕后,δ[4][15]和φ[4][15]的值计算完成,接下来就是要找到最优序列.对于每个输入的句子,根据中文分词的规则,最后一个字的状态只可能是 E 或者 S.本文中只要比较δ[4][15]和φ[4][15]的大小.δ[1][14]=-102.492,φ[3][14]=-101.632 ,因此,最优路径的起点是φ[3][14],对此路径进行回溯,得到序列“SEBEMBEBEMBEBEB”,进行倒序可得“BEBEBMEBEBMEBES”,进行切词可得“BE/BE/BME/BE/BME/BE/S”,最终可得分词结果为“小明/硕士/毕业于/中国/科学院/计算/所”.
2 情感分析
2.1 情感词典
使用知网的情感分析用词语集进行语义分析,并计算得分,根据得分的正负来判断情感的倾向性.其中得分大于0的为正向情感、小于0的为负向情感,等于0的为中性情感.表4、表5为知网发布的“情感分析用词语集(beta版)”,共12个文件.其中“中文情感分析用词语集”与“英文情感分析用词语集”各6个,一共包含词语 17887个.文件中已经将根据情感倾向分为6类,分别为“正面评价”词语、“负面评价”词语、“正面情感”词语、“负面情感”词语、“主张” 词语、“程度级别”词语.
2.1.1 情感词
情感词,是主体对于某一客体表示内在评价的词语,带有强烈的情感色彩.情感词有两个属性:情感极性(Emotional polarity)和强度(intensity),其中情感极性又分为正向情感、中性情感和负向情感,见表4.正向情感和负向情感分别赋值2分和-2分.
表4 情感词Table 4 Emotional words
2.1.2 程度副词
程度副词是对一个形容词或者副词在程度上加以限定或修饰的副词,其本身没有情感倾向性,但被程度副词修饰的情感词的情感强度会被程度副词影响.如果忽略程度副词对情感词的影响,即使文本的倾向性不变,但情感倾向性的强度一定会有所偏差.程度副词及权值见表5.
表5 程度副词及权值Table 5 Degree adverbs and weights
2.1.3 否定词
否定词本身没有情感倾向性,但否定词能够改变情感的倾向性,知网给出的词集中没有否定词集,本文对日常使用的一些常用的否定词做了汇总并将其构建为否定词词典:
没 没有 不 不要 不曾 毋 非 莫 弗 勿 否 别 無 休 无 难以 未 未曾 未必
2.2 设计计分方法
计分方法如下:
(1)如果某语句中有情感词,那么该语句的情感得分为:
Score=Emotional polarity×intensity
(2)如果情感词前有程度副词,那么该语句的情感得分将受程度副词的影响,得分为:
Score=Score×weight
(3)如果情感词前有否定词,否定词能改变语句的极性,此时的情感得分为:
Score=-Score
这里将(2)中的情感得分加负号是因为否定词会改变语义的极性.如:“开心”,“不开心”,多了一个“不”字,整个句子的倾向性就变得完全相反了.
(4)当一个句子中同时出现否定词和程度副词时,依次根据否定词与程度副词出现的先后顺序计算得分.
3 情感倾向性分析过程
利用基于HMM的维特比算法对“这样的酒店配这样的价格着实不错,我很满意!”这句话进行中文分词并且去除停用词,即得到:
酒店/配/价格/着实/不错,很/满意
依次将处理后得到的单词与知网情感词典进行逐个查找,如果能找到,则是情感词,记录该情感词的位置,表示为(词语位置,情感词,得分).然后以每个情感词为基准,向前依次寻找程度副词、否定词,并作相应分值计算.随后对分句中每个情感词的得分作求和运算.每个句子的得分再求和即得到文章的情感得分,根据分值即可分析情感倾向性.
得分计算过程如下:
(1)依次从左至右扫描词语,得到情感词“不错”,得分+2并记录词语位置,(5,“不错”,2).
向前依次寻找否定词或程度副词,找到一个程度副词“着实”,该程度副词的权值为1.3,计算得分1.3×2=2.6 ,更新情感得分为:(5,“着实”,2.6 ).
(2)从第5个词继续向后扫描词语,得到情感词“满意”,得分+2并记录词语位置,(7,“满意”,2 ).
(3)从位置7向前寻找否定词或程度副词,找到一个程度副词“很”,该程度副词的权值为1.3,计算得分 1.3×2=2.6 ,更新情感得分为:(7,“满意”,2.6 ).
(4)然后从第7个位置向后寻找情感词,直至结束.
最终这个句子的情感得分为2.6+2.6=5.2 ,为正向情感.
4 实验结果与分析
文章主要研究的是怎样判断文本的情感倾向性.重点介绍了如何进行中文分词,以及计算情感得分的方法,并通过得分来判断情感的倾向性.通过实验验证了算法的有效性.实验利用Python爬取的新浪微博文章进行测试,共计200篇文章,得分分布情况如图1所示,情感倾向汇总如图2所示.
图1 情感得分分布Fig.1 Emotional score distribution
图2 情感倾向汇总Fig.2 Summary of emotional tendencies
由图2可知:正向情感128篇,中性情感20篇,负向情感52篇.实验表明:通过基于HMM的维特比算法以及基于情感词典的情感倾向性分析方法,能有效判断微博文本的情感倾向性,这为未来微博舆情分析提供了有效方法.
5 结 论
采用基于情感词典的情感倾向性分析方法,有效利用了词典中各个词语之间的语义联系,挖掘出情感词,得到大量的情感词语.但是随着科技的发展,情感的表达方式多种多样,比如利用表情或者符号等,因此,不能只靠单纯的文本分析方法确定文章中所有情感的倾向性.未来对于这一方面还要做出很多改进,完善情感词典,利用标点符号或表情符号等改进计分策略.