查看原文
其他

我用Python做了六百万字的歌词分析,告诉你中国Rapper都在唱些啥

2017-08-06 猫弟Azz CSDN

本文转载自公众号摩登天空杂志(ModernskyMag),作者:猫弟Azz


《中国有嘻哈》火了,作为一名对中国HipHop毫无了解的吃瓜群众,我开始好奇以下三个问题:


HipHop到底在唱些什么?


各个国家和地区的 Rapper 们想要说的唱的都有哪些特色?


如果想当一个Rapper,我应该怎样写词才能紧跟潮流又不会离题太远?

为了解答这个疑问,我用Python抓取了美英、台湾、香港、中国大陆四个地区,总共六千万的歌词,其中包括大陆600万的歌词,做了一些数据分析的工作,目的就是给我以及像我一样的吃瓜群众们一个有理有据的答案。

我的数据源选了X米音乐,写了好一会代码,抓取歌词的爬虫开始蹭蹭工作了⇣


爬虫一般会面对两个问题——


1.代理问题


频繁地抓取网站的页面,IP很容易被封。于是写了个抓免费代理的爬虫,抓了八百多个代理IP,够用了。


2.效率问题


10万首歌,即使是1秒一个请求,那得27个小时,我可等不了27个小时。


于是我决定开10个线程,三小时程序就能跑完。

……


然后在三小时之后,我收获一个约100M,49419首歌的数据库。


接下来,就是一些数据清洗、处理、分析的工作。


虾米的歌词都是用户编辑上传的,格式不适用数据分析,所以我得把无用的符号、编曲、作词之类的信息除去(格式统一有多么重要啊朋友们),然后中英文各自分词。英文需要去停词(对数据分析无用的词,一般没有实际含义,如is、on、at、which),大小写变换,以及词形变换。英语中词汇有单复数、各种时态,为了易于分析,需要还原为词干。另外不管是中文还是英文都需要词性标注,一般来说分析也就分析名词和形容词,这些现成的开源库使用(此处省去1000万字)。


总之,我都搞定了,以下就是分析结果。我们先看看大陆地区的rapper歌词里有都写啥关键词⇣

“世界”和“时间”占据首位,“老子”、“兄弟”、“baby”、“money”、“bitch”、“real”等词倒是让rapper的形象呼之欲出。rapper的词里频繁提到“音乐”、“歌词”、“旋律”、“歌曲”,可见他们对自己的音乐非常在乎。嘻哈音乐由于有freestyle的文化,对亲自写词有要求,否则就不“ real ”,从节目中他们对偶像rapper的diss也能看出来。


接着,我们来看看与其他几个地区的关键词对比↓

看起来rapper的生活差不多,无论大陆还是台湾,都喜欢喊“baby”,身边都有一群“兄弟”和“朋友”,有“梦想”,平时都在唱“hip hop”,有“烦恼”了就骂骂街。


亮点是美国的关键字top1是“nigga”,这个和带有种族歧视意味的“nigger”还不是一个词。关于这个Tupac有过一个有意思的定义。


nigger : a black man with a slavery chain around his neck.(黑奴)

nigga : a black man with a gold chain on his neck.(金链黑汉子)

美国rapper fetty wap 


接下来,为了了解rapper的生活状况,我开始分析一些常见词汇在歌词中出现的频率。饶舌歌手们的生活想必少不了豪车,出门骑摩拜可能有被开除rap籍的风险。


感谢维基提供汽车品牌页面,并且很贴心的分了英语名称、中国大陆译名,于是我又写了个爬虫把品牌名称抓下来,然后统计数据库中每个品牌出现的频率。

这是各汽车品牌在国内16284首嘻哈歌曲中出现的情况,在一首歌的歌词中出现算一次,总共约有400多首歌中出现至少一次汽车的品牌名字。可以看出,饶舌歌手喜欢宝马和奔驰的很多,特点只有一个,就是贵!其实夏利、桑塔纳等车也有不少歌提到,但一般表达的是消极情绪。


然后我又统计了一下rapper们都喝什么⇣

*红色是国内饶舌歌手的数据,黄色是总数据


看来饶舌歌手不那么喜欢喝威士忌,排在威士忌前面的还分别有龙舌兰、白兰地、朗姆酒,限于图表大小我没将这几个列入图表。香槟作为富有的象征,遥遥领先,不过国内的饶舌歌手似乎处于消费尚未升级的水平,啤酒排在首位。外国人比较喜欢金酒,国内的饶舌歌手几乎没提到,虽然金酒一般用来调鸡尾酒,但是鸡尾酒提到的次数也是少得可怜。

饶舌歌手喜欢互相diss(怼),所以他们diss时会骂些啥?让我们来看看他们都骂了什么脏话。


这个统计有个小插曲,第一次统计发现一个中文脏话都没有,还以为净网运动成功了,结果发现分词的词库里压根就没脏话的词汇,重新手动加入词库后就好了。


(左边是所有数据的出现次数,右边是大陆说唱的出现次数)


大陆16284首歌2496首出现脏话,脏话率约为15%,而非大陆的数据中,33134首歌有13217首出现脏话,脏话率约为40%


总的来看,我国歌手比较符合社会主义核心价值观。我试着把“damn”和“shit”这两个不那么“脏”并且口语常见的词在国外的统计中去掉,最后脏话率还有33%,比例远远高于大陆。一个推测是,英文脏话词汇在歌词中更容易押韵,或者唱起来flow更好把握。另一个可能是审查原因,早有“in3”这样的乐队因为歌词原因被禁,国内的rapper创作起来可不能太奔放。

最后我们来探讨一下rap里的押韵。

在《中国有嘻哈》中我们看到有单押、双押、三押,各种层出不穷的押韵。旋律、押韵、节奏是说唱歌曲三个很重要的评判标准,一个好的押韵,能让歌曲的flow更加流畅。


那么我们怎么才能唱出酷酷的押韵呢?我从歌词库中取出所有歌词,分词,然后根据韵母、声调分类,然后得到了一个押韵词汇文件。


韵脚的分布挺有趣的,我统计了一下出现前十的两字词语韵脚⇣


可以看出,i i这个韵脚是最容易押韵的。下图的这个韵脚的部分词汇。“势利”,“世纪”,“日志”,“秘密”……


看着这些词汇,我就情不自禁rap起来了,drop the beat!


双押x9 达成!


以上应该能告诉你中国到底有什么样的嘻哈了。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存