2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 手机评论文本挖掘与数据分析(Python)

手机评论文本挖掘与数据分析(Python)

时间:2019-01-23 19:56:48

相关推荐

手机评论文本挖掘与数据分析(Python)

目的

各大电商竞争越来激烈,为了提升客户服务质量,除了打价格战外,了解客户的需求点,对消费者的文本评论进行数据挖掘,倾听客户的心声越来越重要。

工具

1、贝壳采集器

2、Google浏览器

3、Python3.7 + Pycharm

数据采集

①本文对京东平台的手机进行爬虫,首先进入京东商城,选择一款手机,这里以华为Mate 30 Pro 5G为例

②在采集平台输入网址,点击贝壳采集开始配置信息

③因为是采集评论所以还需要进行下预操作配置切换页面:点击预操作按钮–>添加点击元素按钮–>左键点击流程图中添加元素按钮(悬浮显示操作键)–>点击悬浮显示操作键<选择按钮> -->点击网页商品评论TAB页切换按钮 -->点击保存

④没有识别出评论信息,手工操作下:清空字段–>更改页面类型为手工识别列表 --> 选中两个一样元素(这里两个用户名称) -->下一页未自动识别成功–>更改分页类型为手动点击下一页–>配置完成–>开始采集

数据预处理

当我们通过爬虫获取到我们想要的数据之后,进行简单的观察,可以发现评论的一些特点:

文本短,基本上大量的评论就是一句话.

情感倾向明显:明显的词汇 如”好” “可以”

语言不规范:会出现一些网络用词,符号,数字等

重复性大:一句话出现词语重复

数据量大.

故我们需要对这些数据进行数据预处理

数据预处理包括:去重、分词等

下面我们将进行数据清洗

import jieba

#评论内容进行去重

def quchong(infile, outfile):

infopen = open(infile, ‘r’, encoding=‘utf-8’)

outopen = open(outfile, ‘w’, encoding=‘utf-8’)

lines = infopen.readlines()

list_1 = []

for line in lines:

if line not in list_1:

list_1.append(line)

outopen.write(line)

infopen.close()

outopen.close()

quchong(“E:/comments/华为P30.txt”, “E:/comments/P30去重.txt”)

#jieba.load_userdict(‘userdict.txt’)

#创建停用词list

def stopwordslist(filepath):

stopwords = [line.strip() for line in open(filepath, ‘r’, encoding=‘utf-8’).readlines()]

return stopwords

对评论内容进行分词

def seg_sentence(sentence):

sentence_seged = jieba.cut(sentence.strip())

stopwords = stopwordslist(‘stopwords.txt’) # 这里加载停用词的路径

outstr = ‘’

for word in sentence_seged:

if word not in stopwords:

if word != ‘\t’:

outstr += word

outstr += " "

return outstr

inputs = open(‘E:/comments/P30去重.txt’, ‘r’, encoding=‘utf-8’)

outputs = open(‘E:/comments/P30分词.txt’, ‘w’)

for line in inputs:

line_seg = seg_sentence(line) # 这里的返回值是字符串

outputs.write(line_seg + ‘\n’)

outputs.close()

inputs.close()

print(‘分词完毕’)

数据分析

上面我们已经通过去重和jieba分词将爬取的内容进行了预处理,接下来就开始对处理过的数据进行分析,包括词频统计、关键词提取以及词云的生成等

#词频统计

import jieba.analyse

from collections import Counter # 词频统计

with open(‘E:/comments/P30分词.txt’, ‘r’, encoding=‘utf-8’) as fr:

data = jieba.cut(fr.read())

data = dict(Counter(data))

with open(‘E:/comments/P30词频.txt’, ‘w’, encoding=‘utf-8’) as fw: # 读入存储wordcount的文件路径

for k, v in data.items():

fw.write(’%s, %d\n’ % (k, v))

import jieba.analyse

import matplotlib.pyplot as plt

from wordcloud import WordCloud

#生成词云

with open(‘E:/comments/P30词频.txt’) as f:

# 提取关键词

data = f.read()

keyword = jieba.analyse.extract_tags(data, topK=50, withWeight=False)

wl = " ".join(keyword)

# 设置词云

wc = WordCloud(

# 设置背景颜色

background_color = “white”,

# 设置最大显示的词云数

max_words=2000,

# 这种字体都在电脑字体中,一般路径

font_path=‘C:/Windows/Fonts/simfang.ttf’,

height=1200,

width=1600,

# 设置字体最大值

max_font_size=100,

# 设置有多少种随机生成状态,即有多少种配色方案

random_state=30,

)

myword = wc.generate(wl) # 生成词云

# 展示词云图

plt.imshow(myword)

plt.axis(“off”)

plt.show()

wc.to_file(‘E:/comments/P30.png’) # 把词云保存下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。