1. 程式人生 > >LDA主題模型、Word2Vec

LDA主題模型、Word2Vec

背景

隱含狄利克雷分配(Latent Dirichlet Allocation)是一種主題模型即從所給文件中挖掘潛在主題。LDA的出現是為了解決類似TFIDF只能從詞頻衡量文件相似度,可能在兩個文件共同出現的單詞很少甚至沒有,但兩個文件是相似的情形: 喬布斯、蘋果。

LDA通常使用者語義挖掘,識別文件中潛在的主題資訊。在主題模型中,主題表示一個概念、一個方面,表現為一系列相關的單詞,是這些單詞的條件概率。形象來說,主題就是一個桶,裡面裝了出現概率較高的單詞,這些單詞與這個主題有很強的相關性。

應用場景

通常LDA使用者進主題模型挖掘,當然也可用於降維。
推薦系統:應用LDA挖掘物品主題,計算主題相似度
情感分析:學習出使用者討論、使用者評論中的內容主題

主題模型

LDA是一種無監督的生成模型,模型前提認為:每一篇文章的每個單詞的產生是“以一定的概率選擇了某個主題,並從這個主題以一定的概率選擇某個單詞”。因此每個文件的每個單詞出現的概率計算如下:
LDA
矩陣形式:
LDA矩陣

解釋:
文件-詞語:每個文件中每個單詞的詞頻,即出現的概率
主題-詞語:每個主題中每個單詞出現的概率
文件-主題:每個文件中每個主題出現的概率

給定一系列文件,通過對文件進行分詞,計算每個文件每個詞的詞頻即左邊矩陣。主題模型:左邊矩陣進行訓練,學習出右邊兩個矩陣

LDA

LDA生成的文件通常可包含多個主題,存在一個主題向量。對於一份文件的產生(虛擬碼):

  Choose parameter θ ~ p(θ); 

        For each
ofthe N words w_n: Choose a topic z_n ~ p(z|θ); Choose a word w_n ~ p(w|z);

引數解釋:
θ: 主題向量,每一列表示每個主題在文件出現的概率,為非負歸一化向量
p(θ): θ的Dirichlet分佈,即分佈的分佈
p(z|θ): 給定θ時主題z的概率分佈,p(w|z)

方法:
(1)選定一個主題向量θ,確定每個主題被選擇的概率
(2)從主題分佈θ選擇一個主題z
(3)按主題z的單詞概率分佈生成一個單詞
LDA的聯合概率分佈為:
LDA聯合概率分佈


圖形表示:
LDA

解釋:
1. corpus-level(紅色):α和β表示語料級別的引數,也就是每個文件都一樣,因此生成過程只採樣一次
2. document-level(橙色):θ是文件級別的變數,每個文件對應一個θ,也就是每個文件產生各個主題z的概率是不同的,所有生成每個文件取樣一次θ。
3. word-level(綠色):z和w都是單詞級別變數,z由θ生成,w由z和β共同生成,一個 單詞w對應一個主題z

LDA模型:從給定的輸入語料中學習訓練兩個控制引數α和β,學習出了這兩個控制引數就確定了模型,便可以用來生成文件:
* α:分佈p(θ)需要一個向量引數,即Dirichlet分佈的引數,用於生成一個主題θ向量
* β:各個主題對應的單詞概率分佈矩陣p(w|z)
EM演算法求解α及β
前提: 把w當做觀察變數,θ和z當做隱藏變數
求解過程中遇到後驗概率p(θ,z|w)無法直接求解,需要找一個似然函式下界來近似求解,原文使用基於分解(factorization)假設的變分法(varialtional inference)進行計算,用到了EM演算法。每次E-step輸入α和β,計算似然函式,M-step最大化這個似然函式,算出α和β,不斷迭代直到收斂。

程式碼庫

實際應用

Word2Vec

通過深度學習將詞表徵為數值型向量的工具。它把文字內容簡化處理,把詞當做特徵,Word2Vec將特徵對映到K維向量空間,為文字資料尋求更加深層次的特徵表示。Word2Vec獲得的詞向量可被用於聚類、找同義詞、詞性分析等。
通過詞之間的距離(比如 cosine 相似度、歐氏距離等)來判斷它們之間的語義相似度。其採用一個 三層的神經網路 :輸入層-隱層-輸出層。有個核心的技術是 根據詞頻用Huffman編碼 ,使得所有詞頻相似的詞隱藏層啟用的內容基本一致,出現頻率越高的詞語,他們啟用的隱藏層數目越少,這樣有效的降低了計算的複雜度

Word2Vec優點:
(1)高效;
(2)與潛在語義分析(Latent Semantic Index, LSI)、潛在狄立克雷分配(Latent Dirichlet Allocation,LDA)的經典過程相比,Word2vec利用了詞的上下文,語義資訊更加地豐富
(3)而在醫療專案中,如診斷報告和檢查報告,短文字很常見,因此word2vec可能會達到很好的語義表徵效果

相關庫

tensorflow官方github倉庫中也有使用skip-gram思路實現的word2vec版本