您的位置:首页 > 其它

24_ElasticSearch TF&IDF算法以及向量空间模型

2018-03-23 07:38 357 查看

24_ElasticSearch TF&IDF算法以及向量空间模型

更多干货

分布式实战(干货)
spring cloud 实战(干货)
mybatis 实战(干货)
spring boot 实战(干货)
React 入门实战(干货)
构建中小型互联网企业架构(干货)
python 学习持续更新

ElasticSearch 笔记

一、概述

boolean model 类似and这种逻辑操作符,先过滤出包含指定term的doc
TF (term frequency) 一个term在一个doc中,出现的次数越多,那么最后给的相关度评分就会越高
IDF(inversed document frequency) 一个term在所有的doc中,出现的次数越多,那么最后给的相关度评分就会越低
length norm 搜索的那个field的长度,field长度越长,给的相关度评分越低; field长度越短,给的相关度评分越高
vector space model 向量空间模型

二、boolean model

类似and这种逻辑操作符,先过滤出包含指定term的docquery "hello world" --> 过滤 --> hello / world / hello & world
bool --> must/must not/should --> 过滤 --> 包含 / 不包含 / 可能包含
doc --> 不打分数 --> 正或反 true or false --> 为了减少后续要计算的doc的数量,提升性能

三、TF/IDF

单个term在doc中的分数query: 搜索关键字hello world 在doc.content中搜索
doc1: java is my favourite programming language, hello world !!!
doc2: hello java, you are very good, oh hello world!!!
hello对doc1的评分

1、TF: term frequency

找到hello在doc1中出现了几次,1次,会根据出现的次数给个分数
一个term在一个doc中,出现的次数越多,那么最后给的相关度评分就会越高

2、IDF:inversed document frequency

找到hello在所有的doc中出现的次数,3次
一个term在所有的doc中,出现的次数越多,那么最后给的相关度评分就会越低

3、length norm

hello搜索的那个field的长度,field长度越长,给的相关度评分越低; field长度越短,给的相关度评分越高

4、综合平分

最后,会将hello这个term,对doc1的分数,综合TF,IDF,length norm,计算出来一个综合性的分数
搜索关键字:hello world

--> doc1
--> hello对doc1的分数,world对doc1的分数
--> 但是最后hello world query要对doc1有一个总的分数
--> vector space model

四、vector space model 向量空间模型

1、例子:

多个term对一个doc的总分数
hello world
--> es会根据hello world在所有doc中的评分情况,计算出一个query vector,query向量
hello这个term,给的基于所有doc的一个评分就是2
world这个term,给的基于所有doc的一个评分就是5
doc vector,3个doc,一个包含1个term,一个包含另一个term,一个包含2个term
doc1:包含hello --> [2, 0]
doc2:包含world --> [0, 5]
doc3:包含hello, world --> [2, 5]


如图,取每个doc vector对query vector的弧度,给出每个doc对多个term的总分数每个doc vector计算出对query vector的弧度,最后基于这个弧度给出一个doc相对于query中多个term的总分数
弧度越大,分数月底; 弧度越小,分数越高
如果是多个term,那么就是线性代数来计算,无法用图表示


相关文章

ElasticSearch 笔记
1_ElasticSearch使用term filter来搜索数据
2_ElasticSearch filter执行原理 bitset机制与caching机制
3_ElasticSearch 基于bool组合多个filter条件来搜索数据
4_ElasticSearch 使用terms搜索多个值
5_ElasticSearch 基于range filter来进行范围过滤
6_ElasticSearch 控制全文检索结果的精准度
7_ElasticSearch term+bool实现的multiword搜索原理
8_基于boost的搜索条件权重控制
9_ElasticSearch 多shard场景下relevance score不准确
10_ElasticSearch dis_max实现best fields策略进行多字段搜索
11_ElasticSearch 基于tie_breaker参数优化dis_max搜索效果
12_ElasticSearch multi_match语法实现dis_max+tie_breaker
13_ElasticSearch multi_match+most fiels策略进行multi-field搜索
14_ElasticSearch 使用most_fields策略进行cross-fields search
15_ElasticSearch copy_to定制组合field进行cross-fields搜索
16_ElasticSearch 使用原生cross-fiels 查询
17_ElasticSearch phrase matching搜索
18_ElasticSearch 基于slop参数实现近似匹配
19_ElasticSearch 使用match和近似匹配实现召回率与精准度的平衡
20_ElasticSearch rescoring机制优化近似匹配搜索的性能
21_ElasticSearch 前缀搜索、通配符搜索、正则搜索
22_ElasticSearch 搜索推荐match_phrase_prefix实现search-time
23_ElsaticSearch 搜索推荐ngram分词机制实现index-time更多干货
日志管理ELK
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: