您的位置:首页 > 编程语言 > Python开发

用python爬取天猫商品评论并分析(2)

2018-02-19 23:00 1496 查看

用python爬取天猫商品评论并分析(2)

    之前介绍过天猫数据的爬取和数据初步处理,今天介绍下 将采集的评论进行文本分析!下面是总流程:

0. 主要流程

0. 数据采集

这一步参考网址:https://www.jianshu.com/p/2b015d289083或者
http://blog.csdn.net/weixin_41716128/article/details/79306923
0. 目标网址获取
1. 爬虫框架选用

1. 数据处理

这一步参考网址:https://www.jianshu.com/p/2c2906ef230f或者
http://blog.csdn.net/weixin_41716128/article/details/79314082
 0. 数据存储
1.数据清洗
2. 数据初步分析
 
2. 数据挖掘
0. 用户情感分析
  上次爬取并处理过的数据这里我提取追加评论字段进行分析(追加的评论更能体现产品品质)



导出txt文档如下:
并更名为comment.txt
 


好了写挖掘代码:from snownlp import SnowNLP
file="comment.txt"
file1="new.txt"
x=0
#好评计数
k=0
#中评计数
y=0
#差评计数
z=0
#总数
with open(file,"r",encoding="utf-8") as text:
#打开目标文件
with open(file1, "w", encoding="utf-8") as text1:
#打开保存差评的文件
for comment in text:
z+=1
s=SnowNLP(comment)
#文本分析
s=s.sentiments
#情感系数
if s>0.5:
x+=1
elif s==0.5:
k+=1
else:
text1.write(comment)
#写入差评数
y+=1
print("好评数:"+str(x))
print("差评数:"+str(y))
print("中评数:"+str(k))
print("总评论数:"+str(z))
print("差评率:"+str( round(y/z,2)*100)+"%")可以看到代码非常简单,主要是用到snownlp的情感分析功能
Snownlp是什么?参考:https://pypi.python.org/pypi/snownlp/
主要功能如下:
 


这里主要用到情感分析(买卖东西时的评价)
好,看看程序输出的结果:
 


有点意外差评率那么高。
那么许多童鞋会有疑问了为什么这个结果与天猫的评分不一样
 


4.9的评分等于54%的差评?答案当然是否定的。个人认为有如下的原因:
(0)Snownlp的分析不是百分百正确的,为此我特意将差评提取出来如下:



可以发现前面2条评论明显不是差评,所以Snownlp的分析还是有点误差的(要降低这个误差需要自己训练数据并构建一个模型,会涉及机器学习的知识,难度太大博主选择放弃)但是正确率应该在80-90之间可信度还是很高(80-90正确率是许多网友测试得到的,仅限于购物评论)
(1)原始数据还有些噪音和错误数据没有处理如图:
 


虚线里面评论的网友,你确定不是为了凑字数?
(2)数据样本是追加的评论(1357条),样本比较特殊,且样本占比较小
 


一共有66404条评论,其中追评1772(样本抽取1357条且爬取时丢失了部分,详情参考数据采集部分:https://www.jianshu.com/p/2b015d289083或者
http://blog.csdn.net/weixin_41716128/article/details/79306923
)
(3)个人认为,追加的一般都是差评,不是差评就是为了凑字拿奖励(当然也有比较正直的好评的)
1. 可视化
既然差评已经提取出来了,那么就用python 的jieba分析下大家差评的原因吧(为什么偏偏是jieba?简单粗暴!)
代码如下:#coding=utf-8
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import PIL.Image as Image
import numpy as np
import jieba
#导入必备的模块
stoplist = [line.strip() for line in open('stop.txt','r',encoding="utf8").readlines() ]
#导入停用词
text_from_file_with_apath = open('new.txt',encoding="utf8").read()
#打开本地数据文件signature.txt.注意文件名不能用中文
for stop in stoplist:
jieba.del_word(stop)
#去除停用词
wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=False)
wl_space_split = " ".join(wordlist_after_jieba)
#用jieba模块进行挖掘关键词
4000
coloring=np.array(Image.open("cat_new.jpg"))
#获取背景图片,new.jpg
my_wordcloud = WordCloud(background_color="white",
mask=coloring,
width=617, height=306,
font_path="tian.ttf",
max_words=400,
max_font_size=100,
min_font_size=20,
random_state=42).generate(wl_space_split)
#用wordcloud设计显示字体
image_colors=ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
#背景图片颜色与字体匹配
plt.imshow(my_wordcloud)
#显示图片
plt.axis("off")
# 关闭坐标轴
plt.show()
#显示词云图
需要说下的是:
stoplist = [line.strip() for line in open('stop.txt','r',encoding="utf8").readlines() ]
#导入停用词
关于停用词库是网上几个大学词库的集合
 


复制网站:http://blog.csdn.net/u010533386/article/details/51458591
停用词有什么作用?下面放2个图
没有去除的停用词的结果:


 
可以看到有许多没有意义的词如:没有,现在,就是等词占据了许多空间
去除停用词的:



无意义的词少了但是还是有的如:真的,不到,几天等(要去除需要手动添加停用词)
从图中可以发现顾客对这家店的iPhone x有如下不满:黑屏,售后,客服,发票,电池,信号,解锁,系统等,介于此博主还是用回我可爱的小米3联通版(压根就是因为买不起啊哈哈哈)
以上是差评分析,其实还可以做好评分析的这里就不展开了!(iPhone x也有是有优点的,大家理性购买哈)

1. 难点说明

0. 关于天猫securitymatrix技
1. 关于机器学习
上面提到snownlp分析是有误差的,且只是对购物评论正确率比较高,因此snownlp的局限性是比较高的,因此不能很好的兼容其他分析了如:音乐评论,电影评论,医学应用,文言文等。为此大家需要提高准确率或者应用到其他领域就需要自行去训练模型了。建立模型的过程中会用到且不限于以下挖掘算法和知识:朴素贝叶斯,高斯贝叶斯,余弦相似度,kmeans,NLTK模块等(怎么实现?不会,不写,任性)
最后放出上一张图的背景
 


整个专题终于结束了,后面可能会介绍我毕业设计的主题:apriori算法的实现与设计
      大家,新年快乐!!!!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息