概要:本文主要对基于文本的情感分析方法进行归纳总结。文章主要内容如下:
- 什么是基于文本的情感分析
- 常用词典和数据库
- 自然语言处理流程
- 深度学习情感分析工具
一、情感分析概念
情感分析是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。利用机器提取人们对某人或事物的态度,从而发现潜在的问题用于改进或预测。这里我们所说的情感分析主要针对态度(attitude)。
Scherer 情感状态类型主要可以分为:
- 情绪(emotion):有一定原因引发的同步反应。例如悲伤(sadness),快乐(joy)
- 心情(mood):没有明显原因引发的长期低强度的主观感受变化。例如忧郁(gloomy),倦怠(listless)
- 人际立场(interpersonal stance):对他人的特定反应。例如疏远(distant),冷漠(cold)
- 态度(attitude):对特定人或事物的带有主观色彩的偏好或倾向。喜欢(like),讨厌(hate)
- 个性特质(personal traits):相对稳定的个性倾向和行为趋势。例如焦虑(nervous),渴望(anxious)
二、评论(opinion)
一条评论可以分为四个部分(g,s,h,t)。
- g(target)为对象
- s(sentiment)为情感
- h(holder)为评论者
- t(time)为评论时间
在更深层次分析时,实体(对象)在组成或属性上又可分为不同部分。可以使用简明化得树型图表示,根节点为实体,叶子节点为实体的不同方面。 这样评论又进一步分为五个部分(e,a,s,h,t)e(entity)为实体,a(aspect)为方面。
主要过程:
确定一个词是积极消极、主观客观、情感强度。英文词典SentiWordNet。
确定一个句子是积极消极、主观客观、情感分值。
这里有个问题:同一个词在不同语境中可能表达不同的情感。
解决方法:建立不同领域情感词典、采用有监督学习
意见挖掘。找出对于不同属性、每一种属性的情感。然后将不同属性的情感汇总。
基于词典的情感分析大致步骤如下: 对大于句子力度的文本进行拆解句子操作,以句子为最小分析单元; 分析句子中出现的词语并按照情感词典匹配; 处理否定逻辑及转折逻辑;计算整句情感词得分(根据词语不同,极性不同,程度不同等因素进行加权求和);根据情感得分输出句子情感倾向性。
如果利用机器学习来做:基于机器学习的情感分析思路是将情感分析作为一个分类问题来处理
获取特征的传统方法有:Bag of Words (with or without its TFIDF), Bag of ngrams(with or without its TFIDF), Bag of means on word embedding (e.g. using word2vec embedding)
核心: new representation of the original text,即用一列features表示data point
传统的机器学习算法有:Logistic Regression,SVM,Naive Bayes,Neural Net,MaxEnt等
深度学习方法:CNN,RNN,LSTM都已经证明了很好的效果。
深度学习方法可以分为word-level和character-level基于字母的CNN方法,已经证明有很好的效果。
文本情感分析涵盖层面:
- 极性分析
- 标签抽取(属性+评价词)
- 观点挖掘
- 观点聚类
- 评论主体识别
- 意图识别(用户需求)
- 评论摘要生成
- 主观分析
- 情感词典构建(用这种方法,准确率高,召回率低)
基于bootstrapping方法的Predicting the semantic orientation of adjectives
Determining the sentiment of opinions
文本情感分析常见难题
- 在新闻场景下,难以获得训练集,人工标注难度很大。
- 口语化场景下,情感词典复杂,实体识别很困难。
- 反讽
- 流行语
- 文本过短,省略严重,导致歧义和指代错误
- 条件语句处理
- 处理否定词
- 常用数据集:
IMDB电影评论数据集
- General Inquirer (Philip, 1966)
- LIWC (Pennebaker, 2007)
- MPQA Subjectivity Cues Lexicon (Riloff and Wiebe, 2003)
- Bing Liu Opinion Lexicons (Bing Liu, 2004)
- SentiWordNet (Stefano, 2010)
- SentiStrength
- rotten tomato review
- Stanford Sentiment Treebank
- GI(The General Inquirer)
- python包textblob
三、深度学习情感分类工具
- svm分类l:ibsvm
- python机器学习工具:scikit-learn、nltk、SpaCy、Textacy
- 深度学习框架:Tensorflow、Theano
- 算法:fastText,据说state-of-art、SentiCircle算法,不去停用词
注:道听途说:听说语料库越大效果越好,据说李氏7分法比文本分析效果好。
上述知识来源有:
https://www.zhihu.com/question/20700012/answer/23452462
https://www.zhihu.com/question/20700012/answer/90193176
https://www.cnblogs.com/arkenstone/p/6064196.html(这篇文章很全面了,感恩)
https://blog.csdn.net/liuyuemaicha/article/details/54135315
https://www.zhihu.com/question/31471793/answer/139282423
感谢大佬们的分享!