情感分析简述
情感分析(Sentiment Analysis)又称倾向性分析,或意见挖掘,它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。利用情感分析能力,可以针对带有主观描述的自然语言文本,自动判断该文本的情感正负倾向并给出相应的结果。在评论分析与决策、电商评论分类以及舆情监控中有非常广泛的应用。
通常情感识别依据所处理文本的级别分为以下三类:
文本级别:通过完整文档或段落来获取情绪;
句子级别:获得单句的情绪。
子句级别:获得句子中,子表达的情感。
情感字典方法
下面是词典中的部分情感词,词后面的数字代表其情感正负程度。比如"fuck"是负向情感词,其情感值是"-6.70400012637"。再比如"好赞"是正向情感词,其情感值是"4.03663526"。情感词及其极性可以由人工搜集标注,也可以由算法挖掘。
最尼玛 -6.70400012637
扰民 -6.49756445867
fuck... -6.32963390433
Fxxk -5.87247473641
MLP -5.87247473641
吃哑巴亏 -5.77120419579
IAQI -5.77107837123
太好 1.51096421722
好赞 4.03663526827
文本分词
原句: 真是太差劲了!
分词: 真是太/差劲/了/!
情感计算
查询情感词典,累加每个词的情感值。
0[词典中没有’真是太’,默认为0]-2.76814873241[“差劲”]+0[“了”]=-2.76814873241
因此"真是太差劲了!"的情感极性为负向
考虑程度副词
原句:这个游戏不是太好玩。
分词:这个/游戏/不是/太好玩/。
按照上面的算法,如果仅仅考虑"太好玩",原句的情感是正向的,显然这是不对的,主要是由于忽略了情感词(太好玩)前面的程度副词(不是)。由于程度副词是对情感词情感极性的加强,所以最终的情感值可以通过程度副词的程度值(正值表示加强,负值表示否定)乘以情感词的情感值。
还是上面的例子,“太好玩(+2)” * “不是(-1)” = -1 ,原句的情感极性为"-2"。
情感词:是主体对某一客体表示内在评价的词语,带有强烈的感情色彩。
程度副词:本身没有情感倾向,但能够增强或减弱情感强度
否定词:本身也没有情感倾向,但能改变情感的极性
停用词:完全没有用或者没有意义的词
基于依存句法的规则方法
前面所讲的基于情感词典的方法只是简单的匹配,而实际的语言是复杂的非线性系统。一种改进的思路是利用句法分析技术将文本解析成结构化的语法树,然后依据规则从中提取感兴趣的内容。句法分析是根据给定的语法体系,自动推导出句子的句子结构,分析句子包含的句法单元及其之间关系,并转化为结构化的句法分析树。
其中,ADV->状中结构,ATT->定中关系,HED->核心关系,RAD->右附加关系。除此之外,在NLP中依存句法分析是更加常见的句法分析技术。
根结点指向"棒",表明"棒"是整个句子的核心。以"棒"为起点的各边指向的句子成分,分别以某种"依赖关系"依赖于核心词"棒"。因此以核心词为线索可以解析出句子的语法结构,进一步依据"预定义的规则"抽取出评论文本中的依存情感单元,包括评论对象、情感词、否定词、程度副词等。
1).否定词修饰情感词
否定词修饰情感词会改变情感倾向,如"不喜欢"这个短语 中,“不"作为否定词修饰"欢”。
2).程度词修饰情感词
程度词修饰情感词会改变情感强度,如"太棒" 短语中,“太"作为程度词修饰"喜欢”。
3).否定词修饰否定词
否定词修饰否定词即为双重否定,一般情况下不影响原来的情感倾向,对于情感程度的影响需要具体分析依存关系。如"不是不喜欢"中,第一个"不"作为否定词修饰了"是",后面的"不喜欢"和"是"是动宾关系。
4).否定词修饰程度词
否定词修饰程度词相当于对程度的否定,而非情感的否定,因此否定词修饰后,最终情感倾向未变,但是程度有所降低。如"不很喜欢"中,“不"修饰了"很”,然后才是"很"修饰"喜欢"。"很"作为程度词表现了一种情感等级的加强,但是“不”作 为否定词对“很”这个程度词的否定使得最终的强度有一定的削减。"不很喜欢"这个情感短语仍然表现了"喜欢"这种情感类 别,但是在强度上强于"喜欢"这个情感词,弱于"很喜欢"这个情感短语。
5).程度词修饰否定词
程度词修饰否定词相当于给否定加个强度,因为否定本身无强度可言,最终的强度会随否定词一起携带到情感词上。如 “很不喜欢"中,“很"修饰"不”,然后才是"不"修饰"喜欢”。因此,“很不喜欢"在情感类别上是"厌恶”,在强度 上比"不喜欢"更强,和"很喜欢"强度一致。
6).程度词修饰程度词
程度词修饰程度相当于程度的叠加。多用于微博等非正式语料中,此类表达方式多用于表现强烈情感。如"非常极其喜欢"中,“非常"修饰"极其”,然后是"极其"修饰"喜欢"。对于此类的表述,其情感强度相比于"非常喜欢"和"极其喜欢"都要强一些。
Attention机制
Attention机制通俗的说,对于某个时刻的输出y,它在输入x上各个部分上的注意力,这里的注意力也就是权重,即输入x的各个部分对某时刻输入y贡献的权重。具体的在情感识别任务中,原句中每个Word对情感类别的影响是不同的。
HAN模型
层次注意力网络。对文档/较长文本进行分类的时候,仅仅对word粒度进行Attention是不够的,还需要对各个句子(短句)进行Attention的学习,不同句子也需要分配不同的权重,每个句子里的词语也分配不同的权重。网络结构如下图所示: