<article>
课程地址: https://classcourseraorg/nlp/lecture/31
情感分析 (Sentiment analysis)又可以叫做
意见抽取 (Opinion extraction)
意见挖掘 (Opinion mining)
情感挖掘 (Sentiment mining)
主观分析 (Subjectivity analysis)等等。
引用的论文:
Bo Pang, Lillian Lee, and Shivakumar Vaithyanathan 2002 Thumbs up Sentiment Classification using Machine Learning Techniques EMNLP-2002, 79—86
Bo Pang and Lillian Lee 2004 A Sentimental Education: Sentiment Analysis Using Subjectivity Summarization Based on Minimum Cuts ACL, 271-278
另外需注意,Binarized (Boolean feature) Multinomial Naïve Bayes不同于Multivariate Bernoulli Naïve Bayes,MBNB在文本情感分析上的效果并不好。另外课中也提到可以用交叉验证的方式进行训练验证。
下面罗列了一些比较流行的词典:
当我们拿到一个词我们如何判断他在每个类别中出现的概率呢?以IMDB影评为例
但是!我们不能用单纯的原始计数(raw counts)方法来进行打分,如下图
可以看出,这些否定词同样可以作为单词极性的一个判断依据。
具体步骤为:
联合概率 / 独立的两个概率乘积
之后我们可以看一下统计结果,分别来自于用户好评和差评的统计:
可以看到极性划分的还不错
</article>
</main>
转自csdn
是会用到的。在财务与会计领域具有很高的研究价值,因而文本分析(TextualAnalysis)技术正在异军突起,形成一个新的研究领域。所谓文本分析,是指以文本数据为信息来源,运用特定的技术挖掘文本的情绪、可读性、相似度等文本特征,并利用这些特征进行实证研究的技术。然而,早期的自动文本分析技术很不成熟,人工编码的研究方法又不适用于大样本研究,因此,传统的财务与会计研究在相当长的时间内,仍主要局限于利用结构化数据进行研究,文本分析研究并不多见。
自然语言处理(NLP)在旅游领域具有广泛的应用,其中之一是情感分析。情感分析是指通过计算机程序来识别文本中的情感倾向,分析人们对旅游目的地、酒店、餐厅、交通工具等的评价。这种技术可以帮助旅游公司、酒店、餐厅等机构了解消费者的需求和喜好,改善服务质量和提高客户满意度。
一个典型的旅游情感分析应用是在线评论分析。在线评论是消费者对旅游目的地、酒店、餐厅等的反馈,通过使用 NLP 技术,旅游公司和酒店等机构可以分析这些评论,了解消费者对服务质量、位置、价格、餐饮等的看法。这些信息可以帮助他们改善服务质量、提高客户满意度。
另一个应用是社交媒体情感分析。社交媒体是消费者展示旅游经历的主要渠道,通过使用 NLP 技术,旅游公司和酒店等机构可以分析消费者在社交媒体上发布的文本、和视频,了解消费者对旅游目的地、酒店、餐厅等的感受。这些信息可以帮助他们改善服务质量、提高客户满意度、扩大品牌知名度。
此外,NLP还可以用于预测未来趋势,通过分析历史数据来预测旅游需求、价格趋势等,进而帮助旅游公司和酒店等机构调量、提高客户满意度。
NLP技术还可以用于语音识别和语音合成,在旅游领域中应用于语音导航、语音查询等场景。例如,旅游公司可以开发一款语音导航应用,让游客在旅游中使用语音命令来获取信息和导航。
总之,NLP在旅游领域有着广泛的应用,它可以帮助旅游公司、酒店、餐厅等机构了解消费者的需求和喜好,改善服务质量和提高客户满意度。通过使用NLP技术,旅游行业可以更好地了解客户,并提供更好的服务和体验。
本次实验将继续加载两个数据,一个是已经标注好的用户评论数据,另外一个是用户评价主题句,通过标注过的用户评论数据研究不同粒度的用户评价处理对深度情感分析模型的性能的影响,并比较字符级模型在用户评价情感极性推理上的差异。
使用 Pandas 加载已经标注好的在线用户评论情感数据表格,并查看数据维度和前 5 行数据。
加载民宿评论数据,并打印第一行。
数据属性如下表所示
用户评论分词
jieba 分词器预热,第一次使用需要加载字典和缓存,通过结果看出返回的是分词的列表。
批量对用户评价进行分词,并打印第一行数据,处理过程需要一些时间。
将用户评论处理成字符级别,为字符级模型提供训练集,并打印第一行数据,此预处理速度远远快于分词速度。
TextCNN 使用的卷积神经网络是一个典型的空间上的深度神经网络,基于卷积神经网络的情感分析具有优秀的特征抽取能力,能显著降低情感分类中人工抽取特征的难度。这类方法又根据文本嵌入粒度的不同可以分为字符级嵌入和词嵌入两种,一种是以分词后的词为情感分析粒度,另一种为字符级粒度的情感分析粒度,最后一层将包含全文潜在信息的最终编码送入 Sigmoid 做情感强度计算,即可对用户评论进行情感极性推理,是目前在文本分类经常使用的模型。
词级别模型训练
按照训练集 8 成和测试集 2 成的比例对数据集进行划分。
词级 TextCNN 模型训练,设置 128 条数据为一个批次,2 轮模型训练,训练集中的 20% 作为验证集,并加入早停设置。
通过传入原始的标签和预测的标签可以直接将分类器性能进行度量,并对指标收集,包含:模型的训练时间、accuracy_score 表示被正确预测的样本占总样本的比例、f1_score 值表示精确率与召回率的调和平均数和模型标签。
对训练的模型进行加载,并打印网络结构。
设置固定划分数据集,划分比例为 02 即训练集是测试集的 4 倍量。
字符级别模型训练
字符级 TextCNN 模型训练,设置 128 条数据为一个批次,2 轮模型训练,训练集中的 20% 作为验证集,并加入早停设置。
对字符级 TextCNN 的预测结果进行收集。
GRU 属于 RNN(recurrent neural networks,循环神经网络),是 LSTM 最流行的一个变体,比 LSTM 模型要简单,GRU 的门控单元减少了一个,GRU 与 LSTM 一样都是旨在解决标准 RNN 中出现的梯度消失问题,GRU 比 LSTM 在减少了计算量的条件下,做到了精度与 LSTM 持平,是目前在文本分类经常使用的模型。
我们使用函数定义的方式进行 GRU 模型的初始化。
对训练的模型进行加载,并打印网络结构。
词级别模型训练
词级 GRU 模型训练,设置 128 条数据为一个批次,2 轮模型训练,训练集中的 20% 作为验证集,并加入早停设置。
对训练的模型进行加载,并打印网络结构。
字符级别模型训练
将处理好的用户评论数据进行字符级处理即可输入字符级 GRU 模型训练,设置 128 条数据为一个批次,2 轮模型训练,训练集中的 20% 作为验证集,并加入早停设置。
对字符级 GRU 的测试集预测性能进行记录。
模型性能分析
通过控制参数变量的方式进行,并使用同样的数据集合观察性能指数测试结果。字符级能使用较小的字符级词典对语料的覆盖度更高,字符级预处理在测试集上的表现基本接近词级模型,并从耗时来看字符级都是最少的。TextCNN 架构总体高于 GRU 的准确度和综合值,并且训练时间相对较短。字符级语言建模的思想来自于信号处理,使用语言最小的文字单元去模拟复杂的语义关系,因为我们相信模型可以捕捉到这些语法和单词语义信息,在后续我们继续使用这种方式。
对用户评论数据预处理
对用户评论进行字符向量化。
情感极性推理
使用训练好的字符级 TextCNN 对用户评论进行情感预测,需要一些时间,请耐心等待。
使用训练好的字符级 GRU 对用户评论进行情感预测,需要一些时间,请耐心等待。
情感极性推理结果可视化
将两种字符级神经网络情感极性推理模型的结果取出来。
对全量的用户评论分别使用两个模型进行情感极性预测,并进行可视化,我们发现两种模型在全量的用户评论上的表现基本一致,字符级 TextCNN 在用户两极情感极性上表现更好。
许多数据分析应用都会涉及到从短文本中提取出潜在的主题,比如微博、短信、日志文件或者评论数据。一方面,提取出潜在的主题有助于下一步的分析,比如情感评分或者文本分类模型。另一方面,短文本数据存在一定的特殊性,我们无法直接用传统的主题模型算法来处理它。短文本数据的主要难点在于:
主题提取模型通常包含多个流程,比如文本预处理、文本向量化、主题挖掘和主题表示过程。每个流程中都有多种处理方法,不同的组合方法将会产生不同的建模结果。
本文将主要从实际操作的角度来介绍不同的短文本主题建模算法的优缺点,更多理论上的探讨可以参考以下文章。
下文中我将自己创建一个数据集,并利用 Python scikit-learn 来拟合相应的主题模型。
本文主要介绍三个主题模型, LDA(Latent Dirichlet Allocation), NMF(Non-Negative Matrix Factorization)和SVD(Singular Value Decomposition)。本文主要采用 scikit-learn 来实现这三个模型。
除了这三个模型外,还有其他一些模型也可以用来发现文档的结构。其中最重要的一个模型就是 KMeans 聚类模型,本文将对比 KMeans 聚类模型和其他主题模型的拟合效果。
首先,我们需要构建文本数据集。本文将以四个自己构建的文本数据集为例来构建主题模型:
首先,我们需要考虑下如何评估一个主题模型建模效果的好坏程度。多数情况下,每个主题中的关键词有以下两个特征:
一些研究表明:关键词还需具备以下两个特征:
接下来,我们将介绍如何实现上述的四个模型——NMF, SVD, LDA 和 KMEANS。对于每个主题模型,我们将分别采用两种文本向量化的方法—— TF(Term Frequence) 和 TFIDF(Term-frequence-inverse-document-frequence)。通常情况下,如果你的数据集中有许多词语在多篇文档中都频繁出现,那么你应该选择采用 TFIDF 的向量化方法。此时这些频繁出现的词语将被视为噪声数据,这些数据会影响模型的拟合效果。然而对于短文本数据而言,TF和TFIDF方法并没有显著的区别,因为短文本数据集中很难碰到上述情况。如何将文本数据向量化是个非常热门的研究领域,比如 基于word embedding模型的方法——word2vec和doc2vec。
主题模型将选择主题词语分布中频率最高的词语作为该主题的关键词,但是对于 SVD 和 KMEANS 算法来说,模型得到的主题词语矩阵中既包含正向值也包含负向值,我们很难直接从中准确地提取出主题关键词。为了解决这个问题,我选择从中挑出绝对数值最大的几个词语作为关键词,并且根据正负值的情况加上相应的标签,即对负向词语加上 "^" 的前缀,比如"^bergers"。
sklearn 中的 truncated SVD implementation 类似于主成分分析算法,它们都试图利用正交分解的方法选择出具有最大方差的变量信息。
对于 clearcut-topic 数据集来说,我们分别利用 TF 和 TFIDF方法来向量化文本数据,并构建 SVD 模型,模型的拟合结果如下所示。正如我们之前所提到的,SVD 模型所提取的关键词中包含正负向词语。为了简单起见, 我们可以理解为该主题包含正向词语,不包含负向的词语。
比如,对于 "Topic 1: bergers | ^hate | love | ^sandwiches" 来说,该文本的主题中包含 "love bergers" 但是不包含 "hate sandwiches"。
由于模型的随机效应,所以每次运行模型得到的结果都会存在细微的差异。在 SVD 的拟合结果中我们发现发现 Topic 3: bergers | ^hate | ^love | sandwiches 成功地提取了 “food” 的主题。
当我们在解释 SVD 模拟的拟合结果时,我们需要对比多个主题的信息。比如上述的模型拟合结果可以解释成:数据集中文档的主要差异是文档中包含 “love bergers” 但不包含 “hate sandwiches”。
接下来我们将利用 SVD 来拟合 unbalanced topic 数据集,检验该模型处理非平衡数据集的效果。
从下述结果中可以看出,SVD无法处理噪声数据,即无法从中提取出主题信息。
LDA 是最常用的主题提取模型之一,因为该模型能够处理多种类型的文本数据,而且模拟的拟合效果非常易于解释。
直观上来看,LDA 根据不同文档中词语的共现频率来提取文本中潜在的主题信息。另一方面,具有相同主题结构的文本之间往往非常相似,因此我们可以根据潜在的主题空间来推断词语之间的相似性和文档之间的相似性。
LDA 算法中主要有两类参数:
接下来我们将研究这些参数是如何影响 LDA 模型的计算过程,人们更多的是根据经验来选择最佳参数。
与 SVD 模型不同的是,LDA 模型所提取的主题非常好解释。以 clearcut-topics 数据集为例,LDA 模型中每个主题都有明确的关键词,它和SVD主要有以下两个区别:
此外,对 LDA 模型来说,采用不同的文本向量化方法也会得到不同的结果。
在 sklearn 中,参数 topic_word_prior 和 doc_topic_prior 分别用来控制 LDA 模型的两类参数。
其中 topic_word_prior 的默认值是(1/n_topics),这意味着主题中的每个词语服从均匀分布。
NMF 可以视为 LDA模型的特例,从理论上来说,这两个模型之间的联系非常复杂。但是在实际应用中,NMF 经常被视为参数固定且可以获得稀疏解的 LDA 模型。虽然 NMF 模型的灵活性不如 LDA 模型,但是该模型可以很好地处理短文本数据集。
另一方面,NMF 最大的缺点是拟合结果的不一致——当我们设置过大的主题个数时,NMF 拟合的结果非常糟糕。相比之下,LDA模型的拟合结果更为稳健。
首先我们来看下 NMF 模型不一致的拟合结果。对于 clearcut topics 数据集来说,当我们设置提取5个主题时,其结果和真实结果非常相似:
类似于 KMeans 模型的聚类方法能够根据文档的向量形式对其进行分组。然而这个模型无法看成是主题模型,因为我们很难解释聚类结果中的关键词信息。
但是如果结合 TF或TFIDF方法,我们可以将 KMeans 模型的聚类中心视为一堆词语的概率组合:
最后,我将简单比较下不同的主题提取模型。大多数情况下,我们倾向于根据文档的主题分布情况对其进行分组,并根据关键词的分布情况来提取主题的信息。
大多数研究者都认为词语的语义信息是由其上下文信息所决定的,比如 “love” 和 “hate”可以看成是语义相似的词语,因为这两个词都可以用在 “I _ apples” 的语境中。事实上,词向量最重要的一个研究就是如何构建词语、短语或者文档的向量形式,使得新的向量空间中仍然保留着语义信息。
找寻语义相同的词语不同于计算词语的共现频率。从下述的结果中可以看出,大多数主题提取模型只涉及到词语的共现频率,并没有考虑词语的语义信息,只有 SVD 模型简单涉及到语义信息。
需要注意的是,本文所采用的数据集是根据一定的规则随机生成的,所以下述结果更多的是用于说明不同模型之间的区别:
原文链接: http://nbviewerjupyterorg/github/dolaameng/tutorials/blob/master/topic-finding-for-short-texts/topics_for_short_textsipynb
译者:Fibears
文本情感分析根据文本大小可以划分为单词,句子级和篇章级,根据不同的分析目的,可以分为主客观分析(作者对客观事物的分析)和主观分析(作者自己的体验);根据处理方法的可以分为基于词典的情感分析和基于机器学习(SVM方法,神经网络和朴素贝叶斯方法)的情感分析;根据是否有人工参与,可以分为非监督和监督分类方法,区别在于是否需要人工情感标记。算法,主要的改进是通过依赖分析,围绕情感词,进行情感倾向性分析。
情感分析也被称为意见挖掘。情感分类涉及多个领域,如自然语音处理,人工智能,自动文本分类,文本挖掘,心理学等。它主要用来判别自然语言文字表达的观点,喜好以及感受和态度等相关的信息。
本文可以学习到以下内容:
数据及源码地址: https://giteecom/myrensheng/data_analysis
小凡,用户对耳机商品的评论信息,你有没有什么好的办法分析一下?经理来向小凡请教问题。
嗯,小凡想了一会儿
我想到了两种分析方法:
经理听完,甚是欣慰,便让小凡着手分析用户的评论数据。
数据解释:
小凡使用百度飞浆(paddlepaddle)模型库中的情感分析模型,将评论数据(content)转化为情感类别积极1,消极0
一、window10+anaconda3的安装命令:
二、安装预训练模型应用工具 PaddleHub
可以看到,大约 60% 的用户给出好评
用户的评论内容多集中在配置、音质等主题上
这里使用百度飞浆的LAC分词模型
分析结束后,小凡总结出以下结论:
小凡将结论汇报给经理,和经理一起想出一个可行的方案解决目前存在的问题。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)