基于微博评论的文本情感分析与关键词提取的实战案例~

简介: 在评论文本情感分析之前,我们需要将语句通过分词使其成为词语,然后优化分词结果,去掉无关的词语和字符。,以提高文本情感分析的准确度。

01分词


对中文句子按照其语义进行切割的这类操作,被称为“分词”。目前的分词技术有两种,一种是从统计学的角度进行分词,另一种是从词库的角度基于TF-IDF算法,来对语句进行分词。


Python中的Jieba库就是利用词库来对语句进行自动分词的,所以志斌就给大家介绍一下如何用Jieba库来实现文本分割。


01 分词原理


Jieba库在安装时,会附带一个词库,这个词库中包含了日常汉语的词语和词性。在分词时,Jieba库会先基于词库对文本进行匹配,生成文本中的汉字最有可能形成的词。


然后将这些词组成一个DAG,用动态规划算法来查找最大的概率路径,尽可能不将一个词拆成单独的汉字。


最后,再从词库中找出基于词频的最大切分组合,把这些组合在文本中找出来,进而形成一个一个的词语。


同时Jieba库还使用了HMM模型,用以提高分词的准确率,该模型可以对词库中没有的词进行分词。


02分词方法


Jieba库里有一个cut函数,它为我们提供了自动分词功能,代码如下:


import jieba   # 分词
with open('text.txt','r',encoding='utf-8') as f:
   read = f.read()
word = jieba.cut(read)


打印一下分词后的结果


26.png


我们发现,上面的分词结果中,有大量的标点符号,和一些与情感表达无关的词语,为了避免无关词语对情感分析的影响和加快计算词语的情感速度,我们就需要对分词的结果进行优化。


02优化分词


我们主要从以下两个方面来对分词结果进行优化:1.移除标点符号和换行符;2.删除与情感表达无关的词。


接下来,我将给大家介绍两种方法来实现对分词进行优化。


01 使用停用词集


停用词设置是分词中常用的一种手段,可以提高分割的准确度,同时减少硬件成本、时间成本。网上有许多的停用词集,我们可以挑一个进行下载。在文末,志斌会放自己使用的停用词集链接。代码如下:

import jieba   # 分词
with open('text.txt','r',encoding='utf-8') as f:
   read = f.read()
with open('停用词表.txt','r',encoding='utf-8') as f:
   stop_word = f.read()
word = jieba.cut(read)
words = []
for i in list(word):
   if i notin stop_word:
       words.append(i)


打印一下分词后的结果

27.png


我们发现标点符号和与情感表达无关的词都被过滤掉了。


02

根据词性提取关键词


大家知道,每个词语都是有着自己的词性,我们可以通过Jieba库提取出来每个词的词性,然后进行筛选,保留你需要的词语,代码如下:

import jieba.posseg as psg
cixing = ()
words = []
for i in psg.cut(read):
   cixing = (i.word,i.flag)   #词语和词性
   words.append(cixing) 
save = ['a']    #挑选词性
for i in words:
   if i[1] in save:
       print(i)


给大家分享一个汉语词性表(部分),有更多了解兴趣的读者可以上网搜一下看看。


28.png


我们上面是只保留了形容词,如果大家想保留更多词性的词语,就在save列表中进行添加即可。


03结果展示


分词结果优化过之后,我们就得到了自己想要的结果。接下来就是对这些词来进行词频展示和情感分析了。


29.png



由柱状图可知,“头发”占据词频最高,有231条,其次是词语“考研”和“图书馆”,两个词语分别有74条和58条。


所以我们这条微博的主要关键词是“头发”、“考研”和“图书馆”。


30.png


代码如下:

from pyecharts.charts import Bar
from pyecharts import options as opts
columns = []
data = []
for k,v in dict(Counter(words).most_common(10)).items():
   columns.append(k)
   data.append(v)
bar = (
       Bar()
       .add_xaxis(columns)
       .add_yaxis("词频", data)
       .set_global_opts(title_opts=opts.TitleOpts(title="词频top10"))
   )
bar.render("词频.html")


02 情感分析


在之前跟大家介绍过两种文本情感分析方法,有兴趣的读者可以看看这篇文章推荐一个强大的自然语言处理库—snownlp


在本文,我使用的是Snownlp库来对文本进行情感分析。


从图中,我们可以看到,大家的评论积极态度的有32%,中等态度的占60%,消极态度只占8%,看来大家的心态还是很平和的。


31.png


代码如下:


from snownlp import SnowNLP
positibe = negtive = middle = 0
for i in words:
   pingfen = SnowNLP(i)
   if pingfen.sentiments>0.7:
       positibe+=1
   elif pingfen.sentiments<0.3:
       negtive+=1
   else:
       middle+=1


04总结


1. 本文详细介绍了如何使用Jieba库对文本进行分词,并使用Snownlp库配合对分词结果进行语义情感分析。

2. 通过对用户评论的分析,我们可以知道用户的喜好程度,从而有策略的改进。

3. 本文仅供学习参考,不做它用。

4. 后台回复 文本分析 ,即可获得本文全部数据。


相关文章
|
机器学习/深度学习 自然语言处理 算法
文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)
文本分析-使用jieba库进行中文分词和去除停用词(附案例实战)
7731 0
|
缓存 资源调度
解决安装依赖时报错:npm ERR! code ERESOLVE
解决安装依赖时报错:npm ERR! code ERESOLVE
5310 0
解决安装依赖时报错:npm ERR! code ERESOLVE
|
数据采集 存储 自然语言处理
基于Python的微博热点李佳琦忒网友话题的评论采集和情感分析的方法,利用情感分析技术对评论进行情感倾向性判断
本文介绍了一种基于Python的方法,用于采集微博热点话题下的评论数据,并运用情感分析技术对这些评论进行情感倾向性判断,进而通过统计分析和可视化技术展示网友对特定话题的情感态度,对品牌或个人形象管理、用户需求发现、舆情监测和危机管理等方面具有重要价值。
329 2
基于Python的微博热点李佳琦忒网友话题的评论采集和情感分析的方法,利用情感分析技术对评论进行情感倾向性判断
|
数据采集 存储 自然语言处理
基于网络爬虫的微博热点分析,包括文本分析和主题分析
本文介绍了一个基于Python网络爬虫的微博热点分析系统,使用requests和pandas等库收集和处理数据,结合jieba分词、LDA主题分析和snownlp情感分析技术,对微博文本进行深入分析,并利用matplotlib进行数据可视化,以洞察微博用户的关注点和情感倾向。
656 0
基于网络爬虫的微博热点分析,包括文本分析和主题分析
|
数据采集 搜索推荐 算法
基于B站视频评论的文本分析,采用包括文本聚类分析、LDA主题分析、网络语义分析
本文通过Python爬虫技术采集B站视频评论数据,利用LDA主题分析、聚类分析和语义网络分析等方法,对评论进行深入的文本分析,挖掘用户评论的主题、情感倾向和语义结构,旨在为商业决策提供支持,优化内容创作和用户满意度。
1823 2
基于B站视频评论的文本分析,采用包括文本聚类分析、LDA主题分析、网络语义分析
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
534 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
11月前
|
数据可视化 数据挖掘 UED
Plotly交互式数据可视化
【10月更文挑战第12天】本文介绍了如何使用 Plotly 实现交互式数据可视化,涵盖从安装 Plotly 到数据准备、图表创建、添加交互功能、导出图表及自定义图表样式的全过程。通过具体示例,展示了如何创建和优化交互式折线图,提升数据分析的效率和趣味性。
465 60
|
10月前
|
存储 数据安全/隐私保护
鸿蒙开发:自定义一个动态输入框
在鸿蒙开发中,如何实现这一效果呢,最重要的解决两个问题,第一个问题是,如何在上一个输入框输入完之后,焦点切换至下一个输入框中,第二个问题是,如何禁止已经输入的输入框的焦点,两个问题解决完之后,其他的就很是简单了。
130 13
鸿蒙开发:自定义一个动态输入框
|
数据采集 自然语言处理 数据可视化
基于Python的社交媒体评论数据挖掘,使用LDA主题分析、文本聚类算法、情感分析实现
本文介绍了基于Python的社交媒体评论数据挖掘方法,使用LDA主题分析、文本聚类算法和情感分析技术,对数据进行深入分析和可视化,以揭示文本数据中的潜在主题、模式和情感倾向。
1586 0
|
11月前
|
并行计算 异构计算
卸载原有的cuda,更新cuda
本文提供了一个更新CUDA版本的详细指南,包括如何查看当前CUDA版本、检查可安装的CUDA版本、卸载旧版本CUDA以及安装新版本的CUDA。
8940 3
卸载原有的cuda,更新cuda