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

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

  • 学习建议
  • SnowNLP基础
    • 什么是SnowNLP?
    • SnowNLP情感分析
  • SnowNLP使用
    • SnowNLP安装
    • 情感分析
    • 中文分词
    • 关键词提取
    • 拼音、词性标准
  • SnowNLP实战-博客评论数据的情感分析
    • 数据准备
    • 数据获取
    • 数据分析
  • 总结

学习建议

  • 现在很多网站、小程序、应用软件、博客、电商购物平台等,都有很多的用户评论数据,这些数据包含了用户对产品的认知、看法和一些立场;
  • 那么我们可以对这些数据进行情感分析,可以得到一些有价值的信息,帮助我们进一步提升产品价值或用户体验;
  • 本文主要针对某个博客的评论数据进行分析,分析用户的情感变化,包括正面的、负面的情绪变化等;
  • 学习本文建议对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 SnowNLPtext = "我篇文章内容丰富、条理清晰,让我学到了很多~~~"
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 SnowNLPdata = "如果我有一个亿,我会不会飘?"
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 SnowNLPtext = "这是一篇关于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 pltdata = ["文章内容充实,对实际项目使用有很好的帮助","内容通俗易懂,可以快速入门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 + 1else: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不仅可以对评论数据进行情感分析,还能进行文本分类、中文分词、词性标注、提取关键词、文本相似度计算等操作。这样做数据分析其实为了帮助我们更好的了解我们的目标客户对于产品的使用反馈,可以很好帮助我们进一步提升产品质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术面试最重要的是什么?

技术面试最重要的是什么? 最重要的当然是实力,然而实力之外,也有一些基本原则。 1 让面试官听懂你在做什么 牛逼的人都是能把最复杂的事情讲简单的。 如果面试官听不懂你讲的东西,他就无法判断你的水平。如果这个面试官不是你…

面向IoT物联网的时间序列引擎

1、背景 随着近年来业务的发展,尤其是机器产生的数据占比越来越高的趋势下,时序数据因为其业务价值越来越被更多地关注,也因而催生了专用的时间序列数据库,简称时序数据库(TimeSeries Database,TSDB&#x…

String、StringBuilder和StringBuffer的区别以及应用场景

主要从以下几个角度来讨论区别和应用场景: 一、底层存储方面 String:是一个只读字符串,底层是final修饰的数组,不可被继承,存储在字符串常量池中。每次进行拼接操作时,底层会隐式new一个 StringBuilder对…

密码解密 C卷(100%用例)(JavaPythonC++Node.jsC语言)

给定一段“密文“字符串s,其中字符都是经过"密码本”映射的,现需要将"密文"解密并且输出 映射的规则(a-i)分别用(1-9)表示;(j-z")分别用(10-"26”)表示 约束:映射始终唯一 输入描述: “密文”字符串 输出描述: 明文字符串 补充说明: 翻译后的文本…

flutter选择国家或地区的电话号码区号

1.国家区号列表(带字母索引侧边栏) import package:generated/l10n.dart; import package:widget/login/area_index_bar_widget.dart; import package:flutter/material.dart; import package:flutter_screenutil/flutter_screenutil.dart;class LoginA…

实现更高能效的汽车级低边驱动器NRVB140ESFT1G 带温度和电流限制 自保护低压侧驱动器

一起去了解关于汽车电子AEC Q101车规认证!!! 是一种针对分立半导体的可靠性测试认证程序,由汽车电子协会发布。这个认证程序主要是为了确保汽车电子产品在各种严苛的条件下能够正常工作和可靠运行。它包括了对分立半导体的可靠性、环境适应性…

(2022级)成都工业学院Java程序设计(JAVA)实验一:编写一个简单的Java程序

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、代码仅提供参考 3、如果代码不满足你的要求,请寻求其他的途径 运行环境 window11家庭版 IntelliJ IDEA 2023.2.2 jdk17.0.6 实验要求 1、 控制台菜单。要求如下: 1)…

Docker容器化技术(互联机制实现便捷互访)

容器的互联是一种让多个容器中的应用进行快速交互的方式。它会在源和接收容器之间创建连接关系,接收容器可以通过容器名快速访问到源容器,而不用指定具体的IP地址。 1.自定义容器命名 连接系统依据容器的名称来执行。因此,首先需要自定义一…

DataFunSummit 2023因果推断在线峰会:解码数据与因果,引领智能决策新篇章(附大会核心PPT下载)

在数据驱动的时代,因果推断作为数据科学领域的重要分支,正日益受到业界的广泛关注。DataFunSummit 2023年因果推断在线峰会,汇聚了国内外顶尖的因果推断领域专家、学者及业界精英,共同探讨因果推断的最新进展、应用与挑战。本文将…

人工智能的迷惑行为:一场技术与期望的较量

目录 写在开头1. 人工智能迷惑行为的现象1.1 智能助手的理解误区1.2 自动翻译的奇妙旅程1.3 在线客服的困惑回答1.4 图像识别的惊奇误会1.5 自动作文生成器的创意外溢1.6 生成式绘画AI的“艺术创作”1.7 音乐创作AI的奇特旋律1.8 自动生成的小说情节1.9 生成式AI写诗 2 导致迷惑…

天星数科立足专业,持续深化金融科技赋能产业

党的二十大报告提出“建设现代化产业体系”,要求“坚持把发展经济的着力点放在实体经济上”。这是站在改革开放40多年发展实践基础上,实现第二个百年奋斗目标作出的战略部署。天星数科作为深耕金融服务多年的科技公司,聚焦主业、立足于专业&a…

Python基础学习(6)函数基础与函数参数

文章目录 一.认识参数1.特点2.优点 二.定义函数三,函数参数1.必备参数2.默认参数3.不定长参数①不定长参数1②不定长参数2 四,返回值(return)五,文档字符串1.**作用**:2.**语法格式:**3.输出方式: Python基础学习(1)基本知识 Python基础学习(2)序列类型方法与数据类型转换 Pyth…

数字媒体专业AR增强现实仿真模拟实训

增强现实技术是一种利用计算机生成的图像、声音、传感器数据等多媒体信息,实时地与用户所处的真实环境相结合,为用户提供一种身临其境的体验。这种技术广泛应用于游戏、娱乐、旅游等领域,现在也逐渐在教育领域崭露头角。 二、数字媒体专业运用…

[MYSQL数据库]--表内操作(CURD)

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、表的 Cre…

Sklearn线性回归

Scikit-learn 中的线性回归是一个用于监督学习的算法,它用于拟合数据集中的特征和目标变量之间的线性关系。以下是使用 Scikit-learn 实现线性回归的基本步骤: 1. 导入所需库 首先,你需要导入所需的库和模块。 import numpy as np import …

蓝桥杯历年真题省赛之 2016年 第七届 生日蜡烛

一、题目 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? 请填写他开始过生日party的年龄数。 注意&…

Mybatis的XML配置文件

Xml文件中写SQL 为什么要学? 学习了Mybatis中XML配置文件的开发方式了,大家可能会存在一个疑问:到底是使用注解方式开发还是使用XML方式开发? 官方说明:https://mybatis.net.cn/getting-started.html 结论:使用Myba…

【数据集】2023自动驾驶开源数据集-学习笔记

文章目录 1. 自动驾驶有哪些公开数据集2. 预测相关的数据集有哪些 1. 自动驾驶有哪些公开数据集 waymo open dataset 适应任务: 域适应,2D追踪,2D检测,3D追踪,3D检测,实时2D检测,实时3D检测,交互…

Python3 @get_time 装饰器

Python get_time 装饰器 get_time 装饰器可以用于计算函数的执行时间。 示例: import timedef get_time(func):def wrapper(*args, **kwargs):start_time time.time()func(*args, **kwargs)end_time time.time()print(f"函数 {func.__name__} 执行时间&am…

【数据挖掘】实验2:R入门2

实验2&#xff1a;R入门2 一&#xff1a;实验目的与要求 1&#xff1a;熟悉和掌握R数据类型。 2&#xff1a;熟悉和掌握R语言的数据读写。 二&#xff1a;实验内容 1&#xff1a;R数据类型 【基本赋值】 Eg.1代码&#xff1a; x <- 8 x Eg.2代码&#xff1a; a city …