数据分析学习总结笔记01:情感分析
- 1. 情感分析概述
- 1.1 什么是情感分析
- 1.2 情感分析的范畴
- 1.3 细粒度情感分析
- 1.4 情感分析的实际应用
- 2. 情感分析方法
- 2.1 情感分析基本步骤
- 2.2 情感分析分类
- 2.2.1 基于情感词典
- 2.2.2 基于机器学习
- 2.2.3 混合方法
- 2.3 情感分析评价标准[^1]
- 3. 情感分析工具
- 3.1 可能用到的软件
- 3.2 情感分析网站
- 3.2 Python情感分析APIs
- 3.3 情感分析资源[^4]
- 3.3.1 词典资源
- 3.3.2 自然语言处理工具和平台:
- 3.3.3 汉语分词
1. 情感分析概述
1.1 什么是情感分析
情感分析主要基于文本数据,是自然语言处理(NPL)的主要内容。情感分析:又称意见挖掘、倾向性分析等。简单而言,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。互联网(如微博、论坛、知乎、豆瓣等)上产生了大量的用户参与的、对于诸如人物、事件、产品等有价值的评论信息。这些评论信息表达了人们的各种情感色彩和情感倾向性,如喜、怒、哀、乐和批评、赞扬等。基于此,潜在的用户就可以通过浏览这些主观色彩的评论来了解大众舆论对于某一事件或产品的看法。
1.2 情感分析的范畴
情感分析可以用于不同级别的范围:
- 文本级别:通过完整文档或段落来获取情绪;
- 句子级别:获得单句的情绪。
- 子句级别:获得句子中,子句表达的情感。
1.3 细粒度情感分析
有时您可能想,更加准确地了解意见的极性水平,因此你可以考虑,以下类别而不仅仅是谈论积极,中立或消极的意见:
这通常被称为细粒度情感分析。 例如,这可以在评论中映射到5星评级,例如:“非常正=5星” 和 “非常负= 1星”。此外,还有7级粒度等,可根据实际需要进行处理。
一些系统还通过识别积极或消极情感是否与特定感觉相关联,来提供不同的极性风格,例如愤怒,悲伤或忧虑(即负面情绪)或快乐,爱情或热情(即积极情绪)。
1.4 情感分析的实际应用
随着近年来深度学习的发展,且文本数据的可获取性不断提升,情感分析在自然语言处理研究领域中日渐举足轻重,慢慢从理论研究领域拓展到实践应用中。目前主要用于预测电影票房、股票趋势、舆情分析、改进服务及产品、及了解用户的体验等。如下表所示:
应用场景 |
描述 |
商品评论分析 |
可以了解用户对商品的满意度,进而制定好的营销策略 |
大众舆论导向分析 |
政府部门可以了解公民对热门事件的情感倾向,掌握大众舆论导向,从而更及时有效的进行舆情监控,同时也能为制定相关政策提供支持。 |
影评分析 |
了解用户对节目的喜怒哀乐,进而制定好的剧情和上线时间 |
人物情绪分析 |
通过对一个人发布的内容,了解他的情绪变化,哪种情绪多,哪种情绪少,进而可以分析出他的性格,除此之外,还能了解他在遇到什么事情时情绪会发生波动等。 |
产品比较分析 |
比如针对各种汽车品牌的评论进行分析比较,可以帮助商家了解这些产品在用户心中的差异,也可以帮助用户选择好的汽车产品。 |
事件预测分析 |
通过用户对这一事件的评论,可以预测相关信息,比如:电影票房,奥斯卡得奖者等等。 |
情感分析在学术中最典型的一个研究就是,通过分析推特的用户情绪以预测股票市场行情。 知网上有许多相关的文献,感兴趣的同学可以查阅。
2. 情感分析方法
2.1 情感分析基本步骤
情感分析的流程包括文本预处理、特征标注与选择、训练模型、调整模型。
现有的文本情感分析的途径大致可以集合成四类:关键词识别、词汇关联、统计方法和概念级技术。
- 关键词识别:利用文本中出现的清楚定义的影响词(affect words),例如“开心”、“难过”、“伤心”、“害怕”、“无聊”等等,来影响分类。
- 词汇关联:除了侦查影响词以外,还附于词汇一个和某项情绪的“关联”值。
- 统计方法:通过调控机器学习中的元素,比如潜在语意分析(latent semantic analysis),SVM(support vector machines),词袋(bag of words),等等。(参见Peter Turney在相关领域的研究成果。)
- 概念级技术:一些更智能的方法意在探测出情感持有者(保持情绪状态的那个人)和情感目标(让情感持有者产生情绪的实体)。要想挖掘在某语境下的意见,或是获取被给予意见的某项功能,需要使用到语法之间的关系。语法之间互相的关联性经常需要通过深度解析文本来获取。与单纯的语义技术不同的是,概念级的算法思路权衡了知识表达(knowledge representation)的元素,比如知识本体 (ontologies)、语意网络(semantic networks),因此这种算法也可以探查到文字间比较微妙的情绪表达。例如, 分析一些没有明确表达相关信息的概念,但是通过他们对于明确概念的不明显联系来获取所求信息。
2.2 情感分析分类
2.2.1 基于情感词典
是指根据已构建的情感词典,对待分析文本进行文本处理抽取情感词,计算该文本的情感倾向。最终分类效果取决于情感词典的完善性。
其实现的基本示例如下:
-
定义两个极化词列表(例如,差、最差、丑陋等负面词和好、最佳、美丽等正面词);
-
给出一个文本:
计算文本中出现的积极词数。
计算文本中出现的否定词数。
-
如果正面出现的数量大于否定单词出现的数量则返回正面情绪,相反,返回负面情绪。 否则,返回中立。
这个系统非常简单,因为它没有考虑单词如何在一个序列中组合。 可以进行更高级的处理,但这些系统很快就会变得非常复杂。 它们可能非常难以维护,因为可能需要新的规则来支持对新表达式和词汇表。 此外,由于与先前规则的混合,添加新规则可能会产生不好的结果。 因此,这些系统需要在手动调整和维护规则方面占用很多精力。
2.2.2 基于机器学习
是指选取情感词作为特征词,将文本矩阵化,利用logistic Regression, 朴素贝叶斯(Naive Bayes),支持向量机(SVM)等方法进行分类。最终分类效果取决于训练文本的选择以及正确的情感标注。
在训练过程(a)中,我们的模型学习基于训练样本,将特定输入(即文本)与相应的输出(标签)相关联。 特征提取器将文本输入传输到特征向量中。 将成对的特征向量和标签(例如,正,负或中性)喂给到机器学习算法中以生成模型。
在预测过程(b)中,特征提取器用于将未见过的的文本输入,变换为特征向量。 然后将这些特征向量喂给模型,该模型生成预测标签(正,负或中性)。
2.2.3 混合方法
是指通过结合规则和自动化机器学习的方法进行情感分析。混合方法的概念非常直观:只需结合两个方面的优点,即基于规则的方法和自动方法。 通常,通过组合两种方法,该方法可以提高准确度和精度。
2.3 情感分析评价标准
你可以通过多种指标评估分类器的性能,并了解情感分析模型的准确程度。 最常用的一种称为交叉验证。
交叉验证的作用是将训练数据分成一定数量的训练数据(75%的训练数据)和测试测试数据(25%的训练数据),训练数据来训练分类器,根据测试数据对其进行测试以获得性能指标(见下文)。 该过程重复多次,并计算每个度量的平均值。
如果测试集总是相同的,那么可能会过度拟合该测试集,这意味着可能会将分析调整到给定的数据集,以至于可能无法分析不同的集。 交叉验证有助于防止这种情况。 您拥有的数据越多,您可以使用的折越多。
精确度,召回率和准确度(Precision, Recall, and Accuracy)
精确度,召回率和准确度是用于评估分类器性能的标准度量。指标的详细介绍可以参照脚注3
- 精确度(Precision):测量预测为1的样本中,多少被正确分类;
- 召回率(Recall):实际为1的样本中,多少被成功预测;
- 准确度(Accuracy):测量语料库中所有文本中正确预测了多少文本
最常见的是,精确度和召回率用于衡量性能,因为仅仅准确性并不能说明分类器的好坏。
对于像分析情感这样的困难任务,精度和召回水平一开始可能很低。在为分类器提供更多数据时,性能会提高。但是,正如我们将在下面看到的那样,由于带注释的数据可能不准确,因此精度水平可能不会太高。但是,如果您为分类器提供一致标记的数据,那么结果将与任何其他分类问题的结果一样好。
3. 情感分析工具
3.1 可能用到的软件
- Python:文本预处理(分词、去停用词等);调用相关的包
- weka: 构建情感分类器
3.2 情感分析网站
- Quick Search 社交媒体搜索引擎,能够实时提供社交媒体上(包括博客、论坛、新闻网站)对某个品牌的评论情感,比如正面居多还是负面居多。
- Rapidminer 一个数据科学软件平台,提供文本挖掘功能,可帮助品牌进行文本分析,比如在线评论、社交媒体帖子等。
- NCSU Tweet Visualizer 专门面向推特情感分析的工具,既能按照情绪搜索对应的推文,也能分析推文中的情感,蓝色表示正面,绿色表示负面。
- MeaningCloud 能够对多个来源的文本内容进行详细的多语言分析,比如含有情感是正面还是负面,或者情绪为中性。
- Social Mention 实时搜索和分析平台,可监控 100+ 社交平台、博客和新闻网站,主要分析 UGC 中的情感。输入你的品牌、公司、竞争者的名字,就可以获取情感分析结果。
- Sentiment Analyzer利用计算机语言学和文本挖掘技术识别文本背后的情感。
- SentiStrength 一款用于学术研究的情感分析工具。
3.2 Python情感分析APIs
Python是数据科学领域的顶级编程语言之一,它具有强大的社区和大量的NLP模型。以下是几个常见的框架:
- Scikit-learn具有用于文本向量化的工具,是Python语言中专门针对机器学习应用而发展起来的一款开源框架。 利用频率或tf-idf文本向量化器之类的工具,训练一个分类器非常简单。 Scikit-learn可实现支持向量机,朴素贝叶斯和Logistic回归等模型;
- NLTK一直是Python的传统NLP库。 它有一个活跃的社区,除了为NLP提供低级功能外,还提供了训练机器学习分类器的可能性;
- SpaCy是另一个NLP库,社区正在不断壮大。与NLTK一样,它为NLP提供了一组强大的底层函数,并支持训练文本分类器。
随着深度学习越来越火,过去几年中,人们开发了各种新的数据科学库,支持NLP应用。 一些出名的:
- TensorFlow :它由Google开发,提供了一套用于构建和训练神经网络的底层工具。 还支持文本矢量化,包括传统的词频和更高级的词嵌入。
- Keras提供有用的抽象来处理多种神经网络类型,如递归神经网络(RNNs)和卷积神经网络(CNN),并轻松堆叠神经元层。 Keras可以在Tensorflow或Theano之上运行。 并且它为文本分类提供了有用的工具。
- PyTorch是最近的深度学习框架,由Facebook,Twitter,Nvidia,Salesforce,斯坦福大学,牛津大学和优步等知名组织提供支持。 它迅速发展了一个强大的社区。
- 此外,还可以借助Python进行中文分词(jieba)对文本首先进行预处理。
3.3 情感分析资源
3.3.1 词典资源
- SentiWordNet
- 《知网》中文版
- 中文情感极性词典 NTUSD
- 情感词汇本体下载
3.3.2 自然语言处理工具和平台:
- 哈尔滨工业大学社会计算与信息检索研究中心
- isnowfy/snownlp · GitHub
3.3.3 汉语分词
- 自然语言处理与信息检索共享平台 NLPIR.org
- fxsjy/jieba · GitHub
相关笔记:
- Python相关实用技巧01:安装Python库超实用方法,轻松告别失败!
- Python相关实用技巧02:Python2和Python3的区别
- Python相关实用技巧03:14个对数据科学最有用的Python库
- Python相关实用技巧04:网络爬虫之Scrapy框架及案例分析
- Python相关实用技巧05:yield关键字的使用
- Scrapy爬虫小技巧01:轻松获取cookies
- Scrapy爬虫小技巧02:HTTP status code is not handled or not allowed的解决方法
- 数据分析学习总结笔记01:情感分析
- 数据分析学习总结笔记02:聚类分析及其R语言实现
- 数据分析学习总结笔记03:数据降维经典方法
- 数据分析学习总结笔记04:异常值处理
- 数据分析学习总结笔记05:缺失值分析及处理
- 数据分析学习总结笔记06:T检验的原理和步骤
- 数据分析学习总结笔记07:方差分析
- 数据分析学习总结笔记07:回归分析概述
- 数据分析学习总结笔记08:数据分类典型方法及其R语言实现
- 数据分析学习总结笔记09:文本分析
- 数据分析学习总结笔记10:网络分析
本文主要根据个人学习经验,并搜集部分网络上的优质资源总结而成,如有不足之处敬请谅解,欢迎批评指正、交流学习!