elasticsearch的TF/IDF打分公式總結
elasticsearch的TF/IDF打分公式
NLP中的TF/IDF
TF
TF(term frequency)這個數字是對詞數(term count)的歸一化,以防止它偏向長的檔案。IDF
逆向檔案頻率(inverse document frequency,IDF)是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取對數得到:
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) 長度相關的加權因子
Lucene評分公式的理解
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