数据挖掘实战—电商产品评论数据情感分析


案例数据及notebook提取码:1234


传送门:

引言

  本文主要针对用户在电商平台上留下的评论数据,对其进行分词、词性标注和去除停用词等文本预处理。基于预处理后的数据进行情感分析,并使用LDA主题模型提取评论关键信息,以了解用户的需求、意见、购买原因及产品的优缺点等,最终提出改善产品的建议。
定义如下挖掘目标

  1. 对京东商城中美的电热水器的评论进行情感分析
  2. 从评论文本中挖掘用户的需求、意见、购买原因及产品的优缺点
  3. 根据模型结果给出改善产品的建议

定义如下挖掘步骤

  1. 利用Python对京东商城中美的电热水器的评论进行爬取。
  2. 利用Python爬取的京东商城中美的电热水器的评论数据,对评论文本数据进行数据清洗、分词、停用词过滤等操作。
  3. 对预处理后的数据进行情感分析,将评论文本数据按照情感倾向分为正面评论数据(好评)和负面评论数据(差评)。
  4. 分别对正、负面评论数据进行LDA 主题分析,从对应的结果分析文本评论数据中有价值的内容。
    在这里插入图片描述

一、评论预处理

1.评论去重

  由语言的特点可知,在大多数情况下,不同购买者之间的有价值的评论是不会出现完全重复的,如果不同购物者的评论完全重复,那么这些评论一般都是毫无意义的。显然这种评论中只有最早的评论才有意义(即只有第一条有作用)。有的部分评论相似程度极高,可是在某些词语的运用上存在差异。此类评论即可归为重复评论,若是删除文字相近评论,则会出现误删的情况。由于相近的评论也存在不少有用的信息,去除这类评论显然不合适。因此,为了存留更多的有用语料,本节针对完全重复的语料下手,仅删除完全重复部分,以确保保留有用的文本评论信息。

%matplotlib inline
import pandas as pd
import numpy as np
import re
import jieba.posseg as psg

# 加载评论数据
reviews = pd.read_csv('data/reviews.csv')

在这里插入图片描述

# 统计重复数据
reviews[['content', 'content_type']].duplicated().sum()

在这里插入图片描述

# 评论去重
reviews = reviews[['content', 'content_type']].drop_duplicates()
# 重置索引
reviews.reset_index(drop=True,inplace=True)

在这里插入图片描述

2.数据清洗

  通过人工观察数据发现,评论中夹杂着许多数字与字母,对于本案例的挖掘目标而言,这类数据本身并没有实质性帮助。另外,由于该评论文本数据主要是围绕京东商城中美的电热水器进行评价的,其中“京东”“京东商城”“美的”“热水器”“电热水器"等词出现的频数很大,但是对分析目标并没有什么作用,因此可以在分词之前将这些词去除,对数据进行清洗

# 去掉评论中的数字、字母,以及“京东”“京东商城”“美的”“热水器”“电热水器"
content = reviews['content']
# 编译匹配模式
pattern = re.compile('[a-zA-Z0-9]|京东|美的|电热水器|热水器|京东商城')
# re.sub用于替换字符串中的匹配项
content = content.apply(lambda x : pattern.sub('',x))

在这里插入图片描述

二、评论分词

1.分词、词性标注、去除停用词

jieba的几个分词接口:cut、lcut、posseg.cut、posseg.lcut

# 自定义简单的分词函数
worker = lambda s : [[x.word,x.flag] for x in psg.cut(s)]   # 单词与词性
seg_word = content.apply(worker)

在这里插入图片描述

# 将词语转化为数据框形式,一列是词,一列是词语所在的句子id,最后一列是词语在该句子中的位置
 # 每一评论中词的个数
n_word = seg_word.apply(lambda x: len(x)) 
# 构造词语所在的句子id
n_content = [[x+1]*y for x,y in zip(list(seg_word.index), list(n_word))]
# 将嵌套的列表展开,作为词所在评论的id
index_content = sum(n_content, [])  

seg_word = sum(seg_word,[])
# 词
word = [x[0] for x in seg_word]
# 词性
nature = [x[1] for x in seg_word]
# content_type评论类型
content_type = [[x]*y for x,y in zip(list(reviews['content_type']),list(n_word))]
content_type = sum(content_type,[])

# 构造数据框
result = pd.DataFrame({
   'index_content': index_content,
                      'word' : word,
                      'nature': nature,
                      'content_type' : content_type})

在这里插入图片描述
观察nature列得,x表示标点符号
删除标点符号

# 删除标点符号
result = result[result['nature'] != 'x']

在这里插入图片描述
删除停用词

# 删除停用词
# 加载停用词
stop_path = open('data/stoplist.txt','r',encoding='utf-8')
stop = [x.replace('\n','') for x in stop_path.readlines()]
# 得到非停用词序列
word = list(set(word) - set(stop))
# 判断表格中的单词列是否在非停用词列中
result = result[result['word'].isin(word)]

在这里插入图片描述

# 构造各词在评论中的位置列
n_word = list(result.groupby(by=['index_content'])['index_content'].count())
index_word = [list(np.arange(0,x)) for x 
Python数据分析与挖掘实战是一本介绍如何使用Python进行数据分析和挖掘的书籍。在电商产品评论数据中,LDA(Latent Dirichlet Allocation)是一种常用的机器学习算法。 LDA算法是一种基于概率图模型的无监督学习算法,它能够从文档集合中自动识别出潜在的主题,并将每个文档分配给一个或多个主题。在电商产品评论数据中,可以使用LDA算法来探索消费者对产品的评价和观点。 首先,需要将电商产品评论数据作为输入,可以使用Python的数据分析库(如pandas)进行导入和预处理。然后,使用自然语言处理库(如NLTK或spaCy)对评论进行分词和清洗,去除无用的标点符号和停用词。 接下来,在预处理后的评论数据上运行LDA算法。首先,需要将评论数据转化为词袋模型或TF-IDF向量表示形式。然后,使用LDA模型进行主题建模,通过训练模型来确定主题和主题词,并将每个评论分配给对应的主题。 最后,可以通过可视化工具(如pyLDAvis)将LDA模型的结果进行可视化,显示主题之间的关系以及每个主题的主题词。 使用LDA算法对电商产品评论数据进行分析和挖掘可以帮助企业了解消费者对产品的偏好和评价,从而改进产品设计和营销策略。此外,还可以帮助企业发现潜在的问题和改进方向,提高产品质量和消费者满意度。 总而言之,Python数据分析与挖掘实战可以帮助读者了解如何利用Python进行数据分析和挖掘,并且在电商产品评论数据中,LDA算法是一种有效的方法,可以帮助企业挖掘潜在的主题和消费者观点。
评论 91
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值