IKAnalyzer流程总结

前段时间做Lucene相关的搜索引擎,它自带的中文分词工具不是很好,所以用到了IKAnalyzer,IKAnalyzer是林良益前辈开发的中文分词工具,它是基于词典的分词器,我花了一些时间看源码,简单总结一下流程:

1:加载词典
IKAnalyzer中主要包括3个词典:主词典,量词词典和停词词典
字典是以字典树(前缀树)存储的,当子节点树<3时,用数组存储(二分查找),节约存储空间,当子节点数>3时,用hashmap存储(直接存储),保证匹配效率

2:预处理
输入读到缓冲区,移动缓冲区指针,对指针所指字符串进行处理,规格化,全角转半角,大写转小写,类型判断(字符类型)

3:交由子分词器处理
有3个子分词器,LetterSegmenter(英文,阿拉伯字母),CN_QuantifierSegmenter(中文数词,量词),
CJK_Segmenter(中日韩文子分词器)
这3个处理流程都差不多,以CJK_Segmenter为例,它分smart和非smart模式,smart模式就是细粒度切分,根据词典,把能分出来的都分出来。非smart模式是对smart模式的一种后续处理,是对细粒度的一种过滤。

这3个分词器相互独立,各自生成各自的分词结果,放到分词候选集里,最后进行歧义处理,歧义处理中有一些定死的原则,比如:匹配长度越长越好,词的数量越少越好,路径跨度越长越好

4:后续处理
处理遗漏的中文字符,处理数量词
若中文量词刚好出现在中文数词的后面或者中文量词刚好出现在阿拉伯数字的后面,则把数词和量词合并,比如 九寸,十二亩

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值