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

【转】主流分词器对比

    博客分类:
  • java
 
阅读更多

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 字段,就应该使用一个最简单的分词器,按空格分词就可以了。

 

分享到:
评论
1 楼 zhzhl202 2012-05-19  
这篇文章有点老了。
感觉在Java中,比较常用的是Ikanalyzer,而在C++中比较常用的是ICTCLAS。
阿里系内部都使用ALiws。
Ikanalyzer 只能分词,不能给出词的词性,感觉这个是个缺点。
http://www.matrix67.com/blog/archives/4212 这个是一个北大的geek写的一篇关于分词的博客,非常好

相关推荐

    三种中文分词算法优劣比较

    这种方法依赖于一个庞大的电子词典,通过对比输入文本与词典中的词语,找到最佳匹配来完成分词。其优点在于算法简单,分词速度快,适合大批量文本处理。然而,它的缺点也很明显,无法处理歧义问题和未登录词(即词典...

    电商词库、淘宝、天猫、京东、拼多多各大电商平台搜索词库,分词词库.7z

    本资源提供了一个综合性的电商词库,包含了淘宝、天猫、京东、拼多多等主流电商平台的搜索词数据,总计25825条。这些数据能够帮助分析各个平台上的热门商品、消费趋势和用户搜索习惯。 1. **电商词库的构成**:词库...

    论文研究-基于LSTM网络的序列标注中文分词法.pdf

    当前主流的中文分词方法是基于字标注的传统机器学习方法,但传统机器学习方法需要人为地从中文文本中配置并提取特征,存在词库维度高且利用CPU训练模型时间长的缺点。针对以上问题进行了研究,提出基于LSTM(long ...

    无池化层卷积神经网络的中文分词方法.pdf

    实验结果显示,PCNN模型在公开数据集上的分词准确率达到了当前主流神经网络模型的水平,而且在对比实验中,无池化层的网络模型表现优于包含池化层的模型。 此外,PCNN模型的一个显著优点是其对未登录词的处理能力。...

    中文情感分析模型,包含各种主流的情感词典、机器学习、深度学习、预训练模型方法.zip

    机器学习方法: 机器学习方法的思想是,将情感分析任务当作一个分类任务,通过将短文本转化为固定维度的向量,利用当前基于不同思想的分类器对其进行训练,通过对比测试集结果来观察不同的机器学习分类器之间的差异...

    Lucene与关系型数据库对比

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

    赖昱行-1120192236-课程报告1

    实验部分,该模型在SIGHAN 2005 Bakeoff数据集(包括MSR、PKU、AS、CITYU)上进行了验证,通过消融实验与其他主流模型对比,证明了其在中文分词任务中的优越性能。 这篇报告详细介绍了如何运用先进的深度学习技术和...

    计算机研究 -基于增量聚类的新闻话题发现研究.pdf

    随着互联网技术的飞速发展,互联网已经成为继报纸、广播、电视之后的第四大媒体霸主,成为信息发布的主流载体,人们获取和传播信息的重要途径。新闻报道的时效性和普适性使得新闻门户网站成为了新闻报道的先锋。同时...

    自然语言处理中一些模型的实现

    结果评估通常使用精度、召回率、F1分数等指标,通过与人工标注的测试集对比来衡量模型的性能。此外,还有诸如Micro-F1和Macro-F1等评估方法,适用于处理类别不平衡的问题。 在这个教程中,你可能还会接触到数据集的...

    自然语言处理大学生日常作业合集

    1. **词汇和语法**:这是NLP的基础,包括词法分析(分词)、句法分析(识别句子结构)等。学习者需要了解基本的语言规则,并能运用这些规则对文本进行解析。 2. **语义理解**:理解词语和句子的意义,涉及到词汇...

    Java架构核心宝典.pdf

    在搜索引擎的应用上,提到了创建索引的原理,如倒排索引的使用场景和特点,以及分词器Lucene和ElasticSearch的相关应用。 微服务架构与SOA(面向服务的架构)之间的区别与联系,以及业务拆分与集群技术的应用也是...

    renzheng.rar

    SSM(Spring、SpringMVC、MyBatis)作为Java开发中主流的Web开发框架,提供了对模糊查询的良好支持。本文将深入探讨模糊查询的技术原理,以及在SSM框架下如何实现模糊查询。 一、模糊查询基础 1. 模糊查询的概念:...

    屏幕取词原理与实现

    这通常涉及到字符串的匹配和分词算法,特别是对于中文等非分隔文字,分词的准确性尤为关键。 5. 词库查询:分析确定的单词或短语通过词库查询,获取其翻译或解释。词库是屏幕取词程序的灵魂,一个高质量、更新及时...

    基于python+flask深度学习的中文情感分析系统源码数据库论文.docx

    3. 算法选择:本系统选用深度学习模型,如LSTM(长短时记忆网络)、BERT(双向Transformer编码器)等,这些模型在情感分析任务上表现出色,能有效提取文本特征并进行情感分类。 4. Python技术:Python作为数据科学...

    千言数据集:文本相似度

    1. **数据预处理**:首先,需要将文本数据清洗,去除无关字符,如标点符号和特殊字符,然后进行分词,将句子转化为词序列。 2. **编码表示**:使用词嵌入技术,如Word2Vec或GloVe,将每个词转化为向量,形成文本的...

    一种基于深度学习的PDM文档自动审核算法.pdf

    2000年,对比散度算法的改进为深度学习的训练提供了可能,而2006年Hinton等人提出的深度信念网络(DBN)进一步推动了深度学习的发展,成为该领域的主流框架。 本算法主要包括两个阶段:训练和审核。在训练阶段,...

Global site tag (gtag.js) - Google Analytics