5萬餘首聖誕歌詞數據包+Kaggle數據科學家的腦洞=?(附數據包+代碼)

2021-01-21 大數據文摘

作者:eoda GmbH

編譯:大山、ShanLIU、Harry

昨天在python給你的聖誕帽上意猶未盡的動手黨(點擊查看相關文章),今天的話題依然和聖誕節有關。


前幾天,文摘菌發現了一個Kaggle上的聖誕歌曲數據禮包。這裡有你能想到所有的聖誕歌曲,總計超過5萬首。而Kaggle上的數據科學家用各種方式要把它們玩兒壞了,一起看看有哪些有趣的結論!


又是聖誕節,有沒有被大街小巷的聖誕歌曲洗耳朵?有沒有想過這些聖誕歌曲到底有什麼魔力?他們的歌詞又有什麼共同點?


我們把所有跟聖誕有關的歌曲都打包起來,總計超過5萬首歌曲。在這篇文章裡,文摘菌將首先用樸素貝葉斯對這些歌曲文本進行全面分析,來快速識別出,到底什麼樣的歌曲才能被成為真正意義上的聖誕歌曲。


之後,我們還可以一起看看,kaggle上的數據科學家用這個數據包分析出了的這些有趣的結論:

與聖誕關係最密切的歌詞TOP20;

聖誕歌產量最高的歌手TOP20;

聖誕歌詞中,什麼樣的雙音節詞最受歡迎?




這個數據集取自55000多段歌詞,同時涵蓋了超過55000首歌曲。你能想到的全都有,包括Jinglebell :)如下:這是一個有55000多行和4列的數據框:




我們的目標是對歌曲文本進行全面分析,幫助我們快速識別出聖誕歌曲。為此,我們首先在數據框中添加一個額外的列,給每首歌曲一個「聖誕」或「非聖誕」的標籤,也就是歌詞中包含「Christmas」,「Xmas」或「X-mas」的歌曲將被標記為「聖誕」,不包含的則標成「非聖誕」。



這還只是標籤的初始化,我們之後會將樸素貝葉斯應用於一組訓練集以識別其他聖誕歌曲。但現在,我們將通過一些直觀的描述性方法來探索數據集。看看會得到一些什麼有趣的結果。




清理 & 標記化


首先我們從數據清理和標記化開始~隨後,聖誕歌曲將被選中並被保存為一個變量



相關性分析


現在我們可以從不同的角度由相關性來分析原始的聖誕歌曲。接下來,我們運用networkD3 html widget將相關性可視化:具有相同總連接數的節點將被賦予相同的顏色,而邊的顏色意味著由兩個節點共享的公共鄰居的數量。而且,一個節點的大小表明它的中心性,中心性由中間性(即通過它的最短路徑的數量)定義。在兩個節點之間的距離是1的最小最大變換減去相關度,這是有意義的,因為直觀來說,相關性越高,兩個節點應該越近。而且,距離越短,邊緣越寬。

請注意,相關性永遠要基於歌詞才行。


單詞之間的相關性


出現超過100次的單詞與至少另一個相關度大於0.55的單詞相關。



歌曲之間的相關性


一首歌曲與其他至少3首相關的歌曲之間的相關性大於0.75-通過這個方法,我們可以檢測到類似或被略微修改的歌曲。



特定的詞之間的相關性



藝術家之間的相關性



詞雲

原始聖誕歌曲的詞雲




樸素貝葉斯是一種流行的監督機器學習算法,它能處理具有大量特徵的分類問題。它是基於一個類,這個類的特徵是被假定獨立分布的,所以從這種意義上說,它是「樸素」的。在我們的例子中,我們想知道,給定一組特徵之後,即文檔中單詞的tf-idf,一首歌曲是否應該被樸素貝葉斯分類為聖誕歌曲。



構造最大似然估計的難點是先驗分布的選擇,即類的概率分布。通常假定它是按類頻率均勻分布或估計的。在我們的例子中,我們使用了先驗分布的多項式分布和均勻分布,這意味著我們在沒有進一步信息的情況下對歌曲的分類是沒有偏見。


識別隱藏的聖誕歌曲



我們識別出2965首隱藏的聖誕歌曲,在最初的500首聖誕歌曲中,有2首歌曲被樸素貝葉斯拒絕認定為聖誕歌曲。


探索隱藏的聖誕歌曲



因此我們已經成功地識別出一些宗教聖誕歌曲,它們的標題通常不包含「Christmas」或「X-mas」單詞。



數據準備


只有包括隱藏在內的聖誕歌曲的前300項特徵,將被用來計算Rtsne和LDA,否則存儲空間會不足。



LDA


LDA是潛在狄利克雷分布,2003年在Blei, Ng, Jordan的論文中被提出。這是一個生成語料庫的概率模型,其中的文檔被表示為關於潛在主題的隨機混合物,一個單獨的文檔通常只有幾個主題,被分配了不可忽視的概率。此外,每個主題的特點是單詞的分布,通常只有一小部分詞被大概率分配給某個主題。變分期望最大化算法或吉布斯抽樣用於參數的統計推斷。

 

LDA需要固定數量的主題,也就是說,在應用該算法之前,應該先知道主題的數目。然而,有可能通過不同的性能度量來確定主題的最佳數量,比如Nikita,用ldatuning包。


 

因此,我們將選擇8作為主題的最佳數量。



我們可以使用tidytext包 來檢查每個文檔的主題分布,即對於每個文檔,它屬於從1到8某個主題的概率的總和等於1。

 


同樣,我們也可以獲得每個主題詞的概率分布,即每個主題產生不同的單詞的概率總和等於1。



每個主題的關鍵詞是:



t-SNE


由van der Maaten和Hinton於2008年開發,t-SNE代表統計隨機鄰域嵌入,這是一種降維技術,用公式表示出捕獲的原始數據點的局部聚類結構。它是非線性的和不確定性的。


下面的計算大約需要30分鐘。




到目前為止,我們只運行了一次迭代的樸素貝葉斯。然而,我們可以為多個迭代重複這個過程,即訓練一個樸素貝葉斯分類器並重新標記所有的假陽性為隱藏聖誕/聖誕,所有的假陰性為隱藏非聖誕/非聖誕,一遍遍重複進行。


首先,我們再次準備數據以避免錯誤。


運行10次迭代。



然後,精度和f1得分開始時單調增長,然後收斂到大約0.95的值,這意味著沒有遺留很多待檢測的「隱藏聖誕歌曲」和「隱藏非聖誕歌曲」。然而,在這個過程中,我們始終相信樸素貝葉斯分類器是100%準確的,這實際上幾乎是不可能的。因此,在每一次迭代中,有一些歌曲被樸素貝葉斯錯誤地分類為「聖誕節」,在訓練集的下一個迭代中用於訓練樸素貝葉斯分類器。有了這個不斷累積的錯誤,我們可能會擔心,隨著迭代次數的增加,結果實際上會更糟。



最後,我們大約有一半的歌曲被歸類為「聖誕節」,而另一半為「不是聖誕節」,這似乎是非常不可信的。這倒是引出了一個問題:是否存在一個最佳的迭代次數?我們不能簡單地手動控制這57650首歌是否被正確分類。所以這仍然是一個有待回答的開放式問題!



之後,我們用這些數據,還分析出了以下這些有趣的結論,基於篇幅的原因,我們直接貼出kaggle上的一些有趣結論,不再在微信推文中po出實現代碼,想親手嘗試的同學,請拉到文末查看kaggle上的代碼和數據傳送門~


與聖誕關係最密切的歌詞TOP20



歌詞正負情感詞雲圖


聖誕歌產量最高的歌手TOP20



積極(positive)歌詞佔比最多的歌手TOP20



聖誕歌詞中,什麼樣的雙音節詞最受歡迎?



上邊的結論有沒有讓你腦洞大開,你有什麼其他的好想法嗎?歡迎在文末分享給我們!或許我們可以一起做點好玩的東西~


最後,祝大家聖誕快樂,平安喜樂~


55000首歌曲傳送門:

https://www.kaggle.com/mousehead/songlyrics


原文連結:

https://blog.eoda.de/2017/12/19/data-wonderland-christmas-songs-from-the-viewpoint-of-a-data-scientist/

 

大數據文摘編輯部招人啦!!!


地處宇宙之心

和最聰明的腦袋一起玩耍

擇個黃道吉日點擊下方二維碼加入我們~

回復「志願者」加入我們

點擊圖片閱讀

@微信官方給不了的聖誕帽,Python和OpenCV給你(附代碼)

相關焦點

  • 除了Kaggle,這裡還有一些高質量的數據科學競賽平臺
    ,數據科學家可以參加的數據競賽平臺其實還蠻多的。從本質上講算法是一種工具,任何人都可以寫幾行代碼來使用它。參加這些比賽的主要原因是它們能提供很好的學習機會。當然,競賽中的問題和現實問題不一定一樣,但這些平臺可以讓你將學到的知識付諸實踐,還能讓你了解自己和他人的差距。參加數據科學比賽的好處參加這些比賽可以說是有百利而無一害。它裡裡外外的好處有很多,比如:
  • 零起步,數據科學家手把手教你coding表情識別(內附代碼)
    你可能擁有數G個表情包存圖,但總是苦於表情包太多太亂,每次挑選都是曠日持久。等好不容易終於選中一張滿意的表情包,卻發現對方早已切到下一回合。然後,選擇一個合適的表情庫,在這個實例中,我們選擇FER2013表情庫(連結:https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge)。
  • R語言數據科學工具包:creditmodel-1.3版本發布
    Uwe Ligges是德國多特蒙德大學教授,也是R-core的成員,R-core是一個由20位頂尖統計學家和計算機科學家組成的小組,他們負責監督與R語言項目,開發和維護R引擎及其核心包的原始碼。2 開源creditmodel包的動機和意義creditmodel是一個免費開源的R語言數據科學工具包,旨在幫助沒有數據科學背景的人能夠在短時間內完成建模和數據分析工作,讓他們更多地關注業務問題本身,並將更多的時間分配給制定決策。
  • 14個超有趣的數據科學項目,數據集都準備好了!
    /novel-corona-virus-2019-dataset 教程: https://towardsdatascience.com/visualizing-the-coronavirus-pandemic-with-choropleth-maps-7f30fccaecf5
  • 2017年中美數據科學對比報告,Python排名第一,年薪中位數高達11萬...
    ***消息,Kaggle最近對機器學習及數據科學領域進行了全行業深度調查,調查共收到超過 16,000 份回復,受訪內容包括***的程式語言是什麼,不同國家數據科學家的平均年齡是什麼,不同國家的平均年薪是多少等。
  • 英雄聯盟手遊ob數據包怎麼下載?lol手遊obb數據包下載教程
    英雄聯盟手遊obb數據包怎麼下載?玩家在很多地方下載到的只是apk包,沒有遊戲數據文件,現在小編給大家說下遊戲obb數據包下載教程。 大家通常下載apk文件後,只要是官方提供的apk文件,大家在安裝完成進入遊戲的時候,是會自動下載obb數據包的,文件有點大,一個多G,玩家耐心等待,就可以下載好obb數據,之後就能正常進入遊戲了。
  • 資源 | 100+個自然語言處理數據集大放送,再不愁找不到數據!
    (1.5GB)https://www.kaggle.com/c/predict-wordpress-likes/data谷歌圖書n元語法:也可通過亞馬遜S3上hadoop格式文件獲取。(250GB)https://www.reddit.com/r/datasets/comments/3bxlg7/i_have_every_publicly_available_reddit_comment/Reddit評論(2015年5月):Kaggle子數據集(8GB)https://www.kaggle.com/reddit/reddit-comments-may
  • 數據科學家是個性感的工作?我信你個鬼!
    只對數據進行存儲而不進行分類簡直大錯特錯。要使數據湖變得有用起來的關鍵是要確保元數據是被明確定義的。由於數據管控或數據所有者們(他們往往是不同部門的利益相關者)太過忙碌,重要數據的獲取甚至可能需要花費數周的時間。在等待的遊戲結束之後,到頭來數據科學家們卻有可能發現數據不相關或存在嚴重的質量問題。當數據科學家終於能接觸到數據時,他們還需花費大量時間來探索以及熟悉數據。
  • 學一兩門課程可搞不定數據科學,你得經過這五個階段
    此時,你開始知道數據科學的水有多深。要學的東西太多了,不知道從哪下手。走通這個階段的關鍵,是把數據科學分解成若干小步。你需要從某處開始。在最基本的層面上,你需要懂一些編程(Python或者R)和簡單的統計學。找一些在線資源來了解這些方面。我推薦學一些免費的編程或數據科學課程(kaggle.com的微課程是我的最愛)。
  • R語言數據實戰 | R中的數據類型
    4)一款處理時間數據的專用包:lubridate。以上介紹的都是base基礎包中自帶的函數,下面再來介紹一款專門高效處理時間數據的包lubridate。這是一個實踐中口碑極佳的數據預處理包。lubridate包主要有兩類函數:一類是處理時點數據;另一類是處理時段數據。它不僅功能強大,而且相應函數也很直觀易懂,比如把字符轉化成時間類型,根本不需要輸入匹配的format參數;比如提取時間數據細節,也只是一個小函數即可,不附帶任何參數。下面的代碼就是一個典型的例子,更多內容可見lubridate的幫助文檔。
  • 明日開課:《數據科學業界實戰導覽》
    但在工作中,項目都是不同團隊共同參與協作(比如數據科學、數據工程、產品負責人、項目負責人等等),代碼使用git/ github進行版本控制,項目流程使用agile development敏捷開發方式進行。你覺得學生求職數據科學家,最大的gap在哪裡(比如學校和工業界的gap、學生認知上的gap等等)?
  • 100天學習計劃 | 一份詳實的數據科學指南
    真正的事實是,要想成為一名成功的數據科學家或成為一名數據科學家,你甚至需要掌握更多。 如何學習數據科學https://youtu.be/5zec-qxfMvg如何計劃學習?哪些主題應該首先涉及?讓我來解釋一下100天學習數據科學的計劃。
  • Kaggle數據集強勢分析「絕地求生」,攻略吃雞!
    對我突發奇想:你個做數據分析的,怎麼就不能給我弄個獨家吃雞攻略呢?!二話不說埋頭就是幹。大數據分析吃雞,首先得要有數據呀。網上逛了一圈發現,Kaggle上已經有吃雞比賽的數據集了,而且數據量極大,包含70多萬場比賽上億條玩家的數據,大概有20G左右,比去PUBG官方API數據接口爬數據快多了,那就用這個數據進行分析吧。
  • 中國郵政儲蓄銀行大數據平臺安全防護工程軟體採購項目-01包:大...
    中國郵政儲蓄銀行股份有限公司委託中國通信建設集團有限公司就中國郵政儲蓄銀行大數據平臺安全防護工程軟體採購項目-01包:大數據平臺數據操作安全管理系統(二次)採用公開招標形式進行採購,本項目資金由招標人自籌資金已落實,具備招標條件,特邀請有意向且具有提供標的物能力的潛在投標人(以下簡稱投標人)參加投標。
  • NBA歷屆聖誕大戰精彩回顧 附聖誕大戰各項數據歷史排名
    又是一年聖誕大戰,今年你期待的聖誕大戰是哪一場比賽呢?(2019聖誕大戰賽程時間表)(03年聖誕大戰麥迪VS詹姆斯視頻)  聖誕大戰在NBA已有70年的歷史了,一直以來聖誕大戰都是大家關注的焦點。  回顧這55年的聖誕大戰,發生了太多的故事和傳奇。
  • 9102年了,你還不知道怎麼做數據科學家嗎?
    本文由一位想通過自學數據科學成為數據科學家的入門者和一位真正的數據科學家的對話組成。我認為在當時那個時間,「數據科學家」這個概念就已經變得更加細分也更加專業化了。針對每個細分方向的「數據科學家」採用不同的學習方式可能會更好些。好的,你說的這些讓我心裡好受了些。所以我是否應該回學校學習專業知識呢?我從某些地方了解到許多數據科學家都至少有碩士學歷,我是否應該去讀個數據科學專業的碩士呢?天哪,為什麼你要那樣做?
  • 數據分析:法國購買LV包比國內便宜多少
    一直以來有不少網友問我,LV包在法國購買到手價比在國內購買便宜多少錢。大約是國內的幾折。為了回答這個問題,我特意找來了三個從法國專櫃買包的實際價格與國內當時的價格對比。根據差價小編做了個大概的折扣統計。對比統計數據如下:
  • 一季度統計數據顯示——貴陽市服務外包接包合同總額同比增長40餘倍
    4月16日,記者從市商務局獲悉,根據商務部服務外包統計平臺顯示,1至3月,貴陽市服務外包接包合同總額21631.47萬美元,同比增長4257.50%;接包執行總額15536.93萬美元,同比增長2433.03%。
  • 對不起,你的PPT數據不夠直觀,你可能需要讓數據動起來
    數據暴增的年代,數據科學家、分析師在被要求對數據有更深的理解與分析的同時,還需要將結果有效地傳遞給他人。如何讓目標聽眾更直觀地理解?當然是將數據可視化啊,而且最好是動態可視化。本文將以線型圖、條形圖和餅圖為例,系統地講解如何讓你的數據圖表動起來。這些動態圖表是用什麼做的?
  • 數據可視化最有價值的50個圖表 | 網際網路數據資訊網-199IT | 中文...
    Tips:本文原文部分代碼有不準確的地方,已進行修改;所有正確的原始碼,已整合到 jupyter notebook 文件中;運行本文代碼,除了安裝 matplotlib 和 seaborn 可視化庫外,還需要安裝其他的一些輔助可視化庫