今天看了一下 IK 的源代码, 网上已经有很多文章, 此文章是他们的补充.
比如有个字符串 "张三说的确实在理", 经过分词后变成
第一部分: 张三 三(数词)
第二部分: 说的 的确 确实 实在 在理
其中第一部分是有交集的, 于是可以进入 judge 阶段, 最终 "三" 被 PK 下去, 只留下了 "张三". 然后加入最优集合
this.pathMap.put(path.getPathBegin(), path);
第二部分也是有交集的, 于是这 5 个词进入 judge, 最终留下 "说的" "确实" "在理", 三个词, 然后加入最优集合.
最终将这两个部分的词加入结果集中
private LinkedList<Lexeme> results;
最终 result 集合经过数量词合并 (合并英文数词 + 中文数词, 英文数词 + 中文量词, 中文数词 + 中文量词) 及停词剔除, 输入最终的分词结果.
来源: http://www.bubuko.com/infodetail-2879400.html