不用叫方文山!AI就能拯救杰倫的土味歌詞!

大資料v發表於2018-06-11

640?wx_fmt=gif

導讀:周杰倫的新歌《不愛我就拉倒》釋出後,雷人的歌詞引來不少網友吐槽,大家紛紛到方文山微博底下喊他出山。其實,除了請回方文山之外,還有另一種方法拯救周杰倫的歌詞,那就是求助於現在大熱的人工智慧。


美國西弗吉尼亞州的一個00後,用基於 Python 的機器學習庫 PyBrain 訓練他的神經網路,再加上超過六千句歌詞作為素材訓練 AI、又花了幾天的時間除錯結果,成功搞了個說唱 AI……


作者 / 來源:矽谷密探(ID:guigudiyixian)


前兩天,當我第一次聽到周杰倫的《不愛我就拉倒》時,雖然做好了心理準備,但還是被歌詞裡愉快的鄉土氣息給震到了:


640?wx_fmt=png


“哥練的胸肌,如果你還想靠”?!是這樣麼:


640?wx_fmt=png

▲圖自網路,版權屬於原作者


不少網友聽到這個歌詞後,紛紛湧入周杰倫的老搭檔方文山微博底下喊他出山,別再讓杰倫朝著鄉味情歌的方向一路狂奔了。


640?wx_fmt=png


其實除了方文山,還有一種方式能 “拯救” 杰倫的歌詞,那就是人工智慧(Artificial Intelligence,下文簡稱 AI)!今天我們就來聊聊,AI 都能寫什麼樣的歌詞、歌詞寫得好麼?



01 對說唱(Rap)來說,什麼才叫好歌詞?


歌詞對任何一首歌都很重要,尤其是說唱音樂(rap)。說唱說唱,說在前、唱在後嘛!歌詞重要性可見一斑。因此說唱音樂對歌詞的考驗也最高:既要有節奏感、又要緊緊圍繞一個主題說、還要押韻。


我們先來看幾個人類寫的 rap 歌詞。這是寫得比較好的一個,南拳媽媽的《牡丹江》,雖然不是周董唱的,但詞是方文山寫的:


牡丹江彎了幾個

小魚兒甭上船我們們不稀

撈月亮張網補星

給爺爺下酒喝一碗家

牡丹江彎了幾個

小蝦米甭靠岸我們們沒空

撈月亮張網補星

給姥姥熬湯喝一碗家


看到沒?“彎” 和 “罕”、“光” 和 “鄉”,每句結尾都很押韻、沒有華麗辭藻堆砌、沒有髒話,但很走心。


不過,愛聽音樂的你近幾年可能會發現在寫詞的時候有個非常不好的潮流:押韻太難了,所以“偷懶式押韻” 越來越多,比如 Lil Wayne 這首歌:


640?wx_fmt=png


第一、第二、第四句末尾的詞居然都是 “mine”?!押韻不了就都用一個詞,能再懶點嗎?這還不如 “哥的胸肌給你靠” 呢,至少真誠點。


那麼,AI 寫的歌詞能比人類寫得好嗎?



02 哪些詞 “很 rap”、哪些詞 “不 rap”?


既然要寫 rap,我們首先要解決一個問題:rap 裡最常出現哪些詞?換言之,哪些詞夠 rap、哪些詞不夠 rap?


某種角度上來說,AI 就像小孩,你教啥它就學啥。既然我們想讓它給我們寫首 Rap,那我們就要先 “喂” 給 AI 大量的原材料,也就是現有的 Rap。好比汪峰的歌裡經常出現 “彷徨”、“孤獨”、“瞬間”、“生命” 一樣,我們也可以來分析下英文 Rap 詞庫裡有哪些 “基本款”。   


大資料研究者、視覺化文章作者馬特•丹尼爾斯(Matt Daniels)在他的《流行歌的語言》裡,發現了一些很有意思的現象。


馬特選取了“公告牌” 榜單上排在前 500 名說唱歌手的 5 萬首歌、2600 萬個詞,作為他研究的資料庫。


起初他發現,他注意到 “愛” 這個詞在說唱音樂裡頻繁出現,但他隨後發現:雖然在說唱音樂裡 “愛” 出現頻繁,達到了每 10000 個詞裡有 21 個,但在其他所有音樂流派(鄉村民謠、流行音樂等)裡,“愛” 出現的次數反而更多,達到 71次/每 10000 詞。看來,戴著大金鍊子唱 rap 的鐵血真漢子們,不輕易說愛!


如果我們把 “很 rap 的詞” 定義為 “在 rap 裡出現很多次、但在其他種類音樂裡出現得少”,那麼哪些詞 “很 rap”、哪些詞 “不夠 rap ”呢?結果如下:


640?wx_fmt=png

▲圖自https://pudding.cool/2017/09/hip-hop-words/


左上(紅點和黃點)是其他種類音樂的常見詞,比如 “愛”、“痛苦”、“午夜”、“輕語” 等。


而右下則是 rap 專用詞彙,除了 game “遊戲”、struggle “掙扎” 是顯著的高頻詞彙以外,還有 money “金錢”、hood “街頭”、homie “好兄弟”、以及(手動和諧)、(手動和諧)、和(手動和諧)等詞。



03 AI 填詞填得好嗎?


知道了哪些詞很 rap 後,我們現在就可以開始填詞了!


有一款叫做 DeepBeat 的線上寫歌詞工具,就能做這件事情。開發 DeepBeat 的團隊收集了 100位藝術家的 50 萬首 rap 歌曲,然後他們把這些歌詞變成了 “資訊檢索” 問題,比如你輸入前幾行的歌詞,它來給你“寫” 出後面的歌詞。


這種方法有什麼好處呢?AI 寫的歌詞好不好我們不知道,但在這種情況下,我們至少可以把 AI 續寫的歌詞和原本歌詞進行對照,看看寫得有多像出自人類之手。當然了,這種以 “一行歌詞” 為單位寫的歌,肯定沒有讓 AI 一個字、一個字寫歌寫得有創意,但 “一個字一個字地寫歌” 難度也更大。


在把歌詞輸入 DeepBeat 系統後,它會用 “Ranking SVM” 去挑選最適合成為下一句歌詞的那句話。RankSVM 主要是將排序問題轉化為 pairwise 的分類問題,之後再用 SVM 分類模型進行學習。


像 PageRank 這種演算法用的是“單個靜態排名(single static ranking)”,但如果用機器學習把多種演算法結合起來,就能讓句子配對的結果更精準。通常,在寫歌詞這種文字預測領域內,遞迴神經網路(RNN)使用得最為頻繁—— 否則就會寫出來的句子每句讀著都對、但放一起就前言不搭後語。


640?wx_fmt=png

▲DeepBeat 背後技術 DopeLearning 論文,截自康奈爾大學官網


現在我們來談一件很嚴肅的事情:押韻!!!


押韻可遠遠沒有 “大明湖裡有荷花,荷花上面有蛤蟆” 這麼簡單。押韻分為聲母押韻(“資訊”、“時尚”)和韻母押韻(你小時候背的大部分唐詩都是韻母押韻)。押韻還可以是聲母連續押韻、或者韻母連續押韻。正因為押韻難,所以即興說唱(freestyle)更難上加難。


640?wx_fmt=gif


那麼,AI 怎麼確保自己寫出來的東西押韻呢?


DeepBeat 背後的技術 DopeLearning 先把單詞都按音標“翻譯” 出來,然後再按照音標計算 “韻密度” 來檢測押韻。事實證明,這種方法和人類說唱歌手的評判標準還是比較像的。


除了押韻,AI 還要學習歌曲的結構。我們知道,一首歌曲有主歌和副歌(以《至少還有你》舉例,主歌就是“我怕來不及...”,副歌就是“如果 / 全世界我也可以放棄” 部分)。而在 rap 音樂裡,主歌和副歌的韻腳、甚至風格都會略有改動。什麼時候改動?怎麼知道現在這部分是主歌還是副歌?這都是 AI 要繼續學習的。



04 讓 AI 寫說唱歌曲的 00 後


即使在人才濟濟的矽谷,像谷歌、微軟、Facebook 之類的大公司還是對在 AI 方面有研究的人才求賢若渴。在矽谷,AI 方面的博士生剛畢業就有望拿30萬美元左右的年薪!


640?wx_fmt=png

▲彭博社文章:“天價薪酬是 AI 人才搶奪戰的殺手鐗”


有位叫羅比•巴拉特(Robbie Barrat)的 00 後,估計就是這種人才。這位來自美國西弗吉尼亞州的年輕人只用了不到一週,就做出了個能自己寫詞的 “說唱AI”!


這位自學成才的小朋友住在西弗吉尼亞州的一個農場。他對程式設計很感興趣,就自己從網上下載了個開源軟體自學程式設計。他用基於 Python 的機器學習庫 PyBrain 訓練他的神經網路,再加上超過六千句侃爺的歌詞作為素材訓練 AI、又花了幾天的時間除錯結果,就有了這個說唱 AI。


擷取這首歌的一部分,我們來看看這個集侃爺之大成者的 AI 寫出來什麼樣的歌詞:


You the number one I'mma beat my brother

(你就是第一,我等會就去把我哥揍一頓)

And I know a sign when I heard it's the magic hour

(我聽說這是魔幻小時,我知道一個標緻)

Get Olga Kurylenko, tell her to do better

把 Olga Kurylenko 給我叫來,告訴她要多加油。

注:Olga Kurylenko 是性感女演員)

That know we get them hammers, go on, call the lawyer

我們給他們帶了些錘子,去啊,去叫律師啊

But still supported me when I get richer

但還是在我變得更富有時支援了我


這是他的 Github 連結:

https://github.com/robbiebarrat/rapping-neural-network


怎麼樣?就算有些句子缺主語,意思、邏輯也尚不完美,但至少押韻得很像那麼回事吧?


我們又在 Github 上找到了個 “汪峰歌詞生成器” (https://github.com/phunterlau/wangfeng-rnn)這首 AI 寫出來的歌詞,比剛才那個要揍哥的寫得好多了!


我在哭泣
我不能及你的時光
我是我們在這是一種無法少得可以沒有一天
我們想這樣
我們遠在一場我在我一個相多地在此向
可我是個想已經把我的時候
我看到在心悄一種痛定的時候

我看著我的感覺在飛歌
我不能在這多在心中
就像在我一瞬間
我的生命中的感覺
我在我一次到孤獨所
我們在這是一看可以是一場我們在這樣
我在這裡失命
我不能在這感覺在天裡
夜裡
夜裡
沒有一天 我想心的是不嗎到了


是不是寫得很像那麼回事?!


當然,AI 再聰明,也只能從被 “喂” 給它的資訊裡找出規律、再編寫成歌詞,但它並不理解每個詞到底是什麼意思,所以歌詞的意思和邏輯都不太通順。這也反應出了目前人工智慧的侷限性:雖然可以找出匹配的字句、找出合適的韻腳,但讀起來仍然感覺很奇怪。畢竟現階段人工智慧再怎麼字面分析,也很難根據上下文真正理解語義、更不會明白什麼是 “錘子”、什麼是 “律師”、就更別提“幽默”、“尷尬” 這些人類特有的高階情感了。


讓 AI 更智慧是萬里長征,能寫詞只是第一步。剛才提到的 AI 寫歌 00 後在接受美媒採訪時說,“如果我們知道那些神經網路(neural network)是怎麼思考的就好了,這樣我們就可以反過來向它學習它是怎麼下圍棋、怎麼學語言的。”


說了這麼一大篇,現在讓我們回到周杰倫,他的歌就是很多人的青春記憶啊有沒有!如果真用 AI 來幫杰倫寫歌詞的話,只要簡單兩步:一,AI 把歌詞寫出來;二,我們往裡面加些他歌裡的高頻詞彙就大功告成啦!


所以現在問題來了,你們覺得哪些詞才是杰倫歌裡的 “高頻詞彙” 呢?


本文參考

https://pudding.cool/2017/09/hip-hop-words/

https://venturebeat.com/2017/05/03/ai-tool-generates-deepbeats-to-challenge-human-rappers/


推薦閱讀


各地高考“難度係數”告訴你,天津戶口為什麼值得搶

學計算機哪家強?清華竟是2018全球第1!你的母校上榜沒?

關於Python的一切:2018年,你讀這8本書就夠了

LeCun:智慧的精華在於預測能力!“預測學習”瞭解一下!



Q: 方文山哪句歌詞最能擊中你的心?

歡迎留言與大家分享

覺得不錯,請把這篇文章分享給你的朋友

轉載 / 投稿請聯絡:baiyu@hzbook.com

更多精彩,請在後臺點選“歷史文章”檢視

640?wx_fmt=jpeg

相關文章