摘要
挖掘电商商品评论中的潜在价值不仅能为销售、顾客选购商品提供科学、可供决策的信息,而且有利于指导商品用户管理和改善商品用户体验。以网络爬取的三只松鼠商品评论为例,首先对其数据进行清洗,再使用Python的wordcloud包绘制分词后的评论词云图。通过词云图结果可以看出大部分客户对三只松鼠商品的评论是好的,并且大部分会回购。本文以挖掘商品评论中隐含信息为出发点,通过文本挖掘对三只松鼠网络商品评论进行分析,不仅为三只松鼠企业网络销售提供建议,而且对消费者购买商品具有参考价值。
1.背景
近年来伴随着电子商务的快速发展,人们越来越多的选择使用电子商务平台选购商品。为提升顾客忠诚度,吸引消费者,电商平台鼓励消费者在购买商品后对商品进行评论。消费者购物体验后的评论作为一种重要的市场反馈,如何对其进行分析、挖掘,将挖掘的信息运用到网络销售和顾客商品选购中成为商品评论分析的重要研究方向。
2.数据预处理
目前网络商品评论存在两大缺点。其一人们可以自由的发表对评价主体的评论,评论的质量不能保证,人们的评论内容具有一定的随意性;其二,这种在线网络评论数据的基本事实并不总是可以使用的面对网络爬取评论数据存在的缺点,为了保证文本挖掘样本数据的质量, 挖掘效果。本文在Python软件运行环境下,剔除特殊字符及英文。
2.1.1 分词
针对商品评价层次丰富等特点,本文所提出的模型将每条语料通过中英文句号分割成单个语句。中文语料并不具备英文语料天然分词的特点,因此需要针对每一单句进行分词处理。本文使用Jieba分词组件进行分词处理。
2.1.2 去停用词
在中文语料中,存在部分与情感分析无关的符号或词语[7],例如:“,”、“。”、“!”、“ 三只”、“ 松鼠”、“因为”、“ 所以”和“ 的”等。通过人工整理等方式,统计此类词语,并在数据集上去除此类词语。
2.2 词云图
首先导入 Jieba 库进行分词,过滤停用词等操作,再分别进行统计商品评价关键词词频,导入 WordCloud 库对文本进行绘制词云图。通过词云图展示可以明显看出顾客对于三只松鼠商品的看法。从词云图中可以看出“买”、“好”、“好吃”、“不错”、“喜欢”等词突出,说明大部分顾客对商品的评价都是极好的等。
# 导入所需的库
import numpy as np
import pandas as pd
import time
import jieba
import codecs
import matplotlib.pyplot as plt
from PIL import Image
from wordcloud import WordCloud
comment_dir = r"评论.xlsx"
col_index = [2]
def log(str):
#日志函数
time_stamp = time.time()
local_time = time.localtime(time_stamp)
str_time = time.strftime('%Y-%m-%d %H:%M:%S',local_time)
with open('log.txt','a+',encoding="UTF-8") as f:
logInfo = str_time + " " + str
print(logInfo)
f.write(logInfo +"\n")
def getCommentList(comment_dir,col_index):
#数据函数,把excel列表中的数据转化为了一个列表
comment_file = pd.read_excel(comment_dir,usecols=col_index)#只读取col_index列
comment_list = comment_file.values#二维
#print("目前的读取到的数据是",comment_file.head())
log('获取到excel数据,转化为了list')
log('读取到{}条评论'.format(len(comment_list)))
return comment_list
def getWordList(comment_list):
word_list = []
stop_words = [',','。',"!"," ","、","三只","松鼠","因为","所以","就","的",'还是','了','很','都']
for comment in comment_list:
split_list = jieba.lcut(str(comment[0]))
for word in split_list:
if(word not in stop_words):
word_list.append(word) #去停用词
with open("word.txt",'w',encoding="UTF-8") as f:
for item in word_list:
f.write(str(item)+' ')
log('得到分词文件')
def getWordCloud():
mask = np.array(Image.open("timg4.jpg"))
with open("word.txt","r",encoding="UTF-8") as f:
txt=f.read()
word=WordCloud(background_color="white",\
width=2400,\
height=3500,
collocations=False,
font_path='微软雅黑粗体.ttf',
mask=mask,
).generate(txt)
word.to_file('test.png')#保存词云图到本地
log("词云图片已保存")
plt.imshow(word,interpolation='bilinear') #使用plt库显示图片
plt.axis("off")
plt.show()
if __name__ == "__main__":
comment_list = getCommentList(comment_dir,col_index)
getWordList(comment_list)
getWordCloud()