博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BM25 调参调研
阅读量:4693 次
发布时间:2019-06-09

本文共 1142 字,大约阅读时间需要 3 分钟。

1. 搜索 ES 计算文本相似度用的 BM25,参数默认,不适合电商场景,可调整 BM25 参数使其适用于电商短文本场景

 

2. k1、b、tf、L、tfScore 的关系如下图红框内所示(注:这里的 tf 即上式中的 f(qi,D))。

3. k1 用来控制公式对词项频率 tf 的敏感程度。((k1 + 1) * tf) / (k1 + tf) 的上限是 (k1+1),也即饱和值。当 k1=0 时,不管 tf 如何变化,BM25 后一项都是 1;随着 k1 不断增大,虽然上限值依然是 (k1+1),但到达饱和的 tf 值也会越大;当 k1 无限大时,BM25 后一项就是原始的词项频率。一句话,k1 就是衡量高频 term 所在文档和低频 term 所在文档的相关性差异,在我们的场景下,term 频次并不重要,该值可以设小。ES 中默认 k1=1.2,可调整为 k1=0.3。

 

4. b 用来控制文档长度 L 对权值的惩罚程度。b=0,则文档长度对权值无影响,b=1,则文档长度对权值达到完全的惩罚作用。ES 中默认 b=0.75,可调整为 b=0.1。

5. IDF 一项无参可调,这里只说明一点,公式中当 n(q) 超过 N/2 非常大时,IDF 有得到负值的可能,Lucene’s BM25 实现时对 log 中的除式做了加 1 处理,Math.log(1 + (docCount - docFreq + 0.5D)/(docFreq + 0.5D)),使其永远大于 1,取 log 后就不会得到负值。

 

参考资料:

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-similarity.html
  • https://en.wikipedia.org/wiki/Okapi_BM25
  • https://www.elastic.co/guide/en/elasticsearch/guide/current/pluggable-similarites.html
  • https://www.elastic.co/guide/en/elasticsearch/guide/current/practical-scoring-function.html
  • http://opensourceconnections.com/blog/2015/10/16/bm25-the-next-generation-of-lucene-relevation/
  • 《信息检索导论》p160

转载于:https://www.cnblogs.com/NaughtyBaby/p/9774836.html

你可能感兴趣的文章
httpclient设置proxy与proxyselector
查看>>
IT常用单词
查看>>
拓扑排序
查看>>
NYOJ--32--SEARCH--组合数
查看>>
JMS
查看>>
gulpfile 压缩模板
查看>>
【34.14%】【BZOJ 3110】 [Zjoi2013]K大数查询
查看>>
【 henuacm2016级暑期训练-动态规划专题 A 】Cards
查看>>
第五篇:白话tornado源码之褪去模板的外衣
查看>>
设备常用框架framework
查看>>
bootstrap模态框和select2合用时input无法获取焦点(转)
查看>>
21世纪经济网APP
查看>>
解决NetworkOnMainThreadException
查看>>
1039 到底买不买
查看>>
农银电商项目学习笔记(一)
查看>>
MockObject
查看>>
Chukwa
查看>>
(转)Maven仓库——私服介绍
查看>>
设计模式之工厂模式
查看>>
仿复制粘贴功能,长按弹出tips的实现
查看>>