利用python实现简单的情感分析实例教程
作者:IT之一小佬 发布时间:2021-12-27 18:19:42
标签:python,情感,分析
python实现简单的情感分析
1 数据导入及预处理
1.1 数据导入
# 数据导入
import pandas as pd
data = pd.read_csv('../data/京东评论数据.csv')
data.head()
1.2 数据描述
# 数据描述
data.describe()
1.3 数据预处理
# 数据预处理
# 取出sku_Id,content字段
data1 = data[['sku_id', 'content']]
data1.head(10)
2 情感分析
2.1 情感分
# 情感分析
from snownlp import SnowNLP
data1['emotion'] = data1['content'].apply(lambda x: SnowNLP(x).sentiments)
data1.head()
# 情感数据描述
data1.describe()
emotion平均值为0.74,中位数为0.96,25%分位数为0.56,可见不到25%的数据造成了整体均值的较大下移。
2.2 情感分直方图
# 绘制情感分直方图
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
bins = np.arange(0, 1.1, 0.1)
plt.hist(data1['emotion'], bins, color = '#4F94CD', alpha=0.9)
plt.xlim(0, 1)
plt.xlabel('情感分')
plt.ylabel('数量')
plt.title('情感分直方图')
plt.show()
由直方图可见,评论内容两级分化较为严重;
3637条评论中有约2200条评论情感分在[0.9,1]区间内;同时,有约500条评论情感分在[0,0.1]区间内。
2.3 词云图
# 绘制词云图(这儿没有做停用词处理)
from wordcloud import WordCloud
import jieba
myfont = myfont = r'C:\Windows\Fonts\simhei.ttf'
w = WordCloud(font_path=myfont)
text = ''
for i in data['content']:
text += i
data_cut = ' '.join(jieba.lcut(text))
w.generate(data_cut)
image = w.to_file('词云图.png')
image
2.4 关键词提取
# 关键词提取top10
# 这儿直接写import jieba运行会显示没有analyse属性
from jieba import analyse
key_words = jieba.analyse.extract_tags(sentence=text, topK=10, withWeight=True, allowPOS=())
key_words
以上关键词显示,消费者比较在意手机的“屏幕”“拍照”“手感”等特性,“华为”“小米”是出现频次最高的两个手机品牌。
参数说明 :
sentence 需要提取的字符串,必须是str类型,不能是list
topK 提取前多少个关键字
withWeight 是否返回每个关键词的权重
allowPOS是允许的提取的词性,默认为allowPOS=‘ns’, ‘n’, ‘vn’, ‘v’,提取地名、名词、动名词、动词
3 积极评论与消极评论
3.1 积极评论与消极评论占比
# 计算积极评论与消极评论各自的数目
pos, neg = 0, 0
for i in data1['emotion']:
if i >= 0.5:
pos += 1
else:
neg += 1
print('积极评论数目为:', pos, '\n消极评论数目为:', neg)
# 积极消极评论占比
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
pie_labels = 'positive', 'negative'
plt.pie([pos, neg], labels=pie_labels, autopct='%1.2f%%', shadow=True)
plt.show()
3.2 消极评论分析
# 获取消极评论的数据
data2 = data1[data1['emotion'] < 0.5]
data2.head()
#消极评论词云图(这儿没有做停用词处理)
text2 = ''
for s in data2['content']:
text2 += s
data_cut2 = ' '.join(jieba.lcut(text2))
w.generate(data_cut2)
image = w.to_file('消极评论词云.png')
image
#消极评论关键词top10
key_words = jieba.analyse.extract_tags(sentence=text2, topK=10, withWeight=True, allowPOS=())
key_words
消极评论关键词显示,“屏幕”“快递”“充电”是造成用户体验不佳的几个重要因素;屏幕和充电问题有可能是手机不良品率过高或快递压迫;
因此平台应注重提高手机品控,降低不良品率;另外应设法提升发货,配送,派件的效率和质量。
来源:https://blog.csdn.net/weixin_44799217/article/details/117364492
0
投稿
猜你喜欢
- 阅读上一篇教程:WEB2.0网页制作标准教程(8)CSS布局入门接下来开始要真正设计布局了。和传统的方法一样,你首先要在脑海里有大致的轮廓构
- DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear
- 用Python实现常规的静态网页抓取时,往往是用urllib2来获取整个HTML页面,然后从HTML文件中逐字查找对应的关键字。如下所示:i
- Summary主要包括以下三种途径:使用独立的函数;使用torch.type()函数;使用type_as(tesnor)将张量转换为给定类型
- 本文实例讲述了php+mysqli实现批量替换数据库表前缀的方法。分享给大家供大家参考。具体分析如下:在php中有时我们要替换数据库中表前缀
- 1、查找字符串除了使用index()方法在字符串中查找指定元素,还可以使用find()方法在一个较长的字符串中查找子串。如果找到子串,返回子
- 如题,本次是要实现点击超链接实现执行js代码,并确认是否删除数据库数据,采用php。首先链接数据库,查询数据库数据:<?php$dbm
- 用ASP编写虚拟社区、网上购物等程序时,Application和Session对象具有举足轻重的作用,能够灵活合理地运用这两个对
- Python中的正则表达式要用到re模块,下面先介绍一下正则表达式需要用到的特殊字符和说明常用的RegEx基础语法语法说明\d匹配一个数字字
- 利用Python制作自动抢火车票小程序,过年再也不要担心没票了!前言每次过年很多人都会因为抢不到火车票而回不了家,所以小编利用Python写
- Python是一种计算机程序设计语言,一种面向对象的动态类型语言,一种脚本语言。最初被设计用于编写自动化脚本(shell)的,常用于各种服务
- 导语应好友邀请,帮他写了个小程序,功能类似于实时监控自己关注的UP主,如果关注的UP主中有人发布了抽奖的动态,就自动参与这个抽奖。这样就能不
- 在上一讲代码的基础上,做进一步修改,成为了如下程序,请看官研习这个程序:#!/usr/bin/env python#coding:utf-8
- 本节列出了可以运行MySQL的操作系统。我们使用GNU Autoconf,因此将MySQL移植到所有使用Posix线程和C++编译器的现代系
- 一、获取二叉树的深度就是二叉树最后的层次,如下图:实现代码:def getheight(self): &n
- 1、函数实现# -*- coding: utf-8 -*-def tail(filename, n=10): with open
- 在运营或者对各种 SDK 或者 API 进行调试的时候,邮件功能基本上都会被使用到。在测试的时候,可能很多人都会使用 SMTP 或者自己的邮
- Python 正则表达式简介正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增
- 导言GridView是由一组字段(Field)组成的,它们都指定的了来自DataSource中的什么属性需要用到自己的输出呈现中。最简单的字
- tuple函数功能和list功能很相似,以序列为参数并把它转换为元组>>> tuple([1,2,3])(1, 2, 3)