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

中文分词器之结巴分词

gihub仓库以及有各种语言的分词实现

解决场景

1、解决搜索时通过中文分词器拿到结果然后匹配是否命中了敏感词库

maven依赖

 <properties><java.version>17</java.version><huban.version>1.0.2</huban.version></properties><!--  https://github.com/huaban/jieba-analysis      --><dependency><groupId>com.huaban</groupId><artifactId>jieba-analysis</artifactId><version>${huban.version}</version></dependency>

SEARCH模式

(适合 查询阶段(保证搜索召回)) 适合搜索使用

 /*** 原句: 我来到北京清华大学* 分词结果:* word=我, start=0, end=1* word=来到, start=1, end=3* word=北京, start=3, end=5* word=清华大学, start=5, end=9*/@Testpublic void testSegModeSearch() {JiebaSegmenter segmenter = new JiebaSegmenter();//        String sentence = "我来到北京清华大学";String sentence = "小明硕士毕业于中国科学院计算所";System.out.println("原句: " + sentence);// 精确搜索模式List<SegToken> tokens = segmenter.process(sentence, JiebaSegmenter.SegMode.SEARCH);System.out.println("分词结果:");for (SegToken token : tokens) {System.out.printf("word=%s, start=%d, end=%d%n",token.word, token.startOffset, token.endOffset);}}

INDEX模式

(适合 索引阶段(构建倒排索引)。) 模式 适合构建索引 因为会把长词更加细分
/**分词结果:word=小明, start=0, end=2word=硕士, start=2, end=4word=毕业, start=4, end=6word=于, start=6, end=7word=中国, start=7, end=9word=科学, start=9, end=11word=学院, start=10, end=12word=科学院, start=9, end=12word=中国科学院, start=7, end=12word=计算, start=12, end=14word=计算所, start=12, end=15*/@Testpublic void testSegModeIndex() {JiebaSegmenter segmenter = new JiebaSegmenter();String sentence = "小明硕士毕业于中国科学院计算所";List<SegToken> tokens = segmenter.process(sentence, JiebaSegmenter.SegMode.INDEX);System.out.println("分词结果:");for (SegToken token : tokens) {System.out.printf("word=%s, start=%d, end=%d%n",token.word, token.startOffset, token.endOffset);}}

使用自定义词库

dicts/jieba.dict

中国科学院计算所 3 ns
/*** https://www.cnblogs.com/xuchen163/p/13444973.html?utm_source=chatgpt.com* 使用自定义词库*/@Testpublic void testSegMode() {JiebaSegmenter segmenter = new JiebaSegmenter();String sentence = "小明硕士毕业于中国科学院计算所";String resultStr = segmenter.process(sentence, JiebaSegmenter.SegMode.INDEX).toString();System.out.println("-------------------切到的词:"+resultStr);Path path = Paths.get(new File( getClass().getClassLoader().getResource("dicts/jieba.dict").getPath() ).getAbsolutePath() ) ;//加载自定义的词典进词库WordDictionary.getInstance().loadUserDict( path ) ;//重新分词segmenter = new JiebaSegmenter();System.out.println(segmenter.process( sentence , JiebaSegmenter.SegMode.INDEX).toString());System.out.printf(resultStr);}

http://www.dtcms.com/a/364126.html

相关文章:

  • 00 - 浏览器的基础认知
  • lesson52:CSS进阶指南:雪碧图与边框技术的创新应用
  • LLM 能不能发展为 AGI?
  • Shell 秘典(卷七)—— 流刃裁文秘术・sed 玄章精解
  • windows下wsl2 ubuntu开发配置
  • VMWare虚拟网络编辑器:“将主机虚拟适配器连接到此网络”含义
  • RHEL9源码编译MySQL8.0.40
  • 25.9.2_NSSCTF-[HNCTF 2022 WEEK2]TTTTTTTTTea_WP
  • Corrosion: 2靶场渗透
  • 数字化转型的终极关怀:以人为本
  • day3
  • 运作管理学习笔记4-产能规划
  • Flowable——配置使用Flowable-UI
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(24):文法+单词第8回1
  • STM32—SPI协议
  • vLLM推理框架:pagedAttention算法+pipeline介绍+源码逐行注释
  • 【技术详解】 OpenZeppelin ERC1155:Solidity 多代币标准实现原理(附完整 Solidity 源码)​
  • 网络通信IP细节
  • 【Vue】前端 vue2项目搭建入门级(二)
  • 嵌入式概述 与 51 单片机
  • 【单片机day01】
  • 第二章:技术基石:写出“活”的代码(1)
  • 什么时候需要使用虚继承,什么是菱形继承
  • HI3519DRFCV500/HI3519DV500海思核心板IPC算力2.5T图像ISP超高清智能视觉应用提供SDK软件开发包
  • 平衡车-ADC采集电池电压
  • 从 Arm Compiler 5 迁移到 Arm Compiler 6
  • HandyControl 解决不全局引入控件部分内容不显示问题
  • 论文学习30:LViT: Language Meets Vision Transformerin Medical Image Segmentation
  • 给大模型开卷考试的机会——写给开发者的 RAG 技术入门
  • 2025年女性最实用的IT行业证书推荐:赋能职业发展的8大选择