阿布云

你所需要的,不仅仅是一个好用的代理。

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

阿布云 发表于

 

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

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

HipHop 到底在唱些什么?

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

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

1.png

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

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

2.png

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

1.代理问题

频繁地抓取网站的页面,IP 很容易被封。于是使用了阿布云代理,海量的IP够用了。

2.效率问题

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

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

……

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

3.png

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

X米的歌词都是用户编辑上传的,格式不适用数据分析,所以我得把无用的符号、编曲、作词之类的信息除去(格式统一有多么重要啊朋友们),然后中英文各自分词。

英文需要去停词(对数据分析无用的词,一般没有实际含义,如 is、on、at、which),大小写变换,以及词形变换。英语中词汇有单复数、各种时态,为了易于分析,需要还原为词干。

另外不管是中文还是英文都需要词性标注,一般来说分析也就分析名词和形容词,这些使用现成的开源库(此处省去 1000 万字)。

总之,我都搞定了,我们先看看以下的分析结果。

1.大陆 Rapper 歌词里的关键词

4.png

“世界”和“时间”占据首位,“老子”、“兄弟”、“baby”、“money”、“bitch”、“real”等词倒是让 Rapper 的形象呼之欲出。

Rapper 的词里频繁提到“音乐”、“歌词”、“旋律”、“歌曲”,可见他们对自己的音乐非常在乎。嘻哈音乐由于有 Freestyle 的文化,对亲自写词有要求,否则就不“ real ”,从节目中他们对偶像 Rapper 的 diss 也能看出来。

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

5.png

看起来 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 的生活状况,我开始分析一些常见词汇在歌词中出现的频率。饶舌歌手们的生活想必少不了豪车,出门骑摩拜可能有被开除 rap 籍的风险。

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

6.png

这是各汽车品牌在国内 16284 首嘻哈歌曲中出现的情况,在一首歌的歌词中出现算一次,总共约有 400 多首歌中出现至少一次汽车的品牌名字。

可以看出,饶舌歌手喜欢宝马和奔驰的很多,特点只有一个,就是贵!其实夏利、桑塔纳等车也有不少歌提到,但一般表达的是消极情绪。

2.Rapper 们都喝什么

7.png

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

看来饶舌歌手不那么喜欢喝威士忌,排在威士忌前面的还分别有龙舌兰、白兰地、朗姆酒,限于图表大小我没将这几个列入图表。

香槟作为富有的象征,遥遥领先,不过国内的饶舌歌手似乎处于消费尚未升级的水平,啤酒排在首位。外国人比较喜欢金酒,国内的饶舌歌手几乎没提到,虽然金酒一般用来调鸡尾酒,但是鸡尾酒提到的次数也是少得可怜。

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

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

8.png

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

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

总的来看,我国歌手比较符合社会主义核心价值观。我试着把“damn”和“shit”这两个不那么“脏”并且口语常见的词在国外的统计中去掉,最后脏话率还有 33%,比例远远高于大陆。

一个推测是,英文脏话词汇在歌词中更容易押韵,或者唱起来 flow 更好把握。另一个可能是审查原因,早有“in3”这样的乐队因为歌词原因被禁,国内的 Rapper 创作起来可不能太奔放。

3.Rap 里的押韵

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

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

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

9.png

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

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

10.png

双押 x9 达成!以上应该能告诉你中国到底有什么样的嘻哈了。