数据分析实战-Python实现博客评论数据的情感分析

简介: 数据分析实战-Python实现博客评论数据的情感分析

学习建议

  • 现在很多网站、小程序、应用软件、博客、电商购物平台等,都有很多的用户评论数据,这些数据包含了用户对产品的认知、看法和一些立场;
  • 那么我们可以对这些数据进行情感分析,可以得到一些有价值的信息,帮助我们进一步提升产品价值或用户体验;
  • 本文主要针对某个博客的评论数据进行分析,分析用户的情感变化,包括正面的、负面的情绪变化等;
  • 学习本文建议对Python的SnowNLP第三库有一定的了解,另外对Python的excel数据处理相关库有一些基础认知,比如pandas库、matplotlib库等等。

SnowNLP基础

什么是SnowNLP?

在学习前,我们先了解下什么是SnowNLP?

  • SnowNLP是Python的第三方模块或者库;
  • SnowNLP主要作用是可实现对评论内容的情感预测。

SnowNLP情感分析

  • SnowNLP可友好的处理中文内容,包括中文分词、文本分类、提取文本关键词、文本相似度计算、情感分析等;
  • 而针对情感分析,分析完成后可得到概率,从概率我们可以得出哪些是正面评论,哪些是负面评论;
  • 情感分析中,概率大于0.5视为正面评价(积极情感),概率小于0.5视为负面评价(消极情感)。

SnowNLP使用

在进行实战之前,我们了解一些SnowNLP的简单使用,可对后续我们数据分析有一定的帮助。下边简单举几个例子,帮助大家理解SnowNLP的作用。

SnowNLP安装

直接使用pip安装即可:

pip install snownlp

情感分析

  • 情感分析会对评价的正面和负面评价进行分析,大于0.5为正面,否则为负面;
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2024/3/12
# 文件名称:test_snlp.py
# 作用:snownlp使用-情感分析

import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "snownlp"])
from snownlp import SnowNLP

text = "我篇文章内容丰富、条理清晰,让我学到了很多~~~"
s = SnowNLP(text)
# 情感分析
sentiment = s.sentiments
if sentiment > 0.5:
    print('正面评价')
else:
    print('负面评价')

# 输出为:正面评价

中文分词

  • 中文分析主要是对一句话进行分解,把整个语句分割成单个词语和汉字;
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2024/3/12
# 文件名称:test_snlp.py
# 作用:snownlp使用-中文分词

import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "snownlp"])
from snownlp import SnowNLP

data = "如果我有一个亿,我会不会飘?"
s = SnowNLP(data)
print(s.words)

# 输出:
# ['如果', '我', '有', '一个', '亿', ',', '我', '会', '不', '会', '飘', '?']

关键词提取

  • 可以设置需要提取的关键词个数,然后输出对应的药提取的关键词;
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2024/3/12
# 文件名称:test_snlp.py
# 作用:snownlp使用-关键词提取

import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "snownlp"])
from snownlp import SnowNLP

text = "这是一篇关于Python数据处理的博客文章,主要介绍Python中SnowNLP库的使用方法以及实战。"
s = SnowNLP(text)
keywords = s.keywords(3)  # 提取前3个关键词
print('关键词:', keywords)

# 输出为:关键词: ['Python', '库', 'SnowNLP']

拼音、词性标准

  • 这个就不多介绍了,详细可以去看看SnowNLP的使用。

SnowNLP实战-博客评论数据的情感分析

数据准备

  • 我们需要提供一组博客评论数据,然后进行分析;
  • 数据建议可以放入excel中,方便分析,本文为了代码运行方面,后续会放置在变量中;
  • 数据如下:
类别 博客名称 时间 评价内容
实用性 Python字典和元组 2024/1/8 20:16 文章内容充实,对实际项目使用有很好的帮助
易学性 一篇文章看懂Python从0到放弃 2024/1/9 8:13 内容通俗易懂,可以快速入门Python的学习
完整性 Python画图 2024/2/3 12:20 内容过于简单,不太完整,有点缺少重要内容,建议补充
实用性 我的Python学习成长记 2023/11/12 23:12 大佬这篇博文对我很有启发,感谢分享
易学性 Python画图 2023/11/13 20:12 内容不太能理解,没学会,哈哈
完整性 一篇文章看懂Python从0到放弃 2023/12/30 20:15 内容很多,也很全,学习了
易学性 我的Python学习成长记 2023/12/20 21:15 可能我基础薄弱,感觉看不懂啊
易学性 如何在职场中呼风唤雨? 2023/12/19 13:13 标题党,一看就是水文
完整性 如何在职场中呼风唤雨? 2023/12/21 15:15 内容过于浮夸,不够完整,建议从实际中多讲讲
实用性 一篇文章看懂Python从0到放弃 2023/12/17 18:18 比较比较实用,学习了
完整性 我的Python学习成长记 2023/12/24 5:37 内容充实完整,值得推荐给小伙伴
实用性 Python画图 2023/12/11 3:16 实用性还不错
易学性 Python+selenium如何实现自动化测试? 2023/12/9 16:48 内容不错,容易上手,感谢分享
完整性 Python+selenium如何实现自动化测试? 2023/12/8 11:33 内我很全啊,支持大佬

数据获取

  • 有两种方式,第一种是把以上数据存入data.xls文件中,然后使用pandas读取即可,比如:

data = 'data.xls'
df = pd.read_excel(data ) # 读取文本数据
df1=df.iloc[:,3] # 提取所有数据
print(type(df1))
values=[SnowNLP(i).sentiments for i in df1] # 遍历每条评论进行预测

  • 第二种方式是,我们直接把需要的数据放入变量,便于后续直接运行代码,如下:
data = ["文章内容充实,对实际项目使用有很好的帮助",
        "内容通俗易懂,可以快速入门Python的学习",
        "内容过于简单,不太完整,有点缺少重要内容,建议补充",
        "大佬这篇博文对我很有启发,感谢分享",
        "内容不太能理解,没学会,哈哈",
        "内容很多,也很全,学习了",
        "可能我基础薄弱,感觉看不懂啊",
        "标题党,一看就是水文",
        "内容过于浮夸,不够完整,建议从实际中多讲讲",
        "比较比较实用,学习了",
        "内容充实完整,值得推荐给小伙伴",
        "实用性还不错",
        "内容不错,容易上手,感谢分享",
        "内我很全啊,支持大佬",
        ]
print(data)

数据分析

大致过程分如下几个步骤:

  • 导入需要的模块或者库;
  • 将需要的数据存入列表;
  • 循环遍历所有数据;
  • 输出积极和消极情绪的概率;
  • 计算概率并根据结果生成图标的横纵坐标;
  • 结果显示。
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2024/3/12 
# 文件名称:test_snlp.py
# 作用:Python实现博客评论数据的情感分析

import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "snownlp"])
subprocess.check_call([sys.executable, "-m", "pip", "install", "matplotlib"])
from snownlp import SnowNLP
import matplotlib.pyplot as plt


data = ["文章内容充实,对实际项目使用有很好的帮助",
        "内容通俗易懂,可以快速入门Python的学习",
        "内容过于简单,不太完整,有点缺少重要内容,建议补充",
        "大佬这篇博文对我很有启发,感谢分享",
        "内容不太能理解,没学会,哈哈",
        "内容很多,也很全,学习了",
        "可能我基础薄弱,感觉看不懂啊",
        "标题党,一看就是水文",
        "内容过于浮夸,不够完整,建议从实际中多讲讲",
        "比较比较实用,学习了",
        "内容充实完整,值得推荐给小伙伴",
        "实用性还不错",
        "内容不错,容易上手,感谢分享",
        "内我很全啊,支持大佬",
        ]

# 遍历数据并进行预测
values = [SnowNLP(i).sentiments for i in data] 
print(values)
# 输出积极的概率,大于0.5积极的,小于0.5消极的

# 保存预测值
text = []
positive = 0
negative = 0
for i in values:
   if(i>=0.5):
       text.append("正面")
       positive = positive + 1
   else:
       text.append("负面")
       negative = negative + 1

# 计算好评率
rate = positive / (positive + negative)
print('好评率为:','%.f%%' % (rate * 100)) # 格式化为百分比

# 图例的横纵坐标
y = values
plt.rc('font', family='SimHei', size=10)
plt.plot(y, marker='o', mec='r', mfc='w', label=u'博客评分')
plt.xlabel('粉丝')
plt.ylabel('博客评分')

# 结果显示
plt.legend()  # 让图例生效
plt.title('博客评论情感分析', family='SimHei', size=14, color='red')
plt.savefig('plot.jpg')
  • 显示效果如下:

请在此添加图片描述

总结

Python实现博客评论数据的情感分析实际是使用了SnowNLP库的功能,SnowNLP不仅可以对评论数据进行情感分析,还能进行文本分类、中文分词、词性标注、提取关键词、文本相似度计算等操作。这样做数据分析其实为了帮助我们更好的了解我们的目标客户对于产品的使用反馈,可以很好帮助我们进一步提升产品质量。

目录
相关文章
|
8天前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
15天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
45 0
|
10天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
23 2
|
9天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
19 1
|
10天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
11天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
16天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
30 2
|
7天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
7天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
9天前
|
索引 Python
SciPy 空间数据1
SciPy 通过 `scipy.spatial` 模块处理空间数据,如判断点是否在边界内、计算最近点等。三角测量是通过测量角度来确定目标距离的方法。多边形的三角测量可将其分解为多个三角形,用于计算面积。Delaunay 三角剖分是一种常用方法,可以对一系列点进行三角剖分。示例代码展示了如何使用 `Delaunay()` 函数创建三角形并绘制。
19 0