文章目录

  • 1.前言
  • 2.爬虫
    • 1.1 整体思路
    • 1.2 网页爬取和解析
    • 1.3 数据存储
    • 反爬虫对抗
  • 2 探索性分析与文本数据预处理
    • 2.1 探索性分析
    • 2.2 数据预处理
    • 2.3词云展示
  • 3 文本的情感分析
    • 3.1 先上结果
    • 3.2 文本特征提取(TF-IDF)
    • 3.3 机器学习建模
    • 3.4 最后输出的准确率
  • 最后

1.前言

今天应同学要求,介绍一篇关于大数据处理的毕业设计,基于大数据挖掘分析的大众点评评论文本挖掘。


毕设帮助,开题指导,资料分享,疑问解答(见文末)

2.爬虫

1.1 整体思路

爬取大众点评十大热门糖水店的评论,爬取网页后从html页面中把需要的字段信息(顾客id、评论时间、评分、评论内容、口味、环境、服务、店铺ID)提取出来并存储到MYSQL数据库中。

1.2 网页爬取和解析

链接格式为"http://www.dianping.com/shop/" + shopID + “/review_all/” + pi,如:http://www.dianping.com/shop/518986/review_all/p1 ,一页评论有20条。我们使用for循环构造链接URL,使用requests库发起请求并把html页面爬取下来,通过BeautifulSoup和re库解析页面提取信息。

我们发现完整的评论都存储在’div’,'main-review’中,且部分页面口味、环境、服务并不是每一页都有,因此需要使用try…except…防止程序中断,BeautifulSoup部分代码如下:

for item in soup('div','main-review'):cus_id = item.find('a','name').text.strip()comment_time = item.find('span','time').text.strip()comment_star = item.find('span',re.compile('sml-rank-stars')).get('class')[1]cus_comment = item.find('div',"review-words").text.strip()scores = str(item.find('span','score'))try:kouwei = re.findall(r'口味:([\u4e00-\u9fa5]*)',scores)[0]huanjing = re.findall(r'环境:([\u4e00-\u9fa5]*)',scores)[0]fuwu = re.findall(r'服务:([\u4e00-\u9fa5]*)',scores)[0]except:kouwei = huanjing = fuwu = '无'

1.3 数据存储

我们使用MYSQL数据库,安装教程参考菜鸟教程,python连接MYSQL数据推荐使用pymysql,同样是推荐菜鸟教程菜鸟教程。我们需要先建立一个数据库和表,然后连接并定义游标,然后写对应的sql语句,最后执行事务,存储部分的代码如下:

#连接MYSQL数据库
db = pymysql.connect("localhost","root","","TESTDB" )
cursor = db.cursor()
#存储爬取到的数据
def save_data(data_dict):sql = '''INSERT INTO DZDP(cus_id, comment_time, comment_star, cus_comment, kouwei, huanjing,           fuwu, shopID) VALUES(%s,%s,%s,%s,%s,%s,%s,%s)'''value_tup = (data_dict['cus_id'],data_dict['comment_time'],data_dict['comment_star'],data_dict['cus_comment'],data_dict['kouwei'],data_dict['huanjing'],data_dict['fuwu'],data_dict['shopID'])try:cursor.execute(sql,value_tup)db.commit()except:print('数据库写入失败')return

反爬虫对抗

  • 修改请求头中浏览器信息:使用fake_useragent第三方库,修改request中的headers参数,用法如下:
from fake_useragent import UserAgent
ua = UserAgent()
headers = {'User-Agent':ua.random}
  • 设置跳转路径:在访问评论时,一般的浏览行为是从某一页跳转到下一页这样的,而不是直接通过连接访问,为了更好的伪装成一个正常的访问,我们需要设置一下跳转的路径,修改headers中的Referer参数
headers = {'User-Agent':ua.random,'Cookie':cookie,'Referer': 'http://www.dianping.com/shop/518986/review_all'
}
  • 设置Cookies:评论数据需要登录后才能获取,下面介绍一种非常简单方便的绕过登录的方法。

  • 在网页上进行登录
    使用Chrome浏览器的开发者工具,查询当前请求的cookie
    复制浏览器中的cookie,使用此cookie对我们的请求进行伪装
    使用IP代理池:这里使用西刺代理的免费代理,构建一个爬虫爬取西刺代理的ip,然后进行验证,筛掉不可用的ip,构建出ip池供后续调用,代码来自网络。但是经过测试,大众点评对一个账号不同ip访问监控非常严格,使用IP代理池不更换账号的话,死的更快,封你账号,然而构建账号池比较麻烦,我们先暂缓。

  • 降低爬取频率:一个简单又有效的方法就是降低爬取频率,毕竟高频率的爬取对服务器也是一个考验,如果对速度的要求不是很高的话,建议把频率放慢一点,你好我好大家好!

import random
import time
time.sleep(6*random.random() + 4)

2 探索性分析与文本数据预处理

2.1 探索性分析

查看数据大小以及基础信息 ,浏览数据


样本分布

各店铺评分分布

点评数的的时间分布

查看评论长度对结果影响

2.2 数据预处理

去除非文本数据:可以看出,爬虫获取的数据非常多类似“\xa0”的非文本数据,而且都还有一些无意义的干扰数据,如结尾的“收起评论”

data['cus_comment'] = data['cus_comment'].str.replace(r'[^\u4e00-\u9fa5]','').str.replace('收起评论','')

中文分词:中文文本数据处理,怎么能离开中文分词呢,我们使用jieba库,简单又好用。这里我们把文本字符串处理为以空格区隔的分词字符串

import jieba
data['cus_comment'] = data['cus_comment'].apply(lambda x:' '.join(jieba.cut(x)))

去除停用词:文本中有很多无效的词,比如“着”,“和”,还有一些标点符号,这些我们不想在文本分析的时候引入,因此需要去掉,因为wordcloud和TF-IDF都支持停用词,因此就不额外处理了

2.3词云展示

3 文本的情感分析

3.1 先上结果


模型的效果还可以的样子,yeah~接下来我们好好讲讲怎么做的哈,我们通过爬虫爬取了大众点评广州8家最热门糖水店的3W条评论信息以及评分作为训练数据,前面的分析我们得知样本很不均衡。接下来我们的整体思路就是:文本特征提取(TF-IDF)—机器学习建模—模型评价。

我们先不处理样本不均衡问题,直接建模后查看结果,接下来我们再按照两种方法处理样本不均衡,对比结果。

3.2 文本特征提取(TF-IDF)

模型不能直接处理文本数据,因此需要先把文本数据转为向量,方法有词库表示法、TF-IDF、word2vec等

3.3 机器学习建模

这里我们使用文本分类的经典算法朴素贝叶斯算法,而且朴素贝叶斯算法的计算量较少。特征值是评论文本经过TF-IDF处理的向量,标签值评论的分类共两类,好评是1,差评是0。情感评分为分类器预测分类1的概率值。

3.4 最后输出的准确率

#从大众点评网找两条评论来测试一下
test1 = '很好吃,环境好,所有员工的态度都很好,上菜快,服务也很好,味道好吃,都是用蒸馏水煮的,推荐,超好吃' #5星好评
test2 = '糯米外皮不绵滑,豆沙馅粗躁,没有香甜味。12元一碗不值。' #1星差评
print('好评实例的模型预测情感得分为{}\n差评实例的模型预测情感得分为{}'.format(ceshi(classifier,test1),ceshi(classifier,test2)))>>>好评实例的模型预测情感得分为0.8638082706675478
>>>差评实例的模型预测情感得分为0.7856544482460911

最后

毕业设计之 ---- 基于大数据挖掘分析的大众点评评论文本挖掘相关推荐

  1. 毕业设计之 ---- 基于大数据挖掘分析的北京二手房数据分析

    文章目录 前言 1 探索性分析与文本数据预处理 2 数据可视化分析 2.1 Region特征分析 2.2 Year 特征分析 2.3 Floor 特征分析 最后 - 技术解答 - 毕设帮助 前言 今天 ...

  2. mysql 文本 挖掘_GitHub - myseve/dianping_textmining: 大众点评评论文本挖掘,包括点评数据爬取、数据清洗入库、数据分析、评论情感分析等的完整挖掘项目...

    大众点评评论文本挖掘 [TOC] 一.爬虫 整体思路 爬取大众点评十大热门糖水店的评论,爬取网页后从html页面中把需要的字段信息(顾客id.评论时间.评分.评论内容.口味.环境.服务.店铺ID)提取 ...

  3. mysql 文本 挖掘_GitHub - cwff520/dianping_textmining: 大众点评评论文本挖掘,包括点评数据爬取、数据清洗入库、数据分析、评论情感分析等的完整挖掘项目...

    大众点评评论文本挖掘 [TOC] 一.爬虫 整体思路 爬取大众点评十大热门糖水店的评论,爬取网页后从html页面中把需要的字段信息(顾客id.评论时间.评分.评论内容.口味.环境.服务.店铺ID)提取 ...

  4. mysql 文本挖掘_GitHub - HuiHuiT/dianping_textmining: 大众点评评论文本挖掘,包括点评数据爬取、数据清洗入库、数据分析、评论情感分析等的完整挖掘项目...

    大众点评评论文本挖掘 [TOC] 一.爬虫 整体思路 爬取大众点评十大热门糖水店的评论,爬取网页后从html页面中把需要的字段信息(顾客id.评论时间.评分.评论内容.口味.环境.服务.店铺ID)提取 ...

  5. 毕业设计之 ---- 基于大数据挖掘的岗位薪资水平分析

    文章目录 前言 数据预处理 爬虫爬取数据 数据清洗 数据分析 数据可视化分析 最后 - 技术解答 - 项目帮助 前言 今天向大家介绍一个基于大数据分析的毕业设计项目,基于大数据挖掘的岗位薪资水平分析. ...

  6. (附源码)计算机毕业设计SSM基于大数据的汽车流量监控

    (附源码)计算机毕业设计SSM基于大数据的汽车流量监控 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(I ...

  7. java计算机毕业设计ssm基于大数据的汽车流量监控cvej1(附源码、数据库)

    java计算机毕业设计ssm基于大数据的汽车流量监控cvej1(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也 ...

  8. 计算机毕业设计springboot基于大数据的疫情追踪系统的设计和实现rva1s源码+系统+程序+lw文档+部署

    计算机毕业设计springboot基于大数据的疫情追踪系统的设计和实现rva1s源码+系统+程序+lw文档+部署 计算机毕业设计springboot基于大数据的疫情追踪系统的设计和实现rva1s源码+ ...

  9. python爬虫实战---爬取大众点评评论

    python爬虫实战-爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  10. No.2 大众点评评论爬取

    大众点评评论爬取 一.简介 网址:http://www.dianping.com/shop/G41gaJfqGBICtiVY 效果:爬取评论 使用框架:selenium.requests.re 难度系 ...

最新文章

  1. 使用深度V8.1 系统后打开部分文件夹缓慢
  2. [转]JS设计模式-单例模式(二)
  3. linux 0.11 内核学习 -- rs_io.s,串口汇编代码
  4. 小白教程:Visual Studio2017配置GitHub图文教程
  5. 在将varchar值id转换为int时失败_Python—CAN报文转换工具教程
  6. Spring Boot中的@SpringBootConfiguration注释
  7. 【渝粤教育】 国家开放大学2020年春季 1050金融理论前沿课题 参考试题
  8. 折线图表android,Android 折线图表MPAndroidChart的实现
  9. 通俗地理解什么是编程语言
  10. 在控制台中操作MYSQL数据库步骤以及一些小问题
  11. Android Cursor浅析
  12. 串口监视软件_力控监控组态软件与西门子S7200
  13. oracle imp导入数据库
  14. js实现手机摇一摇功能
  15. 笔记本插入耳机没反应 必须重启前插入再启动才行 启动后拔下再插入依旧外放
  16. 三菱M80操作介绍_三菱PLC电脑上仿真操作步骤
  17. 计算机网络设备的运行温度,计算机机房控制温度与湿度方法
  18. asp.net简单实现导出excel报表
  19. 点石互动--kyw之:30步,网站信任度提升200%
  20. PowerBI中的函数日期表

热门文章

  1. 联想Y700键盘失灵问题
  2. 5万字、97 张图总结操作系统核心知识点
  3. Nginx + Lua搭建文件上传下载服务
  4. 计算机如何制作U盘启动盘,如何制作u盘启动盘三种方式教你
  5. JAVA游戏——潜艇大战
  6. xCodeGhost 事件专题总结
  7. python读取、写入txt文本内容
  8. ubuntu环境下如何设置开机启动项
  9. 数模美赛准备——Numpy
  10. 《跟我学Shiro》——张开涛(链接)