1. 程式人生 > >elasticsearch的TF/IDF打分公式總結

elasticsearch的TF/IDF打分公式總結

elasticsearch的TF/IDF打分公式


NLP中的TF/IDF

  • TF
    TF(term frequency)這個數字是對詞數(term count)的歸一化,以防止它偏向長的檔案。

  • IDF
    逆向檔案頻率(inverse document frequency,IDF)是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取對數得到:
    image.png-76.1kB
    image.png-54.2kB

es是基於lucene的,所以它的評分機制也是基於lucene的,評分就是我們搜尋的短語和doclist中的每篇文件的相關度進行打分。

lucene的評分公式TF/IDF

Lucene的評分叫做TF/IDF演算法,基本意思就是詞頻演算法。

  • TF:TF代表分詞項在某個點文件中出現的次數(term frequency)

  • IDF:IDF代表代表分詞項在多少個文件中出現(inverse document frequency)

這個評分公式有6個部分組成

  • coord(q,d) 評分因子,基於文件中出現查詢項的個數。越多的查詢項在一個文件中,說明文件的匹配程度越高。
  • queryNorm(q)查詢的標準查詢
  • tf(t in d) 指項t在文件d中出現的次數frequency。具體值為次數的開根號。
  • idf(t) 反轉文件頻率, 出現項t的文件數docFreq
  • t.getBoost 查詢時候查詢項加權
  • norm(t,d) 長度相關的加權因子
    image.png-470.6kB
    image.png-72.1kB
    image.png-81.8kB
    image.png-111.8kB
    image.png-83.7kB

Lucene評分公式的理解

image.png-136.4kB
Lucene中使用空間向量模型,其基於餘弦定理,對於搜尋中的每一個詞term看做向量中的一維,每一維度的值由Lucene中的tf-idf打分公式給出,最後使用餘弦定理獲得搜尋結果的最終得分。

TF越高,表示該文件中某term詞語出現的頻率更高
IDF:IDF與當前文件沒有關係,只是一個權重,IDF越高,表示該詞語越罕見,重要性越高。(像“的”,“地”不罕見,很多文件中都會包含,因此IDF較低,表示重要程度不高)

PageRank

功能:最初Google用於對網頁進行排名

PageRank把所有的網頁看成一個社交網路,是一種由搜尋引擎根據網頁之間相互的超連結計算的技術,體現網頁的相關性和重要性。

PageRank基於兩個原理:
(1)連結分析原理

一個網頁被多次引用,則它可能是很重要的;如果被重要的網頁引用,說明自身也是重要的,網頁的重要性在網頁之間可以傳遞。

(2) 隨機衝浪模型
隨機衝浪模型用來計算使用者訪問某個頁面的概率。
Lawrence Page 和 Sergey Brin 提出了使用者行為的隨機衝浪模型,他們把使用者點選連結的行為,視為一種不關心內容的隨機行為。 而使用者點選頁面內的連結的概率,完全由頁面上鍊接數量的多少決定的,一個頁面通過隨機衝浪到達的概率就是鏈入它的別的頁面上 的連結的被點選概率的和。另外使用者不可能無限的點選連結,常常因勞累而隨機跳入另一個頁面。

Lucene和PageRank區別

  • 兩者具體的使用場景不一樣:
    lucene是一個搜尋工具包,有豐富的API,es基於lucene做站內搜尋,關注文件的全文內容搜尋
    pagerank是一種網頁排名演算法,不關心網頁的內容,只關注這個網頁本身是否重要
  • 二者原理不一樣
    lucene打分機制為TF/IDF演算法
    pagerank使用連結分析法+隨機衝浪模型

參考連結

https://blog.csdn.net/asdfsadfasdfsa/article/details/77977276
https://blog.csdn.net/Gamer_gyt/article/details/48811033
https://www.jianshu.com/p/c6554e73aa85