搜索背后的奥秘——浅谈语义主题计算
摘要:
兩篇文檔是否相關(guān)往往不只決定于字面上的詞語(yǔ)重復(fù),還取決于文字背后的語(yǔ)義關(guān)聯(lián)。對(duì)語(yǔ)義關(guān)聯(lián)的挖掘,可以讓我們的搜索更加智能化。本文著重介紹了一個(gè)語(yǔ)義挖掘的利器:主題模型。主題模型是對(duì)文字隱含主題進(jìn)行建模的方法。它克服了傳統(tǒng)信息檢索中文檔相似度計(jì)算方法的缺點(diǎn),并且能夠在海量互聯(lián)網(wǎng)數(shù)據(jù)中自動(dòng)尋找出文字間的語(yǔ)義主題。近些年來(lái)各大互聯(lián)網(wǎng)公司都開(kāi)始了這方面的探索和嘗試。就讓我們看一下究竟吧。
關(guān)鍵詞:主題模型
技術(shù)領(lǐng)域:搜索技術(shù)、自然語(yǔ)言處理
?
假設(shè)有兩個(gè)句子,我們想知道它們之間是否相關(guān)聯(lián):
第一個(gè)是:“喬布斯離我們而去了。”
第二個(gè)是:“蘋(píng)果價(jià)格會(huì)不會(huì)降?”
如果由人來(lái)判斷,我們一看就知道,這兩個(gè)句子之間雖然沒(méi)有任何公共詞語(yǔ),但仍然是很相關(guān)的。這是因?yàn)?#xff0c;雖然第二句中的“蘋(píng)果”可能是指吃的蘋(píng)果,但是由于第一句里面有了“喬布斯”,我們會(huì)很自然的把“蘋(píng)果”理解為蘋(píng)果公司的產(chǎn)品。事實(shí)上,這種文字語(yǔ)句之間的相關(guān)性、相似性問(wèn)題,在搜索引擎算法中經(jīng)常遇到。例如,一個(gè)用戶(hù)輸入了一個(gè)query,我們要從海量的網(wǎng)頁(yè)庫(kù)中找出和它最相關(guān)的結(jié)果。這里就涉及到如何衡量query和網(wǎng)頁(yè)之間相似度的問(wèn)題。對(duì)于這類(lèi)問(wèn)題,人是可以通過(guò)上下文語(yǔ)境來(lái)判斷的。但是,機(jī)器可以么?
在傳統(tǒng)信息檢索領(lǐng)域里,實(shí)際上已經(jīng)有了很多衡量文檔相似性的方法,比如經(jīng)典的VSM模型。然而這些方法往往基于一個(gè)基本假設(shè):文檔之間重復(fù)的詞語(yǔ)越多越可能相似。這一點(diǎn)在實(shí)際中并不盡然。很多時(shí)候相關(guān)程度取決于背后的語(yǔ)義聯(lián)系,而非表面的詞語(yǔ)重復(fù)。
那么,這種語(yǔ)義關(guān)系應(yīng)該怎樣度量呢?事實(shí)上在自然語(yǔ)言處理領(lǐng)域里已經(jīng)有了很多從詞、詞組、句子、篇章角度進(jìn)行衡量的方法。本文要介紹的是其中一個(gè)語(yǔ)義挖掘的利器:主題模型。
主題模型是什么?
主題模型,顧名思義,就是對(duì)文字中隱含主題的一種建模方法。還是上面的例子,“蘋(píng)果”這個(gè)詞的背后既包含是蘋(píng)果公司這樣一個(gè)主題,也包括了水果的主題。當(dāng)我們和第一句進(jìn)行比較時(shí),蘋(píng)果公司這個(gè)主題就和“喬布斯”所代表的主題匹配上了,因而我們認(rèn)為它們是相關(guān)的。
在這里,我們先定義一下主題究竟是什么。主題就是一個(gè)概念、一個(gè)方面。它表現(xiàn)為一系列相關(guān)的詞語(yǔ)。比如一個(gè)文章如果涉及到“百度”這個(gè)主題,那么“中文搜索”、“李彥宏”等詞語(yǔ)就會(huì)以較高的頻率出現(xiàn),而如果涉及到“IBM”這個(gè)主題,那么“筆記本”等就會(huì)出現(xiàn)的很頻繁。如果用數(shù)學(xué)來(lái)描述一下的話(huà),主題就是詞匯表上詞語(yǔ)的條件概率分布?。與主題關(guān)系越密切的詞語(yǔ),它的條件概率越大,反之則越小。
例如:
通俗來(lái)說(shuō),一個(gè)主題就好像一個(gè)“桶”,它裝了若干出現(xiàn)概率較高的詞語(yǔ)。這些詞語(yǔ)和這個(gè)主題有很強(qiáng)的相關(guān)性,或者說(shuō),正是這些詞語(yǔ)共同定義了這個(gè)主題。對(duì)于一段話(huà)來(lái)說(shuō),有些詞語(yǔ)可以出自這個(gè)“桶”,有些可能來(lái)自那個(gè)“桶”,一段文本往往是若干個(gè)主題的雜合體。我們舉個(gè)簡(jiǎn)單的例子,見(jiàn)下圖。
以上是從互聯(lián)網(wǎng)新聞中摘抄下來(lái)的一段話(huà)。我們劃分了4個(gè)桶(主題),百度(紅色),微軟(紫色)、谷歌(藍(lán)色)和市場(chǎng)(綠色)。段落中所包含的每個(gè)主題的詞語(yǔ)用顏色標(biāo)識(shí)出來(lái)了。從顏色分布上我們就可以看出,文字的大意是在講百度和市場(chǎng)發(fā)展。在這里面,谷歌、微軟這兩個(gè)主題也出現(xiàn)了,但不是主要語(yǔ)義。值得注意的是,像“搜索引擎”這樣的詞語(yǔ),在百度、微軟、谷歌這三個(gè)主題上都是很可能出現(xiàn)的,可以認(rèn)為一個(gè)詞語(yǔ)放進(jìn)了多個(gè)“桶”。當(dāng)它在文字中出現(xiàn)的時(shí)候,這三個(gè)主題均有一定程度的體現(xiàn)。
有了主題的概念,我們不禁要問(wèn),究竟如何得到這些主題呢?對(duì)文章中的主題又是如何進(jìn)行分析呢?這正是主題模型要解決的問(wèn)題。下面我簡(jiǎn)要介紹一下主題模型是怎樣工作的。
主題模型的工作原理
首先,我們用生成模型的視角來(lái)看文檔和主題這兩件事。所謂生成模型,就是說(shuō),我們認(rèn)為一篇文章的每個(gè)詞都是通過(guò)“以一定概率選擇了某個(gè)主題,并從這個(gè)主題中以一定概率選擇某個(gè)詞語(yǔ)”這樣一個(gè)過(guò)程得到的。那么,如果我們要生成一篇文檔,它里面的每個(gè)詞語(yǔ)出現(xiàn)的概率為:
上面這個(gè)式子,可以矩陣乘法來(lái)表示,如下圖所示:
左邊的矩陣表示每篇文章中每次詞語(yǔ)出現(xiàn)的概率;中間的Φ矩陣表示的是每個(gè)主題中每個(gè)詞語(yǔ)出現(xiàn)的概率?,也就是每個(gè)“桶
表示的是每篇文檔中各個(gè)主題出現(xiàn)的概率?,可以理解為一段話(huà)中每個(gè)主題所占的比例。
假如我們有很多的文檔,比如大量的網(wǎng)頁(yè),我們先對(duì)所有文檔進(jìn)行分詞,得到一個(gè)詞匯列表。這樣每篇文檔就可以表示為一個(gè)詞語(yǔ)的集合。對(duì)于每個(gè)詞語(yǔ),我們可以用它在文檔中出現(xiàn)的次數(shù)除以文檔中詞語(yǔ)的數(shù)目作為它在文檔中出現(xiàn)的概率?。這樣,對(duì)任意一篇文檔,左邊的矩陣是已知的,右邊的兩個(gè)矩陣未知。而主題模型就是用大量已知的“詞語(yǔ)-文檔”矩陣?,通過(guò)一系列的訓(xùn)練,推理出右邊的“詞語(yǔ)-主題”矩陣Φ?和“主題文檔”矩陣Θ?。
主題模型訓(xùn)練推理的方法主要有兩種,一個(gè)是pLSA(Probabilistic Latent Semantic Analysis),另一個(gè)是LDA(Latent Dirichlet Allocation)。pLSA主要使用的是EM(期望最大化)算法;LDA采用的是Gibbs sampling方法。由于它們都較為復(fù)雜且篇幅有限,這里就只簡(jiǎn)要地介紹一下pLSA的思想,其他具體方法和公式,讀者可以查閱相關(guān)資料。
pLSA采用的方法叫做EM(期望最大化)算法,它包含兩個(gè)不斷迭代的過(guò)程:E(期望)過(guò)程和M(最大化)過(guò)程。用一個(gè)形象的例子來(lái)說(shuō)吧:比如說(shuō)食堂的大師傅炒了一盤(pán)菜,要等分成兩份給兩個(gè)人吃,顯然沒(méi)有必要拿天平去一點(diǎn)點(diǎn)去精確稱(chēng)量,最簡(jiǎn)單的辦法是先隨意的把菜分到兩個(gè)碗中,然后觀察是否一樣多,把比較多的那一份取出一點(diǎn)放到另一個(gè)碗中,這個(gè)過(guò)程一直重復(fù)下去,直到大家看不出兩個(gè)碗里的菜有什么差別為止。
對(duì)于主題模型訓(xùn)練來(lái)說(shuō),“計(jì)算每個(gè)主題里的詞語(yǔ)分布”和“計(jì)算訓(xùn)練文檔中的主題分布”就好比是在往兩個(gè)人碗里分飯。在E過(guò)程中,我們通過(guò)貝葉斯公式可以由“詞語(yǔ)-主題”矩陣計(jì)算出“主題-文檔”矩陣。在M過(guò)程中,我們?cè)儆谩爸黝}-文檔”矩陣重新計(jì)算“詞語(yǔ)-主題”矩陣。這個(gè)過(guò)程一直這樣迭代下去。EM算法的神奇之處就在于它可以保證這個(gè)迭代過(guò)程是收斂的。也就是說(shuō),我們?cè)诜磸?fù)迭代之后,就一定可以得到趨向于真實(shí)值的 Φ和 Θ。
如何使用主題模型?
有了主題模型,我們?cè)撛趺词褂盟?#xff1f;它有什么優(yōu)點(diǎn)呢?我總結(jié)了以下幾點(diǎn):
1)? 它可以衡量文檔之間的語(yǔ)義相似性。對(duì)于一篇文檔,我們求出來(lái)的主題分布可以看作是對(duì)它的一個(gè)抽象表示。對(duì)于概率分布,我們可以通過(guò)一些距離公式(比如KL距離)來(lái)計(jì)算出兩篇文檔的語(yǔ)義距離,從而得到它們之間的相似度。
2)它可以解決多義詞的問(wèn)題。回想最開(kāi)始的例子,“蘋(píng)果”可能是水果,也可能指蘋(píng)果公司。通過(guò)我們求出來(lái)的“詞語(yǔ)-主題”概率分布,我們就可以知道“蘋(píng)果”都屬于哪些主題,就可以通過(guò)主題的匹配來(lái)計(jì)算它與其他文字之間的相似度。 3) 它可以排除文檔中噪音的影響。一般來(lái)說(shuō),文檔中的噪音往往處于次要主題中,我們可以把它們忽略掉,只保持文檔中最主要的主題。 4) 它是無(wú)監(jiān)督的,完全自動(dòng)化的。我們只需要提供訓(xùn)練文檔,它就可以自動(dòng)訓(xùn)練出各種概率,無(wú)需任何人工標(biāo)注過(guò)程。 5) 它是跟語(yǔ)言無(wú)關(guān)的。任何語(yǔ)言只要能夠?qū)λM(jìn)行分詞,就可以進(jìn)行訓(xùn)練,得到它的主題分布。 綜上所述,主題模型是一個(gè)能夠挖掘語(yǔ)言背后隱含信息的利器。近些年來(lái)各大搜索引擎公司都已經(jīng)開(kāi)始重視這方面的研發(fā)工作。語(yǔ)義分析的技術(shù)正在逐步深入到搜索領(lǐng)域的各個(gè)產(chǎn)品中去。在不久的將來(lái),我們的搜索將會(huì)變得更加智能,讓我們拭目以待吧。
總結(jié)
以上是生活随笔為你收集整理的搜索背后的奥秘——浅谈语义主题计算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Hadoop中Writable和Writ
- 下一篇: Hadoop Writable机制