Lucene在进行关键词查询的时候,默认用TF-IDF算法来计算关键词和文档的相关性,用这个数据排序

TF:词频,IDF:逆向文档频率,TF-IDF是一种统计方法,或者被称为向量空间模型,名字听起来很复杂,但是它其实只包含了两个简单规则

  1. 某个词或短语在一篇文章中出现的次数越多,越相关
  2. 整个文档集合中包含某个词的文档数量越少,这个词越重要

所以一个term的TF-IDF相关性等于 TF * IDF

这两个规则非常简单,这就是TF-IDF的核心规则,第二个的规则其实有缺陷的,他单纯地认为文本频率小的单词就越重要,文本频率大的单词就越无用,显然这并不是完全正确的。并不能有效地反映单词的重要程度和特征词的分布情况,比如说搜索web文档的时候,处于HTML不同结构的特征词中对文章内容的反映程度不同,应该有不同的权重

TF-IDF的优点是算法简单,运算速度很快

Lucene为了提高可编程行,在上述规则做了一些扩充,就是加入一些编程接口,对不同的查询做了权重归一化处理,但是核心公式还是TF * IDF

Lucene算法公式如下

score(q,d) = coord(q,d) · queryNorm(q) · ∑ ( tf(t in d) · idf(t)2 · t.getBoost() · norm(t,d) )

  • tf(t in d ), = frequency½
  • idf(t) = 1 +log(文档总数/(包含t的文档数+1))
  • coord(q,d) 评分因子,。越多的查询项在一个文档中,说明些文档的匹配程序越高,比如说,查询"A B C",那么同时包含A/B/C3个词的文档 是3分,只包含A/B的文档是2分,coord可以在query中关掉的
  • queryNorm(q)查询的标准查询,使不同查询之间可以比较
  • t.getBoost() 和 norm(t,d) 都是提供的可编程接口,可以调整 field/文档/query项 的权重

各种编程插口显得很麻烦,可以不使用,所以我们可以把Lucence的算分公式进行简化

score(q,d) = coord(q,d) · ∑ ( tf(t in d) · idf(t)2 )

结论

  1. TF-IDF 算法是以 term为基础的,term就是最小的分词单元,这说明分词算法对基于统计的ranking无比重要,如果你对中文用单字切分,那么就会损失所有的语义相关性,这个时候 搜索只是当做一种高效的全文匹配方法
  2. 按照规则1 某个词或短语在一篇文章中出现的次数越多,越相关 一定要去除掉stop word,因为这些词出现的频率太高了,也就是TF的值很大,会严重干扰算分结果
  3. TF和IDF在生成索引的时候,就会计算出来: TF会和DocID保存在一起(docIDs的一部分),而IDF= 总文档数 / 当前term拥有的docIDs 长度

本文地址: http://lutaf.com/210.htm 鲁塔弗原创文章,欢迎转载,请附带原文链接

Lucene TF-IDF 相关性算分公式(转)的更多相关文章

  1. Solr相似度算法一:Lucene TF-IDF 相关性算分公式

    Lucene在进行关键词查询的时候,默认用TF-IDF算法来计算关键词和文档的相关性,用这个数据排序 TF:词频,IDF:逆向文档频率,TF-IDF是一种统计方法,或者被称为向量空间模型,名字听起来很 ...

  2. Lucene TF-IDF 相关性算分公式

    转自: http://lutaf.com/210.htm Lucene在进行关键词查询的时候,默认用TF-IDF算法来计算关键词和文档的相关性,用这个数据排序 TF:词频,IDF:逆向文档频率,TF- ...

  3. ElasticStack学习(九):深入ElasticSearch搜索之词项、全文本、结构化搜索及相关性算分

    一.基于词项与全文的搜索 1.词项 Term(词项)是表达语意的最小单位,搜索和利用统计语言模型进行自然语言处理都需要处理Term. Term的使用说明: 1)Term Level Query:Ter ...

  4. 关于使用Filter降低Lucene tf idf打分计算的调研

    将query改成filter,lucene中有个QueryWrapperFilter性能比较差,所以基本上都须要自己写filter.包含TermFilter,ExactPhraseFilter,Con ...

  5. Elasticsearch从入门到放弃:浅谈算分

    今天来聊一个 Elasticsearch 的另一个关键概念--相关性算分.在查询 API 的结果中,我们经常会看到 _score 这个字段,它就是用来表示相关性算分的字段,而相关性就是描述一个文档和查 ...

  6. 影响ES相关度算分的因素

    相关性算分 指文档与查询语句间的相关度,通过倒排索引可以获取与查询语句相匹配的文档列表   如何将最符合用户查询需求的文档放到前列呢? 本质问题是一个排序的问题,排序的依据是相关性算分,确定倒排索引哪 ...

  7. tf idf公式及sklearn中TfidfVectorizer

    在文本挖掘预处理之向量化与Hash Trick中我们讲到在文本挖掘的预处理中,向量化之后一般都伴随着TF-IDF的处理,那么什么是TF-IDF,为什么一般我们要加这一步预处理呢?这里就对TF-IDF的 ...

  8. TF/IDF(term frequency/inverse document frequency)

    TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明. 一. TF/IDF描述单个term与特定document的相 ...

  9. 基于TF/IDF的聚类算法原理

        一.TF/IDF描述单个term与特定document的相关性TF(Term Frequency): 表示一个term与某个document的相关性. 公式为这个term在document中出 ...

随机推荐

  1. 用div和css样式控制页面布局

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  2. javascript适合移动端的响应式瀑布流插件实例演示

    在线预览 jQuery插件大全 实例代码 <div class="sucaihuo-container"> <div class="demo" ...

  3. CodePen 作品秀:Canvas 粒子效果文本动画

    作品名称——Shape Shifter,基于 Canvas 的粒子图形变换实验.在页面下方的输入框输入文本,上面就会进行变换出对应的粒子效果文本动画. CodePen 作品秀系列向大家展示来自 Cod ...

  4. MyEclipse之无法连接到MySQL数据库

    问题描述: 在连接mysql中出现如下警告 Fri Oct 28 02:21:53 CST 2016 WARN: Establishing SSL connection without server' ...

  5. ng-cordova 手机拍照或从相册选择图片

    1.需求描述 实现一个调用摄像头拍照,或者直接打开本地图库选择照片,然后替换App中图片的功能 2.准备 1) 安装ng-cordova 进入到ionic工程目录,使用bower工具安装, bower ...

  6. 关于web软件信息安全问题防护资料的整理(三)

    了解了web系统的安全威胁,那么我们应该怎样防范这些安全威胁呢? 1.时刻准备应战 Web应用系统所面临的威胁是非常严峻的.不管攻击的一方是采用单一形式的攻击,还是采用混合多种手段的混合攻击,作为防护 ...

  7. 为什么你找不到优秀的GISer?

    每年的三四月是招聘的黄金时节,故有金三银四的说法.求贤纳才对于处在发展上升期的公司来说,是全年性的常态化工作.只是这俩月市场上求职者数量较别的月份多.基数大了,淘到金子的概率自然会增加.大部分公司的伯 ...

  8. 国内最全最详细的hadoop2.2.0集群的HA高可靠的最简单配置

    简介 hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在hadoop1时代,只有一个NameNode.如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了 ...

  9. TimeUnit 使用

    TimeUnit是java.util.concurrent包下面的一个类,表示给定单元粒度的时间段 主要作用 时间颗粒度转换 延时 常用的颗粒度 TimeUnit.DAYS //天 TimeUnit. ...

  10. ios 各种机型屏幕尺寸大小