1. 程式人生 > >《數學之美》第11章—如何確定網頁和查詢的相關性(TF-IDF演算法)

《數學之美》第11章—如何確定網頁和查詢的相關性(TF-IDF演算法)

文章目錄

如何查詢關於“原子能的應用”的網頁?

大致思路

  • 第一步,在索引中找到包含這三個詞的網頁(這大約能返回千萬以上個結果)
  • 第二步,給這些網頁排序:
    • 1)把網頁本身質量好的排在前面 (Page Rank 演算法)
    • 2)與查詢關鍵詞“原子能應用”相關性高的網頁排在前面(TF-IDF 演算法)

問題描述

如何度量查詢(query)與網頁的相關性?

解決過程

一、使用“總詞頻”

“原子能的應用”可以分為三個關鍵詞“原子能、的、應用”。

1、直覺上,關鍵詞出現次數較多的網頁應該比出現較少的網頁相關性高;

2、 存在問題:那就是篇幅長的網頁比篇幅短的網頁佔便宜,長的網頁其包含地關鍵詞更多一些;

3、 所以,需要根據網頁的長度,對關鍵詞的次數進行歸一化: **
- 用關鍵詞的次數除以網頁的總詞數——即
關鍵詞的頻率【Term Frequency】**

所以,當一個查詢包含N個關鍵詞 w

1 , w 2 , w 3 , .
. . , w N w_1,w_2,w_3,...,w_N ,他們在一個特定網頁中的詞頻分別為: T F 1 , T F 2 , T F 3 , . . . , T F N TF_1,TF_2,TF_3,...,TF_N ,那麼這個查詢和該網頁的相關性(相似度)就是各個關鍵詞在網頁中的總詞頻:
T F 1 + T F 2 + . . . + T F N TF_1+TF_2+...+TF_N

二、加入IDF權重

4、 存在問題:
1) “停止詞 Stop Word”(的,是,地,和…),在總詞頻中佔比會非常高,並且其對確定網頁主題幾乎沒有什麼用,所以在度量相關性的時候不應該考慮他們的詞頻;
2)“通用詞”與“專用詞”(應用與原子能),在相關性排序中各自的重要程度又不相同;

5、所以,需要對每一個詞賦予一個權重,其滿足以下條件
1)一個詞預測主題的能力越強,權重越大,反之權重越小;
2)停止詞的權重為 0 ;

6、資訊檢索中,“逆文字頻率指數”(Inverse Document Frequency):
l o g ( D D i ) log(\frac{D}{D_i})
D w D_w 表示關鍵詞 w w 出現在不同網頁的次數, D D 表示全部網頁數目。如果一個關鍵詞大量出現在網頁中,就是看到它仍然不會清楚要找什麼內容,其對應的權重越小;如果出現在很少的網頁,通過它就很容易鎖定目標,權重也就應該很大。

例如,假設中文網頁數 D = 10 D=10億 ,停止詞“的”在的網頁 D w = 10 D_w=10億 ,那麼它的 I D F = l o g ( 10 10 ) = 0 IDF=log(\frac{10億}{10億})=0 ,加入“原子能”出現在200萬個網頁中,則它的權重 I D F = l o g ( 500 ) = 8.96 IDF=log(500)=8.96

7、所以,利用IDF,相關性的計算公式就由詞頻簡單的求和變成了加權求和:
T F 1 I D F 1 + T F 2 I D F 2 + . . . + T F N I D F N TF_1*IDF_1+TF_2*IDF_2+...+TF_N*IDF_N

三、IDF概念的理論支撐——資訊理論

8、 IDF的概念,來自於特定條件下關鍵詞的概率分佈的交叉熵(即,資訊理論)

1)一個查詢(query)中的每一個關鍵詞(key word) w w 的權重應該反映這個詞對查詢來講提供了多少資訊:
> 可以使用每個詞的資訊量作為他的權重

I ( w ) = P ( w ) l o g P ( w ) = T F ( w ) N l o g T F ( w ) N I(w) = - P(w)logP(w) = - \frac{TF(w)}{N}log\frac{TF(w)}{N}
P ( w ) P(w) 是關鍵詞 w w 在語料庫中的詞頻(概率);N是整個語料庫的大小,是個可以省略的常數。則上面公式可以簡化成:
I ( w ) = T F ( w ) l o g N T F ( w ) I(w) = TF(w)log\frac{N}{TF(w)}

2)上式,有一個缺陷:兩個出現頻率TF相同的詞,當一個集中出現在特定文章中,而另一個分散在多篇文獻中,顯然第一個詞有更高的解析度,它的權重應該更大。顯然,更好的權重公式應該反映出關鍵詞的解析度。

3)基本假設:

  • 每個文獻大小基本相同,均為 M M 個詞,即:

M = N D = w T F ( w ) D M = \frac{N}{D}=\frac{\sum\limits_w TF(w)}{D}

D D 為全部網頁數

  • 一個關鍵詞在文獻中一旦出現,不論次數多少,貢獻都等同。即,一個詞要麼在一個文獻中出現,且次數為 c ( w ) = T F ( w ) D ( w ) c(w)=\frac{TF(w)}{D(w)} ,要麼是 0 。( c ( w ) < M c(w)<M

D ( w ) D(w) w w 出現的網頁數

4)根據假設,可以得到關鍵詞的資訊量
I ( w ) = T F ( w ) l o g N T F ( w ) = T F ( w ) l o g M D c ( w ) D ( w ) = T F ( w ) l o g D D ( w ) + T F ( w ) l o g M c ( w ) I(w) = TF(w)log\frac{N}{TF(w)} \\ = TF(w)log\frac{MD}{c(w)D(w)} \\ = TF(w)log\frac{D}{D(w)}+TF(w)log\frac{M}{c(w)}