文本獲取與搜索引擎中的TF,TF-IDF

coursera課程 text retrieval and search engine 第二週 推薦。數據結構

什麼是TF

TF(term frequency),根據出現的次數做爲權重,出現一次,權值加1。可是僅使用這種方式沒法區分重要的詞和非重要的詞,好比the架構

什麼是DF

DF(document frequency),包含關鍵詞的文檔的個數ide

什麼是IDF

IDF(inverse document frequency),指的是一個單詞若是在更多的文檔中出現,那麼IDF值越低,關係可用下圖表示 函數

TF-IDF 模型

即便用TF*IDF。
假如TF不計算頻率,按最簡單的來,有就算1[y={0,1}]。 如下面文檔爲例,假如想搜索"news about presidential campaign",文檔庫中一共有3個文檔.net

很明顯presidential出現次數多,那篇文章應該更重要,那麼能夠加上次數作考慮,使用向量空間模型,假設查詢爲q=( x_1,..., x_n),文檔爲d=( y_1,..., y_n),那麼兩者的類似性爲 sim(q,d)=q*d= x_1 y_1+...+ x_n y_n,仍是以上面的文檔爲例可獲得

f(q,d2)=3,f(q,d3)=3,f(q,d4)=4

d4更相關能夠獲得認同,可是d3和d2卻同樣,有點沒法接受,由於presidential的重要性很明顯應該比about更重要,也就是說,不一樣詞的權重是不同的,在全部文檔中出現的越多的詞,應該重要性越低,能夠算上IDF,假設 每一個單詞的IDF對應以下 3d

再計算各個文檔的相關度爲:
對於d5文檔來講,很明顯它關於food可能更多,只是campaign出現的次數很是多,這也不合理,假如使用TF表示在文檔中出現的次數,那麼根據文檔中出現的次數相比,這是一個線性模型[y=x],問題在於,若是假設一個單詞出現的過多(而沒有有關鍵字中某些其它重要的詞),顯得權重過大,於是引入了TF Transformation,咱們但願可以隨着詞出現的次數增長,TF可以變大,可是又不能無限的變大,幾種常見的TF以下

對於這種增加的速率,若是可以加入人工的調控是最好的了,據此發現,最好的是BM25orm

能夠看到它的上界是k+1,也就是增加的速率是可調控的,同時,也會提現詞頻出現越多越重要的這個特性。此時的排序函數爲

其中c(w,q)表示在查詢語句中,詞w的出現次數;c(w,d)表示在文檔中詞出現次數;df(w)表示包含關鍵字的文檔的個數,即TF*IDF。

爲何長文檔須要正規化?

通常說來,長文檔更有可能包含更多的詞彙,所以它會以相對疏散的方式匹配到查詢關鍵字,但真實主題卻不是查詢的關鍵字。這樣看來,須要更好的方式來對長文本作出」懲罰」。另外須要考慮到的是,長文檔可能存在兩種狀況,1是僅僅用了過多的詞,2是有不少描述主題的內容,這是不但願有懲罰的。總的來講是但願懲罰有一個度,一種策略是使用「擺動長度正規」cdn

使用雙ln是爲了達到次線性轉換(隨着TF增長,權值增加相對更慢) 此時的排序函數爲blog

這裏b是一個變量,當b=0,文檔長度被忽略,當b非0,|d|(文檔長度)越大,權值反而越小,也就獲得了」懲罰」長文檔的目的,當文檔過短時,若是包含查詢關鍵字,頗有可能主題就是這些,起到適當的激勵做用

文本獲取(TR)的通常架構

  • tokenization:詞提取,肯定好詞的邊界,把相近意思的詞映射到同一個
  • index :將文檔轉換成易於檢索的數據結構,通常使用倒排索引(用一個字典存儲文檔的部分統計信息,好比當前詞一共出如今了多少個文檔,出現了多少次,這些文檔分別是那些文檔,那些位置,等等)

Zipf定理

定理代表,一個詞出現的頻率和他的排序是一個常量排序

相關文章
相關標籤/搜索