爬虫专题我爱编程NLP

当你点开这首《八月》的歌:9400余条评论的分析与挖掘

2018-08-07  本文已影响116人  古柳_Deserts_X

因缘际会

八月伊始的当口,念想着:新的一个月了,是否有关于八月的歌呢,闲时也蛮想找来听下的。说来也怪,哪个月都不曾有过此念头,这回却“突发奇想”且又念念不忘,于是打开网易云音乐,傻瓜般地搜索“八月”,倒也真有不少同名歌曲,其中第一首就是八尾旅人的日文歌曲《八月》,点开听了下,还无暇看歌词描写的是什么,就看到了评论数高达9千余条,而且有8月1号当天许多“同道中人”的留言,看来在这新的一个月的当日,有此心路历程和“行迹”的人,却也不在少数哈。

也正是有感于在无从知晓的地方有那么多人曾有过如此相似的行为,且对这样一首以月份为主题的歌曲到底引发了听友哪些感慨的好奇,我打算爬取此歌曲的全部9400余条评论(截止2018-08-06晚上),并尝试进行分析和挖掘,庆幸的是很久前 Python 交友娱乐会所群(QQ 群:613176398,这不是 ads 系列)里曾有人分享过现成的爬取网易云音乐歌曲评论的爬虫,免去了破解反爬 JS 加密之苦,可以更专注于后续步骤。

若对爬虫感兴趣的可以看下这个话题:如何爬网易云音乐的评论数? 。为了更好的呈现内容,将不会放上冗长的代码,不过发现代码里太多需要在jupyter notebook里交互式讲解了,有些难搞,开源地址:https://github.com/DesertsX/gulius-projects,代码还会优化调整,欢迎 star。

一个不成熟的小建议就是读者可以边听八尾旅人《八月》这歌边阅读本文。

八月的歌

评论数变化情况

《八月》这首歌曲有着近万条评论(9490条,四舍五入就是一个亿),而每条评论都有时间标记,因此首先来看看评论数的随时间的变化情况。

用 pandas 自带的 plot() 函数绘制评论数与时间戳的关系图,可知在较长一段时期内此歌曲评论数都相对较少,且最早的评论出现在2014年12月20日;


而2018年8月6日之前这段评论数增多的时期里,曲线呈现出明显的周期性,即在每年的八月前后都会有较快速的增长,之后近一年则较为平缓,这很好地反映出《八月》这首歌所带来的评论数的月份相关性,当然观察发现其他“八月”同名歌曲则评论寥寥,可见流量与“风光”已经被八尾旅人这首歌所独占。

而将时间戳转化成年月日,并首次用 pyecharts 进行可视化后,能更加直观的看到评论数的变化情况,确实如上所述,周期性、月份相关性明显。

而单日评论数破400的出现过两次,破100的较为直观的有三次。


统计出评论数 Top20 的日期后,更多的奥秘也得以揭露:对于我来说,点开《八月》这首歌的缘故在于新的月份来临时挥之不去的一些念想,这与图中2016-2018这三年里位居前列的8月1日的数据所反映出的听友的行为与现象或许相同;而之不同的则是,8月末、9月初对即将或已经结束的八月的“悼念”。


本回暂时没有对不同时期评论的文本内容进行比较和分析,可待后续补充。

词不达意之 emoji

在日常的网上聊天或评论区,emoji 表情是许多人所熟悉并频繁使用的一大“神兵利器”。较之文字的歧义性与表达的局限性,emoji 有着直观、魔性、好玩等诸多特性。

同样的在《八月》这首歌底下也有诸多听友留下的 emoji 表情,因而本回也对近万条评论里所有出现的过的 emoji 进行了统计,需要指出的是爬虫拿到的数据里 emoji 是以英文中括号及表情含义的格式表示的,如,评论区使用最多的就是:'[爱心]'(请脑补对应的 emoji 图形),因而在提取步骤也需要用相应的正则表达式来提取 emoji 并进行统计,具体代码参见:https://github.com/DesertsX/gulius-projects

想来大家无一日不用表情包,不一日不斗图斗的飞起,那么请诸位将这里的60个中文含义(下面有62个,有俩是乱入的)与下图60个 emoji 匹配上吧,优胜者即可获得“emoji 大师”的称号,至于答案的话,也在代码此图的附近

{'[圈]', '[奸笑]', '[拜]', '[禁止]', '[大哭]', '[示爱]', '[痛苦]', '[外星]', '[生气]', '[月亮]', '[发怒]', '[跳舞]', '[撇嘴]', '[憨笑]', '[亲]', '[流感]', '[心碎]', '[假装看不到桌上成堆的作业]', '[礼物]', '[惶恐]', '[幽灵]', '[公鸡]', '[亲亲]', '[这边]', '[圣诞]', '[狗]', '[口罩]', '[呲牙]', '[女孩]', '[钻石]', '[流泪]', '[星星]', '[兔子]', '[惊恐]', '[爱心]', '[牵手]', '[弱]', '[晕]', '[八月]', '[吐舌]', '[皱眉]', '[嘴唇]', '[生病]', '[色]', '[猪]', '[大笑]', '[爱意]', '[汗]', '[呆]', '[哀伤]', '[开心]', '[猫]', '[钟情]', '[鬼脸]', '[蛋糕]', '[男孩]', '[强]', '[小鸡]', '[叉]', '[怒]', '[可爱]', '[便便]'}

注:'[假装看不到桌上成堆的作业]'/ '[八月]' 不是 emoji 表情,而且有人用了中括号,从而被提取出来的。 不过想到要是真有'[假装看不到桌上成堆的作业]'这个 emoji 表情,估计也蛮好玩的,就等哪位大佬开脑洞做一个吧。


另外,网易云音乐里支持60个 emoji,而评论里居然每个 emoji 都被用到了,是不是觉得很神奇,毕竟 '[便便]' 这种可不太清真。而真相就是,为了找出每个 emoji 与中文含义的对应关系,我在评论区手动输出了所有 emoji,从而算是在分析与挖掘这首歌的评论的过程中,留下了稍显莫名其妙的印记,因而也就不删除了。

而拿到对应关系后,Top10 emoji 也就非常直观了,可粗浅的分为开心与伤感两类(仿佛一句废话)。


如果选择其一进行研究,比如包含 '[流泪]' emoji 的评论里都在说些什么呢?用 jieba 提取关键词,并展示部分结果......大概是小年轻们的情情爱爱;或单身狗流窜至此;或开学在即,假期余额不足;或生活中糟糕、艰难困苦的吐露等等,不可胜计,再说我也要流泪了(此处应该有《这个杀手不太冷》那句生活是否总是如此艰难的配图)

流泪 八月 网易 ... 憨笑 开学 首歌 一年 不要 感觉 男朋友 单身 快点 没有 12 天呐 喜欢 爱情 哭腔 心碎 音乐 克里 日语 大叔 听到 就要 推荐 惊恐 大哭 希望 明明 勇气 可爱 七月 感谢 谢谢 九月 一个 评论 适合 示爱 痛苦 时候 认真 无国界 好累 奸笑 柯达 故事

再用词云可视化这部分评论里出现的高频词,相关解读还是需要结合对应评论文本进行,所以还是推荐读者看这部分代码筛选出里评论吧:


词云

最后再放一张全部近万条评论的高频词绘制而成的词云图,同样不在本文进行解读了。


最后代码开源在:https://github.com/DesertsX/gulius-projects,涵盖网易云音乐歌曲评论爬虫,数据分析、挖掘和可视化的所有代码,本文提及的远不如代码里详实,不过鉴于 jupyter notebook 里代码还有些混乱,调整后会陆续放上去。

上一篇下一篇

猜你喜欢

热点阅读