中文分词技术在文本处理分析、搜索引擎、AI自然语言识别等领域都有着非常广泛的应用,最近我也在研究SEO中的内容文本分析,掌握分词的原理可以说是必不可少的。在python机器学习中文处理普遍都用到了 jieba 分词器,后来发现 jieba 还有个java版本的,正好有需要,直接拿来用了,也看了核心的源码,注释倒是没有的,所以自己记录一下阅读源码过程中的理解。
源码介绍
结巴分词(java版) jieba-analysis
源码:https://github.com/huaban/jieba-analysis
支持分词模式
- Search模式,用于对用户查询词分词
- Index模式,用于对索引文档分词
特性
- 支持多种分词模式
- 全角统一转成半角
- 用户词典功能
- conf 目录有整理的搜狗细胞词库
使用介绍
使用起来还是非常简单的
JiebaSegmenter segmenter = new JiebaSegmenter();
String keywords= "很多非技术型的产品经理弄不清楚需求设计边界"
+ ",技术人员更容易接收“确定的”,“完整逻辑覆盖”的需求。"
+ "怎么说呢?每种业务可能出现的情况,产品设计要有对应的解决方案,"
+ "大到一个完整处理流程,小到一个错误提示,都需要你想到,"
+ "不提前设计好这些规则,那么就提前健健身吧";
System.out.println(segmenter.process(keywords, SegMode.INDEX).toString());
System.out.println(segmenter.process(keywords, SegMode.SEARCH).toString());
执行结果:SEARCH是基本模式,而INDEX会将SEARCH模式结果中的长词再次拆分
结果中关键词后边跟着的是该词在整个文本中的位置索引
[[很多, 0, 2], [非, 2, 3], [技术, 3, 5], [技术型, 3, 6], [的, 6, 7], [产品, 7, 9], [经理, 9, 11], [弄, 11, 12], [不, 12, 13], [清楚, 13, 15], [需求, 15, 17], [设计, 17, 19], [边界, 19, 21], [,, 21, 22], [技术, 22, 24], [人员, 24, 26], [技术人员, 22, 26], [更, 26, 27], [容易, 27, 29], [接收, 29, 31], [“, 31, 32], [确定, 32, 34], [的, 34, 35], [”, 35, 36], [,, 36, 37], [“, 37, 38], [完整, 38, 40], [逻辑, 40, 42], [覆盖, 42, 44], [”, 44, 45], [的, 45, 46], [需求, 46, 48], [。, 48, 49], [怎么, 49, 51], [说, 51, 52], [呢, 52, 53], [?, 53, 54], [每种, 54, 56], [业务, 56, 58], [可能, 58, 60], [出现, 60, 62], [的, 62, 63], [情况, 63, 65], [,, 65, 66], [产品, 66, 68], [设计, 68, 70], [产品设计, 66, 70], [要, 70, 71], [有, 71, 72], [对应, 72, 74], [的, 74, 75], [解决, 75, 77], [方案, 77, 79], [解决方案, 75, 79], [,, 79, 80], [大到, 80, 82], [一个, 82, 84], [完整, 84, 86], [处理, 86, 88], [流程, 88, 90], [,, 90, 91], [小到, 91, 93], [一个, 93, 95], [错误, 95, 97], [提示, 97, 99], [,, 99, 100], [都, 100, 101], [需要, 101, 103], [你, 103, 104], [想到, 104, 106], [,, 106, 107], [不, 107, 108], [提前, 108, 110], [设计, 110, 112], [好, 112, 113], [这些, 113, 115], [规则, 115, 117], [,, 117, 118], [那么, 118, 120], [就, 120, 121], [提前, 121, 123], [健, 123, 124], [健身, 124, 126], [吧, 126, 127]]
[[很多, 0, 2], [非, 2, 3], [技术型, 3, 6], [的, 6, 7], [产品, 7, 9], [经理, 9, 11], [弄, 11, 12], [不, 12, 13], [清楚, 13, 15], [需求, 15, 17], [设计, 17, 19], [边界, 19, 21], [,, 21, 22], [技术人员, 22, 26], [更, 26, 27], [容易, 27, 29], [接收, 29, 31], [“, 31, 32], [确定, 32, 34], [的, 34, 35], [”, 35, 36], [,, 36, 37], [“, 37, 38], [完整, 38, 40], [逻辑, 40, 42], [覆盖, 42, 44], [”, 44, 45], [的, 45, 46], [需求, 46, 48], [。, 48, 49], [怎么, 49, 51], [说, 51, 52], [呢, 52, 53], [?, 53, 54], [每种, 54, 56], [业务, 56, 58], [可能, 58, 60], [出现, 60, 62], [的, 62, 63], [情况, 63, 65], [,, 65, 66], [产品设计, 66, 70], [