文章目录

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

本文是基于《Python数据分析与挖掘实战》的实战部分的第15章的数据——《电商产品评论数据情感分析》做的分析。

旨在回顾对评论文本数据的处理和建模方法。

1.挖掘背景与目标

对京东平台上的热水器评论进行文本挖掘分析,挖掘建模如下:

  • 分析某一个品牌热水器的用户情感倾向

  • 从评论文本中挖掘出该品牌热水器的优点和不足

  • 提炼不同品牌热水器的卖点

2.2 数据探索与预处理

2.1 数据筛选

#-*- coding: utf-8 -*-
import pandas as pdinputfile = '../data/huizong.csv' #评论汇总文件
outputfile = '../data/meidi_jd.txt' #评论提取后保存路径
data = pd.read_csv(inputfile, encoding = 'utf-8')
data = data[[u'评论']][data[u'品牌'] == u'美的']
data.to_csv(outputfile, index = False, header = False, encoding = 'utf-8')

2.2 数据去重

#-*- coding: utf-8 -*-
import pandas as pdinputfile = '../data/meidi_jd.txt' #评论文件
outputfile = '../data/meidi_jd_process_1.txt' #评论处理后保存路径
data = pd.read_csv(inputfile, encoding = 'utf-8', header = None,sep = None)
l1 = len(data)
data = pd.DataFrame(data[0].unique())
l2 = len(data)
data.to_csv(outputfile, index = False, header = False, encoding = 'utf-8')
print(u'删除了%s条评论。' %(l1 - l2))

安利一款可以做情感分析的软件叫做:ROST CM6,注意你提交的文件必须是ANSI编码,否则处理后的文件会乱码

2.3 删除前缀评分

#-*- coding: utf-8 -*-
import pandas as pd#参数初始化
inputfile1 = '../data/meidi_jd_process_end_负面情感结果.txt'
inputfile2 = '../data/meidi_jd_process_end_正面情感结果.txt'
outputfile1 = '../data/meidi_jd_neg.txt'
outputfile2 = '../data/meidi_jd_pos.txt'data1 = pd.read_csv(inputfile1, encoding = 'utf-8', header = None) #读入数据
data2 = pd.read_csv(inputfile2, encoding = 'utf-8', header = None)data1 = pd.DataFrame(data1[0].str.replace('.*?\d+?\\t ', '')) #用正则表达式修改数据
data2 = pd.DataFrame(data2[0].str.replace('.*?\d+?\\t ', ''))data1.to_csv(outputfile1, index = False, header = False, encoding = 'utf-8') #保存结果
data2.to_csv(outputfile2, index = False, header = False, encoding = 'utf-8')

删除前

删除后

2.4 jieba分词

#-*- coding: utf-8 -*-
import pandas as pd
import jieba #导入结巴分词,需要自行下载安装#参数初始化
inputfile1 = '../data/meidi_jd_neg.txt'
inputfile2 = '../data/meidi_jd_pos.txt'
outputfile1 = '../data/meidi_jd_neg_cut.txt'
outputfile2 = '../data/meidi_jd_pos_cut.txt'data1 = pd.read_csv(inputfile1, encoding = 'utf-8', header = None) #读入数据
data2 = pd.read_csv(inputfile2, encoding = 'utf-8', header = None)mycut = lambda s: ' '.join(jieba.cut(s)) #自定义简单分词函数
data1 = data1[0].apply(mycut) #通过“广播”形式分词,加快速度。
data2 = data2[0].apply(mycut)data1.to_csv(outputfile1, index = False, header = False, encoding = 'utf-8') #保存结果
data2.to_csv(outputfile2, index = False, header = False, encoding = 'utf-8')

3 基于LDA 模型的主题分析

https://blog.csdn.net/sinat_26917383/article/details/79357700#1__27

#-*- coding: utf-8 -*-
import pandas as pd# 修改默认编码
import sys
sys.getdefaultencoding()  # 查看当前编码格式
# 报错时(AttributeError: 'module' object has no attribute 'setdefaultencoding')#参数初始化
negfile = '../data/meidi_jd_neg_cut.txt'
posfile = '../data/meidi_jd_pos_cut.txt'
stoplist = '../data/stoplist.txt'neg = pd.read_csv(negfile, encoding = 'utf-8', header = None) #读入数据
pos = pd.read_csv(posfile, encoding = 'utf-8', header = None)
stop = pd.read_csv(stoplist, encoding = 'utf-8', header = None, sep = 'tipdm')
#sep设置分割词,由于csv默认以半角逗号为分割词,而该词恰好在停用词表中,因此会导致读取出错
#所以解决办法是手动设置一个不存在的分割词,如tipdm。
stop = [' ', ''] + list(stop[0]) #Pandas自动过滤了空格符,这里手动添加neg[1] = neg[0].apply(lambda s: s.split(' ')) #定义一个分割函数,然后用apply广播
neg[2] = neg[1].apply(lambda x: [i for i in x if i not in stop]) #逐词判断是否停用词,思路同上
pos[1] = pos[0].apply(lambda s: s.split(' '))
pos[2] = pos[1].apply(lambda x: [i for i in x if i not in stop])from gensim import corpora, models#负面主题分析
neg_dict = corpora.Dictionary(neg[2]) #建立词典
neg_corpus = [neg_dict.doc2bow(i) for i in neg[2]] #建立语料库
neg_lda = models.LdaModel(neg_corpus, num_topics = 3, id2word = neg_dict) #LDA模型训练
# for i in range(3):
#   #print(neg_lda.show_topics())#展示主题
#   print(neg_lda.print_topic(i))#正面主题分析
pos_dict = corpora.Dictionary(pos[2])
pos_corpus = [pos_dict.doc2bow(i) for i in pos[2]]
pos_lda = models.LdaModel(pos_corpus, num_topics = 3, id2word = pos_dict)
# for i in range(3):
#   #print(pos_lda.show_topics())#展示主题
#   print(pos_lda.print_topic(i))for i in  neg_lda.show_topics():print(i[0], i[1])for i in  pos_lda.show_topics():print(i[0], i[1])


根据对美的热水器好评的3个潜在主题的特征词提取:

主题1中的高频特征词,即很好、送货快、加热、速度、很快、服务和非常等,主要反映京东送货快、服务非常好;美的热水器加热速度快;
主题2中的高频特征词,即热门关注点主要是价格、东西和值得等,主要反映美的热水器不错,价格合适值得购买等;
主题3中的高频特征词,即热门关注点主要是售后、师傅、上门和安装等,主要反映京东的售后服务以及师傅上门安装等。

从美的热水器差评的3个潜在主题中,我们可以看出:

主题1中的高频特征词主要是安装、服务、元等,即主题1主要反映的是美的热水器安装收费高、热水器售后服务不好等;
主题2中的高频特征词主要是不过、有点、还可以等情感词汇;
主题3主要反映的是美的热水器可能不满足其需求等;主题3中的高频特征词主要是没有、但是、自己等,主题3可能主要反映美的热水器自己安装等。

综合以上对主题及其中的高频特征词可以看出,美的热水器的优势有以下几个方面:价格实惠、性价比高、外观好看、热水器实用、使用起来方便、加热速度快、服务好

相对而言,用户对美的热水器的抱怨点主要体现以下几个方面:
美的热水器安装的费用贵及售后服务等

因此,用户的购买原因可以总结为以下几个方面**:美的大品牌值得信赖,美的热水器价格实惠,性价比高**。

根据对京东平台上美的热水器的用户评价情况进行LDA主题模型分析,我们对美的品牌提出以下建议

1)在保持热水器使用方便、价格实惠等优点的基础上,对热水器进行改进,从整体上提升热水器的质量。
2)提升安装人员及客服人员的整体素质,提高服务质量。安装费用收取明文细则,并进行公开透明,减少安装过程的乱收费问题。适度降低安装费用和材料费用,以此在大品牌的竞争中凸显优势。

4.权重

for i in range(3):print(pos_lda.print_topic(i, topn=5)) # 权重TOP5for i in  neg_lda.show_topics(num_topics=2, num_words=10, log=False, formatted=True):  #权重TOP2或者100主题中,权重为TOP2的主题词汇print(i[0], i[1])

5.如何在主题空间比较两两文档之间的相似度


import numpy as np
topics =[pos_lda[c] for c in pos_corpus]dense = np.zeros((len(topics),100),float)for ti,t in enumerate(topics):for tj,v in t:dense[ti,tj] = v    # 得到的是dense[文档id,主题id]=某文档在某主题的权重
print(dense)

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

  1. 《数据分析与挖掘 第十五章 电商产品评论数据感情分析》

    电商产品评论数据感情分析 抽取数据 我们这里先抽取出美的品牌的评论信息: import pandas as pdinputfile = 'huizong.csv' #评论汇总文件 outputfile ...

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

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

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

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

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

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

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

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

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

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

  7. python电商评论情感分析_电商产品评论数据情感分析

    来自:Python数据分析与挖掘实战--张良均著 1. 分析方法与过程 本次建模针对京东商城上"美的"品牌热水器的消费者评论数据,在对文本进行基本的机器预处理.中文分词.停用词过滤 ...

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

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

  9. 基于python文本挖掘的电商产品评论数据情感分析报告

    背景 近年来,随着互联网的广泛应用和电子商务的迅速发展,网络文本及用户评论分析意义日益凸显,因此网络文本挖掘及网络文本情感分析技术应运而生,通过对文本或者用户评论的情感分析,企业能够进行更有效的管理等 ...

最新文章

  1. java 8 lambda reduce_JDK8新特性Lambda表达式体验
  2. 微软联合创始人都看好,这项技术有什么过人之处?
  3. 硬盘运行微型linux,linux用smartctl看硬盘运行了多少小时
  4. IEEE Spectrum 2014 年度编程语言排名
  5. android设置提交的隐藏域以及在onItemClick中获取对应的数据
  6. Java多线程同步Synchronized深入解析
  7. pandas 处理 csv
  8. 【转载】在使用上perror和strerror应注意的地方
  9. 为什么我特别讨厌语音输入
  10. 用友ERP-NC系统 NCFindWeb接口文件读取
  11. Linux系统移植学习
  12. linux内核 can总线,基于Linux的PC104总线与CAN总线通信设计
  13. SVG转换为PDF的简单方法
  14. 鸿蒙系统没有录屏,这15+项高效又实用的功能更新,一定别错过!
  15. python zip(*zipped)的疑问
  16. 解释:什么是CPC,CPA,CVR,CTR,ROI? 营销、广告、淘宝 术语
  17. OPPO手机计算机怎么打符号,OPPO手机怎么开启输入的九键快捷符号调频功能
  18. nslookup参数说明
  19. 网络中的pvid与native vlan(本征vlan)区别以及详解
  20. 一起Talk Android吧(第一百八十六回:Android中的AsyncTask机制五)

热门文章

  1. Python3.X BeautifulSoup([your markup], “lxml“) markup_type=markup_type))的解决方案
  2. vant 下拉框样式_Vant DropdownMenu 下拉菜单
  3. 九、MyBatis的缓存
  4. 集合A(|A|=n)上可以定义多少种不同的等价关系
  5. 信息资源共享开放平台(REXEN SEP)
  6. POJ1723 Soldiers 中位数
  7. 生活随记 - 失眠的时候,你会怎么办?
  8. 读书笔记:20220729 TRC2013 Max pressure control of a network of signalized intersections
  9. iphone7以及7P的模拟器删除应用解决办法
  10. JavaWeb验证码登录新闻发布