一直以来想写个自己的中文分词器,从2013年5月份写了基于二分插入、双数组算法实现的中文粗分词,之后由于各种原因未能进一步完善达到一个标准分词器的水准,自上周从公司离职后,历经一周的努力,并在ansj分词的辅助参考下,终于取得了不错的突破,希望有对这块感兴趣的同学可以在此互相交流。
现在分词达到的基本要求是:
1、基于双数组结构实现的机械分词
2、词条删除与增加、以及对已有词条的缓存读写。
3、词意消歧的处理,包括n-gram和词性的总词频数的两个因子,效果已达到。
4、词性标注在词意消歧的基础上,用viterbi算法取最优路径,达到预定效果。
5、分词准确率约为94%以上,分词速率为50万字/秒,暂味在此着重优化,还有很大提升空间,到100万字是肯定有把握的。
6、新词发现放于下阶段去实现。
有想法的同学可以和我联系,我也会不定期的将开源版本放到 http://github.com/erliang20088。
下一段会写将SkyLightAnalyzer分词器放到最新版的Lucene4.5中的接口设计与实现。