这是刚入数据挖掘组,只有读过吴军《数学之美》的情况下做的中文分词调研。很简练,是那个时候的笔记。是我在NLP和数据挖掘的开端,在离开小组前,整理出来,以作纪念。
1. IK Analyzer
IK Analyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。
初判:使用文法分析的算法一般不适合扩展,文法无法覆盖现实语言中的所有文法(不满足完备);现实语言是动态发展的,文法的提取的通过历史经验总结的,需要有一定的时间延迟;文法抽象不是一般程序员所能完成的任务,所以扩展性会有一定的约束。
2. 盘古分词
盘古分词是一个基于 .net framework 的中英文分词组件。
初判:没有java实现版本
3. Mmseg4j
1、mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/ )实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。
2、MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。
测试:发现开源现有的词库太老,分词效果一般。
4. JCSEG
Jcseg[dʒɛ'ke'sɛ]是使用Java开发的一个开源中文分词器,使用流行的mmseg算法实现,并且提供了最高版本的lucene, solr, elasticsearch(New)的分词接口.
(1).简易模式:FMM算法,适合速度要求场合。
(2).复杂模式-MMSEG四种过滤算法,具有较高的岐义去除,分词准确率达到了98.41%。
(3).(!New)检测模式:只返回词库中已有的词条,很适合某些应用场合。(1.9.4版本开始)
初判:算法比较好理解,有配置文件和自定义词典接口,方便程序的特定配置;可选择词性等功能。
5. Bamboo
bamboo是一个中文语言处理系统。目前包括中文分词和词性标注部分。
bamboo提供了C,PHP,PostgreSQL的编程接口。
初判:没有java版本
最后,我选择的jcseg。个人觉得这是一款非常优秀的中文分词工程,其分层很好,也留下了很好的配置入口,可以方便用户自定义。本人已使用该中文分词工程于社区搜索引擎的中文分词,公司社区语料库的新词发现,语义理解,文章打标签等应用。