可兒可是張學友的鐵桿粉絲,聽了他的很多很多歌曲,比如“吻別”,“餓狼傳說”,“等你等到我心痛”,“祝福”,“她來聽我的演唱會”等等。學友的歌伴我走過了很多很多歲月,從大學生到研究生,從學生到碼農。都是歌神是情歌王子,那學友的歌裡的情感到底如何,既然玩Python,不如動手分析一下。我們爬取了近16萬的歌詞並分析,並用機器學習分析了一下,哇發現幾個亮點。
01
歌詞的收集
首先是對於歌詞素材的收集,我對比了各大音樂平臺的歌詞爬取難易程度,決定採用百度音樂作為爬取對象,爬取張學友的歌曲,由於其歌詞是採用lrc文件保存,
爬蟲這塊非常簡單,一共才幾十行代碼,我把核心的代碼貼了一下,大家可以動手敲一下看看,不是很難的。爬取結束之後將所有的歌詞文件爬取到了本地。如下圖所示:
但是在讀取歌詞的時候,歌詞中存在缺失,亂碼等問題,所以需要對於歌詞進行耐心的清洗,然後將歌詞以及歌曲名稱以及歌手信息保存到Excel表中,清洗好的數據如下圖所示,去表格開頭一部分的數據:
取表格後10行的數據:
02
歌詞情感分析
接下來便是進行對於歌詞的情感分析,對於歌詞的情感分析,依託的是BosonNLP平臺,該平臺對於中文,提供了許多使用簡單、功能強大、性能可靠的自然語言分析服務。我們這裡是用到他的情感分析的功能。
首先大家得去它的平臺註冊,得到我們個人的API密鑰,如下圖所示:
得到API密鑰後,就按照它的教程進行了對於歌詞的情感分析,該平臺提供的情感分析,每天只有500次的免費使用機會。而且它對於語句的情感分析返回的是兩個值:
- 第一個值是指該語句是非負面的概率
- 第二個值是指的負面的概率,兩個值的和加起來等於1
這裡的負面可以理解為一些消極的態度,例如生氣、焦慮、憂傷等等。代碼如下圖所示:
上述的代碼非常的簡單,主要做了下面幾步:
1).先將歌詞讀入到list_lyrics這個列表中
2).然後調用requests.post函數,將語句送至BosonNLP平臺
3).最後就會返回該歌詞的情感分析值。
小編分析了497首歌,最終得到了張天王的十大悲傷歌曲排行榜,和十大積極歌曲排行榜,如下圖所示:
>>
十大悲傷曲目為: 0 1
0 我不明白 0.996758
1 不想失去你 0.996119
2 燥狂 0.989038
3 I Don T Wanna Be 0.986872
4 你冷得像風 0.977820
5 認床 0.977314
6 葬月 0.977087
7 問月 0.974448
8 當愛變成習慣 0.974190
9 算命 0.973292
十大積極曲目為: 0 1
0 讓奇妙飛翔 0.996168
1 花與琴的流星 0.995877
2 祝願 0.992565
3 溫馨 0.991497
4 仍是會喜歡你 0.990432
5 仍是喜歡你 0.990432
6 流星下的願 0.988126
7 留住這時光 (Full Version) 0.986213
8 簡簡單單就是愛 0.986053
9 飛機師的風衣 0.981768
由上圖可以看出,學友哥的最悲傷的歌曲為《我不明白》,負面指數達到了0.996758,可謂是悲傷至極。小編特地去聽了一下,真的很悲傷,歌曲緩慢展開,充滿了離別的憂傷,是一首典型的悲傷情歌。
03
高頻詞分析
做到這些就完了嗎?顯然不夠,作為情歌王,張學友的各種必然充斥著複雜的“情感關係”,小編分析了歌詞中“他”、“她”、“我”、“你”的數量,最終得到了一下的結果:
讀取文件,然後遍列每一行大歌詞,用count統計每一行的關鍵字.
從圖上我們可以看出,學友哥的歌曲人物關係大部分還是圍繞兩人的情感展開,很少有摻雜“第三者”的問題。
既然是情歌,怎麼能少得了“愛”,小編又為大家分析了這497首歌曲中哪五首歌曲中“愛”字出現的頻率最高,如下圖所示:
從上圖可以看出,《命運舞會》這首歌中“愛”出現的次數最高。
最後小編為大家制作了歌詞的詞雲分析,讓大家清楚的看到,在學友哥的歌曲中,究竟哪些關鍵詞出現的頻率最高,如下圖所示:
發現永遠,自己,沒有,一個,不會,一生,什麼,一切這些詞是高頻出現的。想想確實是的,你試著回憶幾首學友的歌,都忽多忽少的出現這些詞。以上就是小編為大家帶來的基於歌詞的情感分析和統計,Python就是這麼有趣,只要你想玩的趣味練習,Python大部分都能實現。
現在加關注小編有機會獲取高手進階必讀的Python設計模式,機不可失。