我用Python做了六百萬字的歌詞分析,告訴你中國Rapper都在唱些啥
《中國有嘻哈》火了,作為一名對中國 HipHop 毫無了解的吃瓜群眾,我開始好奇以下三個問題:
HipHop 到底在唱些什么?
各個國家和地區(qū)的 Rapper 們想要說的唱的都有哪些特色?
如果想當一個 Rapper,我應(yīng)該怎樣寫詞才能緊跟潮流又不會離題太遠?
為了解答這個疑問,我用 Python 抓取了美英、臺灣、香港、中國大陸四個地區(qū),總共六千萬的歌詞,其中包括大陸 600 萬的歌詞,做了一些數(shù)據(jù)分析的工作,目的就是給我以及像我一樣的吃瓜群眾們一個有理有據(jù)的答案。
我的數(shù)據(jù)源選了 X 米音樂,寫了好一會代碼,抓取歌詞的爬蟲開始蹭蹭工作了:
爬蟲一般會面對兩個問題:
1.代理問題
頻繁地抓取網(wǎng)站的頁面,IP 很容易被封。于是寫了個抓免費代理的爬蟲,抓了八百多個代理 IP,夠用了。
2.效率問題
10 萬首歌,即使是 1 秒一個請求,那得 27 個小時,我可等不了 27 個小時。
于是我決定開 10 個線程,三小時程序就能跑完。
……
然后在三小時之后,我收獲一個約 100M,49419 首歌的數(shù)據(jù)庫。
接下來,就是一些數(shù)據(jù)清洗、處理、分析的工作。
蝦米的歌詞都是用戶編輯上傳的,格式不適用數(shù)據(jù)分析,所以我得把無用的符號、編曲、作詞之類的信息除去(格式統(tǒng)一有多么重要啊朋友們),然后中英文各自分詞。
英文需要去停詞(對數(shù)據(jù)分析無用的詞,一般沒有實際含義,如 is、on、at、which),大小寫變換,以及詞形變換。英語中詞匯有單復(fù)數(shù)、各種時態(tài),為了易于分析,需要還原為詞干。
另外不管是中文還是英文都需要詞性標注,一般來說分析也就分析名詞和形容詞,這些使用現(xiàn)成的開源庫(此處省去 1000 萬字)。
總之,我都搞定了,我們先看看以下的分析結(jié)果。
1.大陸 Rapper 歌詞里的關(guān)鍵詞
“世界”和“時間”占據(jù)首位,“老子”、“兄弟”、“baby”、“money”、“bitch”、“real”等詞倒是讓 Rapper 的形象呼之欲出。
Rapper 的詞里頻繁提到“音樂”、“歌詞”、“旋律”、“歌曲”,可見他們對自己的音樂非常在乎。嘻哈音樂由于有 Freestyle 的文化,對親自寫詞有要求,否則就不“ real ”,從節(jié)目中他們對偶像 Rapper 的 diss 也能看出來。
接著,我們來看看與其他幾個地區(qū)的關(guān)鍵詞對比:
看起來 Rapper 的生活差不多,無論大陸還是臺灣,都喜歡喊“baby”,身邊都有一群“兄弟”和“朋友”,有“夢想”,平時都在唱“hip hop”,有“煩惱”了就罵罵街。
亮點是美國的關(guān)鍵字 Top1 是“nigga”,這個和帶有種族歧視意味的“nigger”還不是一個詞。關(guān)于這個 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 的生活狀況,我開始分析一些常見詞匯在歌詞中出現(xiàn)的頻率。饒舌歌手們的生活想必少不了豪車,出門騎摩拜可能有被開除 rap 籍的風(fēng)險。
感謝維基提供汽車品牌頁面,并且很貼心的分了英語名稱、中國大陸譯名,于是我又寫了個爬蟲把品牌名稱抓下來,然后統(tǒng)計數(shù)據(jù)庫中每個品牌出現(xiàn)的頻率。
這是各汽車品牌在國內(nèi) 16284 首嘻哈歌曲中出現(xiàn)的情況,在一首歌的歌詞中出現(xiàn)算一次,總共約有 400 多首歌中出現(xiàn)至少一次汽車的品牌名字。
可以看出,饒舌歌手喜歡寶馬和奔馳的很多,特點只有一個,就是貴!其實夏利、桑塔納等車也有不少歌提到,但一般表達的是消極情緒。
2.Rapper 們都喝什么
紅色是國內(nèi)饒舌歌手的數(shù)據(jù),黃色是總數(shù)據(jù)
看來饒舌歌手不那么喜歡喝威士忌,排在威士忌前面的還分別有龍舌蘭、白蘭地、朗姆酒,限于圖表大小我沒將這幾個列入圖表。
香檳作為富有的象征,遙遙領(lǐng)先,不過國內(nèi)的饒舌歌手似乎處于消費尚未升級的水平,啤酒排在首位。外國人比較喜歡金酒,國內(nèi)的饒舌歌手幾乎沒提到,雖然金酒一般用來調(diào)雞尾酒,但是雞尾酒提到的次數(shù)也是少得可憐。
饒舌歌手喜歡互相 diss(懟),所以他們 diss 時會罵些啥?讓我們來看看他們都罵了什么臟話。
這個統(tǒng)計有個小插曲,第一次統(tǒng)計發(fā)現(xiàn)一個中文臟話都沒有,還以為凈網(wǎng)運動成功了,結(jié)果發(fā)現(xiàn)分詞的詞庫里壓根就沒臟話的詞匯,重新手動加入詞庫后就好了。
(左邊是所有數(shù)據(jù)的出現(xiàn)次數(shù),右邊是大陸說唱的出現(xiàn)次數(shù))
大陸 16284 首歌有 2496 首出現(xiàn)臟話,臟話率約為 15%,而非大陸的數(shù)據(jù)中,33134 首歌有 13217 首出現(xiàn)臟話,臟話率約為 40%。
總的來看,我國歌手比較符合社會主義核心價值觀。我試著把“damn”和“shit”這兩個不那么“臟”并且口語常見的詞在國外的統(tǒng)計中去掉,最后臟話率還有 33%,比例遠遠高于大陸。
一個推測是,英文臟話詞匯在歌詞中更容易押韻,或者唱起來 flow 更好把握。另一個可能是審查原因,早有“in3”這樣的樂隊因為歌詞原因被禁,國內(nèi)的 Rapper 創(chuàng)作起來可不能太奔放。
3.Rap 里的押韻
在《中國有嘻哈》中我們看到有單押、雙押、三押,各種層出不窮的押韻。旋律、押韻、節(jié)奏是說唱歌曲三個很重要的評判標準,一個好的押韻,能讓歌曲的 flow 更加流暢。
那么我們怎么才能唱出酷酷的押韻呢?我從歌詞庫中取出所有歌詞,分詞,然后根據(jù)韻母、聲調(diào)分類,然后得到了一個押韻詞匯文件。
韻腳的分布挺有趣的,我統(tǒng)計了一下出現(xiàn)前十的兩字詞語韻腳:
可以看出,i i 這個韻腳是最容易押韻的。下圖的這個韻腳的部分詞匯,比如“勢利”,“世紀”,“日志”,“秘密”……
看著這些詞匯,我就情不自禁 rap 起來了,drop the beat!
雙押 x9 達成!以上應(yīng)該能告訴你中國到底有什么樣的嘻哈了。