1. 基本介绍:
paoding
:Lucene中文分词“庖丁解牛” Paoding Analysis
imdict
:imdict智能词典所采用的智能中文分词程序
mmseg4j
: 用 Chih-Hao Tsai 的 MMSeg 算法
实现的中文分词器
ik
:采用了特有的“正向迭代最细粒度切分算法“,多子处理器分析模式
2. 开发者及开发活跃度:
paoding
:qieqie.wang
, google code 上最后一次代码提交:2008-06-12,svn 版本号 132
imdict
:XiaoPingGao
, 进入了 lucene contribute,lucene trunk 中 contrib/analyzers/smartcn/ 最后一次提交:2009-07-24,
mmseg4j
:chenlb2008
,google code 中 2009-08-03 (昨天),版本号 57,log为:mmseg4j-1.7 创建分支
ik
:linliangyi2005
,google code 中 2009-07-31,版本号 41
3. 用户自定义词库:
paoding
:支持不限制个数的用户自定义词库,纯文本格式,一行一词,使用后台线程检测词库的更新,自动编译更新过的词库到二进制版本,并加载
imdict
:暂时不支持用户自定义词库。但 原版 ICTCLAS
支持。支持用户自定义 stop words
mmseg4j
:自带sogou词库,支持名为 wordsxxx.dic, utf8文本格式的用户自定义词库,一行一词。不支持自动检测。 -Dmmseg.dic.path
ik
: 支持api级的用户词库加载,和配置级的词库文件指定,无 BOM 的 UTF-8 编码,\r\n 分割。不支持自动检测。
4. 速度(基于官方介绍,非自己测试)
paoding
:在PIII 1G内存
个人机器上,1秒
可准确分词 100万
汉字
imdict
:483.64
(字节/秒),259517
(汉字/秒)
mmseg4j
: complex 1200kb/s左右, simple 1900kb/s左右
ik
:具有50万字/秒的高速处理能力
5. 算法和代码复杂度
paoding
:svn src 目录一共1.3M,6个properties文件,48个java文件,6895 行。使用不用的 Knife 切不同类型的流,不算很复杂。
imdict
:词库 6.7M(这个词库是必须的),src 目录 152k,20个java文件,2399行。使用 ICTCLAS
HHMM隐马尔科夫模型,“利用大量语料库的训练来统计汉语词汇的词频和跳转概率,从而根据这些统计结果对整个汉语句子计算最似然(likelihood)的切分”
mmseg4j
: svn src 目录一共 132k,23个java文件,2089行。MMSeg 算法
,有点复杂。
ik
: svn src 目录一共6.6M(词典文件也在里面),22个java文件,4217行。多子处理器分析,跟paoding类似,歧义分析算法还没有弄明白。
6. 文档
paoding
:几乎无。代码里有一些注释,但因为实现比较复杂,读代码还是有一些难度的。
imdict
: 几乎无。 ICTCLAS
也没有详细的文档,HHMM隐马尔科夫模型的数学性太强,不太好理解。
mmseg4j
: MMSeg 算法
是英文的,但原理比较简单。实现也比较清晰。
ik
: 有一个pdf使用手册,里面有使用示例和配置说明。
7. 其它
paoding
:引入隐喻,设计比较合理。search 1.0 版本就用的这个。主要优势在于原生支持词库更新检测。主要劣势为作者已经不更新甚至不维护了。
imdict
:进入了 lucene trunk,原版 ictclas 在各种评测中都有不错的表现,有坚实的理论基础,不是个人山寨。缺点为暂时不支持用户词库。
mmseg4j
: 在complex基础上实现了最多分词(max-word),但是还不成熟,还有很多需要改进的地方。
ik
: 针对Lucene全文检索优化的查询分析器IKQueryParser
8. 结论
个人觉得,可以在 mmseg4j 和 paoding 中选一个。关于这两个分词效果的对比,可以参考:
http://blog.chenlb.com/2009/04/mmseg4j-max-word-segment-compare-with-paoding-in-effect.html
或者自己再包装一下,将 paoding 的词库更新检测做一个单独的模块实现,然后就可以在所有基于词库的分词算法之间无缝切换了。
ps
,对不同的 field 使用不同的分词器是一个可以考虑的方法。比如 tag 字段,就应该使用一个最简单的分词器,按空格分词就可以了。
相关推荐
ik-analyzer是一个开源的、高性能的中文分词器,最初基于Java实现,适用于Lucene、Solr等全文检索框架。自2006年诞生以来,经过多次迭代升级,ik-analyzer已经成为许多企业和开发者首选的中文分词解决方案。 二、ik...
总之,IKAnalyzer作为一款强大的中文分词器,能够很好地适应Lucene的各个高版本,提供稳定、高效的分词服务。无论是用于Lucene的原生应用,还是在Solr这样的搜索服务器中,它都是处理中文文本的理想选择。随着技术的...
**Java IKAnalyzer 中文分词器** 在Java开发中,处理中文文本时,一个关键的任务是进行有效的中文分词。IKAnalyzer(智能汉语分析器)就是一款专为Java设计的高性能中文分词工具,尤其适合于搜索引擎和其他需要中文...
中文不同于英文,单词之间没有明显的边界,因此在处理中文文本时,需要通过分词来识别出单词的边界,将连续的汉字序列切分成一个个有意义的词汇,这就是中文分词器的主要任务。 **IK Analyzer简介** IK Analyzer是...
本教程将详细讲解如何搭建Solr,并涵盖拼音检索、三种主流分词器(smartcn、IK、mmseg4j)的配置以及停词器和扩展词库的使用。 首先,我们需要下载并安装Solr。通常,Solr的官方下载页面会提供最新版本的Solr压缩包...
随着技术的发展,不同的数据处理方式应运而生,其中Lucene与关系型数据库作为两种主流的信息管理工具,各自在特定场景下展现出了独特的优势。本文旨在深入探讨Lucene与关系型数据库之间的差异,尤其是它们在全文检索...
接着,IK分词器是为Lucene、Elasticsearch等全文搜索引擎设计的Java分词组件。IK具有动态加载词典、智能切分等特性,支持用户自定义扩展词典,以适应各种领域的专业词汇。与jieba类似,IK的词典同样不包含词性信息,...
7. **优化性能**:根据需求考虑使用倒排索引、分词器的选择、缓存策略等手段来提高搜索性能。 8. **实时更新**:当数据库中的数据发生变化时,需要同步更新Lucene索引。可以设置监听器或者定时任务来实现。 9. **...
SSM是企业级应用开发的主流框架组合,而Lucene则是流行的全文搜索引擎库。接下来,我们将深入探讨这两个技术的核心概念、集成过程以及它们在实际项目中的应用。 **1. Spring框架** Spring是一个开源的应用框架,它...
在索引构建阶段,我们需要读取数据库中的问题和答案,使用Lucene的Analyzer对文本进行分词,然后创建Document对象并添加到IndexWriter中,最后通过commit()方法将索引写入磁盘。Lucene提供了丰富的Analyzer供选择,...
除了Lucene内置的分析器外,还有一些专门针对中文分词的开源项目,如: - **Paoding’s Analysis(庖丁分词)**:具有极高的分词效率和良好的扩展性。它采用面向对象的设计思想,可以在高性能的情况下处理大量的文本...
这个项目基于Lucene 2.4.1,一个强大的全文搜索引擎库,并且集成了极易中文分词器,以支持中文文档的高效检索。 首先,让我们详细了解一下这四个关键组件: 1. **Struts2**:这是一个基于MVC(Model-View-...
索引建立阶段,Lucene的分词器进行词汇分析,创建索引文件。搜索模块采用高效的查询算法,结合用户输入的关键词进行匹配,返回最相关的搜索结果。 5. 总结 基于Lucene的全文搜索引擎设计不仅展示了搜索引擎的基本...
3. **中文分词**:由于中文语言的特点,中文分词成为了中文信息检索中的关键技术之一。在本系统中,采用了一些成熟的中文分词工具和技术来提高搜索的准确性和效率。 #### 系统设计与实现 1. **需求分析**:明确...
- **兼容性**:与主流的搜索框架如Lucene、Solr等无缝集成,简化了开发流程。 3. **文件结构** - `META-INF`:这是Java存档(JAR)文件的标准目录,通常包含关于JAR文件的元数据,如MANIFEST.MF文件,用于描述JAR...
**IK Analyzer 2012FF_hf1** 是一个基于Java实现的开源中文分词器,主要用于处理中文文本的分词任务。这个版本是2012年发布的一个修复了部分问题的高频率更新版(hf1)。中文分词是自然语言处理中的基础步骤,对于...
在本文的研究中,Lucene被用来处理中文电子文档,需要解决的关键问题是如何有效地进行中文分词。中文词划分模块是系统的重要组成部分,因为中文没有明显的空格分隔词,这需要采用专门的分词算法,如jieba分词库,来...
- **5.1.2 分词器(Tokenizer)和过滤器(TokenFilter)**: 讨论如何使用Tokenizer和TokenFilter来处理文本。 - **5.1.2 使用StandardAnalyzer进行测试**: 使用StandardAnalyzer来演示文本分析的过程。 **5.2 ...