1. 程式人生 > >先驗分布:(三)Dirichlet分布的應用——LDA模型

先驗分布:(三)Dirichlet分布的應用——LDA模型

重復 應用 設定 概率 bubuko 詞匯表 自然語言 不同 分析

LDA(Latent Dirichlet Allocation)模型是Dirichlet分布的實際應用。

在自然語言處理中,LDA模型及其許多延伸主要用於文本聚類、分類、信息抽取和情感分析等。

例如,我們要對許多新聞按主題進行分類。目前用的比較多的方法是:假設每篇新聞都有一個主題,然後通過分析新聞的文本(即組成新聞的詞),推導出新聞屬於某些主題的可能性,這樣就可以按照可能性大小將新聞分類了。

而LDA模型,就是用於分析新聞文本,推導出新聞屬於某些主題可能性的這一過程。

為了做到這點,LDA模型有如下假設:

1、每個文本均有若幹個主題,比如60%是體育、40%是娛樂;

2、每個主題都有一系列詞語,這些詞語反映了該主題(或者說常用詞),比如在體育主題下,運動員、比賽、比分、冠軍等詞出現的頻率比較高;

3、每個文本的生成過程是:選取主題 → 從該主題下選取詞語 → 詞語形成文本。

在實際應用中,我們得到(或看到)的是由詞語形成的文本,為了將文本分類,我們必須根據文本倒推主題,即算出該文本下可能有什麽主題。這跟文本的生成過程剛好是相反的。

現在假設,一個文本共有N個詞:

技術分享圖片

一共有K個主題:

技術分享圖片

一共有V個詞語作為詞匯表(主題共用,只是不同主題中詞的出現機會不同):

技術分享圖片

下面我們用剛才提到的文本生成過程來表示這個文本是怎樣形成的:

技術分享圖片

過程是這樣的:

1、先(通過某種方式)抽取位置1的詞(也就是文本的第一個詞)的主題,比如z2,即第二個主題;

2、該主題下有相應的詞匯分布(即每個詞都有其出現機會),在該主題下(通過某種方式)抽取位置1的詞,比如抽到V3,即詞匯表中的第三個詞;

3、重復上述兩部,對位置2、位置3直到位置N的詞進行抽取。這樣就形成了一個文本,比如上表的文本按順序從1到N的詞就是:

技術分享圖片

上述過程中的"通過某種方式"就是LDA模型的關鍵。由於我們事先不知道文本的主題分布,按照貝葉斯派的做法,我們只能先主觀或根據經驗人為設定文本的主題分布,比如體育60%,娛樂40%。這就涉及到之前文章所說的先驗概率分布了。

同理,我們事先也不知道特定主題下詞匯的分布,不妨也先主觀或根據經驗人為設定該主題下詞匯的分布,即先驗概率分布。

而這兩種先驗概率,服從Dirichlet分布:

技術分享圖片

這是一個文本的主題的分布,也就是說,不同文本的主題分布不同,如果語料有M篇文本,則應該有M個Dirichlet分布。其中:

α是文本主題先驗分布的超參數,是一個K維向量,對應K個主題,可以將第k個分量看成是影響第k個主題出現概率的參數。

同理,某主題的詞的先驗分布為:

技術分享圖片

這是一個主題的詞的分布,也就是說,不同主題的詞的分布不同,如果有K個主題,則應該有K個Dirichlet分布。其中:

β是主題的詞的先驗分布的超參數,是一個V維向量,對應V個詞匯,可以將第v個分量看成是影響第v個詞出現概率的參數。

我們的目的是通過現象(看到的文本),倒推各文本的主題分布和各主題的詞分布,根據這兩個結果就可以將文本分類了。倒推的原理和可行性在之前的文章已有討論,在此不表。

先驗分布:(三)Dirichlet分布的應用——LDA模型