中文情感分析 (Sentiment Analysis) 的难点在哪?现在做得比较好的有哪几家?

2020 年 6 月 21 日 深度学习自然语言处理

点击上方,选择星标置顶,每天给你送干货

阅读大概需要25分钟

跟随小博主,每天进步一丢丢

来自: 知乎
编辑: 深度学习自然语言处理公众号
地址: https://www.zhihu.com/question/20700012
本文仅作学术分享,若侵权,请联系后台删文处理



作者:知乎用户
链接:
https://www.zhihu.com/question/20700012/answer/23452462

最近正在做相关的项目,给题主一些相关的资料。
假设分析的对象是iphone5s的手机评论。从京东、亚马逊或者中关村都可以找到这款手机的评论。大致都如图所示。



情感分析(Sentiment Analysis)
第一步,就是确定一个词是积极还是消极,是主观还是客观。这一步主要依靠词典。
英文已经有伟大词典资源:SentiWordNet. 无论积极消极、主观客观,还有词语的情感强度值都一并拿下。
但在中文领域,判断积极和消极已经有不少词典资源,如Hownet,NTUSD但用过这些词典就知道,效果实在是不咋滴(最近还发现了大连理工发布的情感词汇本体库,不过没用过,不好评价)。中文这方面的开源真心不够英文的做得细致有效。而中文识别主客观,那真的是不能直视。
中文领域难度在于:词典资源质量不高,不细致。另外缺乏主客观词典。

第二步,就是识别一个句子是积极还是消极,是主观还是客观。
有词典的时候,好办。直接去匹配看一个句子有什么词典里面的词,然后加总就可以计算出句子的情感分值。
但由于不同领域有不同的情感词,比如看上面的例子,“蓝屏”这个词一般不会出现在情感词典之中,但这个词明显表达了不满的情绪。因此需要另外根据具体领域构建针对性的情感词典。
如果不那么麻烦,就可以用有监督的机器学习方法。把一堆评论扔到一个算法里面训练,训练得到分类器之后就可以把评论分成积极消极、主观客观了。
分成积极和消极也好办,还是上面那个例子。5颗星的评论一般来说是积极的,1到2颗星的评论一般是消极的,这样就可以不用人工标注,直接进行训练。但主客观就不行了,一般主客观还是需要人来判断。加上中文主客观词典不给力,这就让机器学习判断主客观更为困难。
中文领域的难度:还是词典太差。还有就是用机器学习方法判断主客观非常麻烦,一般需要人工标注。
另外中文也有找到过资源,比如这个用Python编写的类库:SnowNLP. 就可以计算一句话的积极和消极情感值。但我没用过,具体效果不清楚。
到了第三步,情感挖掘就升级到意见挖掘(Opinion Mining)了。
这一步需要从评论中找出产品的属性。拿手机来说,屏幕、电池、售后等都是它的属性。到这一步就要看评论是如何评价这些属性的。比如说“屏幕不错”,这就是积极的。“电池一天都不够就用完了,坑爹啊”,这就是消极的,而且强度很大。
这就需要在情感分析的基础上,先挖掘出产品的属性,再分析对应属性的情感。
分析完每一条评论的所有属性的情感后,就可以汇总起来,形成消费者对一款产品各个部分的评价。
接下来还可以对比不同产品的评价,并且可视化出来。如图。



这一步的主要在于准确挖掘产品属性(一般用关联规则),并准确分析对应的情感倾向和情感强度。因此这需要情感分析作为基础。首先要找到评论里面的主观句子,再找主观句子里的产品属性,再计算属性对应的情感分。所以前面基础不牢固,后面要准确分析就有难度。
中文这个领域的研究其实很完善了,技术也很成熟。但需要完善前期情感分析的准确度。
总的来说,就是中文词典资源不好,工作做得不是很细很准。前期的一些基础不牢固,后面要得到准确的分析效果就不容易了。


作者:进击的龙
链接:
https://www.zhihu.com/question/20700012/answer/617496069

我下午看了点资料,写了一篇情感分析的简单调研,希望对你有帮助。

简介
情感分析或观点挖掘是对人们对产品、服务、组织、个人、问题、事件、话题及其属性的观点、情感、情绪、评价和态度的计算研究。
现有研究已经产生了可用于情感分析多项任务的大量技术,包括监督和无监督方法。在监督方法中,早期论文使用所有监督机器学习方法(如支持向量机、最大熵、朴素贝叶斯等)和特征组合。无监督方法包括使用情感词典、语法分析和句法模式的不同方法。现有多本综述书籍和论文,广泛地涵盖了早期的方法和应用。
大约十年前,深度学习成为强大的机器学习技术,在很多应用领域产生了当前最优的结果,包括计算机视觉、语音识别、NLP 等。近期将深度学习应用到情感分析也逐渐变得流行。

情感分析的三种粒度
  • 文档粒度(document level):文档级情感分类是指为观点型文档标记整体的情感倾向/极性,即确定文档整体上传达的是积极的还是消极的观点。因此,这是一个二元分类任务,也可以形式化为回归任务,例如为文档按 1 到 5 星评级。一些研究者也将其看成一个五类分类任务。

  • 句子粒度(sentence level):语句级情感分类用来标定单句中的表达情感。正如之前所讨论的,句子的情感可以用主观性分类和极性分类来推断,前者将句子分为主观或客观的,而后者则判定主观句子表示消极或积极的情感。在现有的深度学习模型中,句子情感分类通常会形成一个联合的三类别分类问题,即预测句子为积极、中立或消极。

  • 短语粒度(aspect level):也称为主题粒度,每一个短语代表了一个主题。与文档级和语句级的情感分类不同,aspect level 情感分类同时考虑了情感信息和主题信息(情感一般都会有一个主题)。给定一个句子和主题特征,aspect level 情感分类可以推断出句子在主题特征的情感极性/倾向。例如,句子「the screen is very clear but the battery life is too short.」中,如果主题特征是「screen」,则情感是积极的,如果主题特征是「battery life」,则情感是消极的。


深度学习模型

  • 文档/句子粒度:Kim等人(2013) 提出的CNN文本分类工作,成为句子级情感分类任务的重要baseline之一;




  • 文档/句子粒度:基本的lstm模型加上pooling策略构成分类模型,是通常用来做情感分析的方法;

  • 短语粒度:Tang等人(2015) 使用两种不同的rnn网络,结合文本和主题进行情感分析;



  • 短语粒度:Tang等人(2016) 结合memory-network,解决target-dedependent问题,这里的target理解为前面提过的aspect;



  • 短语粒度:Chen等人(2017) 分别使用位置权重记忆和层叠attention的复合机制,建模target词和文本间的相互交互关系,以解决短语级情感分类问题;



  • 短语粒度:Schmitt1等人(2018) 将aspect和polarity结合在一起进行分类任务训练,得到情感分析的模型;




  • 现在流行模型:大规模语料预训练(词向量/Elmo/GPT/Bert)+ 深度学习分类器(lstm/cnn/transformer),一个很好的示例见AI Challenger 2018:细粒度用户评论情感分类冠军思路总结


相关数据

情感词典

  • 词性字典1词性字典2

  • 大连理工大学中文情感词汇本体库

  • 清华大学李军中文褒贬义词典

  • 知网情感词典

情感数据集

  • 15 Free Sentiment Analysis Datasets for Machine Learning

  • 大众点评细粒度用户评论情感数据集

  • 汽车行业用户观点主题及情感识别

  • 电商评论情感数据

  • 酒店评论语料

  • SemEval-2014 Task 4数据集

  • Citysearch corpus 餐馆评论数据

  • NLPCC2014评估任务2_基于深度学习的情感分类

  • NLPCC2013评估任务_中文微博观点要素抽取

  • NLPCC2013评估任务_中文微博情绪识别

  • NLPCC2013评估任务_跨领域情感分类

  • NLPCC2012评估任务_面向中文微博的情感分析

  • 康奈尔大学影评数据集

其他资源

  • Sentiment Analysis with LSTMs in Tensorflow

  • Sentiment analysis on tweets using Naive Bayes, SVM, CNN, LSTM, etc.

  • Chinese Shopping Reviews sentiment analysis

  • AI Challenger 2018:细粒度用户评论情感分类冠军思路总结

文献资料

  • 文本情感分析综述(腾讯语义团队)

  • Deep learning for sentiment analysis: A survey

  • 情感分析资源大全

  • Tang D, Qin B, Liu T. Aspect level sentiment classification with deep memory network[J]. arXiv preprint arXiv:1605.08900, 2016.

  • Kim Y. Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.



作者:飞桨PaddlePaddle
链接:
https://www.zhihu.com/question/20700012/answer/633947292

您好,首先情感分析这个任务就比较难。
目前的人工智能技术都是基于大量的数据训练复杂的模型,以此来支持不同场景的应用。因此其核心困难包括模型和数据两个方面:
一方面,情感是人类的一种高级智能行为,需要模型能够在语义层面理解文本的情感倾向。这不是靠写几个正则表达式就能完成的。
另一方面,不同领域(如餐饮、体育)的情感表达方式各不相同,即便是同一场景的表达也极其复杂。
所以需要有大规模覆盖各个领域的优质数据支撑模型训练。而这些数据又不是一般的开发者所能具备的。这就导致不同领域不同场景的情感分析处处都是难点。
百度在2018年7月开源了其基于语义和大数据的情感分类系统——Senta,将模型和源码通过Github进行免费技术开放(Github地址在文章结尾处),开发者可以免费使用该技术。
本账号也专门发布了一篇文章《 PaddlePaddle Fluid实战:使用百度 Senta 情感分析系统 》,详细讲述了使用PaddlePaddle深度学习框架实现Senta 情感分析系统的实战操作。
目前应用最广泛的情感分析技术是“评论观点抽取”,用于精细刻画用户对产品或商家的具体观点和商家的口碑


该技术可以大致理解成两个过程:
首先,是抽取出评论中的一些涉及观点的名词形容词短语,
然后,通过情感分类技术确定其观点的情感倾向。
如观点是"味道不错"还是"味道不好",是"上菜速度快"还是"上菜速度慢"。百度AI开放平台上免费开放的评论观点抽取API,就可以支持电商、美食、酒店、旅游、购物等13个场景的评论观点抽取。
以此为基础,就可以基于海量的评论数据,建立精细的用户画像和商户画像,进而改善营销和服务策略,丰富个性化推荐场景,最终创造更大的商业价值。

百度Senta是怎么解决这些问题并形成核心技术的?


核心技术一:强大的DNN语义模型和深度学习框架
百度Senta系统采用的是近年取得重大突破的深度学习技术。深度学习的特点是可以不依赖繁复的人工特征工程,而直接从最原始的文本数据中获取语义层面的信息,进而进行情感倾向的判断。
图3 基于bi-LSTM的情感分类模型
图3展示了基于bi-LSTM的情感分类模型。它是在大规模语料上有显著效果的经典深度学习模型。它的特点是能够提取语句中词语顺序相关的信息,考虑词与词之间较长上下文的依赖。
但是光有好的模型设计还不够,还需要好的深度学习框架来实现。百度Senta情感分析系统基于同样由百度开源的深度学习框架PaddlePaddle Fluid所实现。
PaddlePaddle Fluid具有一些特别适合于自然语言处理的特性,比如在深度学习模型的训练过程中,为了充分利用硬件的计算资源,一般需要进行批量(batch)计算,即一次同时输入多个句子进行计算。
但是情感分类这类场景所处理的大量文本的长度都是不固定的,一般的深度学习框架需要将一个batch内的句子补长(padding)成同样的长度再输入到神经网络中进行处理。
这种padding方式带来了额外的存储和计算开销。而PaddlePaddle Fluid框架用独有的LoDTensor原生支持多层级的不等长序列,使得变长文本不需要经过padding即可馈入深度学习模型进行训练或预测,从而可以显著地节省储存空间和计算时间。而对常见的padding数据的支持,PaddlePaddle Fluid 也在不断地完善中。
另外 PaddlePaddle Fluid对单机多设备及多机分布式训练的支持也非常友好。对于单机训练,框架提供的并行执行器 ParallelExecutor会自动处理参数的分发与聚合,相对于单设备训练,用户几乎不用对模型进行任何修改,使得用户可以低成本地实现单机多CPU/GPU训练;而对于多机分布式训练,也只需要简单的配置即可实现,这使得用户能够方便地从模型构建快速过渡到多种环境下的模型运行。
另一方面,现实的NLP应用场景往往十分复杂。可能单独一个情感倾向分析模型很难解决所有问题,需要多种NLP技术综合运用。而很多现成的NLP应用,比如文本分类、神经机器翻译、阅读理解、自动问答等,在PaddlePaddleFluid中都很容易找到相关的网络接口和文档。
预训练词向量也集成在其中,方便模型热启动。百度Senta系统甚至直接把情感倾向分析模型的网络结构及其参数都开源,方便对其调用与再开发;并且集成了百度词法分析系统 (LAC),方便用户直接处理未分词的语料。
这使得开发者的精力能够放在构建深度学习模型的高层部分而不必过多关注底层细节上,因此很适合于工业应用,尤其是需要快速开发的场景。
当然,百度还实验了各种其他的情感分类模型,包括CNN、hierarchical-LSTM、self-attention等。它们都在百度Senta系统的开源代码中,以满足用户不同的选择。并且百度开源了训练数据,用户可以直接在此基础上训练自己的模型,以适应自己的场景。

核心技术二:海量优质标注数据
在AI界有一句话,"数据决定了你的模型上限,而模型只是在逼近这个上限"。可见大数据的重要性。然而数据标注是一件十分耗费人力的事。为了提高标注效率,百度基于强大的NLP技术积累,能够基于有限的种子数据大量扩充标注数据。
简单地说,就是先获得一部分标注好的数据,再找到与这些数据相似评论,进而扩充优质的标注数据。
那么第一批种子数据从哪里来?其实,互联网上天然有大量的弱标记评论数据,比如用户会对某个商品给予评论,同时给予评分。根据评分的高低就能确定评论的正负倾向。
接下来就是计算那些没有被标注情感倾向的评论数据与这些种子数据的相似度。这涉及到另一个模型——语义相似度模型。这个模型也是百度的核心技术(百度AI开放平台也开放了相关api)。它是通过百度积累的庞大的搜索引擎标注数据训练得到的。因此模型准确度非常高。
更进一步,可以将这些评论数据根据相似度连接成图结构,最后通过标记传播算法,将原来未标记数据转化为标注数据。经实验发现,这种方法获取的数据质量很高。


图4 基于标记传播的情感标记数据挖掘
因此,百度Senta系统在各种垂类准确率非常高,整体效果业界领先。而开源项目Senta中,既包含了简单高效的情感分类语义模型,也包含了百度基于独有大数据语料训练好的高精准模型,可以适应不同场景的需求。
另外,用户甚至可以将自己场景的数据加入到训练集中,使得模型更符合自身的应用场景。即便自己没有训练机器,也可以上传自身的数据到百度AI开放平台进行定制化,然后调用定制化好的api即可。

展望
百度在情感分析领域开展了漫长而深入的技术研发。而在未来,百度将继续深入研发更加广泛通用的NLP技术和深度学习框架,以适应丰富多样的业务场景,创造更多价值。同时,百度将及时开源基于PaddlePaddle的最前沿的NLP技术,共同推进AI产业的发展。

参考链接
Senta系统(
https://github.com/baidu/Senta


作者:邓凌佳
链接:
https://www.zhihu.com/question/20700012/answer/22168168

fine-grained资源不够多。
比如
-  ChineseLDC.Org
国内研究使用授权费 5000 RMB
国外研究使用授权费 35000 RMB
(不过这个是研究说话语气的emotion)
牛逼闪闪的LIWC
Product Catalog
收费是$89.95美元(税前)
真是研究不起中文啊。。。
====好的喷完了来更新一下答案====
国内COAE和日本举办的NTCIR的评测不错。楼主可以参考。
现在的sentiment analysis比较倾向于machine learning的方法。语料库越大才能搞出来好的性能。算法什么的都可以通用。
还有一点,大多数语料库都是基于商品评论的。比如电脑、相机、酒店,等等。新闻评论这样的文章中,标注很细致的语料库不多。COAE和NTCIR还是有一些的。伸手党戳这个链接:
信息分类与情感发现
也可以参考bilingual的方法。比如这些论文:
http://aclweb.org/anthology/P/P11/P11-1033.pdf
http://aclweb.org/anthology//P/P09/P09-1027.pdf
再找到好的中文链接持续更新中,也算是给自己做个笔记。。。


作者:宸风
链接:
https://www.zhihu.com/question/20700012/answer/91680744

我只说商业解决方案的难点在哪。
最大的难点是这是一个自定义需求的问题。我们可以看到很多paper提供了各种分类算法解决方案,我们曾经也努力做到过微博正负面九成准确率,后来发现并没什么卵用。有的企业要中性,这好说;有的企业还要中性偏负面,什么鬼。。;有的认为广告宣传是正面,有的觉得是垃圾信息要过滤;有的部分广告认为正面部分认为负面;有的做电商的一点负面听不得,不管后面夸得多好,只要提到负面的都要提取出来;有的情感词或表述在不同领域或不同数据源可能情感极性是不一样的。
每个都做监督训练的话还要不要活了,二分类还好说,多分类的话通常几千条监督标注还是不够准的,就不说电商和微博还得分开做了。
另一个问题是相关性,比如我说[宝马很差,但奔驰很好,外形漂亮,logo大气,blahblah],可能整条文本整体偏正面,毕竟绝大多数都在赞美奔驰。但如果要监测的企业是宝马,那就不好玩了。因此又转化成一些三元组类抽取、句法分析、词搭配等问题。
其他比较常见的问题还有中文的博大精深导致的,比如反话等,这些就更不能局限于单条文本自身了,有条件的还要考虑上下文,又可能涉及到一些消岐、上下文分类等问题。
因此学术与实际应用还是有距离的。。。除非你就是做通用的或只在某个特定范围做(比如大公司自己特定的需求),那可能比较幸福


作者:知乎用户
链接:
https://www.zhihu.com/question/20700012/answer/24659700

作为句子和篇章级的应用问题,感觉中英文处理不会有本质的区别,不如好好阅读这个领域的两本经典文献,然后再考虑具体的研究问题:
1. Bing Liu的 Sentiment Analysis and Opinion Mining Morgan & Claypool Publishers
2. Bo Pang的 Opinion Mining and Sentiment Analysis


作者:彭浩
链接:
https://www.zhihu.com/question/20700012/answer/90193176

容哲 的回答总结了利用情感词典从词/句子/特征等方面进行情感分析, 识别主客观情感句, 以及对产品特征更为细节的情感分值分析和可视化.

情感分析也可以利用机器学习来做, 其核心就是获取 new representation of the original text, 这里的 text 可以是一句话/一条评论等. 新的 representation 中行代表 Data point, 列代表 features. 现在获取特征比较传统的方法有 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). 然后就可以利用一些机器学习的经典算法做分类任务, 如 SVM, Logistics Reg, Naive Bayes, Neural Net 等.

Deep Learning 现正在颠覆各个领域的传统方法, 其在 Computer Vision, NLP 方向更是产生了极大的影响, 在最近很多颠覆性算法中都可见其身影. 学术界当然不乏将其用在 sentiment classification 的例子. 一年前用于这类任务的常见 Deep learning 方法有: Word-level Convolutional Neural Net (CNN), Word-level Recurrent Neural Network (RNN), and Word-level Long Short Term Memory (LSTM) 等, 这些都曾经取得过 state-of-the-art 的准确率. 关于 word-level 的 CNN 模型, 可以参考这篇论文: http://emnlp2014.org/papers/pdf/EMNLP2014181.pdf "

深度学习模型的特点是参数非常多, 动辄百万级, 但是由于神经网络具备模拟任何函数的能力, 所以在数据量极其大的情况下, 训练出的模型是可以避免过拟合的, 因此这类模型具有很好的泛化能力, 预测新数据的能力也很强.

为了扩大数据量, researchers 最近从 computer vision task 中借鉴经验, 提出了基 character level 的 CNN 模型. 其思想就是将文本中词的每个字符类比成图片中一个个像素, 通过预处理 (如限制 vocabulary 大小, 设定句子的 max length 等) 和 embedding, 将文本转化成一张类似图片的矩阵, 这样就可以进行和图片一样的 convolution operation 了.

从 word-level 到 character-level, 数据量会增长好几倍 (一个词平均有5个字母). 乍一看, 这类模型连 word 都不需要了, 直接从 character-level 学习特征, 似乎太过天真. 可以这样现象一下, 英文中, I love you, 通过前两个单词"I", "love", 推出下一个词 "you", 这个模型, 我们人类还可以理解; 然而通过字母"I", "space", "L", "O", "V", "E", "space" 推出"Y", "O", "U"这三个字母就不是我们能理解的了. 但现实中, character-level的 CNN 模型在 sentiment classification (or text classification) 中表现非常好, 可以超越 word-level 的 CNN 模型, 具体可以参考Facebook 最近的 Paper : http://arxiv.org/abs/1509.01626

笔者利用 word-level 的 CNN 在 Yelp Challenge 2016 review dataset 中取得了高于 SVM, NN 的准确率, 具体项目在这里 : GitHub - haoopeng/CNN-yelp-challenge-2016-sentiment-classification: code for training a word level CNN for sentiment classification on yelp's review dataset 2016.

有兴趣的同学可以看看. 个人认为Deep learning非常有趣, 值得学习. 目前正在实现 character-level 的 CNN 模型.


添加个人微信,备注: 昵称-学校(公司)-方向 即可获得
1. 快速学习深度学习五件套资料
2. 进入高手如云DL&NLP交流群
记得备注呦


登录查看更多
1

相关内容

狭义的情感分析(sentiment analysis)是指利用计算机实现对文本数据的观点、情感、态度、情绪等的分析挖掘。广义的情感分析则包括对图像视频、语音、文本等多模态信息的情感计算。简单地讲,情感分析研究的目标是建立一个有效的分析方法、模型和系统,对输入信息中某个对象分析其持有的情感信息,例如观点倾向、态度、主观观点或喜怒哀乐等情绪表达。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
专知会员服务
159+阅读 · 2020年7月27日
基于深度学习的表面缺陷检测方法综述
专知会员服务
84+阅读 · 2020年5月31日
零样本文本分类,Zero-Shot Learning for Text Classification
专知会员服务
95+阅读 · 2020年5月31日
专知会员服务
153+阅读 · 2020年4月21日
【ACL2020-Allen AI】预训练语言模型中的无监督域聚类
专知会员服务
23+阅读 · 2020年4月7日
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
了解情感分析中的NLP技术么?
七月在线实验室
9+阅读 · 2019年4月12日
一起来看看词性标注
AINLP
8+阅读 · 2019年4月9日
中文NLP用什么?中文自然语言处理的完整机器处理流程
人工智能头条
61+阅读 · 2018年9月5日
ML通用指南:文本分类详细教程(上)
论智
19+阅读 · 2018年7月29日
笔记 | Sentiment Analysis
黑龙江大学自然语言处理实验室
10+阅读 · 2018年5月6日
Python 自然语言处理(NLP)工具库汇总
数据挖掘入门与实战
7+阅读 · 2017年9月25日
现代情感分析方法
Python开发者
13+阅读 · 2017年7月9日
干货 | 情感分析语料库
机器学习算法与Python学习
69+阅读 · 2017年7月3日
Arxiv
25+阅读 · 2018年1月24日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关资讯
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
了解情感分析中的NLP技术么?
七月在线实验室
9+阅读 · 2019年4月12日
一起来看看词性标注
AINLP
8+阅读 · 2019年4月9日
中文NLP用什么?中文自然语言处理的完整机器处理流程
人工智能头条
61+阅读 · 2018年9月5日
ML通用指南:文本分类详细教程(上)
论智
19+阅读 · 2018年7月29日
笔记 | Sentiment Analysis
黑龙江大学自然语言处理实验室
10+阅读 · 2018年5月6日
Python 自然语言处理(NLP)工具库汇总
数据挖掘入门与实战
7+阅读 · 2017年9月25日
现代情感分析方法
Python开发者
13+阅读 · 2017年7月9日
干货 | 情感分析语料库
机器学习算法与Python学习
69+阅读 · 2017年7月3日
Top
微信扫码咨询专知VIP会员