我用Python做了六百万字的歌词分析,告诉你中国Rapper都在唱些啥 2017-08-06 17:46 来源:CSDN 数据分析 原标题:我用Python做了六百万字的歌词分析,告诉你中国Rapper都在唱些啥 本文转载自公众号摩登天空杂志(ModernskyMag),作者:猫弟Azz 《中国有嘻哈》火了,作为一名对中国HipHop毫无了解的吃瓜群众,我开始好奇以下三个问题: HipHop到底在唱些什么? 各个国家和地区的 Rapper 们想要说的唱的都有哪些特色? 如果想当一个Rapper,我应该怎样写词才能紧跟潮流又不会离题太远? 为了解答这个疑问,我用Python抓取了美英、台湾、香港、中国大陆四个地区,总共六千万的歌词,其中包括大陆600万的歌词,做了一些数据分析的工作,目的就是给我以及像我一样的吃瓜群众们一个有理有据的答案。 atv,告诉你中国" src="http://www.wzatv.cc/atv/uploads/allimg/170807/0450061148_0.jpg" /> 我的数据源选了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 (责任编辑:本港台直播) |