根据python制作词云图和python爬取京东评论,我们对商品评论做进一步分析。

一、情感分析的用途

首先,我们先看情感分析这个概念,百度上基本都是文本情感分析的介绍,大概意识是通过一些文本来分析其正面和负面的倾向性,从而进行相应的文本挖掘。

感觉上有点抽象,我个人这样理解的,当我们获取一段文本或者很多段文本时,我们先要对文本进行情感分析,比如说,“这个产品很棒”,那我们觉得这段文本便是正向的,很简单。但是随着科技的不断进步,评论越来越多,我们无法将其完整的看完,这时,我们便可以抽取大量文本的主题,能够很好的进行信息挖掘。同时,我们既想在大段文本中知道正向主题,又想知道负向主题,那这时便可以进行情感分析。

二、数据准备

因为之前我们已经爬取过评论,对爬取信息这块不多说。只说一些注意的点:

第一,由于我们需要正向和负向两种评论,在爬取时,我们只需要将url中的score进行变化,score=0是五星,在这里我只爬取了score=0和score=1两种,即五星和一星,分别爬取51页,大概就有1020条数据,大家可以多用其他score,比如说,将score=0,score=4作为正向,score=1和score=2作为负向,分别爬取50页,差不多有2000条数据,再进行以下操作。

url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5225346&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&rid=0&fold=1'.format(page)

第二,不知道是电脑原因,还是代码原因,我这里只能将评论读入excel才能进行下面的操作,大家可以用文本的方式进行尝试。我这边是跑的积极评论的代码,要获得消极的,换第二个url。

import requests
import json
import xlwt
f = xlwt.Workbook()
sheetwrite = f.add_sheet('comment')
sheetwrite.write(0,0,'comment')
k = 1
for page in range(0,50+1):header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"}url1 = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5225346&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&rid=0&fold=1'.format(page)# url2 = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5225346&score=1&sortType=5&page={}&pageSize=10&isShadowSku=0&rid=0&fold=1'.format(#     page)response = requests.get(url1, headers=header)data = response.textjd = json.loads(data.lstrip('fetchJSON_comment98vv12345(').rstrip(');'))data_list = jd['comments']for data in data_list:content = data['content']sheetwrite.write(k,0,content)k +=1
f.save(r'C:UsersAdministratorDesktoppython项目爬虫京东评论com_all.xls')

第三,注意,我们上面保存了两组文件,现在将爬取到的信息进行基本的处理,比如说文本去重、文本分词、停用词过滤等。

import pandas as pd
import jieba
postive = pd.read_excel(r'C:UsersAdministratorDesktoppython项目爬虫京东评论com_all.xls',encoding = 'utf-8')
negtive = pd.read_excel(r'C:UsersAdministratorDesktoppython项目爬虫京东评论com_neg.xls',encoding = 'utf-8')
# 文本去重(文本去重主要是一些系统自动默认好评的那些评论 )
positive = postive ['comment'].drop_duplicates()
positive = positive['comment']
negtive = negtive ['comment'].drop_duplicates()
negtive = negtive['comment']# 文本分词
mycut = lambda s:' '.join(jieba.cut(s)) # 自定义分词函数
po =postive.comment.apply(mycut)
Out[119]:
0    19 年 的 愿望 终于 实现 了 , 买 一台 MAC 电脑 , 用 起来 体验 真的 太...
1    运行 速度 : 感觉 比 windows   快 , 蛮 顺畅 n 屏幕 效果 : 屏幕 ...
2    双 十二 买 的 , 没什么 太 大 优惠 , 观望 了 很 久 最后 决定 在 东 东家 ...ne =negtive.comment.apply(mycut)#停用词过滤(停用词文本可以自己写,一行一个或者用别人整理好的,我这是用别人的)
with open(r'C:UsersAdministratorDesktoppython项目电商评论情感分析stoplist.txt',encoding = 'utf-8') as f:stop  = f.read()
stop =[' ',''] +list(stop[0:])  # 因为读进来的数据缺少空格,我们自己添加进去po['1'] = po[0:].apply(lambda  s: s.split(' ')) # 将分词后的文本以空格切割
Out[123]:
0      [19, 年, 的, 愿望, 终于, 实现, 了, ,, 买, 一台, MAC, 电脑, ,...
1      [运行, 速度, :, 感觉, 比, windows, , , 快, ,, 蛮, 顺畅, ...
2      [双, 十二, 买, 的, ,, 没什么, 太, 大, 优惠, ,, 观望, 了, 很, 久...
3      [做工, 太, 精美, 了, , , 用料, 考究, , , 超薄, , , 设计, , ,...po['2'] = po['1'].apply(lambda x:[i for i in x if i not in stop])# 过滤停用词Out[124]:
0      [19, 愿望, 终于, 实现, 一台, MAC, 电脑, 起来, 体验, 真的, 太棒了,...
1      [运行, 速度, 感觉, windows, 顺畅, 屏幕, 效果, 屏幕, 色彩, 真的, ...
2      [十二, 没什么, 太, 优惠, 观望, 最后, 决定, 东, 东家, 别的, 为了, 多花...
3      [做工, 太, 精美, 用料, 考究, 超薄, 设计, 运行, 速度, 超快, 没有, 别的...
4      [运行, 速度, 运行, 速度, 很快, 没有, 卡涩, 问题, 屏幕, 效果, 色彩, 高...# 在这里我们也可以用到之前的词云图分析
# post = []
# for word in po:
#     if len(word)>1 and word not in stop:
#         post.append(word)
# print(post)
# wc = wordcloud.WordCloud(width=1000, font_path='simfang.ttf',height=800)#设定词云画的大小字体,一定要设定字体,否则中文显示不出来
# wc.generate(' '.join(post))
# wc.to_file(r'C:UsersAdministratorDesktoppython项目爬虫京东评论yun.png')ne['1'] = ne[0:].apply(lambda  s: s.split(' '))
ne['2'] = ne['1'].apply(lambda x:[i for i in x if i not in stop])

至此,我们的数据就准备好了,下面进行LDA模型分析

三、LDA模型

有前人对这个模型进行了详细介绍,但我看着还是有些吃力,暂时先用着,等后面慢慢地理解。

from gensim import corpora,models
# 负面主题分析
neg_dict = corpora.Dictionary(ne['2'])
neg_corpus = [neg_dict.doc2bow(i) for i in ne['2']]
neg_lda = models.LdaModel(neg_corpus,num_topics = 3,id2word = neg_dict)# 正面主题分析
pos_dict = corpora.Dictionary(po['2'])
pos_corpus = [pos_dict.doc2bow(i) for i in po['2']]
pos_lda = models.LdaModel(pos_corpus,num_topics = 3,id2word =pos_dict)
# 展示主题
pos_theme = pos_lda.show_topics()
Out[137]:
[(0,'0.020*"速度" + 0.018*"非常" + 0.018*"运行" + 0.016*"外观" + 0.016*"苹果" + 0.016*"屏幕" + 0.015*"轻薄" + 0.012*"外形" + 0.011*"散热" + 0.011*"效果"'),(1,'0.016*"非常" + 0.015*"喜欢" + 0.012*"速度" + 0.012*"轻薄" + 0.010*"电脑" + 0.010*"系统" + 0.010*"屏幕" + 0.009*"运行" + 0.009*"外观" + 0.007*"不错"'),(2,'0.015*"非常" + 0.014*"系统" + 0.012*"苹果" + 0.012*"速度" + 0.011*"电脑" + 0.010*"外观" + 0.010*"效果" + 0.010*"不错" + 0.009*"轻薄" + 0.007*"运行"')]# 取出高频词
import re
pattern = re.compile(r'[u4e00-u9fa5]+')
pattern.findall(pos_theme[0][1])
Out[138]: ['速度', '非常', '运行', '外观', '苹果', '屏幕', '轻薄', '外形', '散热', '效果']pos_key_words =[]
for i in range(3):pos_key_words.append(pattern.findall(pos_theme[i][1]))pos_key_words = pd.DataFrame(data=pos_key_words,index=['主题1','主题2','主题3'])Out[141]: 0   1   2   3   4   5   6   7   8   9
主题1  速度  非常  运行  外观  苹果  屏幕  轻薄  外形  散热  效果
主题2  非常  喜欢  速度  轻薄  电脑  系统  屏幕  运行  外观  不错
主题3  非常  系统  苹果  速度  电脑  外观  效果  不错  轻薄  运行import pyLDAvis # 可视化
import pyLDAvis.gensim
vis = pyLDAvis.gensim.prepare(pos_lda,pos_corpus,pos_dict)# 在浏览器中心打开一个界面
pyLDAvis.show(vis)

最后是形成这样一个网页界面,可调节不同主题的词还有右上角的词的权重等。只是很简单的图形,就能够看到对于这个产品,在正面评论中,对于产品的运行速度、外观等很满意,说明产品的质量很受大家欢迎,在负面评论中,主要存在的问题就是客服和价格问题,商家应该处理好这两个问题,提升客户满意度。

[
(0,   '0.020*"速度" + 0.018*"非常" + 0.018*"运行" + 0.016*"外观" + 0.016*"苹果" + 0.016*"屏幕" + 0.015*"轻薄" + 0.012*"外形" + 0.011*"散热" + 0.011*"效果"'),
(1,   '0.016*"非常" + 0.015*"喜欢" + 0.012*"速度" + 0.012*"轻薄" + 0.010*"电脑" + 0.010*"系统" + 0.010*"屏幕" + 0.009*"运行" + 0.009*"外观" + 0.007*"不错"'),
(2,   '0.015*"非常" + 0.014*"系统" + 0.012*"苹果" + 0.012*"速度" + 0.011*"电脑" + 0.010*"外观" + 0.010*"效果" + 0.010*"不错" + 0.009*"轻薄" + 0.007*"运行"')][(0,'0.017*"没有" + 0.013*"电脑" + 0.011*"送" + 0.011*"客服" + 0.007*"系统" + 0.006*"购买" + 0.006*"问题" + 0.006*"不好" + 0.006*"赠品" + 0.006*"京东"'),(1,'0.015*"京东" + 0.011*"电脑" + 0.010*"还是" + 0.008*"刚买" + 0.008*"问题" + 0.008*"降价" + 0.007*"不了" + 0.007*"hellip" + 0.006*"就是" + 0.006*"东西"'),(2,'0.018*"降价" + 0.015*"京东" + 0.011*"没有" + 0.010*"客服" + 0.009*"问题" + 0.008*"退货" + 0.007*"就是" + 0.007*"东西" + 0.006*"电脑" + 0.006*"苹果"')]

在这个学习与探索的过程中,我还尝试了snownlp这个库,据说这个库之前的训练文本是电商评论类的,我也进行了一些尝试,发现100条正向评论里,只识别错4个评论,可见这个对于我们的情感标注还是很有意义的,尤其是在我们不知道这些评论的正负性时,可以帮助我们进行标注。

lda 可以处理中文_对京东评论进行情感分析—LDA模型相关推荐

  1. 对京东评论进行情感分析—LDA模型

    对京东评论进行情感分析-LDA模型 根据python制作词云图和python爬取京东评论,我们对商品评论做进一步分析. 一.情感分析的用途 首先,我们先看情感分析这个概念,百度上基本都是文本情感分析的 ...

  2. 使用snownlp对京东购物评论进行情感分析

    使用snownlp对京东购物评论进行情感分析 目的:利用snownlp包,对京东评论进行情感分析 涉及: mysql,snownlp,pandas等工具包 代码结构如下: 注意: jd_comment ...

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

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

  4. python微博评论情感分析_基于Python的微博情感分析系统设计

    2019 年第 6 期 信息与电脑 China Computer & Communication 软件开发与应用 基于 Python 的微博情感分析系统设计 王 欣 周文龙 (武汉工程大学邮电 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 基于scrapy爬虫的天气数据采集(python)
  2. 你为什么要学习WordPress?
  3. 40款免费社交图标素材
  4. 字符串对象的charAt函数存在的意义
  5. 加密芯片在游戏行业内的应用
  6. 企业数字化转型以“活力”先行
  7. MATLAB-高斯滤波的实现
  8. 不擅长演讲?值得技术收藏的PPT演讲底层逻辑--大树模型
  9. 在TX2上(arm架构)安装FastDB
  10. 程序员有必要掌握 TDD 吗?
  11. 机器学习读书笔记:假设检验(一)
  12. mysql8更改区分大小写_mysql 8 大小写修改问题
  13. 用 emacs 浏览 C/C++ 项目
  14. 通过Shell命令-监视一个进程或端口,挂掉后自动重启,并自定义日志
  15. 并查集-A Bug's Life(poj2492)
  16. flink 分词程序代码(批处理和实时)
  17. Adobe系列软件大全
  18. Bug复现辅助神器-EV录屏
  19. 漫谈程序员系列:程序员该不该考虑初创公司
  20. Spring笔记上(基于XML配置)

热门文章

  1. ERP与CRM集成经验
  2. mybatis plus join
  3. 武松却筛一杯酒递与 钱龙软件
  4. vulnhub靶机ha:wordy
  5. 在Sedo上怎样才能更快地出售域名?
  6. (qqqqc)自用模板
  7. 关于Bloody Monday与黑客
  8. C语言---简单实现推箱子
  9. html弹幕播放器源码,高性能HTML5弹幕播放器 Moe2_player
  10. Algorithms—抽签