在电商或者一些垂直内容应用的APP内部来看,产品评论往往是客服部门在处理,主要是处理负面情绪的评论,比如恳请客户谅解、转入售后投诉处理环节等。本篇实例从业务角度去推动评论对于产品采购、质量管控等提供决策依据。以下时某个电商评论的词云可视化效果,具体怎么做,只需要4步即可。
STEP 1 数据采集
目前主流方式有两种,一种是Python爬虫,效率高但是也容易被针对,对于非编程人员来说上手较难。适合有一点Python基础人士。
另外一种是第三方爬虫采集平台,有八爪鱼、集客搜等,基本需要付费购买云采集等收费服务才能完美应对电商的反爬虫手段,其中规则也可以在数据市场中购买,爬虫小白完全能使用。
各种知乎、博客都有具体介绍,这里就不细讲。
假设得到以下电商平台数据:
电商平台 | 品牌 | 评论 | 时间 |
---|---|---|---|
天猫 | IPHONE X | 天猫质量信得过,买的放心 | 2017-11-05 |
天猫 | IPHONE X | 苹果值得信赖,非常棒 | 2017-11-20 |
天猫 | IPHONE X | 给老婆买的,看着眼馋 :cry: | 2017-11-25 |
… | … | … | … |
得到评论csv文件后,需要提取单独评论数据,可以用SQL查询从数据库中拉出,也可以用Python对数据文件直接处理,具体代码(Python3,以下同):
#-*- coding: utf-8 -*-
import pandas as pd
inf= '.../data/pinglun.csv'
outf = '.../datatest/IPHONE.txt'
data = pd.read_csv(inf, encoding = 'utf-8')
data = data[[u'评论']][data[u'品牌'] == u'IPHONE X']
data.to_csv(outf, index = False, header = False, encoding = 'utf-8')
STEP 2 数据清洗
这里面临的数据可能存在以下情况:重复数据、空数据等,需要对数据进行去重清洗等。根据评论最容易出现的用户行为,采用以下语法进行处理:
#-*- coding: utf-8 -*-
import pandas as pd
inf = '.../datatest/IPHONE.txt'
outf = '.../datatest/IPHONE_m.txt'
data = pd.read_csv(inf, encoding = 'utf-8', header = None)
l1 = len(data)
data = pd.DataFrame(data[0].unique())
l2 = len(data)
data.to_csv(outf, index = False, header = False, encoding = 'utf-8')
STEP 3 情感分析
数据初步准备好以后,可以进行情感分析,Python第三方库有snowNLP、NLPIR可以用,具体应用还在研究当中,这里介绍一个利用武汉大学教授沈阳开发的ROSTCM6进行情感分析的方法:
打开软件,在左上角功能性分析中选择情感分析,弹出另外一个软件对话框,可以直接使用,使用过程中需要对Python处理的文本进行utf-8到unicode到utf-8的转换。
利用以上方法实际抓取的某电商数据某产品(非IPHONE)进行分析,得出情感分析分布统计如下:
积极情绪: 10643条 67.70% 中性情绪: 1964条 12.49% 消极情绪: 3113条 19.80%
其中,积极情绪分段统计结果如下: 一般(0—10): 4863条 30.94% 中度(10—20): 3414条 21.72% 高度(20以上): 2366条 15.05%
其中,消极情绪分段统计结果如下: 一般(-10—0): 2155条 13.71% 中度(-20—-10): 693条 4.41% 高度(-20以下): 62条 0.39%
由于分析结果带有评分前缀,在做词频分析时还要把前缀去掉,由于电商业务平台主要关注负面情绪主要词汇,因此代码只处理消极情绪的表达,具体代码如下:
#-*- coding: utf-8 -*-
import pandas as pd
inf= '.../chanpin_neg.txt'
outf= '.../chanpin_pre_neg.txt'
data = pd.read_csv(inf, encoding = 'utf-8', header = None)
data = pd.DataFrame(data1[0].str.replace('.*?\d+?\\t ', ''))
data.to_csv(outf, index = False, header = False, encoding = 'utf-8')
STEP 4 词云可视化
首先利用Python的jieba分词对负面情绪文本进行分词处理,具体代码如下:
#-*- coding: utf-8 -*-
import pandas as pd
import jieba
inf = '.../chanpin_pro_neg.txt'
outf = '.../chanpin_cut_neg.txt'
data = pd.read_csv(inf, encoding = 'utf-8', header = None)
mycut = lambda s: ' '.join(jieba.cut(s))
data= data[0].apply(mycut)
data.to_csv(outf, index = False, header = False, encoding = 'utf-8')
得到分词文件后再进行词频统计,搜索网上Python3下词频统计的方法,尝试了不下10种,最终都以失败、准确性、速度慢而告终,几经摸爬滚打,才找到下面这个大牛的具体方法:
具体方法来自csdn jaket5219999,由于还未得到作者授权,就不转载了,有需要可以按照下面链接去查看:
http://blog.csdn.net/jaket5219999/article/details/53022735
得到词频统计后可以用Python进行词云展示,这里偷懒直接用TABLEAU作了一个词云,如文章开头所示。
好了,关于电商点评的情绪分析及词云可视化就讲解完了,希望在解决具体业务问题上能帮到你:smile: