點擊上方關注,All in AI中國
讓我們一起用數據來做一些很酷的事情!
最近我開始學習關於主題建模方面的文檔主題生成模型(LDA),並對它強大的功能和快速的運行感到驚訝。主題建模是使用無監督學習提取文檔集合中出現的主要主題(通常表示為一組單詞)的一項任務。
我在20個新聞組數據集上測試了該算法。該數據集包含來自眾多新聞報道/媒體的上千篇新聞文章。在這個數據集中,我提前知道了這些新聞的主要主題,以驗證LDA是識別是否正確。
代碼運行起來非常簡單和快速。你可以在GitHub裡面找到它們。我覺得你有必要親自嘗試一下(https://github.com/priya-dwivedi/Deep-Learning/blob/master/topic_modeling/LDA_Newsgroup.ipynb)。
關於LDA
LDA用於將文檔中的文本分類為特定的主題。它根據文檔模型構建主題,根據主題模型構建單詞,建模為狄利克雷分佈(Dirichlet distributions)。
1.每個文檔建模為主題的多項分佈,每個主題建模為單詞的多項分佈。
2.LDA假設我們輸入的每一個文本塊都會包含一些相關的詞。因此,選擇正確的語料庫至關重要。
3.它還假設文檔是由多個主題混合生成的。然後這些主題根據它們的概率分佈生成單詞。
要了解更多關於LDA的信息,請查看此鏈接:http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf。
使用數據集
我使用的數據集是20個新聞組數據集。它可在sklearn數據集下使用,而且可以輕鬆地下載為:
這個數據集已經通過主題對新聞做出分類。你可以通過:
數據集中有20個目標/主題:
- 無神論
- 圖形學
- 微軟公司的視窗操作系統
- windows電腦硬件
- 蘋果電腦硬件
- windows X系統
- 待售
- 汽車
- 摩托車
- 棒球
- 曲棍球
- crypt命令
- 電子
- 微電子裝置
- 空間
- 基督徒
- 槍支
- 中東地區
- 多元政治
- 多元宗教信仰
簡單的看,我們可以說這個數據集有幾個廣泛的主題,如:
1.科學
2.政壇
3.體育
4.宗教
5.技術等
在Python中使用LDA提取主題
1.對原始文本進行預處理
涉及的方法有:
標記化:將文本分成句子,句子分成單詞。將單詞小寫,並刪除標點符號。
少於3個字符的單詞將被刪除。
停止詞都刪除。
把文中的詞按屈折變化形式進行歸類:第三人稱的詞變成了第一人稱,過去時態和將來時態的動詞變成了現在時態。
單詞還原:調整單複數等變化,回到單詞最初的樣子。
我們使用NLTK和gensim庫來執行預處理。
文本結果如下:
2.將文本轉換成詞袋
在進行主題建模之前,我們將標記化和屈折變化的文本轉換為詞袋——你可以將其看作是一個字典,關鍵是單詞,最有價值的部分是單詞在整個語料庫中出現的次數。
我們可以進一步過濾出現次數很少或頻繁出現的單詞。
現在,對於每個預處理文檔,我們使用剛剛創建的字典對象將文檔轉換為詞袋。也就是說對於每個文檔,我們創建一個字典來報告這些單詞的數量和出現次數。
結果如下:
3.運行LDA
這實際上非常簡單,因為我們可以使用gensim LDA模型。我們需要指定數據集中有多少個主題。在我看來,我們從8個獨特的主題開始。pass的數量是通過文檔訓練的次數。
結果和原理解釋
就這樣模型建立了。現在讓我們來看看結果是否有意義。
模型的輸出是8個主題,每個主題由一系列單詞分類。LDA模型沒有給這些詞取一個主題名稱,需要我們作出解釋。請參閱下面的模型輸出示例,並弄清楚LDA是如何為這些詞分配潛在的主題的。
檢查GitHub代碼查看所有的主題。並使用模型來增加減少主題的數量(https://github.com/priya-dwivedi/Deep-Learning/blob/master/topic_modeling/LDA_Newsgroup.ipynb)。
意見/看法
1.該模型在提取數據集中獨特主題方面做得非常好,如果我們知道具體名稱,我們可以確認這些主題。
2.模型運行得很快。我可以在幾分鐘內從數據集中提取主題。
3.它運行的前提是假設數據集中有不同的主題。因此,如果數據集中是一堆隨機編寫的推文,那麼模型結果可能無法解釋。
未來如何改進
我對Guided LDA很感興趣,想嘗試一下:https://medium.freecodecamp.org/how-we-changed-unsupervised-lda-to-semi-supervised-guidedlda-e36a95f3a164。
其他作品
http:/DepplearningAnalytics.org/blog
我喜歡在有趣的問題上工作。我已經幫助幾家初創企業部署了最新的基於人工智能的解決方案。你可以看一看:http://deeplearninganalytics.org/。
參考文獻
1.非常感謝Udacity,特別是他們的NLP 納米學位,讓學習變得非常有趣。
2.LDA論文:http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf
閱讀更多 AI中國 的文章