[python] LDA處理文件主題分佈及分詞、詞頻、tfidf計算
這篇文章主要是講述如何通過LDA處理文字內容TXT,並計算其文件主題分佈,主要是核心程式碼為主。其中LDA入門知識介紹參考這篇文章,包括安裝及用法:
[python] LDA處理文件主題分佈程式碼入門筆記
該文字內容原自部落格:文字分析之TFIDF/LDA/Word2vec實踐 ,推薦大家去閱讀。
輸出則是這十篇文件的主題分佈,Shape(10L, 2L)表示10篇文件,2個主題。
具體結果如下所示:
同時呼叫 matplotlib.pyplot 輸出了對應的文件主題分佈圖,可以看到主題Doc0、Doc1、Doc8分佈於Topic0,它們主要描述主題新春;而Doc2、Doc3、Doc9分佈於Topic1,主要描述股市。
其過程中也會輸出描述LDA執行的資訊,如下圖所示:
執行結果如下圖所示:共2個主題Topics,15個核心詞彙。
繪圖推薦文章:http://blog.csdn.net/pipisorry/article/details/37742423
PS:講到這裡,整個完整的LDA演算法就算結束了,你可以通過上面的程式碼進行LDA主題分佈的計算,下面是一些問題。
但是在將TF-IDF用於LDA演算法model.fit(np.asarray(weight))時,總是報錯如下:
TypeError: Cannot cast array data from dtype('float64') to dtype('int64') according to the rule 'safe'
所以後來LDA我採用的是統計詞頻的方法進行的,該段程式碼如下:
輸出如下所示:
得到weight權重後,然後呼叫對應的演算法即可執行不用的應用,如:
import lda
model = lda.LDA(n_topics=20, n_iter=500, random_state=1)
model.fit(np.asarray(weight))
from sklearn.cluster import KMeans
clf = KMeans(n_clusters=4) #景區 動物 人物 國家
s = clf.fit(weight)
通過word = vectorizer.get_feature_names()獲取整個預料的詞向量,其中TF-IDF對應的就是它的值。然後再獲取其位置對應的關鍵詞即可,程式碼中輸出5個關鍵詞,如下圖所示:
講到此處你也應該理解了LDA的基本用法和適用場景,你可以通過它進行新聞主題分佈,同時再進行引文推薦、聚類演算法等操作。
總之,希望這篇基礎性的文章對你有所幫助吧!還是那句話:
雖然我寫這類文章看起來很簡單,尤其對於機器學習的大牛來說,感覺沒什麼實質內容;但是如果你剛接觸這類知識,還是非常頭疼的,想找到一個可執行的演算法很困難。
這也是為什麼總感覺以前學習了一些原理或理論的東西,而實際應用不是很明白,這種感覺就像學游泳,在岸上看別人感覺什麼都會了,但想要學會還是得下水,一步一步來,而我寫的這類基礎文章就相當於帶你下水吧!後面你才能做些自己喜歡的演算法和研究。
最近真的很忙,同時我認識了一位很優秀的女生,總算邁出了人生最重要的一步,就是真正的勇敢的出去接觸些異性朋友,這感覺非常不錯的。同時學校工作那邊仍然在等訊息,真心想回家當一名軟體相關的教師啊~
最後附上最近朋友圈的一條資訊:
哎!感嘆下時光吧,僅以此詩紀念這三年寫部落格的堅持和北理最後的四個月:
但行好事,莫問前程。
待隨滿天李桃,再追學友趣事。
(By:Eastmount 2016-03-15 深夜3點 http://blog.csdn.net/eastmount/ )
[python] LDA處理文件主題分佈程式碼入門筆記
1.輸入輸出
輸入是test.txt檔案,它是使用Jieba分詞之後的文字內容,通常每行代表一篇文件。該文字內容原自部落格:文字分析之TFIDF/LDA/Word2vec實踐 ,推薦大家去閱讀。
輸出則是這十篇文件的主題分佈,Shape(10L, 2L)表示10篇文件,2個主題。
具體結果如下所示:
同時呼叫 matplotlib.pyplot 輸出了對應的文件主題分佈圖,可以看到主題Doc0、Doc1、Doc8分佈於Topic0,它們主要描述主題新春;而Doc2、Doc3、Doc9分佈於Topic1,主要描述股市。
其過程中也會輸出描述LDA執行的資訊,如下圖所示:
2.核心程式碼
其中核心程式碼如下圖所示,包括讀取文字、LDA執行、輸出繪圖等操作。
執行結果如下圖所示:共2個主題Topics,15個核心詞彙。
PS:講到這裡,整個完整的LDA演算法就算結束了,你可以通過上面的程式碼進行LDA主題分佈的計算,下面是一些問題。
3.TFIDF計算及詞頻TF計算
特徵計算方法參考:Feature
Extraction - scikit-learn
但是在將TF-IDF用於LDA演算法model.fit(np.asarray(weight))時,總是報錯如下:
TypeError: Cannot cast array data from dtype('float64') to dtype('int64') according to the rule 'safe'
所以後來LDA我採用的是統計詞頻的方法進行的,該段程式碼如下:
輸出如下所示:
得到weight權重後,然後呼叫對應的演算法即可執行不用的應用,如:
import lda
model = lda.LDA(n_topics=20, n_iter=500, random_state=1)
model.fit(np.asarray(weight))
from sklearn.cluster import KMeans
clf = KMeans(n_clusters=4) #景區 動物 人物 國家
s = clf.fit(weight)
4.百度互動主題分佈例子
輸入資料主要是前面講述過的爬取百度百科、互動百科的景區、動物、人物、國家四類資訊,具體如下所示:
輸出如下所示,共12行資料,其中doc0~doc2主題分佈為topic1,其主題表示景區;doc3~doc5主題分佈為topic3,其主題表示動物;doc6~doc8主題分佈為topic0,其主題表示人物;doc9~doc11主題分佈為topic2,其主題表示國家。
5.計算主題TopN
主要是回覆讀者的問題,如何計算主題的TopN關鍵詞。核心程式碼如下:
通過word = vectorizer.get_feature_names()獲取整個預料的詞向量,其中TF-IDF對應的就是它的值。然後再獲取其位置對應的關鍵詞即可,程式碼中輸出5個關鍵詞,如下圖所示:
講到此處你也應該理解了LDA的基本用法和適用場景,你可以通過它進行新聞主題分佈,同時再進行引文推薦、聚類演算法等操作。
總之,希望這篇基礎性的文章對你有所幫助吧!還是那句話:
雖然我寫這類文章看起來很簡單,尤其對於機器學習的大牛來說,感覺沒什麼實質內容;但是如果你剛接觸這類知識,還是非常頭疼的,想找到一個可執行的演算法很困難。
這也是為什麼總感覺以前學習了一些原理或理論的東西,而實際應用不是很明白,這種感覺就像學游泳,在岸上看別人感覺什麼都會了,但想要學會還是得下水,一步一步來,而我寫的這類基礎文章就相當於帶你下水吧!後面你才能做些自己喜歡的演算法和研究。
最近真的很忙,同時我認識了一位很優秀的女生,總算邁出了人生最重要的一步,就是真正的勇敢的出去接觸些異性朋友,這感覺非常不錯的。同時學校工作那邊仍然在等訊息,真心想回家當一名軟體相關的教師啊~
最後附上最近朋友圈的一條資訊:
哎!感嘆下時光吧,僅以此詩紀念這三年寫部落格的堅持和北理最後的四個月:
但行好事,莫問前程。
待隨滿天李桃,再追學友趣事。
(By:Eastmount 2016-03-15 深夜3點 http://blog.csdn.net/eastmount/ )
相關文章
- Python文字處理NLP:分詞與詞雲圖Python分詞
- 中文分詞原理及常用Python中文分詞庫介紹中文分詞Python
- 文字挖掘之語料庫、分詞、詞頻統計分詞
- python TK庫 統計word文件單詞詞頻程式 UI選擇文件PythonUI
- python 計算txt文字詞頻率Python
- 自然語言處理:分詞方法自然語言處理分詞
- Hanlp分詞例項:Java實現TFIDF演算法HanLP分詞Java演算法
- python使用jieba實現中文文件分詞和去停用詞PythonJieba分詞
- 自然語言處理之jieba分詞自然語言處理Jieba分詞
- Python 自然語言處理(基於jieba分詞和NLTK)Python自然語言處理Jieba分詞
- python分詞和生成詞雲圖Python分詞
- 將使用jieba分詞的語料庫轉化成TFIDF向量Jieba分詞
- 自然語言處理中的分詞問題總結自然語言處理分詞
- python 實現中文分詞統計Python中文分詞
- Python自然語言處理實戰(3):中文分詞技術Python自然語言處理中文分詞
- python如何統計詞頻Python
- 詞語詞頻統計
- 分詞分詞
- python jieba庫,句子分詞PythonJieba分詞
- python 中文分詞包 jiebaPython中文分詞Jieba
- python實現詞頻統計Python
- HanLP分詞工具中的ViterbiSegment分詞流程HanLP分詞Viterbi
- #Elasticsearch中文分詞器 #IK分詞器 @FDDLCElasticsearch中文分詞
- 用WordCloud詞雲+LDA主題模型,帶你讀一讀《芳華》(python實現)CloudLDA模型Python
- 分詞-1分詞
- 如何用Python做中文分詞?Python中文分詞
- 親手做的詞向量分佈圖
- 詞頻統計
- NLP自然語言處理中的hanlp分詞例項自然語言處理HanLP分詞
- LDA主題模型簡介及Python實現LDA模型Python
- 自然語言處理工具pyhanlp分詞與詞性標註自然語言處理HanLP分詞詞性標註
- python呼叫hanlp分詞包手記PythonHanLP分詞
- 單詞劃分
- IK 分詞器分詞
- 剖析分詞器分詞
- Elasticsearch 分詞器Elasticsearch分詞
- 詞頻統計mapreduce
- 詞!自然語言處理之詞全解和Python實戰!自然語言處理Python
- 掌握 analyze API,搞定分詞難題API分詞