在 Elasticsearch 中,自定义词典是优化分词效果的核心手段,尤其适用于中文或专业领域的文本处理。以下是关于 ES 自定义词典的完整指南:

  1. 为什么需要自定义词典?
    默认分词不足:
    ES 自带的分词器(如 Standard Analyzer)对中文处理效果差(按字拆分),IK 分词器虽支持中文,但默认词库可能缺少特定领域词汇(如 “大模型”“元宇宙”)。
    业务需求:
    确保专业术语不被拆分(如 “机器学习” 不应拆分为 “机器”“学习”);
    识别品牌名、人名、地名等专有名词;
    处理网络热词或缩写(如 “yyds”“内卷”)。
  2. 如何配置自定义词典?
    以 IK 分词器为例,步骤如下:
    步骤 1:创建词典文件
    在 ES 安装目录下的 plugins/ik/config 目录中创建自定义词典文件(如 custom/mydict.dic):
    步骤 2:修改配置文件
    编辑 plugins/ik/config/IKAnalyzer.cfg.xml,添加自定义词典路径:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict">custom/mydic.dic</entry><!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords">custom/stopwords.dic</entry><!--用户可以在这里配置远程扩展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

路径规则:
使用 正斜杠 / 或分号 ; 分隔多个词典;
路径相对于 ik/config 目录(如 custom/mydict.dic 对应实际路径 plugins/ik/config/custom/mydict.dic)
我的myidct.dic自定义词典为:

有限公司
有限责任公司
人工智能
许家印
前首富

步骤 3:重启 ES 并验证

POST http://localhost:9200/_analyze
{"analyzer": "ik_smart","text": "中国前首富许家印"
}

结果:

{"tokens": [{"token": "中国","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0},{"token": "前首富","start_offset": 2,"end_offset": 5,"type": "CN_WORD","position": 1},{"token": "许家印","start_offset": 5,"end_offset": 8,"type": "CN_WORD","position": 2}]
}

去掉mydic.dic里面的内容,重启es,不采用自定义词典后的分词效果如下

{"tokens": [{"token": "中国","start_offset": 0,"end_offset": 2,"type": "CN_WORD","position": 0},{"token": "前","start_offset": 2,"end_offset": 3,"type": "CN_CHAR","position": 1},{"token": "首富","start_offset": 3,"end_offset": 5,"type": "CN_WORD","position": 2},{"token": "许","start_offset": 5,"end_offset": 6,"type": "CN_CHAR","position": 3},{"token": "家","start_offset": 6,"end_offset": 7,"type": "CN_CHAR","position": 4},{"token": "印","start_offset": 7,"end_offset": 8,"type": "CN_CHAR","position": 5}]
}

-----------------------------------------------手动分割线---------------------------------------------------

在 Elasticsearch 中,自定义词典和停用词是两种功能完全相反的配置,分别用于增强分词精度和过滤冗余信息。以下是核心区别和应用场景:

  1. 核心区别对比
    在这里插入图片描述
  2. 示例对比

场景:分析文本 “我爱自然语言处理”
自定义词典配置:

<entry key="ext_dict">custom/nlp.dic</entry>

nlp.dic 内容:

自然语言处理

分词结果:

["我", "爱", "自然语言处理"]  // “自然语言处理”被视为一个整体

停用词配置:

<entry key="ext_stopwords">stopwords.dic</entry>

stopwords.dic 内容:

我
的
了

分词结果:

["爱", "自然", "语言", "处理"]  // “我”被过滤
  1. 适用场景
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微算法科技技术突破:用于前馈神经网络的量子算法技术助力神经网络变革

随着量子计算和机器学习的迅猛发展&#xff0c;企业界正逐步迈向融合这两大领域的新时代。在这一背景下&#xff0c;微算法科技&#xff08;NASDAQ:MLGO&#xff09;成功研发出一套用于前馈神经网络的量子算法&#xff0c;突破了传统神经网络在训练和评估中的性能瓶颈。这一创新…

一文读懂循环神经网络(RNN)—语言模型+读取长序列数据(2)

目录 读取长序列数据 为什么需要 “读取长序列数据”&#xff1f; 读取长序列数据的核心方法 1. 滑动窗口&#xff08;Sliding Window&#xff09; 2. 分段截取&#xff08;Segmentation&#xff09; 3. 滚动生成&#xff08;Rolling Generation&#xff09; 4. 关键信息…

Oracle Virtualbox 虚拟机配置静态IP

Oracle Virtualbox 虚拟机配置静态IP VirtualBox的网卡&#xff0c;默认都是第一个不能自定义&#xff0c;后续新建的可以自定义。 新建NAT网卡、host主机模式网卡 依次点击&#xff1a;管理->工具->网络管理器新建host主机模式网卡 这个网卡的网段自定义&#xff0c;创建…

Linux RAID1 创建与配置实战指南(mdadm)

Linux RAID1 创建与配置实战指南&#xff08;mdadm&#xff09;一、RAID1 核心价值与实战目标RAID1&#xff08;磁盘镜像&#xff09; 通过数据冗余提供高可靠性&#xff1a;当单块硬盘损坏时&#xff0c;数据不丢失支持快速阵列重建读写性能略低于单盘&#xff08;镜像写入开销…

MySQL数据库----函数

目录函数1&#xff0c;字符串函数2&#xff0c;数值函数3&#xff0c;日期函数4&#xff0c;流程函数函数 1&#xff0c;字符串函数 MySQL中内置了很多字符串函数 2&#xff0c;数值函数 3&#xff0c;日期函数 4&#xff0c;流程函数

1.2 vue2(组合式API)的语法结构以及外部暴露

vue2 vue3中可以写vue2的语法&#xff0c;vue2的结构像一个花盆里的根&#xff08;根组件App.vue&#xff09;&#xff0c;根上可以插上不同的枝杈和花朵&#xff08;组件&#xff09;。 组件的结构&#xff1a; // 这里写逻辑行为 <script lang"ts"> export d…

Swift 解 LeetCode 324:一步步实现摆动排序 II,掌握数组重排的节奏感

文章目录摘要描述题解答案题解代码&#xff08;Swift&#xff09;题解代码分析步骤一&#xff1a;排序数组步骤二&#xff1a;左右指针分段步骤三&#xff1a;按位置交错插入示例测试及结果示例 1示例 2示例 3&#xff08;边界情况&#xff09;时间复杂度分析空间复杂度分析总结…

使用SQLMAP的文章管理系统CMS的sql注入渗透测试

SQLMAP注入演示&#xff1a;抓包拿到Cookie:召唤sqlmap&#xff1a;sqlmap -u "http://192.168.1.99:8085/show.php?id34" --cookie "pma_langzh_CN; kbqug_admin_username2621-PL_LxhFjyVe43ZuQvht6MI5q0ZcpRVV5FI0pzQ6XR8; kbqug_siteid2621-PL_LxhFjyVe4yA5…

I3C通信协议核心详解

一、物理层与电气特性双线结构 SCL&#xff08;串行时钟线&#xff09;&#xff1a;主设备控制&#xff0c;支持 推挽&#xff08;Push-Pull&#xff09;输出&#xff08;高速模式&#xff09;和 开漏&#xff08;Open-Drain&#xff09;&#xff08;兼容I2C模式&#xff09;。…

Docker搭建Redis哨兵集群

Redis提供了哨兵机制实现主从集群下的故障转移&#xff0c;其中包含了对主从服务的检测、自动故障恢复和通知。 1.环境 centos7、redis6.2.4、MobaXterm 目的&#xff1a; 搭建redis的主从同步哨兵集群&#xff08;一主一从三哨兵&#xff09; 2.步骤 1.主从集群的搭建 主从…

暑假Python基础整理 --异常处理及程序调试

异常概念 在程序运行过程中&#xff0c;经常会遇到各种各样的错误&#xff0c;这些错误统称为“异常”。如下表是Python常见的异常与描述&#xff1a; 异常描述NameError尝试访问一个未声明的变量引发错误IndexError索引超出序列范围引发错误IndentationError缩进错误ValueErr…

k8s-高级调度(二)

目录 Taint(污点)与Toleration(容忍) Taint&#xff08;污点&#xff09;&#xff1a;节点的排斥标记 Toleration&#xff08;容忍&#xff09;&#xff1a;Pod的适配声明 与节点亲和性的对比 警戒(cordon)和转移(drain) Cordon&#xff1a;节点隔离&#xff08;阻止新 Po…

基于OpenCV的深度学习人脸识别系统开发全攻略(DNN+FaceNet核心技术选型)

核心技术选型表 技术组件版本/型号用途OpenCV DNN4.5.5人脸检测FaceNet (facenet-pytorch)0.5.0人脸特征提取MiniConda最新版Python环境管理PyTorch1.8.0FaceNet运行基础OpenVINO2021.4模型加速(可选)SSD Caffe模型res10_300x300高精度人脸检测 一、环境准备与项目搭建 1.1 M…

【AI News | 20250714】每日AI进展

AI Repos 1、All-Model-Chat All Model Chat 是一款为Google Gemini API家族设计的网页聊天应用&#xff0c;支持多模态输入&#xff08;图片、音频、PDF等&#xff09;和多种模型&#xff08;如Gemini Flash、Imagen&#xff09;。它提供了丰富的自定义功能&#xff0c;包括高…

C 语言(二)

主要包括变量与常量、数据类型、存储方式、数制转换以及字符处理等内容一、变量与常量在 C 语言中&#xff0c;变量是用来存储数据的命名空间&#xff0c;它会在内存中分配地址。例如&#xff1a;int i; i 12345; 其中 i 是变量&#xff0c;12345 是常量。常量表示在程序运行过…

原型继承(prototypal inheritance)的工作原理

这是一个非常常见的 JavaScript 问题。所有 JS 对象都有一个__proto__属性&#xff0c;指向它的原型对象。当试图访问一个对象的属性时&#xff0c;如果没有在该对象上找到&#xff0c;它还会搜寻该对象的原型&#xff0c;以及该对象的原型的原型&#xff0c;依次层层向上搜索&…

OpenCV 视频处理与摄像头操作详解

1. 引言大家都来写OpenCV&#x1f60a;&#xff0c;学的好开心&#xff01;2. 视频基础与OpenCV简介2.1 视频的定义视频&#xff08;Video&#xff09;是由一系列静态图像&#xff08;帧&#xff09;以一定速率连续播放形成的动态影像。其本质是利用人眼的视觉暂留效应&#xf…

Agentic AI 的威胁与缓解措施

原文&#xff1a;https://www.aigl.blog/content/files/2025/04/Agentic-AI—Threats-and-Mitigations.pdf AI Agent 的定义 1. 定义与基础 智能代理&#xff08;Agent&#xff09;的定义&#xff1a; 智能代理是一种能够感知环境、进行推理、做出决策并自主采取行动以实现特定…

ArrayList列表解析

ArrayList集合 ArrayList 的底层是数组队列&#xff0c;相当于动态数组。与 Java 中的数组相比&#xff0c;它的容量能动态增长。在添加大量元素前&#xff0c;应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。 ArrayList 继承…

《恋与深空》中龙和蛇分别是谁的代表

在《恋与深空》宏大而神秘的世界观中&#xff0c;每一个符号都蕴含着深意。当玩家们热议“龙”和“蛇”这两种强大而古老的生物究竟代表着谁时&#xff0c;所有的线索都默契地指向了同一个名字——秦彻。 他不仅是力量与权威的象征“恶龙”&#xff0c;也是背负着宿命与纠葛的“…