文档级情感分类是指对一篇给定观点的文档(如产品评论)根据所持观点为正面或负面进行分类。正面或负面观点又称为情感的倾向性或急性。文档级情感分类不涉及文档中具体的实体或属性。
文档级情感分类一般假设文档表达的观点仅针对一个单独的实体,并且只包含一个观点持有者的观点。不过这种假设在现实中是很难符合的,因此,文档级情感分类也是最简单的情感分析任务,一般通过文本分类即可完成。
文档级的情感分类采用机器学习和深度学习训练分类模型的做法居多,在词向量提出来之前,很多情感分类都是采用传统机器学习的做法,比如SVM、朴素贝叶斯等,学者主要通过词频、TFIDF、BM25、词性、情感词、转折词等统计特征构建特征工程,然后基于人工标注的类别训练文本分类模型。
近几年,随着深度学习的发展,很多深度学习模型在情感分类上的效果取得了更好的分类效果,比如RNN、TextCNN、FastText、HAN、lstm-cnn等,具体的模型可以参考笔者前面的文章介绍,这里不具体展开。
除了机器学习和深度学习监督模型之外,学者也通过一些打分函数直接对文档的情感进行分类,比如Dave等人提出来的打分函数: score ( t i ) = Pr ( t i ∣ C ) − Pr ( t i ∣ C ′ ) Pr ( t i ∣ C ) + Pr ( t i ∣ C ′ ) \operatorname{score}\left(t_{i}\right)=\frac{\operatorname{Pr}\left(t_{i} | C\right)-\operatorname{Pr}\left(t_{i} | C^{\prime}\right)}{\operatorname{Pr}\left(t_{i} | C\right)+\operatorname{Pr}\left(t_{i} | C^{\prime}\right)} score(ti)=Pr(ti∣C)+Pr(ti∣C′)Pr(ti∣C)−Pr(ti∣C′) 其中, t i t_{i} ti表示一个词汇, C C C表示一个类别, C ′ C^{\prime} C′是其补集。 Pr ( t i ∣ C ) \operatorname{Pr}\left(t_{i} | C\right) Pr(ti∣C)是词 t i t_{i} ti属于类别 C C C的条件概率。一个词的得分就是这样词对于某个倾向类别相关度的度量,其取值范围为-1到1。
对于一个文档 d i = t 1 ⋯ t n d_{i}=t_{1} \cdots t_{n} di=t1⋯tn,将其所有词的情感倾向性得分加起来,根据得分即可得到其情感分类: class ( d i ) = { C eval ( d i ) > 0 C ′ 其 他 \operatorname{class}\left(d_{i}\right)=\left\{\begin{array}{ll}{C} & {\operatorname{eval}\left(d_{i}\right)>0} \\ {C^{\prime}} & { 其他}\end{array}\right. class(di)={CC′eval(di)>0其他 其中, eval ( d i ) = ∑ j score ( t j ) \operatorname{eval}\left(d_{i}\right)=\sum_{j} \operatorname{score}\left(t_{j}\right) eval(di)=∑jscore(tj)
Turney通过词性标签模板抽取文档中两个词的短语,词性标签模板如下: 接着,通过搜索引擎,将抽取的短语分别与正面情感词excellent和负面情感词poor的PMI来计算短语的情感倾向SO: S O ( phrase ) = PMI (phrase, "excellent") - PMI(phrase, "poor") \mathrm{SO}(\text { phrase })=\text { PMI (phrase, "excellent") - PMI(phrase, "poor") } SO( phrase )= PMI (phrase, "excellent") - PMI(phrase, "poor") 其中, PMI ( term i , term 2 ) = log 2 ( Pr ( term 1 ∧ term 2 ) Pr ( term 1 ) Pr ( term 2 ) ) \operatorname{PMI}\left(\text { term }_{i}, \text { term}_{2}\right)=\log _{2}\left(\frac{\operatorname{Pr}\left(\text { term }_{1} \wedge \text { term }_{2}\right)}{\operatorname{Pr}\left(\text { term }_{1}\right) \text { Pr }\left(\text { term }_{2}\right)}\right) PMI( term i, term2)=log2(Pr( term 1) Pr ( term 2)Pr( term 1∧ term 2))
最后,将文档中所有短语的SO值进行平均,如果其值为正,则表示该文档的情感为正向,否则为负向。
使用情感词典的情感分类主要是对情感词分为正向情感词和负向情感词,对于正向情感词,可以设置其SO值为1,对于负向情感词,可以设置其SO值为-1,然后对一个文档中的情感词的so值进行加总,如果大与0,则表示为情感倾向为正向,否则为负向。
当然,基于上面的方法是非常粗暴的,因此,很多学者在此基础上进行改进,比如考虑加强词和减弱词、否定词、转置词等,然后对情感词的SO值进行修正。
