情感分析(SA)又称为倾向性分析和意见挖掘,它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程,其中情感分析还可以细分为情感极性(倾向)分析,情感程度分析,主客观分析等。
情感极性分析的目的是对文本进行褒义、贬义、中性的进行判断。
情感程度分析主要是对同一情感极性中再进行划分或者细分,以描述该极性的强度。例如“喜爱”和“敬爱”都是褒义词,但是“敬爱”相对来说褒义的程度更加强烈一些。
主客观分析主要目的是识别文本中哪些部分是客观称述而不带情感色彩,哪些是带有情感的主管描述。在对于微博,或者商品评论时,这个分析步骤一般都忽略,因为微博和商品评论本身就一定存在强烈的情感色彩,而且客观描述的情感值理论上是为零,不影响最终的情感分析结果。
基于词典
基于词典的方法主要通过制定一系列的情感词典和规则,对文本进行段落拆借、句法分析,计算情感值,最后通过情感值来作为文本的情感倾向依据。
基于词典的比较直观的博客
Python做文本挖掘的情感极性分析(基于情感词典的方法)
基于词典的情感分析:
情感分析对象的粒度最小是词汇,但是表达一个情感的最基本的单位则是句子,词汇虽然能描述情感的基本信息,但是单一的词汇缺少对象,缺少关联程度,并且不同的词汇组合在一起所得到的情感程度不同甚至情感倾向都相反。所以以句子为最基本的情感分析粒度是较为合理的。篇章或者段落的情感可以通过句子的情感来计算。
词典可从《知网》情感分析用词语集(beta版)http://www.keenage.com/download/sentiment.rar
1.1.2 否定词词典
1.1.3 程度副词词典
基于词典的情感分析大致步骤如下:
考虑到语句中的褒贬并非稳定分布,以上步骤对于积极和消极的情感词分开执行,最终的到两个分值,分别表示文本的正向情感值和负向情感值。
进过以上的步骤,每篇文章的每个段落的每个句子都会有相应的情感分值,之后针对需求,可以针对句子的分值作统计计算,也可以针对段落的分值作统计计算,得到最后的文本的正向情感值和负向情感值。
四、基于词典的情感分析实践:
(1)基于词典的情感分析首先要构建情感词典及程度副词词典。通常是拉取一些比较成熟的情感词典。常见的如知网,台湾大学简体中文情感极性词典。将几个词典组合后再针对需要添加领域内的一些词就差不多了。情感词典,有多家研究机构进行了分析,并且公布了结果,比如大连理工、汉语情感词极值表、台湾大学情感NTUSD、知网Hownet情感词、中文褒贬义词典v1.0(清华大学李军)等,有些词典分为正向、逆向单词两个部分;有些放在一起,然后有单独的标签,可以cbind合并在一起。本文引用的是谭松波老师的正向、逆向情感词典。
各个词典对情感词的倾向定义可能矛盾,出现同一个词具有情感正向和负向两种倾向的情况,尽管这种情况更加符合现实,但是违背了基于词典的情感分析的原假设,所以要将这些词去重,我们的方法是一个词如果同时属于正向和负向,仅保留正向分类。
(2) 准备待分析文本、分词工具:
待分析文本:可以爬取一些购物网站、团购、电影平台的评论数据作为实验数据。
分析工具:中文的话推荐使用结巴分析,python、java等都有对应的接口,文档和应用案例也相对较多。同时需要准备一份自定义词典,由于领域内的新词及一些网络流行语等不容易切分出来,自己制作一份词典就OK了。
1、一、二级清洗
文本挖掘中,对文本的清洗工作尤为重要,会出现比如:英文逗号、波浪线、英文单引号、英文双引号、分隔符等。
(3)利用结巴分词分解出一段文本中的句子、及每个句子中词汇:
(4)计算部分:首先将一段输入文本调用句子切分函数得到一系列句子,对每个句子进行分析处理,得到每个句子的分词结果。搜索分词结果中的情感词并标注和计数,由于情感词存在一些修饰词(如非常、一般、不等)对情感词的情感程度甚至情感极性影响很大,在此,搜索情感词前的程度词,根据程度大小,赋予不同权值,同时搜索情感词前的否定词,赋予反转权值(-1)。综合得到一个句子的正向情感得分、负向情感得分。
(5)综合每个句子的结果得到最后的文本情感值。
语言很复杂。讽刺、歧义、多义性、否定性和俚语都是机器难以理解的因素,对情感分析有巨大的影响。因此,简单的基于字典的方法往往无法分析复杂的情感表达。
监督学习
基于机器学习的方法大多将这个问题转化为一个分类问题来看待,对于情感极性的判断,将目标情感分类2类:正、负;对情感程度的分析则转化为回归问题看待。对训练文本进行人工标标注,然后进行有监督的机器学习过程。
在还没有获得大量文本的情况下,使用基于词典的方法或者简单的机器学习方法是一个不错的选择。获得大量文本后,可以尝试使用一些复杂的机器学习方法甚至使用深度学习来进一步提升分析效果。
机器学习的方法精确度更高,因为词典匹配会由于语义表达的丰富性而出现很大误差,而机器学习方法不会。而且它可使用的场景更多样。无论是主客观分类还是正负面情感分类,机器学习都可以完成任务。而无需像词典匹配那样要深入到词语、句子、语法这些层面。
而词典方法适用的语料范围更广,无论是手机、电脑这些商品,还是书评、影评这些语料,都可以适用。但机器学习则极度依赖语料,把手机语料训练出来的的分类器拿去给书评分类,那是注定要失败的。
nltk 进行情感分析使用python+机器学习方法进行情感分析
Python做文本情感分析之情感极性分析‘包括词典和情感学习’,这篇文章的代码实现
Twitter是怎么做情感分析的?长文解读!
非监督情感分类
论文:文本情感分类中生成式情感模型的发展
依次介绍了隐性情感模型(lsm),联合情感主题模型(jts),主题情感混合模型(TSM)
一个简单的情感识别系统的实现
Analysis of sentiments using unsupervised learning techniques 使用非监督学习技术分析情感(IEEE2013
主题模型
要了解主题模型,先了解贝叶斯分类
潜在狄立克雷分配的显著特征——集合中所有文档共享同一主题集合,但每个文档中各个主题所占的比例又都各不相同
贝叶斯分类
详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解
主题模型就是利用了词语的同现特性
http://v.qiye10000.com/v/XODAyNvImMvIy.html 吴立德
https://www.bilibili.com/video/av27193854/?p=3 七月在线
主题模型参考文献汇总 https://blog.csdn.net/aws3217150/article/details/53840029
专知主题模型汇总【专知荟萃16】主题模型Topic Model知识资料全集(基础/进阶/论文/综述/代码/专家,附PDF下载
word2vec
直观理解输入什么,输出什么
https://zhuanlan.zhihu.com/p/26306795?utm_source=wechat_session&utm_medium=social&from=groupmessage
【译】word2vec&doc2vec做文本情感分析
利用Python构建Wiki中文语料词向量模型试验
词典及语料库
http://www.cnblogs.com/finesite/p/3381803.html
有多家研究机构进行了分析,并且公布了结果,比如大连理工、汉语情感词极值表、台湾大学情感NTUSD、知网Hownet情感词、中文褒贬义词典v1.0(清华大学李军),谭松波老师的正向、逆向情感词典等,有些词典分为正向、逆向单词两个部分;有些放在一起,然后有单独的标签,可以cbind合并在一起。
参考资料
Stanford NLP学习笔记:7. 情感分析(Sentiment)
github
(词向量已训练好)基于微博评论的数据挖掘与情感分析(cnn,lstm) https://github.com/joliph/
Text-Classify
贝叶斯情感分类https://github.com/RobTomb/pac_ai/blob/master/code/sentimentNaiveBayes.py
2017年CCF大数据与计算智能竞赛使用的模型和实现代码,选择了基于主题的文本情感分析赛题。采用情感词典+自定义规则完成比赛 https://github.com/digfound/CCFCompetition
基于Python的新浪微博社交网络分析 https://github.com/ruansongsong/weibo_forward_analysis
基于新浪微博数据的情感极性分析,使用机器学习算法训练模型,使用的分类方法包括朴素贝叶斯、SVM
https://github.com/ljw9609/SentimentAnalysis
(snownlp朴素贝叶斯)微博情感分析,支持分析用户最近三个月、六个月、九个月、十二个月(转)发的微博,分析得出用户这段时间内“正能量”的、“负能量”的、“中性”的微博的条数,从而分析得出用户这段时间的情感总体状况,支持将分析结果发到微博。https://github.com/qibinlou/SinaWeibo-Emotion-Classification
采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种情感的分类器 https://github.com/Edward1Chou/SentimentAnalysis
英语情感分析模型比较 https://github.com/sebastianruder/NLP-progress/blob/master/english/sentiment_analysis.md
Using Spark to analyse weibo emotions https://github.com/irmowan/Weibo-Emotions
在线评论的细粒度情感分析baseline https://github.com/AIChallenger/AI_Challenger_2018
经典论文
Sentiment Analysis and Opinion Mining 刘冰
数据集
twitter 语料Sanders corpus http://www.sananalytics.com/la
b/twitter-sentiment/)
词嵌入情感分析
Sentiment-Polarized Word Embedding for Multi-Label Sentiment Classification