本文討論如何計(jì)算詞(有時(shí)候稱特征向量)權(quán)重和向量空間模型及其應(yīng)用。本文的“文檔”是指查詢對(duì)象,它們可以使一條條單獨(dú)的記錄或者是一本書的各章,還可以是一個(gè)網(wǎng)頁(yè),或者xml文件等。
在討論詞權(quán)重和向量空間模型前需要先了解下歸一化的概念。歸一化(normailization)方法有兩種形式。第一種形式是把數(shù)變?yōu)椋?,1)之間的小數(shù),方便計(jì)算。第二種是把有量綱(量綱是指單位)表達(dá)式變?yōu)闊o(wú)量綱表達(dá)式,這樣歸一化后統(tǒng)一了單位,方便比較,而且歸一化后比較的數(shù)值才有意義。
詞頻-逆文檔頻率(term frequency-inverse document frequency,TF-IDF) 的概念被公認(rèn)為信息檢索中最重要的發(fā)明。在搜索、文獻(xiàn)分類和其他相關(guān)領(lǐng)域有廣泛的應(yīng)用。
在計(jì)算機(jī)中光有詞是不能計(jì)算的,需要把詞轉(zhuǎn)換為數(shù)字,這個(gè)數(shù)字能代表該詞對(duì)文檔中的重要程度,這個(gè)數(shù)字就是詞的權(quán)重。權(quán)重的設(shè)定必須滿足下面兩個(gè)條件:
1)一個(gè)詞預(yù)測(cè)主題能力越強(qiáng),權(quán)重就越大,反之,權(quán)重就越小。我們?cè)诰W(wǎng)頁(yè)中看到“云計(jì)算”這個(gè)詞,或多或少地能了解網(wǎng)頁(yè)的主題。我們看到“應(yīng)用”一次,對(duì)主題基本上還是一無(wú)所知。因此,“云計(jì)算“的權(quán)重就應(yīng)該比”應(yīng)用“大。
2) 應(yīng)刪除詞(如的等停頓詞)的權(quán)重應(yīng)該是零。
如果用詞項(xiàng)t在文檔d中出現(xiàn)的次數(shù)來(lái)表示詞頻,那么包含某些詞多的文檔應(yīng)該比包含它們少的文檔相關(guān)。當(dāng)然,這個(gè)辦法有一個(gè)明顯的漏洞,就是長(zhǎng)的文檔比短的文檔占便宜,因?yàn)殚L(zhǎng)的文檔總的來(lái)講包含的關(guān)鍵詞要多些。因此我們需要根據(jù)文檔的長(zhǎng)度,對(duì)關(guān)鍵詞的次數(shù)進(jìn)行歸一化,也就是用關(guān)鍵詞的次數(shù)除以文檔的總字?jǐn)?shù)。我們把這個(gè)商稱為詞的頻率(term frequency,TF)。
如果一個(gè)關(guān)鍵詞只在很少的文檔中出現(xiàn),我們通過(guò)它就容易鎖定搜索目標(biāo),它的權(quán)重也就應(yīng)該大。反之如果一個(gè)詞在大量文檔中出現(xiàn),我們看到它仍然不很清楚要找什么內(nèi)容,因此它應(yīng)該小。概括地講,假定一個(gè)關(guān)鍵詞t在Dt個(gè)文檔中出現(xiàn)過(guò),那么Dt越大,t的權(quán)重越小,反之亦然。在信息檢索中,使用最多的權(quán)重是逆文檔頻率(Inversedocument frequency 縮寫為IDF),它的公式為
IDF=log(D/Dt)
其中D是全部文檔數(shù)。比如,我們假定中文文檔數(shù)是D=10億,應(yīng)刪除詞“的”在所有的文檔中都出現(xiàn),即 Dt=10億,那么它的IDF=log(10億/10億)= log(1) = 0。假如專用詞“云計(jì)算”在兩百萬(wàn)個(gè)文檔中出現(xiàn),即Dw=200萬(wàn),則它的權(quán)重IDF=log(500) =6.2。又假定通用詞“應(yīng)用”,出現(xiàn)在五億個(gè)文檔中,它的權(quán)重IDF= log(2)則只有 1。也就只說(shuō),在文檔中找到一個(gè)“云計(jì)算”的比配相當(dāng)于找到九個(gè)“應(yīng)用”的匹配。
對(duì)于每篇文檔中的每個(gè)詞(一般是指關(guān)鍵字及特征向量),可以將其TF和IDF組合在一起形成每個(gè)詞最終的權(quán)重,計(jì)算公式如下
TF-IDF=TF*IDF
TF-IDF按照如下的方式對(duì)文檔d中的詞項(xiàng)t賦予權(quán)重:
(1)當(dāng)t只在少數(shù)幾篇文檔中多次出現(xiàn)時(shí),權(quán)重取值最大(此時(shí)能夠?qū)@些文檔提供最強(qiáng)的區(qū)分能力);
(2)當(dāng)t在一篇文檔中出現(xiàn)次數(shù)很少,或者在很多文檔中出現(xiàn),權(quán)重取值次之(此時(shí)對(duì)最后的相關(guān)度計(jì)算作用不大);
(3)如果t在所有文檔中都出現(xiàn),那么權(quán)重取值最小。
通過(guò)用TF-IDF表示詞的權(quán)重,就可以把文檔看成是一個(gè)向量(vector),其中的每個(gè)分量都對(duì)應(yīng)詞典中的一個(gè)詞,分量值為詞的權(quán)重值(可用TF-IDF計(jì)算,也有其他方法計(jì)算權(quán)重值)。當(dāng)某詞在文檔中沒(méi)有出現(xiàn)時(shí),其對(duì)應(yīng)的分量值為0。這種向量形式對(duì)于評(píng)分和排序十分重要。一系列文檔在同一向量空間中的表示被稱為向量空間模型(vector space model,簡(jiǎn)稱VSM),它是信息檢索領(lǐng)域一系列相關(guān)處理的基礎(chǔ),比如文檔的評(píng)分、文檔的分類及聚類。
用向量空間模型,一組文檔的集合可以看成向量空間中的多個(gè)向量,每個(gè)詞對(duì)應(yīng)一個(gè)坐標(biāo)軸,文檔在每個(gè)坐標(biāo)軸上的值是對(duì)應(yīng)詞的權(quán)重Weight。那么文檔d對(duì)應(yīng)的向量為
(1)簡(jiǎn)單的文檔相關(guān)性計(jì)算,可以用文檔中的每個(gè)詞的權(quán)重(TF-IDF)加權(quán)求和,即
TF1*IDF1 + TF2*IDF2 +... + TFN*IDFN。
(2)用余弦定理判斷文檔相似度
學(xué)過(guò)向量代數(shù)的人都知道,向量實(shí)際上是多維空間中有方向的線段。如果兩個(gè)向量的方向一致,即夾角接近零,那么這兩個(gè)向量就相近。而要確定兩個(gè)向量方向是否一致,這就要用到余弦定理計(jì)算向量的夾角了??梢杂糜嘞叶ɡ砼卸ㄎ臋n的相似度。
余弦定理對(duì)我們每個(gè)人都不陌生,它描述了三角形中任何一個(gè)夾角和三個(gè)邊的關(guān)系,換句話說(shuō),給定三角形的三條邊,我們可以用余弦定理求出三角形各個(gè)角的角度。假定三角形的三條邊為 a, b 和 c,對(duì)應(yīng)的三個(gè)角為 A, B 和 C,那么角 A 的余弦為
如果我們將三角形的兩邊 b 和 c 看成是兩個(gè)向量,那么上述公式等價(jià)于
其中分母表示兩個(gè)向量 b 和 c 的長(zhǎng)度,分子表示兩個(gè)向量的內(nèi)積。
同樣在向量空間下,可以用余弦定理對(duì)兩篇文檔的相似度進(jìn)行計(jì)算,如下圖
舉一個(gè)具體的例子(這個(gè)例子來(lái)自《數(shù)學(xué)之美》),假如文章 X 和文章 Y 對(duì)應(yīng)向量分別是x1,x2,...,x64000 和y1,y2,...,y64000,那么它們夾角的余弦等于,
如果兩篇文檔的特征向量相近,則對(duì)應(yīng)的文檔內(nèi)容相似,它們應(yīng)當(dāng)歸在一類,反之亦然。由于向量中的每一個(gè)變量都是正數(shù),因此余弦的取值在0和1之間。當(dāng)兩條文章向量夾角的余弦等于1時(shí),這兩條文章完全重復(fù)(用這個(gè)辦法可以刪除重復(fù)的文檔);當(dāng)夾角的余弦接近于1時(shí),兩條文章相似,從而可以歸成一類;夾角的余弦越小,兩條文章越不相關(guān)。
如果在某個(gè)系統(tǒng)中,用戶確定一篇文檔然后查找與之相似的我的那個(gè),那么上面的文檔相似度計(jì)算就非常有用。在一些搜索引擎的返回結(jié)果當(dāng)中有時(shí)就看到這種搜索方式,比如一些搜索引擎的more like this(類似網(wǎng)頁(yè))按鈕,這些現(xiàn)象在我們現(xiàn)實(shí)生活中非常常見,如網(wǎng)上購(gòu)物,搜索引擎會(huì)自動(dòng)向用戶推薦商品,即所謂的推薦搜索。下圖是亞馬遜根據(jù)用戶瀏覽記錄推薦的書
當(dāng)然,工程實(shí)現(xiàn)上還會(huì)用到很多處理算法,但是基本思想是用余弦定理評(píng)定相關(guān)性。
將文檔表示成向量的一個(gè)令人信服的理由是可以將查詢表示成向量??梢詫⒉樵兛闯梢黄獦O端的文檔來(lái)處理,因此,可以哦通過(guò)計(jì)算給定的查詢向量和每個(gè)文檔向量的相似度來(lái)對(duì)符合查詢結(jié)果的文檔進(jìn)行排名,最終的結(jié)果可以選擇排名靠前的一些文檔。下圖queryVector為查詢向量。
搜索引擎常用的文檔排名算法有Google的PageRank。PageRank的核心思想:在互聯(lián)網(wǎng)上,如果一個(gè)文檔被很多其他文檔所鏈接,說(shuō)明它受到普遍的承認(rèn)和信賴,那么它的排名就高。一個(gè)文檔的排名是來(lái)自于所有指向這個(gè)文檔的其他文檔的權(quán)重(這些文檔的本身排名)之和。如果結(jié)合文檔排名算法,那么給定一個(gè)查詢,有關(guān)文檔的綜合排序大致由相關(guān)性和文檔排名的乘積決定。
開源全文檢索庫(kù)Lucene的排名和打分算法可見 Lucene打分公式的數(shù)學(xué)推導(dǎo)
Introduction to Information Retrieval,信息檢索導(dǎo)論,Christopher D.Manning / Hinrich Schütze/ Prabhakar Raghavan
數(shù)學(xué)之美,吳軍
Lucene in Action
聯(lián)系客服