Elasticsearch全文搜索与TF/IDF_a flying bird的博客-CSDN博客


本站和网页 https://blog.csdn.net/m0_37870649/article/details/81123506 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Elasticsearch全文搜索与TF/IDF_a flying bird的博客-CSDN博客
Elasticsearch全文搜索与TF/IDF
a flying bird
于 2018-07-19 21:54:48 发布
910
收藏
分类专栏:
NLP
原文链接:https://my.oschina.net/stanleysun/blog/1594220
版权
NLP
专栏收录该内容
22 篇文章
1 订阅
订阅专栏
转载:https://my.oschina.net/stanleysun/blog/1594220
一、TF/IDF
1. TF
TF:Term Frequency,即词频。它表示一个词在内容(如某文章)中出现的次数。为了消除文档本身大小的影响,通常,它的定义是:
TF = 某个词在文档中出现的次数 / 文档的总词数
也有其他表示方法,在Elasticsearch (lucene)中的使用的方法是
tf(t in d) = √frequency  , 即 (某个词t在文档d中出现的次数) 的 平方跟
某个词出现越多,表示它约重要。比如某篇新闻中,“剑术”出现了5次,“电视”出现了1次,很可能这是一个剑术赛事报道。
如果这篇新闻中,“中国”和“剑术”出现的次数一样多,是不是表示两者同等重要呢?答案是否定的,因为中国这个词很常见,它难以表达文档的特性。而剑术很少见,更能表达文章的特性。
某个词越少见,就越能表达一篇文章的特性,反之则越不能。像“的”、“了”这些词,在所有文档中出现的频率都特别高,以至于失去了表达文章特性的意义。人们干脆称它们为“停用词”,直接从统计中忽略掉。
2. IDF
IDF(Inverse Document Frequency),即逆文档频率,它是一个表达词语重要性的指标。通常,它的计算方法是:
IDF=log(语料库中的文档数/(包含该词的文档数+1))
如果所有文章都包涵某个词,那个词的IDF=log(1)=0, 即重要性为零。停用词的IDF约等于0。
如果某个词只在很少的文章中出现,则IDF很大,其重要性也越高。
为了避免分母为0,所以+1.
在Elasticsearch (lucene)中的计算方法是
idf(t) = 1 + log ( numDocs / (docFreq + 1)) ,
即 1 + log ( 索引中的文档总数 / (包含该词的文档数 + 1))
上述公式是文档中给的,但实际中用的是 log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) 
TF-IDF值
TF-IDF = TF X IDF
在Elasticsearch中,还有一个概念叫 字段长度的归一化,Field-Length Norm.
字段内容越短,权重越大。如果一个关键词出现在较短的字段中,比如title,就比它出现在长字段(如简介)中更能表达文章的特性。
norm(d) = 1 / √numTerms    即: 1 / 词出现次数的平方根
二、elasticsearch的全文搜索
elasticsearh的全文搜索涉及到两个重要的方面:相关性(Relevance)和分析(Analysis)
相关性(Relevance)
它是评价查询与其结果间的相关程度,并根据这种相关程度对结果排名的一种能力,这种计算方式可以是 TF/IDF 方法(参见 相关性的介绍)、地理位置邻近、模糊相似,或其他的某些算法。本文只介绍TF/IDF方法。
TF/IDF 相关性方法分析
做一次搜索,带explain,elasticsearch会返回如何匹配。比如在title字段中进行全文搜索,关键词为'python'
GET course/_search?explain
"query": {
"multi_match" : {
"query": "python",
"fields": [ "title" ]
},"size":10
返回内容中,第一条匹配的结果如下
"_shard": "[course][0]",
...
"_score": 6.1884723,
"_source": {
"title": "Python 语句",
...
},
"_explanation": {
"value": 6.1884723,
"description": "weight(title:python in 1363) [PerFieldSimilarity], result of:",
"details": [
"value": 6.1884723,
"description": "score(doc=1363,freq=1.0 = termFreq=1.0\n), product of:",
"details": [
"value": 4.4812255,
"description": "idf, computed as log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) from:",
"details": [
"value": 17,
"description": "docFreq",
"details": []
},
"value": 1545,
"description": "docCount",
"details": []
},
"value": 1.3809776,
"description": "tfNorm, computed as (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength)) from:",
"details": [
"value": 1,
"description": "termFreq=1.0",
"details": []
},
"value": 1.2,
"description": "parameter k1",
"details": []
},
"value": 0.75,
"description": "parameter b",
"details": []
},
"value": 7.861489,
"description": "avgFieldLength",
"details": []
},
"value": 2.56,
"description": "fieldLength",
"details": []
解释
"value": 4.4812255,
"description": "idf, computed as log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)) from:",
上面是求idf值的值。idf=ln(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5))=ln(1+(1545-17+0.5)/(17+0.5)) = ln(88.34)=4.4812255
//返回内容里用了log(以10为底的对数), 实际是ln (以e为底的对数)
"value": 1.3809776,
"description": "tfNorm, computed as (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength)) from:",
上面是求tfNorm(归一化后的TF)的值。根据描述tfNorm = (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength))
其中termFreq=1,k1=1.2, b=0.75, avgFieldLength=7.861489, fieldLength=2.56。
为什么要用这样的公式,以及k1和b的值是怎么来的,我也不清楚。
计算最终结果,tfNorm=1.38.
"value": 6.1884723,
"description": "score(doc=1363,freq=1.0 = termFreq=1.0\n), product of:",
最终得分 TF-IDF = TF * IDF =4.4812255 * 1.3809776 = 6.1884723
---------------------------------------------------------------------
扩展阅读:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/17/2595249.html
a flying bird
关注
关注
点赞
收藏
评论
Elasticsearch全文搜索与TF/IDF
转载:https://my.oschina.net/stanleysun/blog/1594220一、TF/IDF1. TFTF:Term Frequency,即词频。它表示一个词在内容(如某文章)中出现的次数。为了消除文档本身大小的影响,通常,它的定义是:TF = 某个词在文档中出现的次数 / 文档的总词数也有其他表示方法,在Elasticsearch (lucene)中...
复制链接
扫一扫
专栏目录
ElasticSearch实战(九)-TF/IDF/BM25分值计算(文本搜索排序分值计算,全文检索算法,文本相似度算法)
张志翔的博客
08-21
597
一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。 -----《TF-IDF 百度百科》
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
BM25 是一种用来评价搜索词
elasticsearch IDF BM25函数图像
07-28
es的排序准则的相关度,根据搜索 关键词 计算关键词在一个文档中的得分,得分越高结果越靠前。那么计算的准则是什么?
1. TF/IDF
2. BM25
> 这两种算法在这里我就先不做详细说明,看下图,两种算法的得分趋势图。TF/IDF会随着关键词出现的次数得分逐渐增高,BM25随着关键词出现的次数,得分会有一个极限(用两个参数可以进行调节 k1[默认1.2],b[默认0.75])。目前ES5.0以后版本默认使用BM25。
参与评论
您还未登录,请先
登录
后发表或查看评论
ElasticSearch43:初识搜索引擎_相关度评分TF&IDF算法揭秘
一枚程序员的博客
01-06
891
1.算法介绍
relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索的文本,他们之间的关联匹配程序
ElasticSearch使用的是term frequency/inverse document frequency算法,简称TF/IDF算法
Term frequency,搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关
Inverse
Elasticsearch相似度算分TF-IDF BM25(标贝科技)
最新发布
DataBaker的博客
03-29
2152
控制相关度
处理结构化数据(比如:时间、数字、字符串、枚举)的数据库,只需检查文档(或关系数据库里的行)是否与查询匹配。
布尔的是/非匹配是全文搜索的基础,但不止如此,我们还要知道每个文档与查询的相关度,在全文搜索引擎中不仅需要找到匹配的文档,还需根据它们相关度的高低进行排序。
全文相关的公式或 相似算法(similarity algorithms) 会将多个因素合并起来,为每个文档生成一个相关度评分 _score 。这里,我们会验证各种可变部分,然后讨论如何来控制它们。
当然,相关度不只与全文查询有关,也
ElasticSearch系列——相关度评分TF&IDF算法
weixin_42894555的博客
07-12
237
文章目录算法介绍_score是如何被计算出来的
ElasticSearch系列——主目录
算法介绍
relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度
Elasticsearch使用的是 term frequency/inverse document frequency算法,简称为TF/IDF算法
Term frequency:
搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关
搜索请求:hello world
elasticsearch的TF/IDF打分公式总结
lhj_sjtu的博客
09-17
6064
elasticsearch的TF/IDF打分公式
NLP中的TF/IDF
TF
TF(term frequency)这个数字是对词数(term count)的归一化,以防止它偏向长的文件。
IDF
逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数...
Elasticsearch 相关度评分TF&IDF算法揭秘
程序员学习圈
02-27
725
1.算法介绍
relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索的文本,他们之间的关联匹配程序
ElasticSearch使用的是term frequency/inverse document frequency算法,简称TF/IDF算法
Term frequency,搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就...
Elasticsearch系列---相关性评分算法及正排索引
黄鹰的专栏
01-05
1307
概要
上一篇中多次提到了按相关性评分,本篇我们就来简单了解一下相关性评分的算法,以及正排索引排序的优势。
评分算法
Elasticsearch进行全文搜索时,Boolean Model是匹配的基础,先用boolean model将匹配的文档挑选出来,然后再运用评分函数计算相关度,参与的函数如我们提到的TF/IDF、Length Norm等,再加上一些控制权重的参数设置,得到最后的评分。
Boole...
【Elasticsearch】Elasticsearch 相关度评分 TF&IDF
九师兄
10-04
285
1.概述
relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度
Elasticsearch使用的是 term frequency/inverse document frequency算法,简称为TF/IDF算法
Term frequency(TF):搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关
Inverse document frequency(IDF):搜索文本中的各个词条在整个索引的所有文档中出现了多少次,出现的.
使用Sentence Transformers和Faiss构建语义搜索引擎
deephub
11-11
4731
介绍
您是否曾经想过如何使用Sentence Transformers创建嵌入向量,并在诸如语义文本相似这样的下游任务中使用它们?
在本教程中,您将学习如何使用Sentence Transformers和Faiss构建一个基于向量的搜索引擎。代码地址会在本文的最后提供
为什么要构建基于向量的搜索引擎?
基于关键字的搜索引擎很容易使用,在大多数情况下工作得很好。你要求机器学习论文,他们会返回一堆包含精确匹配或接近变化的查询结果,就像机器学习一样。其中一些甚至可能返回包含查询的同义词或出现在类似上下文中的单词.
【ElasticSearch】(二) 全文搜索
liuerchong的博客
10-11
127
全文搜索介绍
  全文搜索两个最重要的方面是:
相关性(Relevance) 它是评价查询与其结果间的相关程度,并根据这种相关程度对结果排名的一种能力,这 种计算方式可以是TF/IDF方法、地理位置邻近、模糊相似,或其他的某些算法。
分词(Analysis) 它是将文本块转换为有区别的、规范化的token的一个过程,目的是为了创建倒排索引以及 查询倒排索引。
数据准备
  本例使用ES版本为7.6.1
  1、创建索引
1 PUT /user
3 {
4 "s...
Elasticsearch学习笔记-第54节:初识搜索引擎_相关度评分TF&IDF算法独家解密
zongx的博客
01-09
225
课程大纲
1、算法介绍
relevance score算法,简单来说,就是计算出,一个索引中的文本,与搜索文本,他们之间的关联匹配程度
Elasticsearch使用的是 term frequency/inverse document frequency算法,简称为TF/IDF算法
Term frequency:搜索文本中的各个词条在field文本中出现了多少次,出现次数越多,就越相关
...
白话Elasticsearch24- 深度探秘搜索技术之TF&IDF算法/向量空间模型算法/lucene的相关度分数算法
小工匠
08-04
3068
文章目录概述boolean modelTF/IDFTF: term frequencyIDF:inversed document frequencylength normvector space model向量空间模型lucene的相关度分数算法boolean modellucene practical scoring functionquery normalization factorquery...
TF-IDF 算法 以及 Elasticsearch中的打分
weixin_44715126的博客
01-02
438
TF-IDF算法
elasticsearch打分机制
根据阅读量提高曝光度的方法
elasticsearch relevance score algorithm (一) :TF / IDF
virgil
10-10
58
题外话
记忆缩写的时候,最好记住它们的全拼,这样就能快速的反应出这个缩写是干什么的。
比如说 API,大家都知道代表接口的意思,但是具体来说接口是什么,就开始含糊其辞了。假如说我们记住 API 的全拼是 application program interface, 就可以直接回答出 API 是应用程序的入口。
1、 TF / IDF
Term Frequency / Inverse Document Frequency
词频 / 逆文档频率
使用场景: 在 elasticsearch version 5 及
Elasticsearch相关评分度TF/IDF算法揭秘
【原】编程界的小学生
05-18
1315
编程界的小学生一、算法介绍1、TF1.1、概念1.2、举例2、IDF2.1、概念2.2、举例3、补充3.1、说明3.2、举例二、Demo演示1、数据准备2、进行搜索3、结果分析
一、算法介绍
Elasticsearch采取的是TF/IDF算法来评估score的,而score决定了排序。每次搜索score分数越大的越靠前。
1、TF
1.1、概念
Term Frequency简称TF,就是搜索文本中的各个词条在要搜索的field文本中出现的次数,次数越多就越相关。
1.2、举例
比如:
doc1:hell
elasticsearch之字段field参数
qq_18218071的博客
02-06
3006
下面翻译下field的基本属性
elasticsearch 笔记十五:相关度评分TF&IDF算法简介
qzqanzc的博客
10-25
238
算法介绍
relevance score ,就是计算出一个索引中的文本,与搜索文本,他们之间的关系,它们之间的关联匹配度是由Elasticsearch使用的 term frequency/inverse document frequency 算法,简称TF/IDF算法
Term frequency :搜索文本中的各个词条在field 文本中出现多少次,出现的次数越多,就越相关
Inverse...
ElasticSearch(Lucene)TF-IDF原理及使用
icool_ali的博客
08-14
1013
TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)描述:
是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,
用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
字词的重要性随着它在文件中出现的次数成正比增加,
但同时会随着它在语料库中出现的频率成反比下降。
举例 一个词语在一篇文章中出...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
a flying bird
CSDN认证博客专家
CSDN认证企业博客
码龄6年
暂无认证
292
原创
2万+
周排名
8388
总排名
101万+
访问
等级
7741
积分
990
粉丝
701
获赞
73
评论
2238
收藏
私信
关注
热门文章
深度学习之卷积神经网络CNN 常用的几个模型
44969
Ubuntu16.04查看用户和密码以及忘记密码后重置解决方案
22715
batch norm、relu、dropout 等的相对顺序和BN、dropout的几个问题和思考
20797
深度学习之卷积神经网络CNN详解
20498
XGBoost之类别特征的处理
17097
分类专栏
论文解读和大咖技术号记录
付费
70篇
机器学习和深度学习实战
付费
6篇
scikit-learn源码阅读
付费
2篇
模型优化和压缩
15篇
推荐系统
39篇
其他
机器学习
31篇
算法工程
12篇
分布式深度学习
2篇
C++代码优化
7篇
docker
6篇
Django
3篇
深度学习
17篇
keras
9篇
pytorch
5篇
TensorFlow
25篇
C/C++
5篇
集成学习
15篇
NLP
22篇
spark
18篇
项目实战
7篇
基础算法和数据结构
35篇
专栏文章链接
3篇
软件安装和使用说明
10篇
最新评论
深度学习之批归一化Batch Normalization的原理和应用
m0_50696252:
请问mini-batch是不是就是batchsize呀?
Word2vec模型原理与keras、tensorflow实现word2vec
Methylene carbene:
同问这个K是哪来的
解决虚拟机提示VMware Workstation cannot connect to the virtual machine的问题
梦许惊:
谢谢佬
文本相似度和文本匹配模型归纳总结(附keras代码)
喝饱水没烦恼:
求完整代码,谢谢博主,邮箱zxf5912@126.com
深度学习之残差网络的原理
ZCONG呀:
图20那块是不是打错了啊,找不着图片呀
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
深度学习模型部署
深度学习Tensorflow生产环境部署
tensorrt部署深度学习模型
2022
10月
1篇
09月
5篇
08月
31篇
07月
64篇
06月
8篇
05月
14篇
04月
3篇
2021年39篇
2020年95篇
2019年46篇
2018年65篇
2017年2篇
目录
目录
分类专栏
论文解读和大咖技术号记录
付费
70篇
机器学习和深度学习实战
付费
6篇
scikit-learn源码阅读
付费
2篇
模型优化和压缩
15篇
推荐系统
39篇
其他
机器学习
31篇
算法工程
12篇
分布式深度学习
2篇
C++代码优化
7篇
docker
6篇
Django
3篇
深度学习
17篇
keras
9篇
pytorch
5篇
TensorFlow
25篇
C/C++
5篇
集成学习
15篇
NLP
22篇
spark
18篇
项目实战
7篇
基础算法和数据结构
35篇
专栏文章链接
3篇
软件安装和使用说明
10篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值