ElasticSearch学习随笔之分词算法

ElasticSearch

1、ElasticSearch学习随笔之基础介绍
2、ElasticSearch学习随笔之简单操作
3、ElasticSearch学习随笔之java api 操作
4、ElasticSearch学习随笔之SpringBoot Starter 操作
5、ElasticSearch学习随笔之嵌套操作
6、ElasticSearch学习随笔之分词算法
7、ElasticSearch学习随笔之高级检索
8、ELK技术栈介绍
9、Logstash部署与使用
10、ElasticSearch 7.x 版本使用 BulkProcessor 实现批量添加数据
11、ElasticSearch 8.x 弃用了 High Level REST Client,移除了 Java Transport Client,推荐使用 Elasticsearch Java API
12、ElasticSearch 8.x 使用 snapshot(快照)进行数据迁移
13、ElasticSearch 8.x 版本如何使用 SearchRequestBuilder 检索
14、ElasticSearch 8.x 使用 High Level Client 以 HTTPS 方式链接,SSL 证书、主机名验证器 各是什么,如何忽略
15、ElasticSearch 8.x 创建父子文档,用Join类型字段以及用has_child、has_parent 检索

ElasticSearch,创始人 Shay Banon(谢巴农)
本文主要讲解ElasticSearch 主要使用的分词算法。



前言

本文主要对ElasticSearch分词算法进行简单讲解,在了解算法之前,我们先要知道两点,什么是相关性和相关性算分
站在用户的角度来看,检索是什么呢?检索是用户通过关键词查找针对这个关键词比较有相关性的结果,也就是说,用户其实主要关系的是搜索结果的相关性,主要涉及以下几个问题:

  • 是否找到所有相关的内容。
  • 是否得到了很多内容是不相关的。
  • 排在最前面的搜索结果打分是否合理。
  • 结合需求,结果排名是否平衡。

那如何衡量相关性呢?主要看三点:

  • Precision(查准率),尽可能的返回较少的无相关的文档。
  • Recall(查全率),尽量返回较多的相关的文档。
  • Ranking(排序),能够按照相关性进行排序。

所以,相关性算分,描述了一个文档和查询语句匹配的程度。在 query 方式检索时,ES 会对每个匹配结果进行算分(_score)。打分的本质就是排序,把分值最高的放在最前面展示给用户。

在ES5之前使用的是 TF-IDF 算法,后面到现在8.x版本使用 BM25 算法。

一、TF-IDF

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

Lucene中的TF-IDF评分公式:
TD-IDF评分公式
主要看这里:

  • TF(Term frequency)是词频
    • 检查的关键词在文档中出现的频率越高,相关性越高。
  • IDF(Inverse document frequency)是逆向文本频率
    • 每个检索词在索引中出现的频率,频率越高,相关性越低。
  • 字段长度归一值(Field-length norm)
    • 字段的长度是多少?字段越短,字段的权重越高。检索词出现在一个内容短的字段(title)要比出现在一个内容长的字段(content)权重更大。

以上三个因素 TF、IDF、Field-length norm 一起计算单个词在特定文档中的权重。

二、BM25

BM25 是对 TF-IDF 算法的改进,在 TD-IDF 算法中,TF 部分的值越大,整个计算公式返回的值就越大。BM25 就是针对这点进行优化的,随着 TF 部分值的逐步增大,那返回的值则会逐步趋于一个数值。
而在 ES 5开始,默认的算法就是 BM25。

当TF无限增加时,BM25算法会趋于一个数值,见下图:
BM25算法和TF-IEF算法
BM25 公式如下:
BM25公式

三、Explain查看TF-IDF

Explain查看TF-IDF

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IK分词器(IK Analyzer)是一种基于词典和规则的中文分词工具,专门用于在Elasticsearch中进行中文文本的分词处理。IK分词器使用了一些算法和技术来实现中文分词功能。 IK分词器的算法包括以下几个关键步骤: 1. 正向最大匹配(Forward Maximum Matching):将待分词的文本从左到右进行扫描,并与词典中的词进行匹配。选择匹配到的最长词作为当前的分词结果,并将已匹配的部分从待分词文本中移除。然后继续扫描剩余的文本,直到完成整个分词过程。 2. 逆向最大匹配(Reverse Maximum Matching):与正向最大匹配类似,但是从右到左进行扫描。选择匹配到的最长词作为当前的分词结果,并将已匹配的部分从待分词文本中移除。然后继续扫描剩余的文本,直到完成整个分词过程。 3. 双向最大匹配(Bidirectional Maximum Matching):结合了正向最大匹配和逆向最大匹配两种方法。首先进行正向最大匹配,然后进行逆向最大匹配,并选择其中分词结果更合理的一种。 除了最大匹配算法,IK分词器还使用了其他技术和规则来处理一些特殊情况,例如处理未登录词、处理数字、处理英文等。 需要注意的是,IK分词器并不是基于机器学习算法分词器,它主要依赖于词典和规则来进行分词。如果您需要更高级的中文分词功能,您可以考虑使用其他基于机器学习分词器,结巴分词(jieba)或哈工大LTP分词器。 希望以上信息对您有所帮助。如果您有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值