1. 程式人生 > >主題模型 LDA 入門(附 Python 程式碼)

主題模型 LDA 入門(附 Python 程式碼)

一、主題模型

在文字挖掘領域,大量的資料都是非結構化的,很難從資訊中直接獲取相關和期望的資訊,一種文字挖掘的方法:主題模型(Topic Model)能夠識別在文件裡的主題,並且挖掘語料裡隱藏資訊,並且在主題聚合、從非結構化文字中提取資訊、特徵選擇等場景有廣泛的用途。

主題可以被定義為“語料庫中具有相同詞境的詞的集合模式”,比如說,主題模型可以

  • 將“健康”,“醫生”,“病人”,“醫院” 集合成 “醫療保健” 主題
  • 將 “農場”,“玉米”,“小麥” 集合成 “農業”主題

二、狄利克雷分佈(Latent Dirichlet Allocation,LDA)主題模型

LDA 模式是生成式模型,在這裡,假設需要建模的資料為

X,標籤資訊為 Y

判別式模型:對 Y 的產生過程進行描述,對特徵資訊本身不建模。判別式模型有利於構建分類器或者回歸分析生成式模型需要對 XY 同時建模,更適合做無監督學習分析。

生成式模型:描述一個聯合概率分佈 P(X,Y) 的分解過程,這個分解過程是虛擬的過程,真實的資料不是這麼產生的,但是任何一個數據的產生過程可以在數學上等價為一個聯合概率分佈。

LDA 是一種矩陣分解技術,在向量空間中,任何語料(文件的集合)可以表示為文件(Document - Term,DT)矩陣。下面矩陣表達了一個語料庫的組成:

. W1 W2 Wm
D1 0 2 3
D2 1 4 0
...
Dn 1 1 0

其中,N個文件 D1,D2,,Dn的組成語料庫,M 個詞 W1,W2,,Wm 組成詞彙表。矩陣中的值表示了詞 Wj 在文件 Di 中出現的頻率,同時,LDA 將這個矩陣轉換為兩個低維度的矩陣,M1M2

. Z1 Z2 Zk
θ1 0 2 3
θ2 1 4 0
...
θn 1 1 0

上面顯示了 M1 矩陣的情況,它是一個 NK 大小的 document - topic 矩陣,N 指文件的數量,K 指主題的數量,M1 中,θi 是一個長度為 k 的向量,用於描述當前文件 θik 個主題上的分佈情況,Z 表示具體的主題。

. W1 W2 Wm
ϕ1 0 2 3
ϕ2 1 4 0
...
ϕk 1 1 0

上面顯示了 M2 矩陣的情況,它是一個 KV 維的 topic - term矩陣,K 指主題的數量,