首页 > 代码库 > 短文本情感分析

短文本情感分析

一、什么是情感分析:

情感分析(SA)又称为倾向性分析和意见挖掘,它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程,其中情感分析还可以细分为情感极性(倾向)分析,情感程度分析,主客观分析等。

情感极性分析的目的是对文本进行褒义、贬义、中性的进行判断。

情感程度分析主要是对同一情感极性中再进行划分或者细分,以描述该极性的强度。例如“喜爱”和“敬爱”都是褒义词,但是“敬爱”相对来说褒义的程度更加强烈一些。

主客观分析主要目的是识别文本中哪些部分是客观称述而不带情感色彩,哪些是带有情感的主管描述。在对于微博,或者商品评论时,这个分析步骤一般都忽略,因为微博和商品评论本身就一定存在强烈的情感色彩,而且客观描述的情感值理论上是为零,不影响最终的情感分析结果。

二、情感分析的主要方法:

现阶段主要的情感分析方法主要有两类:

基于词典的方法

基于机器学习的方法

基于词典的方法主要通过制定一系列的情感词典和规则,对文本进行段落拆借、句法分析,计算情感值,最后通过情感值来作为文本的情感倾向依据。

基于机器学习的方法大多将这个问题转化为一个分类问题来看待,对于情感极性的判断,将目标情感分类2类:正、负;对情感程度的分析则转化为回归问题看待。对训练文本进行人工标标注,然后进行有监督的机器学习过程。

在还没有获得大量文本的情况下,使用基于词典的方法或者简单的机器学习方法是一个不错的选择。获得大量文本后,可以尝试使用一些复杂的机器学习方法甚至使用深度学习来进一步提升分析效果。

三、基于词典的情感分析:

情感分析对象的粒度最小是词汇,但是表达一个情感的最基本的单位则是句子,词汇虽然能描述情感的基本信息,但是单一的词汇缺少对象,缺少关联程度,并且不同的词汇组合在一起所得到的情感程度不同甚至情感倾向都相反。所以以句子为最基本的情感分析粒度是较为合理的。篇章或者段落的情感可以通过句子的情感来计算。

基于词典的情感分析大致步骤如下:

技术分享

考虑到语句中的褒贬并非稳定分布,以上步骤对于积极和消极的情感词分开执行,最终的到两个分值,分别表示文本的正向情感值和负向情感值。

进过以上的步骤,每篇文章的每个段落的每个句子都会有相应的情感分值,之后针对需求,可以针对句子的分值作统计计算,也可以针对段落的分值作统计计算,得到最后的文本的正向情感值和负向情感值。

四、基于词典的情感分析实践:

(1)基于词典的情感分析首先要构建情感词典及程度副词词典。通常是拉取一些比较成熟的情感词典。常见的如知网,台湾大学简体中文情感极性词典。将几个词典组合后再针对需要添加领域内的一些词就差不多了。

(2)  准备待分析文本、分词工具:

待分析文本:可以爬取一些购物网站、团购、电影平台的评论数据作为实验数据。

分析工具:中文的话推荐使用结巴分析,Python、Java等都有对应的接口,文档和应用案例也相对较多。同时需要准备一份自定义词典,由于领域内的新词及一些网络流行语等不容易切分出来,自己制作一份词典就OK了。

(3)利用结巴分词分解出一段文本中的句子、及每个句子中词汇:

(4)计算部分:首先将一段输入文本调用句子切分函数得到一系列句子,对每个句子进行分析处理,得到每个句子的分词结果。搜索分词结果中的情感词并标注和计数,由于情感词存在一些修饰词(如非常、一般、不等)对情感词的情感程度甚至情感极性影响很大,在此,搜索情感词前的程度词,根据程度大小,赋予不同权值,同时搜索情感词前的否定词,赋予反转权值(-1)。综合得到一个句子的正向情感得分、负向情感得分。

(5)综合每个句子的结果得到最后的文本情感值。

我们爬取了某购物网站的共计18978条平均数据,采用基于词典的方法对短文本情感倾向进行分类其结果如下图:

技术分享
 

总结:

基于情感词典的技术重点分析文本中出现的情感词、同时关联该词附近的修饰词来最终表达句子的情感倾向。在句子结构复杂、无情感词出现但有明显情感倾向的情况下,基于词典的方法就会失效。因此,可以考虑从句子结构,词频,词序等方面构建更多特征,使用机器学习方法来解决这一类的问题。最终综合多个模型来表达最终的结果。

 

在此,本人也构建了一个基于word-embedding的CNN模型来进行情感分析,相比于基于词典的情感分析,CNN对复杂长句具备一定的优势,可以参考本人另外一篇博文:CNN在中文文本分类的应用

 

文章来源:http://blog.csdn.net/zbc1090549839/article/details/52800441

短文本情感分析