Topic Model在考慮語義的應用場景中被廣泛應用,實踐證明效果也不錯。本文總結了一些常用的Topic Model實戰技巧。

  1. 利用優質「少量」數據學習模型,緩解單機速度和內存問題,然後對剩餘/新文檔做推導(可數據並行)。比如用微博訓練LDA時,先把長度短的微博過濾掉(有工作得出長度為7的短文本適合LDA進行學習),過濾相似微博(轉發會造成很多近乎相同的微博)。當訓練數據量大並且單機環境中可試一下GraphLab Create,該工具還支持採樣比較快的alias LDA。如果不僅是為了學習當前語料中的主題分布,並且也用於預測新數據,則數據量越大越好。
  2. 去除一些TF/DF較低/高的詞,較低的詞在擬合的過程中會被平滑掉,較高的詞沒有區分力,標點,助詞,語氣詞也可以去掉(中文常用詞60萬左右)。在中文中應考慮全形變半形,去亂碼,繁轉簡,英文中考慮大小寫轉換。實際處理數據時會發現分詞後不同詞個數很容易達到百萬級別,這裡很多詞是沒有意義的,數字詞,長度過長的詞,亂碼詞。此外,分詞過程中如果兩個詞在一起的頻率比較高,那麼分詞結果會把兩個詞合併,那麼合併與否對LDA的訓練是否有影響呢?有的詞應該合併,比如」北京 大學「,也有的詞分開會好一些,比如」階級 鬥爭「。
  3. 根據上下文合併短文本,比如合併用戶所有的微博作為一個文檔,合併相似的微博作為一個文檔,把微博當做一個查詢,利用偽反饋來補充微博內容(中文微博比twitter字數更多一些,長微博不用擴展已經可以正確分類,短微博本身可能就是歧義的,擴展效果也不一定好),把微博及其評論作為一個文檔。在一定程度上可緩解短文本問題。
  4. Topic Model的訓練是一個數據擬合過程,找出latent topic最大訓練語料庫的似然概率,當不同類的數據不平衡時,數量量少的主題可能會被數據量多的主題主導。LDA本來就傾向於擬合高頻的topic。LDA很多奇怪的結果大多都是因為詞的共現導致的。
  5. 訓練過程中,迭代次數一般可設為1000 – 2000次,可根據時間要求,機器配置選擇。迭代次數達到一定值後,會在最小值處來回跳轉。LDA的運行時間和文檔數,不同詞個數,文檔長度,topic個數有關。
  6. K的選擇,對每個K跑一個LDA,肉眼觀察每個topic的情況最靠譜。當訓練數據量大時不可行。此時可以根據不同的topic的相似度來調整K。假設不同topic之間的相似性小為佳(Perplexity, GraphLab Create直接輸出這個結果)。一個經驗設置是K × 詞典的大小 約等於 語料庫中詞的總數。
  7. 挖掘優質的詞典很重要,一方面有助於分詞,也有助於明確潛在的主題。
  8. 數據量大後,LDA和PLSA的效果差不多,但是PLSA更容易並行化。LDA和PLSA的最大區別在於LDA對於Doc的Topic分布加上了一層先驗,Doc-topic分布是當作模型變數,而LDA則只有一個超參數,Doc-Topic分布則是隱藏變數。在預測的時候,plsa是求一個似然概率,lda則是有兩項,先驗乘以似然。
  9. LDA在文本領域中,把word抽象成topic。類似,LDA也可以用在其它任務中,我們在信用評估中,直接把每個用戶當成一個文檔,文檔中的詞是每個關注的人,得到的topic相當於是一個用戶group,相當於對用戶進行聚類。還有,把微博中的@/rt的人當作word。machinedlearnings.com/2
  10. 超參數alpha eta對訓練的影響?alpha越大,先驗起的作用就越大,推導的topic分布就越傾向於在每個topic上的概率都差不多。alpha的經驗選擇為50/k, 其中k是topic數目,beta一般為0.01
  11. the color of a word tend to be similar to other words in the same document.
  12. the color of a word tend to be similar to its major color in the whole corpus.
  13. 用大的數據集訓練一個general的model,還是根據垂直領域訓練一個specific的model呢?應該看是想得到一些小眾的topic,還是比較熱門的topic。
  14. 為什麼LDA的最大似然難求?含有兩個連續的隱藏變數,需要積分掉,對於一個word,需要考慮每個topic生成這個word的概率,因此也有個求和項。因為這個條件分布很難求,導致求解帶隱變數優化問題的EM演算法也不行,因此EM演算法往往都是用一個近似分布來代替。Gibbs Sampling則是生成p(z|…)的幾個樣本來近似這個條件分布。經過多次迭代(一次迭代對於一篇文章中的一個詞只採樣一次),一開始隨機產生的 topic-word 矩陣 和 doc-topic 會處於穩定,真實的分布。對於一個Doc,根據詞之間的可交換性,取不同詞對應的topic的過程也是獨立的。
  15. 短文本可以嘗試TwitterLDA(假設一個短文本只關於一個話題),github.com/smutahoang/t

更多內容見 Topic Model(主題模型)實戰


推薦閱讀:
相关文章