对几种中文分析器,从分词准确性和效率两方面进行比较。分析器依次为:StandardAnalyzer、ChineseAnalyzer、CJKAnalyzer、IK_CAnalyzer、MIK_CAnalyzer、MMAnalyzer(JE分词)、PaodingAnalyzer。
单纯的中文分词的实现一般为按字索引或者按词索引。按字索引顾名思义,就是按单个字建立索引。按词索引就是按词喽,根据词库中的词,将文字进行切分。车东的交叉双字分割或者叫二元分词我觉得应该算是按字索引的改进,应该还是属于字索引的范畴吧。
分词准确性的评估比较难,很难有统一的标准,不同应用的要求也不同,这个统一以“2008年8月8日晚,举世瞩目的北京第二十九届奥林匹克运动会开幕式在国家体育场隆重举行。”为例说明。
分词效率,统一使用《射雕英雄传》的全文文本为例说明。呵呵。对于按词索引的分析器,使用统一的基本词库,词汇量为227,719个。在开发环境下运行,性能不准确,但可比较相对值。
分析器:
按字 |
StandardAnalyzer |
Lucene自带的标准分析器。 |
|
ChineseAnalyzer |
Lucene contrib中附带的分析器,与StandardAnalyzer类似。注意是类似啊,还是有区别的。 |
|
CJKAnalyzer |
Lucene contrib中附带的二元分词 |
按词 |
IK_CAnalyzer、MIK_CAnalyzer |
http://lucene-group.group.iteye.com/group/blog/165287。使用版本为2.0.2 |
|
MMAnalyzer |
现在能找到的最新版本是1.5.3。不过在原始网站已经找不到下载了,而且据说声明为不提供维护和支持。因为谈论的人比较多,所以列出来。但在使用中感觉不太稳定。 |
|
PaodingAnalyzer |
庖丁解牛。http://code.google.com/p/paoding/downloads/list。使用版本为2.0.4beta。 |
分词准确性:
StandardAnalyzer |
2008/年/8/月/8/日/晚/举/世/瞩/目/的/北/京/第/二/十/九/届/奥/林/匹/克/运/动/会/开/幕/式/在/国/家/体/育/场/隆/重/举/行/ |
一元分词,没什么好说的。 |
ChineseAnalyzer |
年/月/日/晚/举/世/瞩/目/的/北/京/第/二/十/九/届/奥/林/匹/克/运/动/会/开/幕/式/在/国/家/体/育/场/隆/重/举/行/ |
还是有区别吧,这是因为ChineseAnalyzer只对Character.LOWERCASE_LETTER、Character.UPPERCASE_LETTER、和Character.OTHER_LETTER进行了处理,其他类型的都滤掉了。具体可以参见代码。 |
CJKAnalyzer |
2008/年/8/月/8/日晚/举世/世瞩/瞩目/目的/的北/北京/京第/第二/二十/十九/九届/届奥/奥林/林匹/匹克/克运/运动/动会/会开/开幕/幕式/式在/在国/国家/家体/体育/育场/场隆/隆重/重举/举行/ |
二元分词,作为一元分词的改进,建立的索引小于一元,查询效率较好,能满足一般的查询要求。 |
PaodingAnalyzer |
2008/年/8/月/8/日/晚/举世/瞩目/举世瞩目/目的/北京/二/第二/十/二十/第二十/九/十九/二十九/九届/奥林/奥林匹克/运动/运动会/奥林匹克运动会/开幕/开幕式/国家/体育/体育场/隆重/举行/隆重举行/ |
细粒度全切分。对于不在词典中的词进行二元分词。 |
IK_CAnalyzer |
2008年/2008/年/8月/8/月/8日/8/晚/举世瞩目/举世/瞩目/目的/北京/第二十九届/第二十九/第二十/第二/二十九/二十/十九/九届/九/奥林匹克运动会/奥林匹克/奥林/运动会/运动/开幕式/开幕/在国/国家/国/体育场/体育/隆重举行/隆重/举行/行/ |
细粒度全切分。对于不在词典中的词进行二元分词。 |
MIK_CAnalyzer |
2008年/8月/8日/晚/举世瞩目/目的/北京/第二十九届/奥林匹克运动会/开幕式/在国/国家/体育场/隆重举行/ |
最大匹配分词。和细粒度全切分配合使用。 |
MMAnalyzer |
2008/年/8/月/8/日/晚/举世瞩目/北京/第二十/九届/奥林匹克运动会/开幕式/国家/体育场/隆重举行/ |
对于不在字典项的内容,进行一元分词。 |
分词性能(毫秒):
分析器 |
第一次 |
第二次 |
第三次 |
分词数 |
StandardAnalyzer |
243 |
246 |
241 |
767675 |
ChineseAnalyzer |
245 |
233 |
242 |
766298 |
CJKAnalyzer |
383 |
383 |
373 |
659264 |
PaodingAnalyzer |
927 |
899 |
909 |
482890 |
IK_CAnalyzer |
1842 |
1877 |
1855 |
530830 |
MIK_CAnalyzer |
2009 |
1978 |
1998 |
371013 |
MMAnalyzer |
2923 |
2933 |
2948 |
392521 |
需要说明的是,IK_CAnalyzer在性能上对于词典的敏感度较高。
总结:
对于一般性的应用,采用二元分词法应该就可以满足需求。如果需要分词的话,从分词效果、性能、扩展性、还是可维护性来综合考虑,建议使用庖丁解牛。
相关推荐
本文构造出一种适应中英文信息处理的Lucene语言分析器,该分析器的核心模块——分词器所使用的分词算法是一种基于词典的中文分词算法,该算法具体实现上采用了基于词前缀哈希技术来进行逐字匹配,采用基于规则统计...
用java实现的,利用了lucene里面的standardAnalyzer分析器实现的分词,可以去停用词,再利用波特算法实现 词干提取 最后排序 和词频统计输出
Struts标签Lucene中文分词构建基于词典的Lucene分析器使用Log4j进行日志记录 您使用过旅游指南吗?它总是能让我们快速的找到目的地。我对此有深刻的印象,希望这篇指南也能使您快速的完成Struts标签相关的任务。我...
IKAnalyzer是一个开源的,基于Java语言开发的轻量级的中文分词语言包,它是以Lucene为应用主体,结合词典分词和文法分析算法的中文词组组件。从3.0版本开始,IK发展为面向java的公用分词组件,独立Lucene项目,同时...
IKAnalyzer继承Lucene的Analyzer抽象类,使用IKAnalyzer和Lucene自带的分析器方法一样,将Analyzer测试代码改为IKAnalyzer测试中文分词效果。 如果使用中文分词器ik-analyzer,就需要在索引和搜索程序中使用一致的...
最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。 从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,独立于 Lucene 项目,同时提供了对 Lucene 的默认优化实现。 在 2012...
Lucene的基础知识 1、案例分析:什么是全文检索...a) 测试分析器的分词效果 b) 第三方中文分析器 7、索引库的维护 a) 添加文档 b) 删除文档 c) 修改文档 Lucene的高级查询、solr入门 solr在项目中的应用及电商搜索实现
根据lucene最新版本5.5做同义词分析器,熟悉内部分析构造
1.IKAnalyzer3.0介绍 IKAnalyzer是一个开源的,基于java... * 针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。
最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK...
IK Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。它使用了全新的正向迭代最细粒度切分算法。可以结合lucene4.0使用
由于Lucene自带的ChineseAnalyzer和CJKAnalyzer两种中文分析器不能够...结果显示,改进后的分析器分词效果明显优于Lucene自带的两种分析器,提高了全文检索系统的中文处理能力,系统的查全率和查准率都达到用户的需求。
针对Lucene自带中文分词器分词效果差的缺点,在分析现有分词词典机制的基础上,设计了基于全哈希整词二分算法的分词器,并集成到Lucene中,算法通过对整词进行哈希,减少词条匹配次数,提高分词效率。该分词器词典...
word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。 能准确识别英文、数字,以及日期、时间等数量词,能...5、Java开源项目cws_evaluation:中文分词器分词效果评估
Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展 从Lucene我们还可以学到什么 另外,如果是在选择全文引擎,现在也许是试试Sphinx的时候了:相比Lucene速度更快,有中文分词的支持,而且...
最初是一个基于开源项目 Luence 为主要应用,结合词典分词和语法分析算法的中文分词组件。 从3.0版本开始,IK已经发展成为Java通用的分词组件,独立于Lucene项目,同时提供了Lucene的默认优化实现。 在 2012 版本中...
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。...针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出了3个大版本。...针对Lucene全文检索优化的查询分析器IKQueryParser(作者吐血推荐);
Java全文检索器 Lucene3.6教程 搜索引擎介绍 Lucene介绍、结构分析 Lucene的全文索引实现 Lucene原理分析、优化 中文分词器使用 高亮器的使用 过滤与排序 常见的各种搜索 如果需要源码的,请到我的资源去找,谢谢
最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开 始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK...