阅读更多

39顶
2踩

编程语言

转载新闻 当前几个主要的Lucene中文分词器的比较

2009-08-08 10:29 by 副主编 ouspec 评论(10) 有55929人浏览

1. 基本介绍:

paoding :Lucene中文分词“庖丁解牛” Paoding Analysis
imdict :imdict智能词典所采用的智能中文分词程序
mmseg4j : 用 Chih-Hao Tsai 的 MMSeg 算法 实现的中文分词器
ik :采用了特有的“正向迭代最细粒度切分算法“,多子处理器分析模式

 

 

2. 开发者及开发活跃度:

paodingqieqie.wang, google code 上最后一次代码提交:2008-06-12,svn 版本号 132
imdictXiaoPingGao, 进入了 lucene contribute,lucene trunk 中 contrib/analyzers/smartcn/ 最后一次提交:2009-07-24,
mmseg4jchenlb2008,google code 中 2009-08-03 (昨天),版本号 57,log为:mmseg4j-1.7 创建分支
iklinliangyi2005,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万 汉字
imdict483.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隐马尔科夫模型的数学性太强,不太好理解。
mmseg4jMMSeg 算法 是英文的,但原理比较简单。实现也比较清晰。
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 字段,就应该使用一个最简单的分词器,按空格分词就可以了。

来自: 福林雨博客
39
2
评论 共 10 条 请登录后发表评论
10 楼 ladybird2010 2010-02-25 10:58
求Lucene结合Hibernate的配置实例 急。。
您若有Lucene的例子工程,帮忙发一个好吗?最好是可以分词。
Email: gao.guangpei@zte.com.cn 或者ggp123@126.com
非常感谢你!
9 楼 ray_linn 2009-09-08 15:44
8 楼 ibeits 2009-08-10 09:46
能有这样的文章是好的,但比较项目都浮于表面,如果作者再写一篇对它们核心分词算法比较的文章就好了
7 楼 treblesoftware 2009-08-09 23:01
好文章,这种文章是最需要的。
6 楼 silasoni 2009-08-09 22:11
有没有韩语分词啊 
5 楼 whaosoft 2009-08-09 12:12
都是中国人?? 幸好我们那儿只做外国的
4 楼 jitabc 2009-08-09 09:58
感觉最具有生命力的非IK莫属
3 楼 sking 2009-08-09 06:42
HHMM是啥东东?应该是HMM。。。
2 楼 flyfan 2009-08-09 02:05
这遍文章不错,不过发到论坛区会更适合
1 楼 shaka 2009-08-08 16:18
不错,该好好学习下,免得每次面试问到分词都让很汗颜

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • X Windows的理解与使用

    X Windows的理解 Unix/Linux系统上的图形用户界面 GNome KDE x window可以理解为linux的GUI程序

  • XWindow使用及感受

    是不是你也和我一样一直在困惑XWindow到底是怎么来运行的?到底那个是服务器,那个是客户端?怎么越来越搞不明白了?Ok,不用先弄明白,跟我来,自己动手做一遍之后这些概念你就都可以明白了首先在你需要有一台linux机器,现在虚拟机程序这么多,你怎么都该在你的windows中分出来一块给linux了吧?我这里用的linux.之后你还需要一台XWindow的服务器,实际上linux已经自带了,但为了彻

  • X Window

     X Window提起 Linux 上的图形,许多人首先想到的是 X Window。这一系统是目前类 UNIX 系统中处于控制地位的桌面图形系统。无疑,X Window 作为一个图形环境是成功的,它上面运行着包括 CAD建模工具和办公套件在内的大量应用程序。但必须看到的是,由于 X Window 在体系接口上的原因,限制了其对游戏、多媒体的支持能力。用户在 X Window 上运行 VCD 播放器

  • Xwindow是什么

    Xwindow是工作站图形系统的工业标准,它有多种不同的实现,Ubuntu系统中使用的为Xorg。 (比较前卫的图形界面系统XGL,实际代替X服务器的作用,另外还有与之配套的窗口管理器) 历史 当然,Xwindow有悠久的历史和传统,不过那不在我们讨论的范围。您要注意的有两点: * Xwindow 和 Xbox 中的“X”本意是不同的, X 只...

  • linux的x window system

    为什么叫x window system:因为就英文字母来看,x是在w的后面。 当时在开发x window system的时候,就希望这个窗口界面不要与硬件有强烈的相关性,不然就等于是一个操作系统了,因此x当初就是以应用程序的概念开发的。 x窗口也被称为x11,这个窗口是利用网络架构来进行图形界面的运行和绘制。 这个网络架构基本可分为x server和x clie...

  • oracle 分词器有哪些,当前几个主要的Lucene中文分词器的比较

    1.基本介绍:imdict :imdict智能词典所采用的智能中文分词程序mmseg4j: 用 Chih-Hao Tsai 的 MMSeg 算法 实现的中文分词器ik :采用了特有的“正向迭代最细粒度切分算法“,多子处理器分析模式2.开发者及开发活跃...

  • mysql ictclas_当前几个主要的Lucene中文分词器的比较【转载】

    1. 基本介绍:paoding :Lucene中文分词“庖丁解牛” Paoding Analysisimdict :imdict智能词典所采用的智能中文分词程序mmseg4j : 用 Chih-Hao Tsai 的 MMSeg 算法 实现的中文分词器ik :采用了特有的“正向迭代最...

  • Lucene分词器

    介绍 历史: 创始人Doug Cutting(hadoop); lucene:是搜索引擎的工具包基于java编写的 特点 稳定,索引性能高(倒排索引) ...现代硬盘每小时索引150G数据(索引:创建索引文件) ...lucene的分词计算 分词:分词的过程就...

  • 让一般用户使用X Window (转)

    让一般用户使用X Window (转)[@more@] 让一般用户使用XWindow Mailto:webmaster@Linuxaid.com.cn">技巧管理员(2000-12-24 10:33)〖tip...

  • X Window 简单入门教程

    1.X Window 系统的窗口显示原理: http://www.ibm.com/developerworks/cn/linux/l-cn-xwin/ 2.X Window 程式设计入门--第二章 X Programming 的第一步 http://fanqiang.chinaunix.net/a4/b8/20010601/180800311.html

  • Xwindow介绍

    很多人在用 Xwindow,但是他们是在用一些包装掩盖下的 Xwindow,那些包装有些很不稳定,占用大量资源,以至于有人说 Xwindow 是垃圾。其实 Xwindow 是一个非常出色的图形系统,你应该抱怨的是那些不稳定的包装,而不是 Xwindow 本身。     Xwindow 是非常巧妙的设计,很多时候它在概念上比其它窗口系统先进,以至于经过很多年它仍然是工作站上的工业标准。许

  • 第24章、 X Window 设定介绍

    24.1. 什么是 X Window System Unix Like 操作系统不是只能进行服务器的架设而已,在美编、排版、制图、多媒体应用上也是有其需要的。 这些需求都需要用到图形接口 (Graphical User Interface, GUI) 的操作的, 所以后来才有所谓的 X Window System 这玩意儿。那么为啥图形窗口接口要称为 X 呢?因为就英文字母来看 X 是在 W(i...

  • 微电网两阶段鲁棒优化经济调度方法:基于Matlab+YALMIP+CPLEX的实现

    内容概要:本文详细介绍了利用Matlab、YALMIP和CPLEX实现微电网两阶段鲁棒优化经济调度的方法。首先,主问题部分通过定义决策变量如机组出力、储能充放电状态等,建立目标函数以最小化总成本,并设置相应的约束条件。接着,子问题部分模拟最恶劣场景,通过引入不确定性和惩罚系数,最大化系统成本,从而找到系统的薄弱环节。两者通过列与约束生成算法(CCG)进行迭代优化,直至达到收敛条件。文中还提供了多个实战避坑指南,如变量维度对齐、CPLEX参数调优以及不确定性集合的选择等。 适合人群:从事电力系统优化研究的专业人士,尤其是对微电网调度感兴趣的工程师和技术研究人员。 使用场景及目标:适用于需要确保微电网在面对极端天气或其他不确定性因素时仍能稳定运行的情况。主要目标是在保障系统可靠性的前提下,降低运营成本,提高经济效益。 其他说明:文章不仅提供了详细的代码实现步骤,还包括了许多实用的经验分享和技巧提示,帮助读者更好地理解和应用两阶段鲁棒优化方法。此外,还强调了在实际应用中应注意的问题,如避免过度保守、合理设定不确定集参数等。

  • H6逆变器拓扑及其离网并网仿真实现与应用

    内容概要:本文介绍了H6逆变器拓扑结构及其离网和并网仿真模型的特点。H6逆变器采用六开关器件设计,支持非单位功率因数负载、功率因数调节、共模电流抑制等功能。文中详细讨论了PR单环控制策略、锁相环(SOGI-PLL)、LC和LCL滤波器的应用,并提供了相关代码示例。此外,文章还探讨了仿真环境设置以及常见调试技巧,验证了H6逆变器在不同负载条件下的优越性能。 适合人群:从事电力电子、逆变器设计与仿真的工程师和技术研究人员。 使用场景及目标:①理解和掌握H6逆变器的工作原理和控制策略;②优化逆变器的设计参数,提高其在离网和并网场景中的性能;③通过仿真验证设计方案的有效性和可靠性。 其他说明:本文提供了丰富的代码片段和调试经验分享,有助于读者快速上手H6逆变器的实际应用。

  • 松下FP-X PLC在空调冷冻泵模拟量控制中的手动/自动控制程序设计与应用

    内容概要:本文详细介绍了松下FP-X系列PLC在空调冷冻泵模拟量控制中的应用,特别是AFPX-TC2模拟量输入模块和AFPX-DA2模拟量输出模块的使用方法。文章涵盖了硬件连接、手动控制程序、自动控制程序以及模式切换逻辑的设计。通过这些模块和程序,可以实现对冷冻泵转速的手动和自动控制,确保系统的稳定性和高效性。文中还提供了详细的代码示例和调试技巧,如PID参数调整、信号量程转换、无扰动模式切换等。 适合人群:从事工业自动化控制领域的工程师和技术人员,尤其是熟悉PLC编程和模拟量控制的人士。 使用场景及目标:适用于需要对空调冷冻泵进行精确控制的工程项目,旨在提高系统的响应速度和稳定性,减少人工干预,提升工作效率。 其他说明:文章不仅提供了理论指导,还包括了许多实用的经验和注意事项,如硬件接线细节、常见问题解决方法等,有助于读者快速掌握并应用于实际项目中。

  • 光子晶体超表面中Off-Gamma点BICs合并的COMSOL模拟与优化

    内容概要:本文详细介绍了如何利用COMSOL软件在光子晶体超表面中实现偏离Gamma点的BICs(连续谱中的束缚态)合并。首先,作者通过设置偏离Gamma点的波矢,调整晶格参数如孔半径和晶格常数,成功实现了BICs的合并。接着,作者分享了多个实用技巧,如正确设置周期性边界条件、使用六重旋转对称条件以及优化网格划分方法。此外,文中提供了详细的MATLAB和COMSOL代码片段,帮助读者理解和复现实验结果。最后,作者强调了磁场涡旋对于识别BICs的重要性,并讨论了BICs合并过程中的一些反直觉现象及其背后的物理机制。 适合人群:从事光子晶体超表面研究的科研人员和技术爱好者,尤其是那些希望深入了解BICs合并机制并对COMSOL有一定基础的读者。 使用场景及目标:① 使用COMSOL进行光子晶体超表面的数值模拟;② 实现偏离Gamma点的BICs合并;③ 优化仿真参数以提高Q值和模式稳定性;④ 理解BICs合并的物理机制及其应用前景。 其他说明:本文不仅提供了理论指导,还附带了大量的实际操作步骤和代码示例,使读者能够快速上手并在实践中不断优化自己的模型。同时,作者提醒了一些常见的错误和注意事项,有助于避免不必要的调试时间。

  • 分享一些R包,用于GBD数据库BAPC分析

    分享一些R包,用于GBD数据库BAPC分析

  • A10 ACOS v4 VRRP-A配置详解:实现高可用性和链路负载均衡

    内容概要:本文档详细介绍了A10 ACOS v4平台上的VRRP-A(高级虚拟路由器冗余协议)配置方法及其工作机制。VRRP-A旨在提高网络的高可用性和冗余度,支持多达八个ACOS设备作为IP互备份,适用于网关(路由)模式及单臂模式部署。文档涵盖了VRRP-A的基本概念、配置流程、主备选举机制、故障切换逻辑、浮动IP管理、配置同步、会话同步以及接口配置等内容。此外,还提供了具体的配置示例和故障切换策略模板的创建方法,以帮助管理员更好地理解和应用VRRP-A。 适合人群:具备一定网络基础知识,尤其是熟悉ACOS平台的网络管理员和工程师。 使用场景及目标:①实现多台ACOS设备之间的冗余备份,确保网络服务的连续性和稳定性;②通过配置浮动IP、主备选举、故障切换策略等,提升网络的高可用性;③利用配置同步和会话同步功能,简化管理和维护工作。 其他说明:本文档不仅提供了详细的配置指南,还通过具体示例展示了各种配置的实际操作步骤,帮助用户快速掌握VRRP-A的配置和优化技巧。此外,文档强调了VRRP-A与传统VRRP的区别,指出两者不可互操作,因此在实际部署中需要注意选择合适的协议。

  • 基于OpenSEES平台的单柱墩模型建模及滑移粘接捏缩效应研究

    内容概要:本文详细介绍了如何利用OpenSEES平台建立单柱墩模型,并深入探讨了钢筋与混凝土之间的滑移粘接及其捏缩效应。主要内容涵盖模型初始化、节点定义、边界条件设定、材料和截面定义、单元创建以及基于位移控制的滞回分析。文中提供了完整的建模过程和相关源代码,帮助读者理解并实现这一复杂结构的数值模拟。 适合人群:从事结构工程、土木工程及相关领域的研究人员和技术人员,特别是那些对钢筋混凝土结构的非线性行为感兴趣的学者。 使用场景及目标:适用于桥梁、建筑等基础设施的设计和评估,旨在提高结构在地震等极端荷载下的安全性和耐久性。通过模拟钢筋与混凝土间的粘接滑移现象,优化结构设计,增强抗震能力。 其他说明:文章不仅提供了理论背景,还包括大量实用的代码示例和实践经验分享,有助于读者快速掌握OpenSEES平台的应用技巧。同时,针对可能出现的问题给出了具体的解决方案,如收敛困难时的处理方法等。

Global site tag (gtag.js) - Google Analytics