背景

近年来,随着互联网的广泛应用和电子商务的迅速发展,网络文本及用户评论分析意义日益凸显,因此网络文本挖掘及网络文本情感分析技术应运而生,通过对文本或者用户评论的情感分析,企业能够进行更有效的管理等。对于客户来说,可以借鉴别人的购买历史以及评论信息,更好的辅助自己制定购买决策。

流程分析

框架

工具准备

一、导入数据
二、数据预处理
(一)去重
(二)数据清洗
(三)分词、词性标注、去除停用词、词云图
三、模型构建
(一)决策树
(二)情感分析
(三)基于LDA模型的主题分析

工具准备

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.pylab import style #自定义图表风格
style.use('ggplot')
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
plt.rcParams['font.sans-serif'] = ['Simhei'] # 解决中文乱码问题import re
import jieba
import jieba.posseg as psg
import itertools
#conda install -c anaconda gensim
from gensim import corpora,models #主题挖掘,提取关键信息# pip install wordcloud
from wordcloud import WordCloud,ImageColorGenerator
from collections import Counterfrom sklearn import tree
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score
import graphvizimport warnings
warnings.filterwarnings("ignore")

一、导入数据

raw_data=pd.read_csv('./reviews.csv')
raw_data.head()

二、数据预处理

(一)去重

删除系统自动为客户做出的评论。

reviews=raw_data.copy()
reviews=reviews[['content', 'content_type']]
print('去重之前:',reviews.shape[0])
reviews=reviews.drop_duplicates()
print('去重之后:',reviews.shape[0])

(二)数据清洗

查看清洗前数据:

# 清洗之前
content=reviews['content']
for i in range(5,10):print(content[i])print('-----------')


清洗之后,将数字、字母、京东美的电热水器字样都删除:

#清洗之后,将数字、字母、京东美的电热水器字样都删除
info=re.compile('[0-9a-zA-Z]|京东|美的|电热水器|热水器|')
content=content.apply(lambda x: info.sub('',x))  #替换所有匹配项for i in range(5,10):print(content[i])print('-----------')

(三)分词、词性标注、去除停用词、词云图

目标

输入:

  • content、content_type
  • 共有1974条评论句子
    输出:
  • 构造DF,包含: 分词、对应词性、分词所在原句子的id、分词所在原句子的content_type
  • 共有6万多行

非结构化数据——>结构化数据

#分词,由元组组成的list
seg_content=content.apply( lambda s:  [(x.word,x.flag) for x in psg.cut(s)] )  seg_content.shape
len(seg_content)
print(seg_content[5])
jieba.setLogLevel(jieba.logging.INFO)

#得到各分词在第几条评论
n_content=[ [x+1]*y for x,y in zip(list(seg_content.index),list(n_word))] #[x+1]*y,表示复制y份,由list组成的list
index_content_long=sum(n_content,[]) #表示去掉[],拉平,返回list
len(index_content_long)#分词及词性,去掉[],拉平
seg_content.head()seg_content_long=sum(seg_content,[])seg_content_longtype(seg_content_long)
len(seg_content_long)#得到加长版的分词、词性
word_long=[x[0] for x in seg_content_long]
nature_long=[x[1] for x in seg_content_long]len(word_long)
len(nature_long)#content_type拉长
n_content_type=[ [x]*y for x,y in zip(list(reviews['content_type']),list(n_word))] #[x+1]*y,表示复制y份
content_type_long=sum(n_content_type,[]) #表示去掉[],拉平len(content_type_long)review_long=pd.DataFrame({'index_content':index_content_long,'word':word_long,'nature':nature_long,'content_type':content_type_long})
review_long.shape
review_long.head()


(2)去除标点符号、去除停用词

#去除标点符号
review_long_clean=review_long[review_long['nature']!='x'] #x表示标点符合
review_long_clean.shape
#导入停用词
stop_path=open('./stoplist.txt','r',encoding='UTF-8')
stop_words=stop_path.readlines()len(stop_words)
stop_words[0:5]
#停用词,预处理
stop_words=[word.strip('\n') for word in stop_words]
stop_words[0:5]#得到不含停用词的分词表
word_long_clean=list(set(word_long)-set(stop_words))
len(word_long_clean)review_long_clean=review_long_clean[review_long_clean['word'].isin(word_long_clean)]
review_long_clean.shape

(3)在原df中,再增加一列,该分词在本条评论的位置

#再次统计每条评论的分词数量
n_word=review_long_clean.groupby('index_content').count()['word']
n_wordindex_word=[ list(np.arange(1,x+1)) for x in list(n_word)]
index_word_long=sum(index_word,[]) #表示去掉[],拉平len(index_word_long)

review_long_clean['index_word']=index_word_long
review_long_clean.head()


(5)词云图

n_review_long_clean.nature.value_counts()
n_review_long_clean.to_csv('./1_n_review_long_clean.csv')font=r"C:\Windows\Fonts\msyh.ttc"background_image=plt.imread('./pl.jpg')
wordcloud = WordCloud(font_path=font, max_words = 100, background_color='white',mask=background_image) #width=1600,height=1200, mode='RGBA'
wordcloud.generate_from_frequencies(Counter(review_long_clean.word.values))
wordcloud.to_file('1_分词后的词云图.png')plt.figure(figsize=(20,10))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()

其中“服务”、“师傅”、“东西”、“收费”、“客服”、“售后”、“物流”、“速度”、“免费”、“上门”、“人员”、“信赖”、“品牌”、“安装费”出现次数较多
说明人们比较关注这些方面,比如从词云可以看出“售后服务”、“物流速度”等等比较受关注

三、模型构建

(一)基于决策树的情感分类

#第一步:构造特征空间和标签Y=[]
for ind in review_long_clean.index_content.unique():y=[ word for word in review_long_clean.content_type[review_long_clean.index_content==ind].unique() ]Y.append(y)
len(Y)X=[]
for ind in review_long_clean.index_content.unique():term=[ word for word in review_long_clean.word[review_long_clean.index_content==ind].values ]X.append(' '.join(term))
len(X)X
Y


决策树的构建:

#第二步:训练集、测试集划分
x_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.2,random_state=7)#第三步:词转向量,01矩阵
count_vec=CountVectorizer(binary=True)
x_train=count_vec.fit_transform(x_train)
x_test=count_vec.transform(x_test)  #第四步:构建决策树
dtc=tree.DecisionTreeClassifier(max_depth=5)
dtc.fit(x_train,y_train)
print('在训练集上的准确率:%.2f'% accuracy_score(y_train,dtc.predict(x_train)))y_true=y_test
y_pred=dtc.predict(x_test)
print(classification_report(y_true,y_pred))
print('在测试集上的准确率:%.2f'% accuracy_score(y_true,y_pred))


第五步:画决策树:

cwd=os.getcwd()
dot_data=tree.export_graphviz(dtc,out_file=None,feature_names=count_vec.get_feature_names())
graph=graphviz.Source(dot_data)
graph.format='svg'
graph.render(cwd+'/tree',view=True)
graph

基于python文本挖掘的电商产品评论数据情感分析报告相关推荐

  1. 【项目实战】Python实现基于LDA主题模型进行电商产品评论数据情感分析

    说明:这是一个机器学习.数据挖掘实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 视频: Python实现基于LDA模型进行电商产品评论数据情感分析 ...

  2. 基于电商产品评论数据情感分析

    #!/usr/bin/env python # coding: utf-8# # -- 基于电商产品评论数据情感分析 --# ### 1.案例简介 # # 1.利用文本挖掘技术,对碎片化.非结构化的电 ...

  3. 《Python数据分析与挖掘实战》第15章 ——电商产品评论数据情感分析(LED)

    文章目录 1.挖掘背景与目标 2.2 数据探索与预处理 2.1 数据筛选 2.2 数据去重 2.3 删除前缀评分 2.4 jieba分词 3 基于LDA 模型的主题分析 4.权重 5.如何在主题空间比 ...

  4. 数据分析与挖掘实战-电商产品评论数据情感分析

    电商产品评论数据情感分析 背景 随着网上购物越来越流行,人们对于网上购物的需求越来越高,这让京东.淘宝等电商平台得到了很大的发展机遇.但是,这种需求也推动了更多的电商平台的崛起,引发了激烈的竞争.在这 ...

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

    文章目录 引言 一.评论预处理 1.评论去重 2.数据清洗 二.评论分词 1.分词.词性标注.去除停用词 2.提取含名词的评论 3.绘制词云查看分词效果 三.构建模型 1.评论数据情感倾向分析 1.1 ...

  6. 毕业设计之 - 大数据分析:电商产品评论数据情感分析

    文章目录 1 简介 数据分析目的 数据预处理 评论去重 数据清洗 分词.词性标注.去除停用词 提取含名词的评论 绘制词云¶ 词典匹配 评论数据情感倾向分析 修正情感倾向 LinearSVC模型预测情感 ...

  7. 数据挖掘作业学习学习笔记-电商产品评论数据情感分析

    使用的教材:<电商产品评论数据情感分析> 作业&学习笔记:数据挖掘第14周 说明:书本内容详实.此篇用于自己期末回顾知识的重点内容,故做出的学习笔记缺省了书本原本的其他精粹. 随着 ...

  8. 数据分析与挖掘:电商产品评论数据情感分析

    电商产品评论数据情感分析 1. 背景与挖掘目标 2. 分析方法与过程 2.1 数据抽取 2.2 评论预处理 2.3 LDA 主题分析 1. 背景与挖掘目标 项目为<Python 数据分析与挖掘实 ...

  9. Python文本挖掘练习(五)// 电商产品评论数据情感分析

    第一部分 案例简介 本案例首先利用Python文本挖掘技术,对碎片化.非结构化的电商网站评论数据进行清洗与处理,转化为结构化数据.然后对文本数据进一步挖掘与分析,采用决策树算法构建情感分类模型,探索用 ...

最新文章

  1. ubunu16.04 TensorFlow object detection API 应用配置
  2. jdbc版本怎么看_Jmeter(十三)-JDBC脚本开发
  3. Winxp中加密自己的用户目录
  4. Powershell 查看软件是否成功安装
  5. bitmapdata的知识点
  6. 基于MATLAB的图像压缩感知设计(含源文件)
  7. sql载取最后出现字符前的字符
  8. React - 修改children(下)
  9. word排版案例报告_Word分节符的一些常见问题及解决办法
  10. 200+ML知识速查卡;『图解算法数据结构』配套代码;『剑指Offer』解题代码;『Python3』高频面试题目集;前沿论文 | ShowMeAI资讯日报
  11. 问题描述】原始题目:一只公鸡 5 文钱,一只母鸡 3 文钱,三只小鸡 1 文钱,用 100 文钱买 100 只鸡,请问公鸡,母鸡,小鸡各多少只?(推广)
  12. Android开发-在Android应用里接入AdMob广告进行变现的实现
  13. aspose将word转换为pdf[aspose.word.java 18.11]
  14. 使用 es6 class类创建对象 在其他页面 用vue引用报错 is not a constructor
  15. requests爬取去哪儿网站
  16. 会当凌绝顶-----盘赔之我见(四)
  17. 冲击波(震荡波)病毒爆发
  18. 专业的进销存财务软件卓越精算
  19. win7讲述人无法正常启动--未修复
  20. 2020下半年软考报名指南

热门文章

  1. Android Jetpack简介
  2. 战争AI化!中国拟打造人工智慧核子潜艇
  3. echarts x轴换行
  4. OLTP、OLAP、HTAP之间的区别
  5. 用Mathematica生成一系列具有类似分形特征的曲线
  6. ubuntu安装portainer_如何在Ubuntu上使用Portainer管理Docker容器
  7. CSP-J/S第一轮测试知识点全覆盖
  8. 数据结构与算法(Java版) | 数据结构与算法的重要性
  9. 传统机械硬盘工作原理
  10. mysql中数值数据类型 int、bigint、smallint 和 tinyint的使用