当前位置:   article > 正文

python 进行文本情感分析_python进行文本情感分析

python进行文本情感分析

wordcloud安装参考:下载安装wordcloud
snownlp安装参考:下载安装snownlp
jieba安装参考:使用码云下载Github文件
wordcloud强调python版本,snownlp和jieba不强调版本,我装的都是python3.6下的。
数据:和鲸社区数据-京东2k条评论

import pandas as pd
data = pd.read_csv('C:/Users/admin/Desktop/新建文件夹/京东评论数据.csv')
data.head(2)
  • 1
  • 2
  • 3
sku_id_iditem_namecomment_idcontentcreation_timereply_countscoreuseful_vote_countuseless_vote_count...user_provincenicknameuser_level_nameuser_clientuser_client_showis_mobiledaysreference_timeafter_daysafter_user_comment
0753411303b51aa9-2b5e-41c3-a40b-343164a1d23acomment11801751173还可以刷脸解锁,帮朋友买的,她很满意2018-08-13 12:24:590500...NaNk***0PLUS会员2来自京东iPhone客户端1.04.02018-08-09 13:38:150.0NO_MESSAGE
1753411303b51aa9-2b5e-41c3-a40b-343164a1d23acomment11525358140第一次买vivo,真心不错,1498的机子,没想到照相很清晰,性价比很高,买值了,还送了小音...2018-05-27 17:49:1775190...NaN呢***呐PLUS会员4来自京东Android客户端1.05.02018-05-22 09:32:370.0NO_MESSAGE

2 rows × 21 columns

data1 = data[['sku_id','content']]
data1.head(10)
  • 1
  • 2
sku_idcontent
07534113还可以刷脸解锁,帮朋友买的,她很满意
17534113第一次买vivo,真心不错,1498的机子,没想到照相很清晰,性价比很高,买值了,还送了小音...
27534113手机好用快递送的快。
38240587手机收到。外观设计很好!美观大方。我喜欢!一直使用华为手机。从荣耀七,荣耀八,荣耀九。反正一...
45942439收到了,挺好的,声音大,电池大,好用发货速度快,非常满意,好好好。
55089275本来觉得双十一还会便宜的,想不到和11月初的价格差不多,想想还是感觉入手了,早买早享受。我的...
67081550没有真正意义上的窄边框,不过已经不错了,手机流畅,另外还有51G空间可用,同时试了下近距拍摄...
75663902幻夜黑颜色很漂亮,2.5D屏幕,圆润。2K屏很清晰,惊艳
87283905特地用了一段时间才来评价,这手机值得这个价钱,打游戏还行,就是电池很不耐用,摄像头也很突出,...
95001213机器没得说,价格也合理,虽说仍有不足,但还是比较满意的,首发就抢到了,暂时发现的不足就是扬声...

情感分析

from snownlp import SnowNLP
data1['emotion'] = data1['content'].apply(lambda x:SnowNLP(x).sentiments)
data1.head(10)
  • 1
  • 2
  • 3
E:\Anconda\programfiles\lib\site-packages\ipykernel\__main__.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  from ipykernel import kernelapp as app
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
sku_idcontentemotion
07534113还可以刷脸解锁,帮朋友买的,她很满意0.470635
17534113第一次买vivo,真心不错,1498的机子,没想到照相很清晰,性价比很高,买值了,还送了小音...0.999999
27534113手机好用快递送的快。0.561609
38240587手机收到。外观设计很好!美观大方。我喜欢!一直使用华为手机。从荣耀七,荣耀八,荣耀九。反正一...0.868183
45942439收到了,挺好的,声音大,电池大,好用发货速度快,非常满意,好好好。0.983088
55089275本来觉得双十一还会便宜的,想不到和11月初的价格差不多,想想还是感觉入手了,早买早享受。我的...0.984574
67081550没有真正意义上的窄边框,不过已经不错了,手机流畅,另外还有51G空间可用,同时试了下近距拍摄...0.956682
75663902幻夜黑颜色很漂亮,2.5D屏幕,圆润。2K屏很清晰,惊艳0.999839
87283905特地用了一段时间才来评价,这手机值得这个价钱,打游戏还行,就是电池很不耐用,摄像头也很突出,...0.996540
95001213机器没得说,价格也合理,虽说仍有不足,但还是比较满意的,首发就抢到了,暂时发现的不足就是扬声...0.992436
data1.describe()
  • 1
sku_idemotion
count3.637000e+033637.000000
mean7.936312e+090.746161
std1.165137e+100.354481
min1.592994e+060.000000
25%5.920651e+060.562240
50%7.651903e+060.962449
75%2.034912e+100.999123
max3.032369e+101.000000

emotion平均值为0.74,中位数为0.96,25%分位数为0.56,可见不到25%的数据造成了整体均值的较大下移。

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sptxJnq5-1591712744516)(output_6_0.png)]

由直方图可见,评论内容两级分化较为严重。
3637条评论中有约2200条评论情感分在[0.9,1]区间内;同时,有约500条评论情感分在[0,0.1]区间内。

from wordcloud import WordCloud
import jieba
w = WordCloud(font_path="msyh.ttc")   #font_path="msyh.ttc",设置字体,否则显示不出来
text = ''
for s in data['content']:
    text += s
data_cut = ' '.join(jieba.lcut(text))
w.generate(data_cut)
image = w.to_file('词云图.png')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
WordCloud各参数:https://blog.csdn.net/yaochuyi/article/details/80094659

#关键词top10
from jieba import analyse 
key_words = jieba.analyse.extract_tags(sentence=text, topK=10, withWeight=True, allowPOS=())
key_words
  • 1
  • 2
  • 3
  • 4
[('手机', 0.20904023041744998),
 ('不错', 0.10491967558213072),
 ('京东', 0.09431019624843097),
 ('屏幕', 0.054966423247022445),
 ('华为', 0.05061411737589104),
 ('小米', 0.04731076382922812),
 ('拍照', 0.04647606302614274),
 ('非常', 0.044200923839597485),
 ('手感', 0.04270424332006433),
 ('感觉', 0.040063432512755605)]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

参数说明 :
sentence 需要提取的字符串,必须是str类型,不能是list
topK 提取前多少个关键字
withWeight 是否返回每个关键词的权重
allowPOS是允许的提取的词性,默认为allowPOS=‘ns’, ‘n’, ‘vn’, ‘v’,提取地名、名词、动名词、动词

积极评论与消极评论

#计算积极评论与消极评论各自的数目
pos = 0
neg = 0
for i in data1['emotion']:
    if i >= 0.5:
        pos += 1
    else:
        neg += 1
print('积极评论,消极评论数目分别为:')
pos,neg
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
积极评论,消极评论数目分别为:
  • 1

(2791, 846)

# 积极评论占比
import matplotlib.pyplot as plt 

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

pie_labels='postive','negative'
plt.pie([pos,neg],labels=pie_labels,autopct='%1.1f%%',shadow=True)

plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VZRPTzVB-1591712744520)(output_14_0.png)]

#获取消极评论数据
data2=data1[data1['emotion']<0.5]
data2.head(10)
  • 1
  • 2
  • 3
sku_idcontentemotion
07534113还可以刷脸解锁,帮朋友买的,她很满意0.470635
135942439收到货,声音很大,功能也多,适合老人用,就是重量有点重,0.461794
17728390527号下的单,今天收到1星期内,坐标河南商丘,手机是武汉仓过来的。充电头是5V2A的 不支持...0.001627
185001213今天刚收到!\n看到京东的快递包装盒,我内心是一群奔腾而过的!几千块钱的物品包装,没有防压提...0.495955
225942439用着目前还可以,就是不知道可以用多久。希望久一些吧。0.239150
325001213第一批抢到,两天后才收到,机器没一代惊艳,边框略粗,全面屏?解决了通话,回归正常手机行列!!...0.444317
358240587总体来说,颜值非常高,很好看,虽然说是后置指纹,但是后背看起来还是挺不错的。用起来整体体验还...0.000012
443901175手机还可以,就刚开始把卡放进去的时候不显示卡,过了第二天才显示出来,耳机也没有,还有就是怎么...0.005839
487534113像素不行,反正买都买了用都用了总体来说还行吧不讨厌也不喜欢一般般,暂时没有什么问题0.499447
515089275总之还是挺好的,挺不错、虽然没有什么优惠吧,抢了个神券还不能用!!!也是用的上了第三个苹果、...0.457264
#消极评论词云图
text2 = ''
for s in data2['content']:
    text2 += s
data_cut2 = ' '.join(jieba.lcut(text2))
w.generate(data_cut2)
image = w.to_file('消极评论词云.png')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

#消极评论关键词top10
key_words = jieba.analyse.extract_tags(sentence=text2, topK=10, withWeight=True, allowPOS=())
key_words
  • 1
  • 2
  • 3
[('手机', 0.19237764869875004),
 ('京东', 0.08930157104159077),
 ('未填写', 0.08087213276666493),
 ('评价', 0.06602737843353074),
 ('屏幕', 0.05285184715212572),
 ('快递', 0.050103021155518554),
 ('用户', 0.05005720904465942),
 ('充电', 0.04605195695403029),
 ('收到', 0.038929704221495554),
 ('没有', 0.03758001077768642)]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

消极评论关键词显示,“屏幕”“快递”“充电”是造成用户体验不佳的几个重要因素,屏幕和充电问题有可能是手机不良品率过高或快递压迫。
因此平台应注重提高手机品控,降低不良品率,另外应设法提升发货,派送,派件的效率和质量。
本文使用jieba,snownlp,wordcloud,matplotlib等模块对文本数据进行了简要的情感分析及可视化,旨在了解用户使用体验,以此改进对平台运营提出优化建议。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/198485?site
推荐阅读
相关标签
  

闽ICP备14008679号