最近看了LDA以及文本聚類的一些方法,寫在這裏算是讀書筆記。文章最後進行了一個小實驗,經過爬取本人在微博上關注的人的微博,利用微博的內容,嘗試將我關注的人按主題進行進行聚類。 python
文本聚類就是把一個文本集分紅必定數量的簇(Cluster),使每一個簇內的文本之間具備較大的類似性,而使簇間的文本具備較大的差別性。傳統的文本聚類方法通常基於向量空間模型(vector space model): 在對文本集中的每一個文本進行預處理(分詞、停用詞過濾等)、特徵選擇和權重計算以後,將文檔集表示成一個高緯、稀疏的文檔-詞矩陣,進而使用K-Means、凝聚的層次聚類、DBSCAN等聚類方法對文檔進行聚類。 程序員
在特徵選擇選擇環節,雖然一些高效的特徵選擇方法,例如互信息MI(Mutual Information)、x2統計量等已經很是成功地應用於文本分類,但因爲它們須要每一個文檔人工標記的類信息而沒法應用於無監督的文本聚類。文本聚類裏面通常選擇無監督的特徵選擇方法,例如文檔頻數(整個數據集中有多少個文本包含這個單詞)、單詞權(認爲一個詞在相關的文本中出現得越多, 在不相關的文本中出現得越少就越爲重要,須要計算每一個文檔對的類似度)等。 算法
因爲基於VSM 向量空間模型在文本聚類時存在的高維稀疏問題,以及不能從語義上理解文本之間的內在聯繫,另外一種比較流行的方法就是經過主題模型來給文本建模,將文本表示成一個主題機率向量,這樣可以充分的挖掘文本集合的主題信息。經過主題模型,本來是在高維的特徵詞空間上表示的文本,被轉換在了低維的而且融入更多語義信息的主題空間上來表達,應該能提升文本聚類性能和效率,使得聚類的結果更加有效。 sql
LDA(Latent Dirichlet Allocation)主題模型 編程
LDA 是一個三層貝葉斯機率模型,包含詞、主題和文檔三層結構。整個文檔集有K個主題,每一個主題是固定詞彙表上的一個多項式分佈。這些主題被集合中的全部文檔所共享,但每一個文檔有一個特定的主題分佈。每一個文檔的主題分佈θm從Dirichlet分佈中抽樣產生,每一個主題的詞分佈φk也從Dirichlet分佈中抽樣產生,這兩個Dirichlet分佈相互獨立,參數分別是α和β。(Dirichlet 分佈能夠理解爲一個分佈的分佈,從Dirichlet 分佈中抽個樣取出的是一個分佈)。 微信
LDA的圖模型表示: 網絡
首先從以β爲參數的Dirichlet分佈中,抽樣產生整個文檔集的K個詞分佈φk,即左側的K個主題; app
對於每一篇文檔: nosql
從以α爲參數的Dirichlet分佈中,抽樣產生一個主題分佈θm,即這篇文檔中各個主題的比重,圖中爲右側的直方圖;
對於這篇文章中的每個詞:
以機率分佈 φi,從該主題中選擇一個詞。
Gibbs 抽樣容易實現而且可以有效地從大規模文集中抽取主題,是當前最流行的LDA 模型抽取算法。Gibbs 抽樣並無直接去計算主題-單詞分佈φk和文本上的主題分佈θm,轉而對每一個位置上的詞的主題進行迭代採樣。一旦每一個位置上的詞的主題肯定下來,那麼φk和θm的值就能夠在統計頻次後計算出來。對每一個位置上的詞進行主題採樣時,該詞的主題以該詞當時在各個主題上的機率分佈採樣得到。採樣前須要計算該詞屬於每一個主題的機率。
微博用戶聚類實驗:
(1)爬取我在微博上的關注的用戶他們在以前一個月內發的微博。每一個人的微博做爲一個文本,獲得大約500個文本;
(2)用IK Analyzer對每一個文本進行切詞,並同時過濾掉一些停用詞;
(3)利用JGibbLDA將每一個文本表示成一個主題向量,即該文本屬於每一個主題的機率,運行時指定了20個主題,進行了1000次迭代;
(4)使用scikit-learn裏的K-Means進行聚類,指定的簇個數是20。
下面是聚類的一部分結果,能夠看到一些內容帳號的聚類效果仍是能夠的,主要是它們天天發博量比較大,並且博文的主題較明顯。對於我的帳號,每每發博量少並且主題分散。固然跟抓的量少也有關係。
(1) LOVE_湖人 湖人新聞動態 NikeBasketball 愛死科比論壇 CNTV體育臺 科比演繹之路 於嘉 NBA 蘇羣
(2) SAP中國 創新工場微招聘 新浪校園招聘 IBM中國有限公司人才與招聘 Google中國校園招聘 IBM中國 IBM杭州分公司 IBM中國大學合做部 新浪招聘
(3) 百度校園 百度開發者中心 百度搜紅包 編程之美全國挑戰賽 美國國家儀器 阿里巴巴集團校園招聘 微軟亞洲研究院 百老匯之家 acmicpc 微軟學生技術俱樂部 阿里雲 百度雲 BaiduFamily 微軟校招官方微博 微軟中國 網易校園招聘
(4) DataScientist 52opencourse_挖課 網易汪源 丕子 劉思喆 楊滔_數據科學 鄧侃 王威廉 北冥乘海生 劉洋THU ChinaHadoop MachineLearner 阿里日照
(5) 惟美丶中國風 全球視覺圖宴 鏡頭中的中國 BJTUcaixia 百度旅遊 全球頂尖攝影
(6) TechWeb 程苓峯-雲科技 互聯網的那點事 開心的老胡-GodHope 淘寶鬼腳七 google那點事兒 騰訊微信團隊 張輝forestsong 劉江總編 月光博客 PingWest中文網 劉挺 王小川 36氪 雷軍 Fenng 高效IT網 莊寶童
(7) Smile_geek 赫陽at百度 199IT-互聯網數據中心 蘇寧易購李斌 視物致知 蔡學鏞 billgates FT中文網 數據化管理 微數據 爬盟中國 DataV 淘寶技術大學 社會網絡與數據挖掘 李開復 於仰民_Emilyu 數據挖掘_PHP 淘依韻 ResysChina 量子恆道 林仕鼎 錢皓-互聯網分析師 陳利人 EMC中國研究院 BIT-百度技術學院 3W咖啡 微指數 淘薛奎 數據挖掘研究院 百度統計 TEDNews 周鴻禕 一淘數據工程師 楊棟_Kenny 大數據 張俊林say 郭去疾 數據魔方 微軟雲計算 ipad應用排行榜 數據挖掘與數據分析 唐福林 五洲紅 AdMaster 程輝 2012百度之星程序設計大賽 eBayTech 百度推廣 社交數據分析 Google黑板報 張亞勤
(8) 連城404 伯樂在線官方微博 圖靈社區 何_登成 一淘測試 python4cn 駱逸 nosqlfan zhh-2009 阿里技術嘉年華 微博應用架構 developerWorks 開源中國 程序員的那些事 LAMP人 InfoQ 程序員修煉營 TimYang CNodeJS 百度技術沙龍 樸靈 微博平臺架構 SinaAppEngine
(9) 一淘網 淘寶網 淘寶鄧悟 Python發燒友 淘寶數據 rockdai 一淘招聘 淘楚材 喬三石 hugozhu 淘寶指數
(10)姚晨 花澤雲靜 司華Fighting glinglingw 鄒_小珊 蔡圓媛的後花園 開啓新起點tianran 凌_欣 任婷婷養了一隻皮皮獸 胡思亂想樂 BatmanFly 超級碼力 macbax Miss好好菁 蔡虎Stanley 夏炎xyxy 阿Oey--陳葉萍 Ali_lulululuya 夏碉堡 turbosun 依蘭花開_emma LillianC小超人 Loxpzi-四葉草 稀土部隊