IK分词器首先会维护几个词典来记录一些常用的词,如主词表:main2012.dic、量词表quantifier.dic、停用词stopword.dic。
Dictionary为字典管理类中,分别加载了这个词典到内存结构中。具体的字典代码,位于org.wltea.analyzer.dic.DictSegment。 这个类实现了一个分词器的一个核心数据结构,即Tire Tree。
Tire Tree(字典树)是一种结构相当简单的树型结构,用于构建词典,通过前缀字符逐一比较对方式,快速查找词,所以有时也称为前缀树。具体的例子如下。
比如:我是北京海淀区中关村的中国人民。
我们设置的词典是:北京、海淀区、中关村、中国、中国人民,那么根据词典组成的字典树如图所示:
海量数据搜索---demo展示百度、谷歌搜索引擎的实现然后我们根据这个字典树来对这段话进行词语切分。IK分词器中,基本可以分为两种模式:一种是smart模式、一种是非smart模式,可以在代码中初始化的时候去配置。
我们其实不用解释这两种模式的字面含义,直接打印两种模式的结果就可以看出来:
原句:我是北京海淀区中关村的中国人民
smart模式:北京、海淀区、中关村、中国人民非smart模式:北京、海淀区、中关村、中国、中国人民显而易见,非smart模式是将能够分出来的词全部输出;smart模式是根据内在的方法输出一个合理的分词结果,这就涉及到了歧义判断。
原文地址:https://blog.51cto.com/14539425/2437311
时间: 2024-10-02 06:23:52