ES中文检索须知:分词器与中文分词器

news2024/11/14 12:22:08

ElasticSearch (es)的核心功能即为数据检索,常被用来构建内部搜索引擎或者实现大规模数据在推荐召回流程中的粗排过程

ES分词

分词即为将doc通过Analyzer切分成一个一个Term(关键字),es分词在索引构建数据检索时均有体现:

  1. 构建倒排索引时每一个term都指向包含这个term的多个doc。
  2. 搜索时需要通过分词将查询语句切分成一个一个term进行检索。

简单来说,ES的数据检索原理包含分词、基于分词结果计算相似度得分按得分从高到低排序返回指定长度下的排序结果三个主要步骤,本文主要关注中文场景下的分词过程。

query
分词
基于分词结果计算相似度得分
按得分从高到低返回指定长度下的排序结果

ES内置分词器

ES官方内置了一些常用的分词器(Analyzer,分词器在NLP中称为tokenzier,es使用analyzer的原因是除了分词之外后续还会进行一些文本分析的动作):

the quick brown-foxes jumped over the lazy dog’s bone. 该英语句子是一个经典的自然语言处理例句,它是全字母句,包含了全部26个字母。

分词器作用分词对象结果示例
Standard Analyzer标准分词器,也是默认的分词器,基于Unicode文本分割算法。默认分词器适用于英语,并且对大多数语言都有效The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog’s, bone ]
Simple Analyzer简单分词器,基于非字母字符进行分词,单词会转为小写字母,非字母字符如数字、空格、连字符和撇号将被丢弃The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ the, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
Whitespace Analyzer空格分词器,按空格进行切分The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog’s, bone. ]
Stop Analyzer在简单分词器的基础上增加了停用词的功能The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]
Keyword Analyzer关键词分词器,将整个输入句子认为是关键字直接返回,不分词The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.]
Pattern Analyzerpatter分词器,patter指的是正则的pattern,利用正则表达式对文本进行切分,支持停用词The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]
Language Analyer针对特定语言的分析器--
Fingerprint Analyzer指纹分词器,是一种专业分词器,可通过创建指纹来进行重复检测的--
Custom Analyzer如果以上没有符合需求的分词器,es也允许通过添加插件的方式添加自定义分词器--

注:停用词,英文称为Stop Words,是在信息检索和自然语言处理过程中,为了节省存储空间和提高搜索效率,系统会自动过滤掉某些出现频率高但又不具有实际意义的字或词。这些被过滤的词语通常包括语气词、连词、介词等,例如汉语中的“的”、“以及”、“甚至”、“吧”,以及英语中的“the”、“a”、“also”等。

在中文场景下,有一个踩坑点是,默认的Standard Analyzer会按照一个汉字一个汉字切分的方式来分词,这样构建的索引缺乏语义信息,导致检索效果不佳,因而中文场景下需要使用专门的分词器。
在这里插入图片描述

中文分词器

常用的中文分词器有两个比较主流的:ik analyzersmartcn(Smart Chinese Analyzer)

ik analyzer

ik analyzer 是一个基于开源项目IK Analysis进行开发的第三方的中文分词器。IK Analyzer提供了细粒度的中文分词能力,支持词库扩展、自定义词典、停用词过滤、同义词扩展等功能,可以根据具体需求进行匹配和定制。适用于更精确的分词和分析需求。

ik analyzer支持两种分词方法,可以在构建索引时指定:

  1. ik_max_word:将需要分词的文本做最小粒度的拆分,尽可能分出更多的词
  2. ik_smart_word:将需要分词的文本做最大粒度的拆分,尽可能分出更少的词

git上下载插件,存到es插件目录,重启es服务即可使用:

wget https://github.com/medcl/elasticsearch-analysis-ik/releases
smartcn

smartcn是es内置的中文分词器,使用机器学习算法进行分词,同时适用于简体中文和繁体中文,具有较高的分词准确率和召回率,适用于大多数中文文本检索场景。因为是内置的,所以优点是无需额外配置即可使用。

参考文献

  1. ElasticSearch 中的中文分词器以及索引基本操作详解
  2. 【9种】ElasticSearch分词器详解,一文get!!!| 博学谷狂野架构师
  3. ELK(六)分词器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1613172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(避雷指引:管理页面超时问题)windows下载安装RabbitMQ

一、背景: 学习RabbitMQ过程中,由于个人电脑性能问题,直接装在windows去使用RabbitMQ,根据各大网友教程,去下载安装完之后,使用web端进行简单的入门操作时,总是一直提示超时,要么容…

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器(TcpServer板块)

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现⾼并发服务器(TcpServer板块) 一、思路图二、模式关系图三、定时器的设计1、Linux本身给我们的定时器2、我们自己实现的定时器(1)代码部分(2)思…

图论——基础概念

文章目录 学习引言什么是图图的一些定义和概念图的存储方式二维数组邻接矩阵存储优缺点 数组模拟邻接表存储优缺点 边集数组优缺点排序前向星优缺点链式前向星优缺点 学习引言 图论,是 C 里面很重要的一种算法,今天,就让我们一起来了解一下图…

使用docker搭建GitLab个人开发项目私服

一、安装docker 1.更新系统 dnf update # 最后出现这个标识就说明更新系统成功 Complete!2.添加docker源 dnf config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo # 最后出现这个标识就说明添加成功 Adding repo from: https://download.…

【数据结构】顺序表:与时俱进的结构解析与创新应用

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 数据结构与算法 先赞后看,已成习惯 创作不易,多多支持! 目录 一、数据结构的概念 二、顺序表(Sequence List) 2.1 线性表的概念以及结构 2.2 顺序表分类 …

SpringMVC深解--一起学习吧之架构

SpringMVC的工作原理主要基于请求驱动,它采用了前端控制器模式来进行设计。以下是SpringMVC工作原理的详细解释: 请求接收与分发: 当用户发送一个请求到Web服务器时,这个请求首先会被SpringMVC的前端控制器(Dispatche…

ExpertPrompting:指导大语言模型成为杰出专家

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 论文标题:ExpertPrompting: Instructing Large Language Models to be Distinguished Experts 论文地址:https://arxiv.org/abs/2305.14688 作者 & 机构:Benfen…

【号码工具】批量手机号码归属地查询,一次性查询40万个,如何大批量的进行手机号码归属地查询

前言: 批量的筛选出一个地区的手机号码、批量查询一批号码的归属地,按城市分类,按省份分类,按运营商分类,都可以,比如我想找广东省的,那么查询好后,就按照省进行分类,找…

Spring Security之Session管理

前言 在聊认证过滤器的时候,我们埋了个坑:Session管理。实际上,事情从这里开始,就变得复杂了。提前跟大家交个底:后续我们将涉及多个需要协同才能完成的功能。 什么是Session 想要管理session,就必须搞清…

分析和比较深度学习框架 PyTorch 和 Tensorflow

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 深度学习作为人工智能的一个重要分支,在过去十年中取得了显著的进展。PyTorch 和 TensorFlow 是目前最受欢迎、最强大的两个深度学习框架,它们各自拥有独特的特点和优势。 1. Py…

Llama 3大模型发布!快速体验推理及微调

Meta,一家全球知名的科技和社交媒体巨头,在其官方网站上正式宣布了一款开源的大型预训练语言模型——Llama-3。 据了解,Llama-3模型提供了两种不同参数规模的版本,分别是80亿参数和700亿参数。这两种版本分别针对基础的预训练任务…

【系统分析师】软件工程

文章目录 1、信息系统生命周期2、软件开发模型2.1 原型及其演化2.2 增量模型和螺旋模型2.3 V模型、喷泉模型、快速应用开发2.4 构件组装模型2.5 统一过程-UP2.6 敏捷方法 3、逆向工程4、净室软件工程 【写在前面】 记录了一系列【系统分析师】文章,点击下面的链接&a…

【Kyuubi】Apache Kyuubi 1.8 特性解读

Apache Kyuubi 1.8 特性解读 1.Apache Kyuubi 简介2.场景扩展 —— 在线分析,离线跑批3.流式增强 —— 流批一体,面向未来4.企业特性 —— 行业沉淀,持续打磨5.开源社区 —— 开放包容,合作共赢 本文来自于 Apache Kyuubi PMC Mem…

数据结构与算法解题-20240421

数据结构与算法解题-20240421 一、278. 第一个错误的版本二、541. 反转字符串 II三、右旋字符串四、替换数字五、977.有序数组的平方 一、278. 第一个错误的版本 简单 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有…

深度学习-优化策略

1.使用众所周知的梯度下降法。 (1).批量梯度下降法:每次参数更新使用所有的样本(2).随机梯度下降法:每次参数更新只使用一次样本(3).小批量梯度下降法:每次参数更新使用…

【python】启动一个公司级项目的完整报错和解决方案

启动一个项目对于新手都是不容易的事情 操作 打开项目 使用pyCharm打开python项目以后,先找main方法,一般在根目录有一个.py的文件 点进去以后会让你配置Python解释器 每个项目都有自己的一个虚拟环境,配置自己的解释器,可能…

Gitea 简单介绍、用法以及使用注意事项!

Gitea 是一个轻量级的代码托管解决方案,它提供了一个简单而强大的平台,用于托管和协作开发项目。基于 Go 语言编写,与 GitLab 和 GitHub Enterprise 类似,但专为自托管而设计。以下是对 Gitea 的详细介绍,包括常用命令…

【语音识别】在Win11使用Docker部署FunASR服务器

文章目录 在 Win11 使用 Docker 部署 FunASR 服务器镜像启动服务端启动监控服务端日志下载测试案例使用测试案例打开基于 HTML 的案例连接ASR服务端 关闭FunASR服务 在 Win11 使用 Docker 部署 FunASR 服务器 该文章因官网文档不详细故写的经验论 官网文章:https:/…

Wpf 使用 Prism 实战开发Day21

配置默认首页 当应用程序启动时&#xff0c;默认显示首页 一.实现思路&#xff0c;通过自定义接口来配置应用程序加载完成时&#xff0c;设置默认显示页 步骤1.创建自定义 IConfigureService 接口 namespace MyToDo.Common {/// <summary>/// 配置默认显示页接口/// <…

Android Studio Emulator一直卡在Google Logo出不来

我尝试在androidstudio模拟器中运行我的应用程序&#xff0c;模拟器已经打开&#xff0c;但一直停留在Google徽标加载界面半个小时了都退不出来&#xff0c;也进不去。 解决方案如下&#xff1a; 我们创建模拟设备的时候&#xff0c;界面上会显示&#xff1a; 1.不要使用带有…