本
文
摘
要
作者:小安和小编
链接:
https://mp.weixin.qq.com/s/BcOf2D9rw-St84QqODxMsA我是张学友的铁杆粉丝,听了他的很多很多歌曲,比如“吻别”,“饿狼传说”,“等你等到我心痛”,“祝福”,“她来听我的演唱会”等等。学友的歌伴我走过了很多很多岁月,从大学生到研究生,从学生到码农。都是歌神是情歌王子,那学友的歌里的情感到底如何,既然玩Python,不如动手分析一下。我们爬取了近16万的歌词并分析,并用机器学习分析了一下,哇发现几个亮点。
01 歌词的收集
首先是对于歌词素材的收集,我对比了各大音乐平台的歌词爬取难易程度,决定采用百度音乐作为爬取对象,爬取张学友的歌曲,由于其歌词是采用lrc文件保存,
爬虫这块非常简单,一共才几十行代码,我把核心的代码贴了一下,大家可以动手敲一下看看,不是很难的。爬取结束之后将所有的歌词文件爬取到了本地。如下图所示:
但是在读取歌词的时候,歌词中存在缺失,乱码等问题,所以需要对于歌词进行耐心的清洗,然后将歌词以及歌曲名称以及歌手信息保存到Excel表中,清洗好的数据如下图所示,去表格开头一部分的数据:
取表格后10行的数据:
02 歌词情感分析
接下来便是进行对于歌词的情感分析,对于歌词的情感分析,依托的是BosonNLP平台,该平台对于中文,提供了许多使用简单、功能强大、性能可靠的自然语言分析服务。我们这里是用到他的情感分析的功能。
首先大家得去它的平台注册,得到我们个人的API密钥,如下图所示:
得到API密钥后,就按照它的教程进行了对于歌词的情感分析,该平台提供的情感分析,每天只有500次的免费使用机会。而且它对于语句的情感分析返回的是两个值:
第一个值是指该语句是非负面的概率第二个值是指的负面的概率,两个值的和加起来等于1这里的负面可以理解为一些消极的态度,例如生气、焦虑、忧伤等等。代码如下图所示:
上述的代码非常的简单,主要做了下面几步:
1).先将歌词读入到list_lyrics这个列表中
2).然后调用requests.post函数,将语句送至BosonNLP平台
3).最后就会返回该歌词的情感分析值。
小编分析了497首歌,最终得到了张天王的十大悲伤歌曲排行榜,和十大积极歌曲排行榜,如下图所示:
>>
十大悲伤曲目为: 0 1
0 我不明白 0.996758
1 不想失去你 0.996119
2 燥狂 0.989038
3 I Don T Wanna Be 0.986872
4 你冷得像风 0.977820
5 认床 0.977314
6 葬月 0.977087
7 问月 0.974448
8 当爱变成习惯 0.974190
9 算命 0.973292
十大积极曲目为: 0 1
0 让奇妙飞翔 0.996168
1 花与琴的流星 0.995877
2 祝愿 0.992565
3 温馨 0.991497
4 仍是会喜欢你 0.990432
5 仍是喜欢你 0.990432
6 流星下的愿 0.988126
7 留住这时光 (Full Version) 0.986213
8 简简单单就是爱 0.986053
9 飞机师的风衣 0.981768
由上图可以看出,学友哥的最悲伤的歌曲为《我不明白》,负面指数达到了0.996758,可谓是悲伤至极。小编特地去听了一下,真的很悲伤,歌曲缓慢展开,充满了离别的忧伤,是一首典型的悲伤情歌。
03 高频词分析
做到这些就完了吗?显然不够,作为情歌王,张学友的各种必然充斥着复杂的“情感关系”,小编分析了歌词中“他”、“她”、“我”、“你”的数量,最终得到了一下的结果:
读取文件,然后遍列每一行大歌词,用count统计每一行的关键字.
从图上我们可以看出,学友哥的歌曲人物关系大部分还是围绕两人的情感展开,很少有掺杂“第三者”的问题。
既然是情歌,怎么能少得了“爱”,小编又为大家分析了这497首歌曲中哪五首歌曲中“爱”字出现的频率最高,如下图所示:
从上图可以看出,《命运舞会》这首歌中“爱”出现的次数最高。
最后小编为大家制作了歌词的词云分析,让大家清楚的看到,在学友哥的歌曲中,究竟哪些关键词出现的频率最高,如下图所示:
发现永远,自己,没有,一个,不会,一生,什么,一切这些词是高频出现的。想想确实是的,你试着回忆几首学友的歌,都忽多忽少的出现这些词。
以上就是小编为大家带来的基于歌词的情感分析和统计,Python就是这么有趣,只要你想玩的趣味练习,Python大部分都能实现。
自要你愿意,Python给你提供了各种玩,还是有趣的那种~自己试试呗 ^_^