word分词器、ansj分词器、IKanalyzer分词器、mmseg4j分词器、jcseg分词器对比

因项目需要,对目前比较流行的几个分词器进行了对比,ansj_seg是最美好的一个分词器,智能、强悍,对索引和最大颗粒分割都照顾得很到位,词库的树形读取也堪称经典;如果搜索只追求绝对准确度不考虑搜索结果最大化,jcseg效果还是很好的;如果只做站内搜索,不是海量互联网搜索引擎,可以考虑使用IKanalyzer,鼎鼎大名的知乎网用的也是IKanalyzer分词器;如果做推荐做分类可能会使用jcseg,毕竟只需要做最大颗粒分词就好:

1、word分词器 
word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。 能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。 同时提供了Lucene、Solr、ElasticSearch插件。 
可参考:

  • http://my.oschina.net/apdplat/blog/228615?p=1 里面对word分词器介绍得很详细
  • word分词器的主页:https://github.com/ysc/word

2、ansj 
ansj_seg分词器个人觉得是开源分词器里最强悍功能最丰富的。ansj_seg基于中科院的 ictclas 中文分词算法,智能、高效。虽然现在已经有ictclas 的for java版本,但是 ansj_seg从实现到使用来说要强大的多,而且作者自产自销自用,很多细节和小功能都有考虑,在索引和自然语言分析方面都有很优秀的表现。ansj_seg可以作为ictclas 算法实现的分词器的代表出场。 
可参考:

  • ansj分词器主页 https://github.com/NLPchina/ansj_seg
  • ansj_seg中文分词实例 http://www.blogchong.com/post/78.html

3、IKanalyzer 
IKanalyzer采用的是“正向迭代最细粒度切分算法”,是比较常见而且很容易上手的分词器了。一般新手上路学习lucene或者solr都会用这个。优点是开源(其实java分词器多是开源的,毕竟算法都是业内熟知的)、轻量、目前来看没有太大的bug,源码简单易懂,做二次开发也很简单,即使遇到solr/Lucene版本更新,只需要自己稍微修改下实现类就可以通用。缺点是过于简单白痴,只是简单的根据配置好的词库进行分词,没有任何智能可言,连“和服”、“和服务器”这种老梗都破不了。IKanalyzer可以作为非智能分词器的代表出场。 
可参考:

  • IKanalyzer分词代码:http://git.oschina.net/wltea/IK-Analyzer-2012FF/tree/master

4、mmseg4j 
mmseg4j用Chih-Hao Tsai 的MMSeg算法实现的中文分词器,并实现lucene的analyzer和solr的TokenizerFactory以方便在Lucene和Solr中使用。 MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex加了四个规则过虑。 
可参考:

  • 主页: http://technology.chtsai.org/mmseg/
  • 作者博客: http://chenlb.iteye.com/category/59447

5、jcseg 
jcseg分词器使用的是mmseg算法和fmm算法,这个分词器类似ansj_seg的很多地方,智能、人性化,个人感觉体验要超过同门师兄弟mmseg4j,所以可以作为mmseg算法实现的分词器的代表出场。 
可参考:

  • jcseg代码: http://git.oschina.net/lionsoul/jcseg

你可能感兴趣的:(elasticsearch)