`
yinwufeng
  • 浏览: 290006 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

主流Lucene中文分词器比较

阅读更多
主流Lucene中文分词器比较

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中文分词器8.3.0版

    ik-analyzer是一个开源的、高性能的中文分词器,最初基于Java实现,适用于Lucene、Solr等全文检索框架。自2006年诞生以来,经过多次迭代升级,ik-analyzer已经成为许多企业和开发者首选的中文分词解决方案。 二、ik...

    IKAnalyzer 支持高版本最新Lucene 5.x、6.x、7.x

    总之,IKAnalyzer作为一款强大的中文分词器,能够很好地适应Lucene的各个高版本,提供稳定、高效的分词服务。无论是用于Lucene的原生应用,还是在Solr这样的搜索服务器中,它都是处理中文文本的理想选择。随着技术的...

    java IKAnalyzer 中文分词器

    **Java IKAnalyzer 中文分词器** 在Java开发中,处理中文文本时,一个关键的任务是进行有效的中文分词。IKAnalyzer(智能汉语分析器)就是一款专为Java设计的高性能中文分词工具,尤其适合于搜索引擎和其他需要中文...

    中文分词器

    中文不同于英文,单词之间没有明显的边界,因此在处理中文文本时,需要通过分词来识别出单词的边界,将连续的汉字序列切分成一个个有意义的词汇,这就是中文分词器的主要任务。 **IK Analyzer简介** IK Analyzer是...

    solr搭建(含拼音检索,三种分词器,停词器,扩展词库)

    本教程将详细讲解如何搭建Solr,并涵盖拼音检索、三种主流分词器(smartcn、IK、mmseg4j)的配置以及停词器和扩展词库的使用。 首先,我们需要下载并安装Solr。通常,Solr的官方下载页面会提供最新版本的Solr压缩包...

    Lucene与关系型数据库对比

    随着技术的发展,不同的数据处理方式应运而生,其中Lucene与关系型数据库作为两种主流的信息管理工具,各自在特定场景下展现出了独特的优势。本文旨在深入探讨Lucene与关系型数据库之间的差异,尤其是它们在全文检索...

    主流分词工具的词库.zip

    接着,IK分词器是为Lucene、Elasticsearch等全文搜索引擎设计的Java分词组件。IK具有动态加载词典、智能切分等特性,支持用户自定义扩展词典,以适应各种领域的专业词汇。与jieba类似,IK的词典同样不包含词性信息,...

    springmvc集成lucene全文搜索

    7. **优化性能**:根据需求考虑使用倒排索引、分词器的选择、缓存策略等手段来提高搜索性能。 8. **实时更新**:当数据库中的数据发生变化时,需要同步更新Lucene索引。可以设置监听器或者定时任务来实现。 9. **...

    ssm+lucene

    SSM是企业级应用开发的主流框架组合,而Lucene则是流行的全文搜索引擎库。接下来,我们将深入探讨这两个技术的核心概念、集成过程以及它们在实际项目中的应用。 **1. Spring框架** Spring是一个开源的应用框架,它...

    基于lucene的问答系统

    在索引构建阶段,我们需要读取数据库中的问题和答案,使用Lucene的Analyzer对文本进行分词,然后创建Document对象并添加到IndexWriter中,最后通过commit()方法将索引写入磁盘。Lucene提供了丰富的Analyzer供选择,...

    全文索引引擎Lucene简单教程

    除了Lucene内置的分析器外,还有一些专门针对中文分词的开源项目,如: - **Paoding’s Analysis(庖丁分词)**:具有极高的分词效率和良好的扩展性。它采用面向对象的设计思想,可以在高性能的情况下处理大量的文本...

    struts2-spring-compass:Struts2整合Spring3、Hibernate、Compass实现全文检索(基于lucene2.4.1和极易中文分词器)

    这个项目基于Lucene 2.4.1,一个强大的全文搜索引擎库,并且集成了极易中文分词器,以支持中文文档的高效检索。 首先,让我们详细了解一下这四个关键组件: 1. **Struts2**:这是一个基于MVC(Model-View-...

    基于Lucene的全文搜索引擎设计毕业设计.doc

    索引建立阶段,Lucene的分词器进行词汇分析,创建索引文件。搜索模块采用高效的查询算法,结合用户输入的关键词进行匹配,返回最相关的搜索结果。 5. 总结 基于Lucene的全文搜索引擎设计不仅展示了搜索引擎的基本...

    基于Lucene的新闻搜索系统的设计与实现

    3. **中文分词**:由于中文语言的特点,中文分词成为了中文信息检索中的关键技术之一。在本系统中,采用了一些成熟的中文分词工具和技术来提高搜索的准确性和效率。 #### 系统设计与实现 1. **需求分析**:明确...

    IKAnalyzer3.1.1Stable_AllInOne

    - **兼容性**:与主流的搜索框架如Lucene、Solr等无缝集成,简化了开发流程。 3. **文件结构** - `META-INF`:这是Java存档(JAR)文件的标准目录,通常包含关于JAR文件的元数据,如MANIFEST.MF文件,用于描述JAR...

    IK Analyzer 2012FF_hf1

    **IK Analyzer 2012FF_hf1** 是一个基于Java实现的开源中文分词器,主要用于处理中文文本的分词任务。这个版本是2012年发布的一个修复了部分问题的高频率更新版(hf1)。中文分词是自然语言处理中的基础步骤,对于...

    基于Lucene的企业电子文档搜索系统的开发研究

    在本文的研究中,Lucene被用来处理中文电子文档,需要解决的关键问题是如何有效地进行中文分词。中文词划分模块是系统的重要组成部分,因为中文没有明显的空格分隔词,这需要采用专门的分词算法,如jieba分词库,来...

    利用开源工具搭建小型搜索引擎

    - **5.1.2 分词器(Tokenizer)和过滤器(TokenFilter)**: 讨论如何使用Tokenizer和TokenFilter来处理文本。 - **5.1.2 使用StandardAnalyzer进行测试**: 使用StandardAnalyzer来演示文本分析的过程。 **5.2 ...

Global site tag (gtag.js) - Google Analytics