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.****.net/asdfsadfasdfsa/article/details/77977276
https://blog.****.net/Gamer_gyt/article/details/48811033
https://www.jianshu.com/p/c6554e73aa85