1. 程式人生 > >LDA(文件主題生成模型)--零基礎(一)

LDA(文件主題生成模型)--零基礎(一)

本文目的在於用最簡單的語言,給大家介紹LDA的原理以及使用方法。

首先,我們這裡有M篇文件,每篇文件有個單詞,如果文件是英文,就是每個單獨的單詞;如果是中文,則需要分詞處理,分詞處理又需要用已有的分詞的演算法,比較複雜,所以我們這裡先只考慮英文。我們現在想知道,每篇文章,它的主題是什麼。最簡單直接的想法是,我這裡有K的主題,給出一個概率分佈,告訴我這篇文章有多大可能屬於第k個主題,。當然,概率和 。

如果我們能獲得每篇文章關於主題的一個概率分佈,那我們取它概率最大的那個主題,我們就能知道每篇文章的主題了。但是怎麼去獲得文章主題的概率分佈呢,這是一個比較頭疼的問題。因為,我們現在主題是什麼都還不知道~~~尷尬。

那主題到底是什麼呢?一般我們可能會想,是一個詞,如“金融”,“程式設計”,“散文”...但這裡我們考慮的稍微複雜一點,主題也是一個分佈。其實我們仔細想想,為什麼我們會說這篇文章屬於“金融”類文章呢?如果由人腦來判斷,我們可能會分析文章的語義,然後判斷文章屬於哪個主題。但計算機比人笨,除了執行速度比人腦快一點,它並不能理解語義。如果要讓計算機來判斷一篇文章屬於哪個類別,最好的方法是做個統計,如果類似“金融”“信貸”“基金”的詞彙出現的頻率最高,那麼計算機就判斷,這篇文章屬於“金融”類文章。

所以,這裡我們假定,一個主題代表一個詞彙的分佈。比如,我們這裡有N個詞彙,如果我們確定了每個詞彙可能出現的概率,我們就確定了一個主題。現在,你可能發現,這裡已經有兩個分佈了,一個是文章關於主題的分佈;一個是詞彙關於主題的分佈。

如果你發現這點,恭喜你已經達到機器的水平了,其實機器就是這麼理解一篇文章的生成的。假設我們有一篇包含個單詞的文章,並有K個主題。現在,文章關於主題的分佈我們知道了,每個主題關於詞彙的分佈我們也知道了。首先,我們先根據文章的主題分佈隨機生成一個主題,不要問我怎麼生成,你就當是在投骰子;然後,根據這個主題,我們再投一次骰子,於是我們就確定了一個單詞。重複上面的過程次,我們就生成了一篇文章。

其實,細心的你會發現,這裡一共有K+1個骰子。有一個骰子有K面,每一面代表一個主題。另外K個骰子,每個骰子有N面(假設總共只有N個詞彙),每一面代表一個詞彙。

請看下文。