当前位置: 首页 > news >正文

es的自定义词典和停用词

在 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.dtcms.com/a/279566.html

相关文章:

  • 天海电子闯上市:业绩增速骤降,“踩雷”合众汽车,存坏账风险
  • Go从入门到精通(22) - 一个简单web项目-统一日志输出
  • 5.浏览本地文件获取路径与文件名称 C#例子 WPF例子
  • Elasticsearch 9.x 升级变化
  • 【安卓笔记】线程基本使用:锁、锁案例
  • Windows安装postgreSQL(保姆级教程)
  • 机床自动化中的“方言翻译官”:EtherNet/IP 转 PROFIBUS DP 实战手记
  • 安全初级(一)
  • 胡志明证券交易所新一代交易系统解决方案——基于美联储利率决议背景下的越南跨境金融基础设施升
  • pycharm恢复出厂设置,可以解决大多数pycharm存在的问题
  • nginx:SSL_CTX_use_PrivateKey failed
  • 怎么 将训练后的词嵌入向量反编译为自然语言
  • AI多因子模型解析白银14年新高:流动性压力与工业避险需求的联动效应
  • 数字化工厂规划-项目启动会汇报材料编写思路
  • Android Studio C++/JNI/Kotlin 示例 二
  • 三相新能源并网系统序阻抗模型——序阻抗分析器IMAnalyzer
  • Docker部署语音转文字(STT)服务并接入Home Assistant
  • linux服务器redis配置开机自启
  • 2025 R3CTF
  • 我的开源项目-AI Agent 配置系统
  • 技嘉UEFI固件SMM漏洞使系统面临固件植入和持久控制风险
  • Oracle 学习笔记
  • 【工具变量】A股上市公司产学研合作及专利数据统计(1998-2023年)
  • TextIn:文档全能助手,让学习效率飙升的良心软件~
  • 《汇编语言:基于X86处理器》第7章 复习题和练习,编程练习
  • RAG索引流程中的文档解析:工业级实践方案与最佳实践
  • SMTPman,发送邮件服务器smtp怎么填才行?
  • 鹧鸪云:别墅光储项目方案设计的最终选择
  • 面试150 二叉树中的最大路径和
  • 水务工程中自动化应用:EtherNet/IP转PROFIBUS DP连接超声波流量计