前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >炎炎夏日,漂流去哪漂?评论情感分析告诉你

炎炎夏日,漂流去哪漂?评论情感分析告诉你

作者头像
用户6825444
发布2020-07-23 19:22:32
4490
发布2020-07-23 19:22:32
举报
文章被收录于专栏:木下学Python木下学Python

前言

炎炎夏日,在这酷暑的天气,玩水,游泳等接触水的活动成了大家都想体验的活动,以此来降低一下温度,小编也准备水上活动,去漂流,但那景点没去过,不知道好不好玩,于是乎,爬取了美团上此漂流景点的评论数据,来分析一下大家的体验是怎么样的,作为一个参考。

小编使用爬虫从美团上采集数据,在对数据中的评论星级,评论时间做一个数据探索,再清洗评论数据,绘制综合评论词云,正负情感词云,最后使用 LDA 主题模型进行评论主题的探索。

数据获取

对数据获取不感兴趣的伙伴可以跳过直接阅读分析部分。

打开美团,搜索漂流,找到要去的目的地,小编是高过河,可见有 1681 条评论:

点进去查看评论,打开开发者工具,翻两页发现是异步加载的,并且可以看到数据源是在哪个包:

查看此包的请求头及参数部分,使用的 get 方法请求,url 中 offset 是控制页数的参数步数为 10,以此可以根据总评论数构造请求链接,请求头中小编是登录的,带上 cookie,其他没什么参数了:

请求的数据返回的是 json 格式,只需要解析直接提取出需要的数据即可,代码:

结果如图:

评价时间与星级分布

评论时间为时间戳的形式,需要转成年月日,按照年时间序列绘制每年评论数走势:

从上图看出此漂流景点的是 16 年在美团上线,评论数逐年增加,可以知道游客是逐年增加的,在20年评论数下降了,因为现在才 7 月份嘛。

再来看一下评论月份和评论星级的分布:

评论月份大多集中在 6-8 月,刚好是夏天最炎热的时候,评分主要集中在 4-5 分之间。

综合评论

评论数据中思考可能有恶意刷评论的用户,评论内容相差无几的,有的评论相似度极高,词语运用存在差异,删除则可能误删,所以只删除完全重复的:

接下来查看有无缺失值,小编查看数据有 1680 条数据,但非空的只有 900 多条,小编排查问题,不是爬虫的问题,查看美团的原始数据发现,后面的评论数据根本就没有,但景点那里却写着1680条评论,实际只有952条评论,所以删除空的:

在评论数据中我们还需要提出多余可能出现的高频字符,和字母数字,字母数字这些没有什么用,由于是情感分析,数据中可能夹杂着‘美团’‘漂流’‘景点’等没用却出现的高频词,需要删除:

接下来需要分词,词性标注,去除停用词,停用词文本小编有给 stoplist.txt,在词性中,词性为 x,代表标点符号,删除,最终结果有四列,第一列为词所在评论id,第二列词语,第三列词性,第四列为各词在对应评论的位置:

提取名词,形容词,目标是对游客体验进行分析,评论中出现明确的名词形容词,才有意义,所以进行词性标注;n 代表名词,adj 代表形容词,先选出名词形容词所在的行,在选择索引,再根据索引从上面合并的结果中选出此条评论的所有词语:

绘制词云查看分词效果:

从图看出评论数据预处理后,分词效果较为符合预期,其中“刺激”“不错”“好玩”等词出现频率较高,由此初步判断游客的体验是不错的。

正负情感

既然分析情感,那得先匹配情感词,我们使用的是情感词表,小编也有给,情感词表是2007年知网发布的’情感分析用词语集‘,主要使用’中文正面评价‘,’中文正面情感‘, ’中文负面情感‘,’中文负面评价‘等词表 ’中文正面评价‘,’中文正面情感‘合并,并给每个词语赋予初始权重为1,作为正面评论情感词表 ’中文负面情感‘,’中文负面评价‘合并,并个每个词语赋予初始权重为-1,作为负面评论情感词表 在提供的词表基础上进行优化,添加一些词,匹配情感词代码:

由于汉语中存在多重否定现象,即当否定词出 现奇数次时,表示否定;偶数表示肯定。按照汉语习惯,搜索每个情感词前两个词语,若为奇数 则调整为相反的情感极佳:

修整好后,分别提取出正负情感的词语:

绘制正负情感词云,上图为正,下图为负:

从正面情感词云看出“不错”“喜欢”“值得”“刺激”等词出现频率较高,没有掺杂负面情感词语。

从负面情感词云看出“加气”“不好”“贵”“坑”等词出现较多,负面情感很好的抽取了出来。

不过“刺激”在两图中都出现了,说明正负面觉得刺激的各占一半。

LDA主题模型

如果一篇文档有多个主题,则一些特定的可代表不同主题的词语就会反复出现,此时,运用主题模型,能够发现文本中使用词语的规律,并且把规律显示的文本联系到一起,以寻求非结构化的文本集中的有用信息。

通过 LDA 主题模型,能够挖掘数据集中的潜在主题,进而分析数据集的集中关注点及其相关特征词,代码回复关键词获取查看。

首先建立词典及语料库,再主题数寻优,确定最适合的主题数,查看主题间平均余弦相似度,在此项目中,主题数为 3 时达到了最低:

最后得到的主题,一个列表代表一个主题,里面是一个主题中最可能出现的 10 个词语,上图为正面,下图为负面:

综合以上主题,可以得出漂流景点的特点:

  1. 玩是好玩的,值得的,与朋友来玩是不错的体验,推荐
  2. 船加气的次数太多,吃的东西有点贵,时间久了还会有点冷,有些服务设置不是免费的
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木下学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档