1. 程式人生 > >我用Python做了六百萬字的歌詞分析,告訴你中國Rapper都在唱些啥

我用Python做了六百萬字的歌詞分析,告訴你中國Rapper都在唱些啥

《中國有嘻哈》火了,作為一名對中國HipHop毫無瞭解的吃瓜群眾,我開始好奇以下三個問題:

HipHop到底在唱些什麼?

進群:943752371可以獲取數十套PDF文件!

各個國家和地區的 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.(金鍊黑漢子)

美國rapperfetty 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 達成!

以上應該能告訴你中國到底有什麼樣的嘻哈了。