24 - Elasticsearch 相关性和相关性算分

相关性和相关性算分

  • 相关性:Relevance
    • 搜索的相关性算分,描述了一个文档和查询语句匹配的程度。ES会对每个匹配查询条件的结果进行算分_score
    • 打分的本质是排序,需要把最符合用户需求的文档排在前面。ES 5之前,默认的相关性算分采用TF-IDF,现在采用BM 25
词(Term) 文档(Doc Id)
区块链 1,2,3
2,3,4,5,6,7,8,9,10,12,13,15,18,19,20
应用 2,3,8,9,10,13,15

词频 TF

  • Term Frequency:检索词在一篇文档中出现的频率
    • 检索词出现的次数除以文档的总字数
  • 度量一条查询和结果文档相关性的简单方法:简单将搜索中每一个词的TF进行相加
    • TF(区块链) + TF(的) +TF(应用)
  • Stop Word
    • “的”在文档出现了很多次,但是对贡献度几乎没用处,不应该考虑他们的TF

逆文档频率IDF

  • DF:检索词在所有文档中出现的频率
    • “区块链”在相对比较少的文档中出现
    • “应用”在相对比较多的文档中出现
    • “Stop Word”在大量的文档中出现
  • Inverse Document Frequency:简单说 = log(全部文档数/检索词出现的文档总数)
  • TF-IDF本质上就是将TF求和变成了加权求和
出现的文档数 总文档数 IDF
区块链 200万 10亿 log(500)=8.96
10亿 10亿 log(1)=0
应用 5亿 10亿 log(2)=1

TF-IDF的概念

  • TF-IDF被公认为是信息检索领域最重要的发明
  • 除了在信息检索,在文献分类和其他相关性领域有这非常广泛的应用
  • IDF的概念,最早是剑桥大学的“斯巴克.琼斯”提出
    • 1972年:“关键词特殊性的统计解释和它在文献检索中的应用”
    • 但是没有从理论上解释IDF应该是用log(全部文档数/检索词出现过的文档总数),而不是其他函数,也没有做进一步的研究
  • 1970,1980年代萨尔顿和罗宾逊,进行了进一步的证明和研究,并用香农信息论做了证明
    • https://www.staff.city.ac.uk/~sb317/papers/foundatins_bm25_review.pdf
  • 现代索引引擎,对TF-IDF进行了大量细微的优化

Lucene中的TF-IDF评分公式

TF-IDF评分公式

BM 25

  • 从ES 5开始,默认算法改为BM 25
  • 和经典的TF-IDF相比,当TF无限增加时,BM 25算分会趋于一个数值
BM 25算分

定制Similarity

定制similarity
BM 25公式
  • K默认值是1.2,数值越小,饱和度越高,b默认值是0.75(取值范围0~1),0代表禁止Normalization

通过Explain API查看TF-IDF

算分查找
  • 4篇文档+4个Term查询
  • 思考一下
    • 查询中的TF和IDF?
    • 结果如何排序?
    • 文档长短 / TF / IDF 对相关度算分的影响

Boosting Relevance

  • Boosting是控制相关度的一种手段
    • 索引,字段或查询子条件
  • 参数boost的含义
    • 当boost > 1时,打分的相关度相对性提升
    • 当0 < boost < 1时,打分的权重相对性降低
    • 没boost < 0,贡献负分
复合查询:Boosting Query

小结

  • 什么是相关性 & 相关性算分介绍
    • TF-IDF /BM25
  • 在Elasticsearch中定制相关度算法的参数
  • ES中可以对索引,字段分别设置Boosting参数

你可能感兴趣的:(24 - Elasticsearch 相关性和相关性算分)