我用Python做了600萬字歌詞分析,告訴你中國Rapper都在唱些什麼

2017.08.07 by
摩登天空雜誌
我用Python做了600萬字歌詞分析,告訴你中國Rapper都在唱些什麼
YouTube截圖
中國HipHop到底是什麼?本文作者用Python抓取了美英、台灣、香港、中國四個地區,總共6000萬字的歌詞,其中包括中國600萬字歌詞,告訴你各國Rapper都在唱些什麼?

更正啟示:原文刊載於《摩登天空雜誌》,本文授權轉載自《摩登天空雜誌》,原文標題〈我做了六百萬字的歌詞分析,告訴你中國Rapper都在唱些啥〉。

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

  • HipHop到底在唱些什麼?

  • 各個國家和地區的Rapper們想要說的唱的都有哪些特色?

  • 如果想當一個Rapper,我應該怎樣寫詞才能緊跟潮流又不會離題太遠?

為了解答這個疑問,我用Python抓取了美英、台灣、香港、中國四個地區,總共6000萬字的歌詞,其中包括中國600萬字歌詞,做了一些資料分析的工作,目的就是給我以及像我一樣的吃瓜群眾們一個有理有據的答案。

我的資料來源選了蝦米音樂,寫了好一會程式碼,抓取歌詞的爬蟲開始蹭蹭工作了⇣

爬蟲一般會面對兩個問題——

1. 代理問題

頻繁地抓取網站的頁面,IP很容易被封。於是寫了個抓免費代理的爬蟲,抓了八百多個代理IP,夠用了。

2. 效率問題

10萬首歌,即使是1秒一個請求,那得27個小時,我可等不了27個小時。

於是我決定開10個執行緒(thread),三小時程式就能跑完。

然後在三小時之後,我收穫一個約100M、49,419首歌的資料庫。

接下來,就是一些資料清洗、處理、分析的工作。

蝦米的歌詞都是用戶編輯上傳的,格式不適用資料分析,所以我得把無用的符號、編曲、作詞之類的資訊除去(格式統一有多麼重要啊!朋友們),然後中英文各自分詞。英文需要去停詞(對資料分析無用的詞,一般沒有實際含義,如is、on、at、which),大小寫變換,以及詞形變換。英語中詞彙有單複數、各種時態,為了易於分析,需要還原為詞幹。另外不管是中文還是英文都需要詞性標注,一般來說分析也就分析名詞和形容詞,這些現成的開源庫使用(此處省去1,000萬字)。

總之,我都搞定了,以下就是分析結果。我們先看看中國地區的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的生活狀況,我開始分析一些常見詞彙在歌詞中出現的頻率。饒舌歌手們的生活想必少不了豪車,出門騎摩拜可能有被開除rap籍的風險。

感謝維琪提供汽車品牌頁面,並且很貼心的分了英語名稱、中國譯名,於是我又寫了個爬蟲把品牌名稱抓下來,然後統計資料庫中每個品牌出現的頻率。

虎嗅網

這是各汽車品牌在中國16,284首嘻哈歌曲中出現的情況,在一首歌的歌詞中出現算一次,總共約有400多首歌中出現至少一次汽車的品牌名字。可以看出,饒舌歌手喜歡寶馬(BMW)和賓士的很多,特點只有一個,就是貴!其實夏利、桑塔納等車也有不少歌提到,但一般表達的是消極情緒。

然後我又統計了一下rapper們都喝什麼:

紅色是中國饒舌歌手的資料,黃色是總數據。
虎嗅網

看來饒舌歌手不那麼喜歡喝威士卡,排在威士卡前面的還分別有龍舌蘭、白蘭地、朗姆酒,限於圖表大小我沒將這幾個列入圖表。香檳作為富有的象徵,遙遙領先,不過中國的饒舌歌手似乎處於消費尚未升級的水準,啤酒排在首位。外國人比較喜歡金酒,中國的饒舌歌手幾乎沒提到,雖然金酒一般用來調雞尾酒,但是雞尾酒提到的次數也是少得可憐。

饒舌歌手喜歡互相diss(懟),所以他們diss時會罵些啥?讓我們來看看他們都罵了什麼髒話。

這個統計有個小插曲,第一次統計發現一個中文髒話都沒有,還以為淨網運動成功了,結果發現分詞的詞庫裡壓根就沒髒話的詞彙,重新手動加入詞庫後就好了。

左邊是所有資料的出現次數,右邊是中國說唱的出現次數。
虎嗅網

中國16,284首歌有2,496首出現髒話,髒話率約為15%,而非中國的資料中,33,134首歌有13,217首出現髒話,髒話率約為40%。

總的來看,我國歌手比較符合社會主義核心價值觀。我試著把「damn」和「shit」這兩個不那麼「髒」並且口語常見的詞在國外的統計中去掉,最後髒話率還有33%,比例遠遠高於中國。一個推測是,英文髒話詞彙在歌詞中更容易押韻,或者唱起來flow更好把握。另一個可能是審查原因,早有「in3」這樣的樂隊因為歌詞原因被禁,中國的rapper創作起來可不能太奔放。

最後我們來探討一下rap裡的押韻。

在《中國有嘻哈》中我們看到有單押、雙押、三押,各種層出不窮的押韻。旋律、押韻、節奏是說唱歌曲三個很重要的評判標準,一個好的押韻,能讓歌曲的flow更加流暢。

那麼我們怎麼才能唱出酷酷的押韻呢?我從歌詞庫中取出所有歌詞,分詞,然後根據韻母、聲調分類,然後得到了一個押韻詞彙檔。

韻腳的分佈挺有趣的,我統計了一下出現前十的兩字詞語韻腳:

虎嗅網

可以看出,i i這個韻腳是最容易押韻的。下圖的這個韻腳的部分詞彙。「勢利」,「世紀」,「日誌」,「秘密」……

看著這些詞彙,我就情不自禁rap起來了,drop the beat!

虎嗅網

雙押x9 達成!

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

每日精選科技圈重要消息