去年的京东评论项目

学习数据挖掘挺久了,要找工作啦,把之前的项目留下了,留下源代码

#数据的导入

import pandas as pd

inputfile = ‘../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‘)

#数据去重

import pandas as pd

inputfile = ‘../data/meidi_jd.txt‘ #评论文件
outputfile = ‘../data/meidi_jd_process_1.txt‘ #评论处理后保存路径
data = pd.read_csv(inputfile, encoding = ‘utf-8‘, header = 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))

#删除前缀评分

#参数初始化
inputfile1 = ‘../data/meidi_jd_process_end_Negative emotional consequences.txt‘
inputfile2 = ‘../data/meidi_jd_process_end_Positive emotional outcomes.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‘)

#分词处理

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‘)

#LDA主题模型输出

import pandas as pd

#参数初始化
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‘,engine=‘python‘)
#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])
import warnings
warnings.filterwarnings(action=‘ignore‘, category=UserWarning, module=‘gensim‘)

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):
# neg_lda.print_topic(i) #输出每个主题
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):
# pos_lda.print_topic(i) #输出每个主题
print(pos_lda.print_topic(i))

原文地址:https://www.cnblogs.com/laowangxieboke/p/9094622.html

时间: 2024-11-06 07:14:35

去年的京东评论项目的相关文章

京东评论情感分类器(基于bag-of-words模型)

最近在本来在研究paraVector模型,想拿bag-of-words来做对比. 数据集是京东的评论,经过人工挑选,选出一批正面和负面的评论. 实验的数据量不大,340条正面,314条负面.我一般拿200正面和200负面做训练,剩下做测试. 做着做着,领悟了一些机器学习的道理.发现,对于不同的数据集,效果是不同的. 对于特定的数据集,随便拿来一套模型可能并不适用. 对于这些评论,我感觉就是bag-of-words模型靠谱点. 因为这些评论的特点是语句简短,关键词重要. paraVector模型感

python爬虫——京东评论、jieba分词、wordcloud词云统计

接上一章,抓取京东评论区内容. url='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv399&productId=4560435&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1' 重点是productId--产品id.page--页码.pageSize:指定

京东首页项目(1)---总述

京东首页项目总述 这里做一个京东首页的项目.主要目的是总结和提高 HTML+ CSS 技术.该项目暂不涉及JS相关技术. 一.首页效果 先看首页完成最终完成的效果 说明 项目做完后,也会附上项目github地址(包含整个项目的素材和代码). 二.项目介绍 1.设计目标 - 熟悉CSS+DIV布局,页面的搭建工作 - 了解常用电商类网站的布局模式 2.浏览器兼容问题 因为浏览器的不同,所以需要我们在前端开发的时候去兼容不同的浏览器,而这部分css样式肯定不需要我们自己去写,这里使用一个叫CSS R

京东首页项目(2) ---顶部模块实现

京东首页项目(2)---顶部模块 上篇对该项目做了个总述 : 京东首页项目(1)---总述 这篇就开始写京东首页.这篇所需完成的工作如下: 顶部模块一共包含3个部分: 1.京东顶部模块 2.快捷导航模块 3.头部区域模块. 一.公共样式(base.css) base.css 是用来存放公共的样式的,公共样式可以用于整个前端项目. /* 版心 */ .w { width: 1190px; /*设置版心的宽度*/ margin: auto; /* 水平居中*/ } .fr { float: righ

利用Python批量抓取京东评论数据

京东图书评论有非常丰富的信息,这里面就包含了购买日期.书名.作者.好评.中评.差评等等.以购买日期为例,使用Python + Mysql的搭配进行实现,程序不大,才100行.相关的解释我都在程序里加注了: 1 from selenium import webdriver 2 from bs4 import BeautifulSoup 3 import re 4 import win32com.client 5 import threading,time 6 import MySQLdb 7 8

就马云对京东评论的看法

即便我是马云粉,也不能认同他的看法. 一个科学常识,人的大脑是七维的. 所以,电商理论上,就不可能只有一个.这是马云一厢情愿.这也是QQ与电商的不同. 为什么这么说呢? 为什么QQ和微信只能有一个,而电商却符合7原则? 根本点在于作为一个人脑,它是一个个体,它的维度是7,而去买东西这件事,无论你从心理上分析,还是生理上分析,它也是个人的事. 而QQ则不同(微信也是QQ的外延),与人交流,与性一样,是人的本质需求,但与它人交流这件事,却不受大脑控件,本质上,人类社会,任何一个人,永远只能活在一个关

爬取京东评论信息

一,爬虫需求分析 1,需求. 我们需要获取多个链接的白酒在2018年评论数量. 2,分析. 一个商品页面有好几个规格,如图: 评论区我们需要获取的数据是当前选择的商品,而且需要时间顺序为2018年的: 这时候得到的评论有很多页,我们需要一条条的去爬取. 二,误区 因为时间排序以及当前商品评论的限制,我们选择了Selenium作为爬虫工具,写了很久发现时间排序的那个地方不是<select>标签,在标签选取上出现了问题,所以放弃了该方法. 三,productPageComments实现 1,选择本

python爬京东评论

我,找回,密码了! https://blog.csdn.net/weixin_42590877/article/details/99686720?tdsourcetag=s_pcqq_aiomsg 就是这个网址助我! 这个是我要爬的,看着暖和 https://item.jd.com/33919692427.html # In[sy_final]:#!/usr/bin/pythonimport requestsimport json #这个headers害惨了我,一定要有referer才可以运行h

【Ionic系列】2、仿京东商城项目功能分析 修改tabs颜色

1 打开VSCode以后 2 快捷键 Ctrl+J 打开终端 3 创建以下3个页面 4 ionic g page cart 5 ionic g page category 6 ionic g page user 7 并且删除自带的 8 about.contact 1 打开app/app.module.ts, 2 删除出错的两个引用 3 import { AboutPage } from '../pages/about/about'; 4 import { ContactPage } from '