NLP专栏丨情感分析方法入门下

举报
就挺突然 发表于 2021/01/05 09:52:03 2021/01/05
【摘要】 基于统计方法的情感分析模型基于统计方法的情感分析方法主要依赖于已经建立的“情感词典”,“情感词典”的建立是情感分类的前提和基础,目前在实际使用中,可将其归为4类:通用情感词、程度副词、否定词、领域词。英文方面主要是基于对英文词典WordNet[1] 的扩充,Hu和Liu[2]在已手工建立种子形容词词汇表的基础上,利用 WorldNet 中词间的同义和近义关系判断情感词的情感倾向,并以此来判断...

基于统计方法的情感分析模型

基于统计方法的情感分析方法主要依赖于已经建立的“情感词典”,“情感词典”的建立是情感分类的前提和基础,目前在实际使用中,可将其归为4类:通用情感词、程度副词、否定词、领域词。英文方面主要是基于对英文词典WordNet[1] 的扩充,Hu和Liu[2]在已手工建立种子形容词词汇表的基础上,利用 WorldNet 中词间的同义和近义关系判断情感词的情感倾向,并以此来判断观点的情感极性。中文方面则主要是对知网Hownet[3] 的扩充,朱嫣岚[4]利用语义相似度计算方法计算词语与基准情感词集的语义相似度,以此推断该词语的情感倾向。此外,还可以建立专门的领域词典,以提高情感分类的准确性,比如建立新的网络词汇词典,来更准确的把握新词的情感倾向。

基于情感词典的方法,先对文本进行分词和停用词处理等预处理,再利用先构建好的情感词典,对文本进行字符串匹配,从而挖掘正面和负面信息。其大致流程如图所示:


image.png


这里处理上述的词典外,下面[5]补充了现有的其它中文词典以供参考

image.png

当然也可以通过语料来自己训练情感词典。


       
导入情感词典后,我们需要利用情感词典文本匹配算法进行情感分析。基于词典的文本匹配算法相对简单。逐个遍历分词后的语句中的词语,如果词语命中词典,则进行相应权重的处理。正面词权重为加法,负面词权重为减法,否定词权重取相反数,程度副词权重则和它修饰的词语权重相乘。利用最终输出的权重值,就可以区分是正面、负面还是中性情感了。一个典型的利用情感词典文本匹配算法进行情感分析的算法流程如下[5]


image.png

基于统计方法的情感分析模型简单易行,具有通用和泛化性,但是仍然存在如下三点主要的不足:



1 精度不高

语言是一个高度复杂的东西,采用简单的线性叠加显然会造成很大的精度损失。词语权重同样不是一成不变的,而且也难以做到准确。


2 词典需要持续更新

对于新的情感词,比如给力,牛逼等等,词典不一定能够覆盖。因此需要不断刷新词典来补充新词。在当下网络词汇不断出现的时代,如果词典的刷新速度跟不上新词出现的速度,那么情感分析在实际使用中会与预期相差较大的距离。比如淘宝商品评价,饿了么外卖评价等,如果无法捕捉新词,那么分析的情感将会偏离实际。


3 构建词典困难

基于词典的情感分类,核心在于情感词典。而情感词典的构建需要有较强的背景知识,需要对语言有较深刻的理解,在分析外语方面会有很大限制。




                                                                                                                                                               02


基于深度学习的情感分析模型



在了解了基于统计方法的情感分析模型优缺点之后,我们看一下深度学习文本分类模型是如何进行文本情感分析分类的。深度学习的一个优势就是可以进行端到端的学习,而省略的中间每一步的人工干预步骤。基于预训练模型生成的词向量,深度学习首先可以解决的一个重要问题就是情感词典的构建。下面我们会以集中典型的文本分类模型为例,展示深度文本分类模型的演进方向和适用场景。




2.1

FastText[6]


image.png
模型运行步骤:
image.png

2.2 TextCNN[7]
image.png
image.png

2.3 TextRNN[8]

image.png

image.png

image.png


2.4 TextRNN+Attention[9]

image.png

image.png

HAN为Hierarchical Attention Networks,将待分类文本,分为一定数量的句子,分别在word level和sentence level进行encoder和attention操作,从而实现对较长文本的分类。相比于上述的算法模型,HAN的结构稍微复杂一些,具体可以分解为以下步骤。

image.png




2.5 TextRCNN[10]

image.png


RCNN算法过程:


首先,采用双向LSTM学习word的上下文,利用前向和后向RNN得到每个词的前向和后向上下文的表示:


image.png

词的表示变成词向量和前向后向上下文向量连接起来的形式:

image.png

之后再接跟TextCNN相同卷积层,pooling层即可,在seq_length维度进行 max pooling,然后进行fc操作就可以进行分类了,可以将该网络看成是fasttext 的改进版本。


                                                                                                                                                                         03




总结



本篇博文从模型和算法的视角,分别介绍了基于统计方法的情感分析模型和基于深度学习的情感分析模型。基于统计方法的情感分析模型简单易用,但是在准确、灵活和泛化性上有较大的缺陷;基于深度学习的模型演进方向是不断通过更深和复杂的网络来捕捉上下文信息,同时借助于强大的预训练模型生成的词向量来训练神经网络来完成这项任务。下面的开源仓库[13]详细介绍了每一种模型的pytorch实现以及在相同的中文baseline上的对比;下面的两篇博文[11][12]也是对其他情感分析深度学习模型进行了详细介绍,可以作为进一步探索的指引。




参考文献

[1]https://wordnet.princeton.edu/

[2]HU M,LIU B. Mining and summarizing customer reviews[C]. NY,USA:Proceedings of Knowledge Discoveryand Da-ta Mining,2004:168 - 177.

[3]https://languageresources.github.io/2018/03/07/

%E9%87%91%E5%A4%A9%E5%8D%8E_Hownet/

[4]朱嫣岚,闵锦,周雅倩,等. 基于 How Net 的词汇语义倾向计算[J]. 中文信息学报,2006,20(1):14 - 20

[5]https://blog.csdn.net/weixin_41657760/article/

details/93163519

[6]https://arxiv.org/abs/1612.03651

[7]https://arxiv.org/abs/1408.5882

[8]https://www.ijcai.org/Proceedings/16/Papers/408.pdf

[9]https://www.aclweb.org/anthology/P16-2034/

[10]http://zhengyima.com/my/pdfs/Textrcnn.pdf

[11]https://zhuanlan.zhihu.com/p/76003775

[12]https://zhuanlan.zhihu.com/p/73176084

[13]https://github.com/649453932/Chinese-Text-Classification-Pytorch

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。