课程地址:https://class.coursera.org/nlp/lecture/31
情感分析(Sentiment analysis)又可以叫做
意见抽取(Opinion extraction)
意见挖掘(Opinion mining)
情感挖掘(Sentiment mining)
主观分析(Subjectivity analysis)等等。
分析用户对人或物品的态度(attitudes:enduring, affectively colored beliefs, dispositions towards objects or persons)
本节讲解对电影评论进行情感分类(sentiment classification)的一个实例
引用的论文:
Bo Pang, Lillian Lee, and Shivakumar Vaithyanathan. 2002. Thumbs up? Sentiment Classification using Machine Learning Techniques. EMNLP-2002, 79—86.
Bo Pang and Lillian Lee. 2004. A Sentimental Education: Sentiment Analysis Using Subjectivity Summarization Based on Minimum Cuts. ACL, 271-278
任务的目的:极性判断(Polarity detection):
Is an IMDB movie review positive or negative?
并且可在此网站http://www.cs.cornell.edu/people/pabo/movie-review-data下载实验数据
通常我们会利用否定句(negation)来做处理,并且通常来说整个文本作为特征,效果会比单纯的形容词好。
但是在处理否定句的时候,像上面的两个句子虽然有很明显的极性差别,但是却只有一个词的差别,为了更好的处理这种情况,我们一般在否定词到标点之间的每一个之间都加NOT_
上式可以得出最有可能的分类等于最大化先验概率和似然概率的乘积
先验概率就是出现该词的文档占全部文档的概率
似然函数可以想象成所有文本中这个单词出现在每个当前文档中的频率和
我们加入拉普拉斯平滑来处理零概率的问题,因为当在文本处理时,一个词在训练集中没有出现过,那么他的概率为零,在连乘的过程中导致整个文本出现的概率也是零,这是不合理的。没出现不代表没可能。
在进行特征提取时,我们更关心的是句子中极性词是否出现,而不是出现的次数,所以我们引入了二值多项式贝叶斯(不知道翻译的对不对 : ))来进行分类
另外需注意,Binarized (Boolean feature) Multinomial Naïve Bayes不同于Multivariate Bernoulli Naïve Bayes,MBNB在文本情感分析上的效果并不好。另外课中也提到可以用交叉验证的方式进行训练验证。
- 例如表达含蓄,语义微妙的句子使人很难理解
- 或者是先扬后抑的风格(Thwarted Expectations)以及句子顺序的影响,也是增加了分析难度。
在实际情感分析的过程中,通常依赖情感词典来提取特征,情感词典中包含了词的多种极性。
下面罗列了一些比较流行的词典:
The General Inquirer http://www.wjh.harvard.edu/~inquirer/homecat.htm
LIWC (Linguistic Inquiry and Word Count) http://www.liwc.net/ 分类较多,褒贬,猜疑。
MPQA Subjectivity Cues Lexicon http://www.cs.pitt.edu/mpqa/subj_lexicon.html
Bing Liu Opinion Lexicon http://www.cs.uic.edu/~liub/FBS/opinion-lexicon-English.rar
SentiWordNet http://sentiwordnet.isti.cnr.it/ 标注了极性的可能性
当我们拿到一个词我们如何判断他在每个类别中出现的概率呢?以IMDB影评为例
Potts, Christopher. 2011. On the negativity of negation. SALT 20, 636-659. 论文中写到通过给词语打分的形式来对应频率,比如给单词(“bad”) 打分 1-star, 2-star, 3-star…
但是!我们不能用单纯的原始计数(raw counts)方法来进行打分,如下图
bad显然是一个消极词,但是10星的频率却出现的比2星的还多,这会产生很大的干扰,所以我们不能采用之中原始计数的方法,而是似然函数
同时,有的单词会出现多次,有的会出现少次,为了方便比较,我们引入了尺度似然(scale likehood)
那么像no,not,never这些否定词是否会跟消极词有关呢?Potts 在实验中利用上面的方法得到了下图:
可以看出,这些否定词同样可以作为单词极性的一个判断依据。
很多情况下,有时我们需要一些专业领域的或者已有词典库不具备的情感词典,这时我们就需要构建我们自己的情感词典。
通常我们采用的方法为半监督的bootstrap方法
具体步骤为:
即使用少部分已经标注好的实例来半监督的不断填充整个词典
Vasileios Hatzivassiloglou and Kathleen R. McKeown. 1997. Predicting the Semantic Orientation of Adjectives. ACL, 174–181
选取1336个形容词的种子集,其中包含肯定的和否定的词
利用种子集进行扩充, 填充与此形容词相关联的情感词,比如我们可以利用google搜索,只要有一定出现频率的相关词,我们都可以收录下来。
接下来我们可以计算两个词的相似性,可以通过计算两个词之间出现and和but频率,出现and多就相近,出现but多就不相关。而后我们可以利用任何分类方法将词语集分类。
#### Step4:
最终输出,形成我们的情感词典(但是也会存在一些错误)
Turney (2002): Thumbs Up or Thumbs Down? Semantic Orientation Applied to Unsupervised Classification of Reviews
我们通过一些规则提取出文中的短语,比如第一行的 形容词 + 名词/复数名词 + 任何单词 提取出 两词的短语
和上面的算法类似,我们只需要计算短语的共现关系(co-occurence),
比如积极的词我们会发现通常和excellent一起出现
Positive phrases co-occur more with “excellent”
消极的会和poor等一起出现。但是怎么计算
Negative phrases co-occur more with “poor”
于是引入点互信息(Pointwise Mutual Information)这个概念
联合概率 / 独立的两个概率乘积
转化为两个词之间就是:
分母分子概率的计算公式
p(word) = (word)出现次数 / N
p(word) = (word1 NEAR word2)出现的次数 / N
有了PMI我们就可以计算短语之间的极性(并不局限于excellent,poor)了,容易得到极性公式:
之后我们可以看一下统计结果,分别来自于用户好评和差评的统计:
可以看到极性划分的还不错
一共410个评论。170(41%)negative,240(59%)postive。
算法的准确率达到了74%
简单来讲就是把上面的找共现词换成在积极的或者消极的感情词集后面加入同义词和反义词,不断重复,最后过滤掉不良的例子,得出情感词的极性。
论文:S.M. Kim and E. Hovy. 2004. Determining the sentiment of opinions. COLING 2004
M. Hu and B. Liu. Mining and summarizing customer reviews. In Proceedings of KDD, 2004
在情感分析中,找到情感词的属性,对象尤为重要。我们通常采用的一是频率词+规则来提取属性,图中的就利用great来提取出情感的对象。二是通过已有属性来来判断对象是什么,比如菜单,装修,实物判断出餐厅。
还有就是S.Blair-Goldensohn提出的一种通用的对象训练器
论文:S. Blair-Goldensohn, K. Hannan, R. McDonald, T. Neylon, G. Reis, and J. Reynar. 2008. Building a Sentiment Summarizer for Local Service Reviews. WWW Workshop
我们需注意的是通常我们是假设每个分类都是等概率的:
- 如果他们不相等
- 就不能用准确性来估计
- 需要引入F-scores来解决
- 严重的不平衡会影响分类器的表现
- 通常的两个解决方案:
- 训练集重采样
- 随机降采样(Random undersampling)
- Cost-sensitive learning算法
1. 情感分析通常就是转换为分类问题
2.特点:
- 否定词很重要
- 使用全部词汇做分类
- 情感词典非常重要
- 已建好的词典
- 自己利用半监督的bootstrap方法构建