主題模型是什麼、工作原理【基礎概念】※※※※※

轉自:http://blog.sina.com.cn/s/blog_9d7bca9f01015580.html

摘要:

兩篇文檔是否相關往往不只決定於字面上的詞語重複,還取決於文字背後的語義關聯。對語義關聯的挖掘,可以讓我們的搜索更加智能化。本文着重介紹了一個語義挖掘的利器:主題模型。主題模型是對文字隱含主題進行建模的方法。它克服了傳統信息檢索中文檔相似度計算方法的缺點,並且能夠在海量互聯網數據中自動尋找出文字間的語義主題。近些年來各大互聯網公司都開始了這方面的探索和嘗試。就讓我們看一下究竟吧。

關鍵詞:主題模型

技術領域:搜索技術、自然語言處理

 

假設有兩個句子,我們想知道它們之間是否相關聯:

第一個是:“喬布斯離我們而去了。”

第二個是:“蘋果價格會不會降?”

如果由人來判斷,我們一看就知道,這兩個句子之間雖然沒有任何公共詞語,但仍然是很相關的。這是因爲,雖然第二句中的“蘋果”可能是指喫的蘋果,但是由於第一句裏面有了“喬布斯”,我們會很自然的把“蘋果”理解爲蘋果公司的產品。事實上,這種文字語句之間的相關性、相似性問題,在搜索引擎算法中經常遇到。例如,一個用戶輸入了一個query,我們要從海量的網頁庫中找出和它最相關的結果。這裏就涉及到如何衡量query和網頁之間相似度的問題。對於這類問題,人是可以通過上下文語境來判斷的。但是,機器可以麼?

在傳統信息檢索領域裏,實際上已經有了很多衡量文檔相似性的方法,比如經典的VSM模型。然而這些方法往往基於一個基本假設:文檔之間重複的詞語越多越可能相似。這一點在實際中並不盡然。很多時候相關程度取決於背後的語義聯繫,而非表面的詞語重複。

那麼,這種語義關係應該怎樣度量呢?事實上在自然語言處理領域裏已經有了很多從詞、詞組、句子、篇章角度進行衡量的方法。本文要介紹的是其中一個語義挖掘的利器:主題模型

主題模型是什麼?

主題模型,顧名思義,就是對文字中隱含主題的一種建模方法。還是上面的例子,“蘋果”這個詞的背後既包含是蘋果公司這樣一個主題,也包括了水果的主題。當我們和第一句進行比較時,蘋果公司這個主題就和“喬布斯”所代表的主題匹配上了,因而我們認爲它們是相關的。

在這裏,我們先定義一下主題究竟是什麼。主題就是一個概念、一個方面。它表現爲一系列相關的詞語。比如一個文章如果涉及到“百度”這個主題,那麼“中文搜索”、“李彥宏”等詞語就會以較高的頻率出現,而如果涉及到“IBM”這個主題,那麼“筆記本”等就會出現的很頻繁。如果用數學來描述一下的話,主題就是詞彙表上詞語的條件概率分佈 。與主題關係越密切的詞語,它的條件概率越大,反之則越小。

例如:

通俗來說,一個主題就好像一個“桶”,它裝了若干出現概率較高的詞語。這些詞語和這個主題有很強的相關性,或者說,正是這些詞語共同定義了這個主題。對於一段話來說,有些詞語可以出自這個“桶”,有些可能來自那個“桶”,一段文本往往是若干個主題的雜合體。我們舉個簡單的例子,見下圖。

以上是從互聯網新聞中摘抄下來的一段話。我們劃分了4個桶(主題),百度(紅色),微軟(紫色)、谷歌(藍色)和市場(綠色)。段落中所包含的每個主題的詞語用顏色標識出來了。從顏色分佈上我們就可以看出,文字的大意是在講百度和市場發展。在這裏面,谷歌、微軟這兩個主題也出現了,但不是主要語義。值得注意的是,像“搜索引擎”這樣的詞語,在百度、微軟、谷歌這三個主題上都是很可能出現的,可以認爲一個詞語放進了多個“桶”。當它在文字中出現的時候,這三個主題均有一定程度的體現。

有了主題的概念,我們不禁要問,究竟如何得到這些主題呢?對文章中的主題又是如何進行分析呢?這正是主題模型要解決的問題。下面我簡要介紹一下主題模型是怎樣工作的。

主題模型的工作原理

首先,我們用生成模型的視角來看文檔和主題這兩件事。所謂生成模型,就是說,我們認爲一篇文章的每個詞都是通過“以一定概率選擇了某個主題,並從這個主題中以一定概率選擇某個詞語”這樣一個過程得到的。那麼,如果我們要生成一篇文檔,它裏面的每個詞語出現的概率爲:

上面這個式子,可以矩陣乘法來表示,如下圖所示:

左邊的矩陣表示每篇文章中每次詞語出現的概率;中間的Φ矩陣表示的是每個主題中每個詞語出現的概率 ,也就是每個“桶

表示的是每篇文檔中各個主題出現的概率 ,可以理解爲一段話中每個主題所佔的比例。

假如我們有很多的文檔,比如大量的網頁,我們先對所有文檔進行分詞,得到一個詞彙列表。這樣每篇文檔就可以表示爲一個詞語的集合。對於每個詞語,我們可以用它在文檔中出現的次數除以文檔中詞語的數目作爲它在文檔中出現的概率 。這樣,對任意一篇文檔,左邊的矩陣是已知的,右邊的兩個矩陣未知。而主題模型就是用大量已知的“詞語-文檔”矩陣 ,通過一系列的訓練,推理出右邊的“詞語-主題”矩陣Φ 和“主題文檔”矩陣Θ 。

主題模型訓練推理的方法主要有兩種,一個是pLSA(Probabilistic Latent Semantic Analysis),另一個是LDA(Latent Dirichlet Allocation)。pLSA主要使用的是EM(期望最大化)算法;LDA採用的是Gibbs sampling方法。由於它們都較爲複雜且篇幅有限,這裏就只簡要地介紹一下pLSA的思想,其他具體方法和公式,讀者可以查閱相關資料。

pLSA採用的方法叫做EM(期望最大化)算法,它包含兩個不斷迭代的過程:E(期望)過程和M(最大化)過程。用一個形象的例子來說吧:比如說食堂的大師傅炒了一盤菜,要等分成兩份給兩個人喫,顯然沒有必要拿天平去一點點去精確稱量,最簡單的辦法是先隨意的把菜分到兩個碗中,然後觀察是否一樣多,把比較多的那一份取出一點放到另一個碗中,這個過程一直重複下去,直到大家看不出兩個碗裏的菜有什麼差別爲止。

對於主題模型訓練來說,“計算每個主題裏的詞語分佈”和“計算訓練文檔中的主題分佈”就好比是在往兩個人碗裏分飯。在E過程中,我們通過貝葉斯公式可以由“詞語-主題”矩陣計算出“主題-文檔”矩陣。在M過程中,我們再用“主題-文檔”矩陣重新計算“詞語-主題”矩陣。這個過程一直這樣迭代下去。EM算法的神奇之處就在於它可以保證這個迭代過程是收斂的。也就是說,我們在反覆迭代之後,就一定可以得到趨向於真實值的 Φ和 Θ。

如何使用主題模型?

有了主題模型,我們該怎麼使用它呢?它有什麼優點呢?我總結了以下幾點:

1)  它可以衡量文檔之間的語義相似性。對於一篇文檔,我們求出來的主題分佈可以看作是對它的一個抽象表示。對於概率分佈,我們可以通過一些距離公式(比如KL距離)來計算出兩篇文檔的語義距離,從而得到它們之間的相似度。

2)它可以解決多義詞的問題。回想最開始的例子,“蘋果”可能是水果,也可能指蘋果公司。通過我們求出來的“詞語-主題”概率分佈,我們就可以知道“蘋果”都屬於哪些主題,就可以通過主題的匹配來計算它與其他文字之間的相似度。
3)它可以排除文檔中噪音的影響。一般來說,文檔中的噪音往往處於次要主題中,我們可以把它們忽略掉,只保持文檔中最主要的主題。
4) 它是無監督的,完全自動化的。我們只需要提供訓練文檔,它就可以自動訓練出各種概率,無需任何人工標註過程。
5) 它是跟語言無關的。任何語言只要能夠對它進行分詞,就可以進行訓練,得到它的主題分佈。
綜上所述,主題模型是一個能夠挖掘語言背後隱含信息的利器。近些年來各大搜索引擎公司都已經開始重視這方面的研發工作。語義分析的技術正在逐步深入到搜索領域的各個產品中去。在不久的將來,我們的搜索將會變得更加智能,讓我們拭目以待吧。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章