开源中文分词工具介绍
这里介绍常用的开源中文分词工具,大部分是java实现。如果是java生产环境,建议使用ansj、word或HanNlp。
Bakeoff是一个国际中文处理比赛,有多个语料,所以每个语料都有排名。
最后一小节介绍分词工具的性能比较。
中文分词或中文切词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。
中文分词是针对汉字的处理。英文是有空格分隔每一个词,而中文没有空格分隔,因此需要预先切词。
例如:“我今天去学习”
中文:我今天去学习
切词后:我 今天 去 学习
英文:I'm going to study today
项目网址:https://github.com/NLPchina/ansj_seg
使用文档:https://github.com/NLPchina/ansj_seg/wiki
在线体验:http://demo.nlpcn.org/demo.jsp
ansj是一个基于n-Gram+CRF+HMM的中文分词的java实现.
分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上。
目前实现了.中文分词. 中文姓名识别 . 用户自定义词典,关键字提取,自动摘要,关键字标记等功能。
可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目。
下载jar
访问 http://maven.nlpcn.org/org/ansj/ ,最好下载最新版 ansj_seg/
同时下载nlp-lang.jar 需要和ansj_seg 配套。配套关系可以看jar包中的maven依赖,一般最新的ansj配最新的nlp-lang不会有错。
导入到eclipse ,开始你的程序吧
maven
项目网址:https://github.com/hankcs/HanLP
使用文档:https://github.com/hankcs/HanLP/wiki
HanLP下载地址:https://github.com/hankcs/HanLP/releases
Solr、Lucene插件:https://github.com/hankcs/hanlp-solr-plugin
HanLP是由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
HanLP提供下列功能:
在提供丰富功能的同时,HanLP内部模块坚持低耦合、模型坚持惰性加载、服务坚持静态提供、词典坚持明文发布,使用非常方便,同时自带一些语料处理工具,帮助用户训练自己的模型。
Maven
为了方便用户,特提供内置了数据包的Portable版,只需在pom.xml加入:
com.hankcs
portable-1.3.4
项目网址:https://github.com/ysc/word
word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。
能准确识别英文、数字,以及日期、时间等数量词
能识别人名、地名、组织机构名等未登录词
能通过自定义配置文件来改变组件行为
能自定义用户词库、自动检测词库变化、支持大规模分布式环境
能灵活指定多种分词算法
能使用refine功能灵活控制分词结果
还能使用词频统计、词性标注、同义标注、反义标注、拼音标注等功能。
提供了10种分词算法,还提供了10种文本相似度算法,同时还无缝和Lucene、Solr、ElasticSearch、Luke集成。注意:word1.3需要JDK1.8
Maven
在pom.xml中指定dependency,可用版本有1.0、1.1、1.2、1.3、1.3.1:
官网:http://code.google.com/p/ik-analyzer/
作者博客:http://linliangyi2007.iteye.com/
从2006年12月推出1.0版开始。
开源轻量级的中文分词工具包
语言和平台:
基于java 语言开发, 最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的 IKAnalyzer3.0 则发展为面向 Java 的公用分词组件,独立于 Lucene 项目,同时提供了对 Lucene 的默认优化实现。
算法:
采用了特有的“ 正向迭代最细粒度切分算法 “ 。采用了多子处理器分析模式,支持:英文字母( IP 地址、 Email 、 URL )、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。优化的词典存储,更小的内存占用。支持用户词典扩展定义。针对 Lucene 全文检索优化的查询分析器 IKQueryParser ;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高 Lucene 检索的命中率。
性能:
在系统环境:Core2 i7 3.4G双核,4G内存,window 7 64位, Sun JDK 1.6_29 64位 普通pc环境测试,IK2012具有160万字/秒(3000KB/S)的高速处理能力
官网:http://pangusegment.codeplex.com/
作者:eaglet
博客:http://www.cnblogs.com/eaglet/
项目描述
盘古分词是一个中英文分词组件。作者eaglet 曾经开发过KTDictSeg 中文分词组件,拥有大量用户。
作者基于之前分词组件的开发经验,结合最新的开发技术重新编写了盘古分词组件。
主要功能:
中文分词功能
中文人名识别
自定义词典
其他功能
停用词过滤
设置分词权值
性能:
Core Duo 1.8 GHz 下单线程 分词速度为 390K 字符每秒, 2 线程分词速度为 690K 字符每秒。
算法:
盘古分词提供的字典包括17万个中文常用单词,但这个字典依然不够完整,如果要分词更准确,需要适当维护一下这个字典。中文人名的识别能力取决于 ChsSingleName.txt , ChsDoubleName1.txt , ChsDoubleName2.txt 这三个文件,它们分别表示单子人名,双字人名的首字和双字人名的尾字。
最后一次更新是2010年8月18(今天2017年10月6日)
Stanford 汉语分词工具的成绩:2005年Bakeoff 2两个语料的测试第一。斯坦福自然语言小组直接使用CRF 的方法,特征窗口为5。
官网:http://nlp.stanford.edu/software/segmenter.shtml
最后更新于2017-06-09(今天2017-10-06)
一篇使用介绍:
《Stanford CoreNLP 进行中文分词》
点评:印象中Stanford 汉语分词工具需要2Gb的内存,不知道目前改进了没。at 2017-10-06
项目官网:https://github.com/FudanNLP/fnlp
使用文档:https://github.com/FudanNLP/fnlp/wiki
FudanNLP后来改名为FNLP
FNLP主要是为中文自然语言处理而开发的工具包,使用java实现,包含为实现这些任务的机器学习算法和数据集。本工具包及其包含数据集使用LGPL3.0许可证。
功能(Functions)
信息检索: 文本分类 新闻聚类
中文处理: 中文分词 词性标注 实体名识别 关键词抽取 依存句法分析 时间短语识别
结构化学习: 在线学习 层次分类 聚类
官网:http://code.google.com/p/paoding/
语言和平台:
Java,提供lucence 3.0 接口,仅支持 Java 语言。
性能:
在PIII 1G 内存个人机器上,1 秒 可准确分词 100 万 汉字。
算法:
采用基于 不限制个数 的词典文件对文章进行有效切分
主要功能:
使能够将对词汇分类定义。能够对未知的词汇进行合理解析
项目网址:https://www.ltp-cloud.com/
文档说明:https://www.ltp-cloud.com/intro/#cws_how
在线演示:https://www.ltp-cloud.com/demo/
哈工大语言云是通过HTTP请求对外提供服务,也就是说需要联网。
HIT的ITNLPLab, HIT Wei JIANG在Bakeoff 2005的open语料MSR上获得测评第一名。不确定LTP–cloud是否是在Wei JIANG的工作基础上进行的开发。
语言云曾获CoNLL 2009七国语言句法语义分析评测总成绩第一名,
语言云(语言技术平台云LTP-Cloud)是由哈工大社会计算与信息检索研究中心研发的云端自然语言处理服务平台。 后端依托于语言技术平台,语言云为用户提供了包括分词、词性标注、依存句法分析、命名实体识别、语义角色标注在内的丰富高效的自然语言处理服务。
作为基于云端的服务,语言云具有如下一些优势:
在运算资源有限,编程语言受限的情况下,语言云无疑是用户进行语言分析更好的选择。
官网:http://ictclas.nlpir.org/newsdownloads?DocId=354
12 (之前在中科院,现在独立出来)
ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System)
Bakeoff 1上两项第一。
这是最早的中文开源分词项目之一,ICTCLAS在国内973专家组组织的评测中活动获得了第一名,在第一届(2003)国际中文处理研究机构SigHan组织的评测中都获得了多项第一名。
性能:
分词速度单机996KB/s , API 不超过200KB ,各种词典数据压缩后不到 3M.
准确率:
分词精度98.45% ,
语言和平台:
ICTCLAS 全部采用C/C++ 编写,支持 Linux 、 FreeBSD 及 Windows 系列操作系统,支持 C/C++ 、 C# 、 Delphi 、 Java 等主流的开发语言。
Author:
中国科学院计算技术研究所
主要功能:
中文分词;词性标注;命名实体识别;新词识别;同时支持用户词典;支持繁体中文;支持GBK 、 UTF-8 、 UTF-7 、 UNICODE 等多种编码格式。
算法:
完美PDAT 大规模知识库管理技术( 200510130690.3 ),在高速度与高精度之间取得了重大突破,该技术可以管理百万级别的词典知识库,单机每秒可以查询 100 万词条,而内存消耗不到知识库大小的 1.5 倍。层叠隐马尔可夫模型( Hierarchical Hidden Markov Model ) ,该分词系统的主要是思想是先通过 CHMM( 层叠形马尔可夫模型 ) 进行分词 , 通过分层 , 既增加了分词的准确性 , 又保证了分词的效率 . 共分五层, 如下图所示。基本思路是进行原子切分 , 然后在此基础上进行N- 最短路径粗切分 , 找出前 N 个最符合的切分结果 , 生成二元分词表 , 然后生成分词结果 , 接着进行词性标注并完成主要分词步骤 .
主要功能:
提供一份以汉语拼音为中文辅助的汉英辞典,截至2009 年 2 月 8 日,已收录 82712 个单词。其词典可以用于中文分词使用,而且不存在版权问题。Chrome 中文版就是使用的这个词典进行中文分词的。
亿思拓(ESTinside) 中文分词组件
可以作为lucene的一个模块调用,作为二元分词方法的替代。该组件直接扩展org.apache.lucene.analysis.Tokenizer 和org.apache.lucene.analysis.Analyzer 类。
准确率 :
98%以上。
主要功能:
同时支持分词和词性标注, 提供参数调节分词准确性和切分速度。针对多线程使用优化,占用内存少。
语言和平台:
100%采用 java 实现的分词组件,无内存泄漏问题。可长期不间断运行。
算法:
采用多种分词方法结合,包括基于概率的n 元切分方法,隐马尔科夫模型,未登录词识别算法,歧义识别算法和基于规则的方法 等。采用多个大规模语料库训练概率词库。
官网:http://code.google.com/p/imdict-chinese-analyzer/
是imdict 智能词典的智能中文分词模块。
算法 :
基于隐马尔科夫模型(Hidden Markov Model , HMM) ,是中国科学院计算技术研究所的 ictclas 中文分词程序的重新实现(基于 Java ) .
可以直接为lucene 搜索引擎提供简体中文分词支持
主要功能:
1, 完全 Unicode 支持
分词核心模块完全采用Unicode 编码,无须各种汉字编码的转换,极大的提升了分词的效率。
2. 提升搜索效率
根据imdict 智能词典的实践,在有智能中文分词的情况下,索引文件比没有中文分词的索引文件小 1/3
3. 提高搜索准确度
imdict-chinese-analyzer采用了 HHMM 分词模型,极大的提高了分词的准确率,在此基础上的搜索,比对汉字逐个切分要准确得多!
4. 更高效的数据结构
为了提高效率,针对常用中文检索的应用场景,imdict-chinese-analyzer 对一些不必要的功能进行了删减,例如词性标注、人名识别、时间识别等等。另外还修改了算法的数据结构,在内存占用量缩减到 1/3 的情况下把效率提升了数倍。
|
ictclas4j |
imdict-chinese-analyzer |
ICTCLAS 3.0 |
分词速度( 字节 / 秒 ) |
13.86 |
483.64 |
678.15 |
分词速度( 汉字 / 秒 ) |
7439 |
259517 |
363888 |
测试环境为:酷睿E7200 双核,内存 2G , JDK 参数为: "-Xms512m -Xmx1024m "
由此对比可以看出, imdict-chinese-analyzer 的分词效率与 C ++实现的 ICTCLAS 3.0 的分词效率在同一个数量级,是 ictclas4j 的 36 倍!
ictclas4j中文分词系统是sinboy 在中科院张华平和刘群老师的研制的 FreeICTCLAS 的基础上完成的一个 java 开源分词项目,简化了原分词程序的复杂度,旨在为广大的中文分词爱好者一个更好的学习机会。
项目网址:http://code.google.com/p/mmseg4j/
作者博客:
1、http://blog.chenlb.com/
2、http://chenlb.iteye.com/
算法:
1、mmseg4j 用 Chih-HaoTsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/ )实现的中文分词器,并实现 lucene 的 analyzer 和solr 的TokenizerFactory 以方便在Lucene和Solr中使用。
2、MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方(指mmseg论文的作者)说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。
mmseg4j实现的功能详情请看:
3、在 com.chenlb.mmseg4j.example包里的类示例了三种分词效果。
官网:http://code.google.com/p/jcseg/
一、jcseg中文分词器
jcseg是使用Java开发的一个中文分词器,使用流行的mmseg算法实现。
1。目前最高版本:jcseg 1.9.0。兼容最高版本lucene-4.x和最高版本solr-4.x
2。mmseg四种过滤算法,分词准确率达到了98.41%。
3。支持自定义词库。在lexicon文件夹下,可以随便添加/删除/更改词库和词库内容,并且对词库进行了分类。如何给jcseg添加词库/新词。
4。中英文同义词追加/同义词匹配 + 中文词条拼音追加.词库整合了《现代汉语词典》和cc-cedict辞典中的词条,并且依据cc-cedict词典为词条标上了拼音,依据《中华同义词词典》为词条标上了同义词(尚未完成)。更改jcseg.properties配置文档可以在分词的时候加入拼音和同义词到分词结果中。jcseg新版词库
5。中文数字和中文分数识别,例如:"一百五十个人都来了,四十分之一的人。"中的"一百五十"和"四十分之一"。并且jcseg会自动将其转换为阿拉伯数字加入到分词结果中。如:150, 1/40。
6。支持中英混合词和英中混合词的识别(维护词库可以识别任何一种组合)。例如:B超, x射线, 卡拉ok, 奇都ktv, 哆啦a梦。
7。更好的英文支持,电子邮件,网址,小数,分数,百分数,字母和标点组合词(例如C++, c#)的识别。(这个对购物网址来说很重要)。
8。支持阿拉伯数字/小数/中文数字基本单字单位的识别,例如2012年,1.75米,38.6℃,五折,并且jcseg会将其转换为“5折”加入分词结果中。
9。智能圆角半角, 英文大小写转换。
10。特殊字母识别:例如:Ⅰ,Ⅱ
11。特殊数字识别:例如:①,⑩
12。配对标点内容提取:例如:最好的Java书《java编程思想》,‘畅想杯黑客技术大赛’,被《,‘,“,『标点标记的内容。(1.6.8版开始支持)。
13。智能中文人名识别。中文人名识别正确率达94%以上。(可以维护lex-lname.lex,lex-dname-1.lex,lex-dname-2.lex来提高准确率),(引入规则和词性后会达到98%以上的识别正确率)。
14。自动中英文停止词过滤功能(需要在jcseg.properties中开启该选项,lex-stopwords.lex为停止词词库)。
15。词库更新自动加载功能, 开启一个守护线程随时检测词库的更新并且加载。
16。自动词性标注。
17。jcseg.properties ----- jcseg配置文件 如何配置jcseg
二、分词速度:
测试环境:2.8GHZ/2G/Ubuntu
Simple 模式: 1366058字/秒 3774.5KB/秒
Complex 模式: 479338字/秒 1324.4KB/秒
分词正确率98%以上,请参考本算法的原作:
http://technology.chtsai.org/mmseg/
测试文章,“世界与和平” 简易模式830msec,复杂模式2461msec。
项目网址:https://github.com/thunlp/THULAC
THULAC(THULexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:
l 能力强。利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
l 准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。
l 速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s。
THULAC 是C++语言实现。
其他语言实现
THULAC(Java版)https://github.com/thunlp/THULAC-Java
THULAC(Python版)https://github.com/thunlp/THULAC-Python
THULAC(so版)https://github.com/thunlp/THULAC.so
作者
Maosong Sun (孙茂松,导师), Xinxiong Chen(陈新雄,博士生), Kaixu Zhang (张开旭,硕士生), Zhipeng Guo(郭志芃,本科生), Zhiyuan Liu(刘知远,助理教授).
项目网址:http://zhangkaixu.github.io/isan/
作者:张开旭(清华2012届博士毕业生,毕业论文)。
张开旭老师获得CLPS-SIGHAN2012微博分词评测第一名,系统是清华大学中文分词和词性标注系统演示(THULAC,作者:张开旭,孙茂松)(不开源,系统评测报告PPT,可以管中窥豹: sighan12-slides.pdf ),演示地址:
http://nlp.csai.tsinghua.edu.cn/thulac/
性能,用Bakeoff2005的测试工具,测试结果能有0.99以上的F1值。
源码是python。
一个数据驱动的中文处理**实验环境**,可进行*中文分词*和*依存句法分析*等任务。作者张开旭。
特点
O(n)
的时间复杂度。
项目网址:http://code.google.com/p/perminusminus/
作者:张开旭(清华2012届博士毕业生,毕业论文,现在厦大)。
个人主页:http://nlp.csai.tsinghua.edu.cn/~zkx/
源码是python。算法原理是感知器模型。
Per-- is a toolkit of Averaged Perceptron (Freund and Schapire, 1999) for path Labeling under the KISSprinciple(Keep It Simple and Stupid).
Author: Hightman
C语言编写。
算法:
基于词频词典的机械中文分词引擎,采用的是采集的词频词典,并辅以一定的专有名称,人名,地名,数字年代等规则识别来达到基本分词
准确率:
经小范围测试大概准确率在 90% ~ 95% 之间,已能基本满足一些小型搜索引擎、关键字提取等场合运用。
性能:
45Kb 左右的文本切词时间是 0.026 秒,大概是 1.5MB 文本 / 秒,
语言和平台:
SCWS 采用纯 C 代码开发,以 Unix-Like OS 为主要平台环境,提供共享函数库,方便植入各种现有软件系统。此外它支持 GBK , UTF-8 ,BIG5 等汉字编码。支持 PHP4 和PHP 5 。
版本列表
版本 |
类型 |
平台 |
性能 |
SCWS-1.1.x |
C 代码 |
*Unix*/*PHP* |
准确: 95%, 召回 : 91%, 速度 : 1.2MB/sec PHP扩展分词速度 : 250KB/sec |
php_scws.dll(1) |
PHP扩展库 |
Windows/PHP 4.4.x |
准确: 95%, 召回 : 91%, 速度 : 40KB/sec |
php_scws.dll(2) |
PHP扩展库 |
Windows/PHP 5.2.x |
准确: 95%, 召回 : 91%, 速度 : 40KB/sec |
php_scws.dll(3) |
PHP扩展库 |
Windows/PHP 5.3.x |
准确: 95%, 召回 : 91%, 速度 : 40KB/sec |
PSCWS23 |
PHP源代码 |
不限 (不支持 UTF-8) |
准确: 93%, 召回 : 89%, 速度 : 960KB/min |
PSCWS4 |
PHP源代码 |
不限 |
准确: 95%, 召回 : 91%, 速度 : 160KB/min |
官网http://code.google.com/p/friso/
friso是使用c语言开发的一个中文分词器,使用mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入到其他程序中,例如:MySQL,PHP等。并且提供了一个php中文分词扩展robbe。
1。只支持UTF-8编码。【源码无需修改就能在各种平台下编译使用,加载完20万的词条,内存占用稳定为14M。】。
2。mmseg四种过滤算法,分词准确率达到了98.41%。
3。支持自定义词库。在dict文件夹下,可以随便添加/删除/更改词库和词库词条,并且对词库进行了分类。
4。词库使用了friso的Java版本jcseg的简化词库。
5。支持中英混合词的识别。例如:c语言,IC卡。
7。很好的英文支持,电子邮件,网址,小数,分数,百分数。
8。支持阿拉伯数字基本单字单位的识别,例如2012年,5吨,120斤。
9。自动英文圆角/半角,大写/小写转换。
并且具有很高的分词速度:简单模式:3.7M/秒,复杂模式:1.8M/秒。[3]
基于HTTP 协议的开源中文分词系统,
语言和平台:目前仅支持Linux 系统
算法:HTTPCWS 使用“ICTCLAS 3.0 2009 共享版中文分词算法 ” 的 API 进行分词处理,得出分词结果。 HTTPCWS 将取代之前的 PHPCWS 中文分词扩展 。
PHPCWS( PHP 中文分词扩展)
author :张宴
语言和平台:
PHPCWS 是一款开源的PHP 中文分词扩展,目前仅支持 Linux/Unix 系统。
算法: PHPCWS 先使用 “ICTCLAS 3.0 共享版中文分词算法 ” 的 API 进行初次分词处理,再使用自行编写的 “ 逆向最大匹配算法 ” 对分词和进行词语合并处理,并增加标点符号过滤功能,得出分词结果。 ICTCLAS 3.0 商业版是收费的,而免费提供的 ICTCLAS 3.0 共享版不开源,词库是根据人民日报一个月的语料得出的,很多词语不存在。所以本人对 ICTCLAS 分词后的结果,再采用逆向最大匹配算法,根据自己补充的一个 9 万条词语的自定义词库(与 ICTCLAS 词库中的词语不重复),对 ICTCLAS 分词结果进行合并处理,输出最终分词结果。由于 ICTCLAS 3.0 共享版只支持 GBK 编码,因此,如果是 UTF-8 编码的字符串,可以先用 PHP 的 iconv 函数转换成 GBK 编码,再用 phpcws_split 函数进行分词处理,最后转换回 UTF-8 编码。
性能:5 8字节的一句话 ——“2009 年 2 月 13 日,我编写了一款PHP 中文分词扩展: PHPCWS 1.0.0。 ” ,分词速度只需 0.0003 秒。对于那些采用二元交叉切分的搜索引擎, PHPCWS 用在前端搜索层对用户输入的搜索关键字、短语进行分词处理,同样适合。 PHPCWS 开发的目的正在于此,对于短句、小文本中文分词切分,速度非常之快。
Author: 李沫南
语言和平台:
用C++ 编写的开源的中文分词软件, libmmseg 主要被作者用来实现 Sphinx 全文检索软件的中文分词功能,因此作者给 Sphinx 提供了一个补丁文件,可以让 Sphinx 集成 libmmseg ,从而支持对于中文文章的全文检索功能。 libmmseg 从 0.7.2 版本开始,作者提供了 ruby 调用的接口,所以我们可以直接在 ruby 程序里面调用 libmmseg 进行分词了。特别是我们可以用 ferret 去调用 libmmseg 分词功能,从而让 ruby 原生支持中文的全文检索。
算法 :
“基于词库的最大匹配算法 ”
性能:
分词速度为每秒300KB 左右。
是一个开源的中文词法分析库。
主要功能:
其中包括了中文分词、词性标注等功能。系统使用基于概率的多层HMM 。可以对已登录词和未登录词进行识别分析。
OpenCLAS是对原有的 ICTCLAS ( 中科院中文词法分析系统 ) 进行的重写。 OpenCLAS将不包含任何 ICTCLAS 中的源代码,并且以 BSD 协议发布。因此其代码可以在满足 BSD 协议的前提下,用于包括商用在内的各种场合。
OpenCLAS将包含三个语言分支, C++, Java 和 C# 。 ( 目前只实现了 C++ 的版本 ) 。
项目网址:http://code.google.com/p/crfpp/
详细介绍:http://crfpp.googlecode.com/svn/trunk/doc/index.html
作者:上海交大 赵海
个人主页:http://bcmi.sjtu.edu.cn/~zhaohai/index.ch.html
成绩
[2007] Bakeoff-4
第一届中国中文信息学会汉语处理评测暨第四届国际中文自然语言处理Bakeoff (Bakeoff-4, Bakeoff-2007, 2008)
28个研究团队提交的166个分词结果中赢得本届Bakeoff分词的封闭评测的所有五项第一名 |
33个命名实体识别结果中赢得三个第二名,一个第三名 |
Bakeoff-4的正式结果在此。 我们的系统报告在此。 |
[2006] Bakeoff-3
第三届国际中文分词竞赛 (Bakeoff-3, Bakeoff-2006)
在29个研究团队提交的101个分词结果中赢得四项第一、两项第三 |
Bakeoff-3的正式结果在此。 我们的系统报告在此。 |
CRF++ is a simple,customizable, and open source implementation of Conditional Random Fields(CRFs) for segmenting/labeling sequential data. CRF++ is designed for genericpurpose and will be applied to a variety of NLP tasks, such as Named EntityRecognition, Information Extraction and Text Chunking.
github上有个开源项目对java版的中文分词工具做了测评:
https://github.com/ysc/cws_evaluation
测评结果来自https://github.com/ysc/cws_evaluation。
1
、word分词最大Ngram分值算法:
分词速度:370.9714 字符/毫秒
行数完美率:66.55% 行数错误率:33.44% 总的行数:2533709 完美行数:1686210 错误行数:847499
字数完美率:60.94% 字数错误率:39.05% 总的字数:28374490 完美字数:17293964 错误字数:11080526
2
、word分词最少词数算法:
分词速度:330.1586 字符/毫秒
行数完美率:65.67% 行数错误率:34.32% 总的行数:2533709 完美行数:1663958 错误行数:869751
字数完美率:60.12% 字数错误率:39.87% 总的字数:28374490 完美字数:17059641 错误字数:11314849
3
、HanLP分词器标准分词:
分词速度:935.7724 字符/毫秒
行数完美率:58.31% 行数错误率:41.68% 总的行数:2533709 完美行数:1477422 错误行数:1056287
字数完美率:50.43% 字数错误率:49.56% 总的字数:28374490 完美字数:14311008 错误字数:14063482
4
、word分词全切分算法:
分词速度:62.960262 字符/毫秒
行数完美率:57.2% 行数错误率:42.79% 总的行数:2533709 完美行数:1449288 错误行数:1084421
字数完美率:47.95% 字数错误率:52.04% 总的字数:28374490 完美字数:13605742 错误字数:14768748
5
、AnsjBaseAnalysis 基本分词:
分词速度:1295.5205 字符/毫秒
行数完美率:55.36% 行数错误率:44.63% 总的行数:2533709 完美行数:1402905 错误行数:1130804
字数完美率:48.18% 字数错误率:51.81% 总的字数:28374490 完美字数:13672441 错误字数:14702049
6
、smartcn:
分词速度:611.1504 字符/毫秒
行数完美率:55.29% 行数错误率:44.7% 总的行数:2533690 完美行数:1401069 错误行数:1132621
字数完美率:48.03% 字数错误率:51.96% 总的字数:28374433 完美字数:13628910 错误字数:14745523
7
、AnsjToAnalysis 精准分词:
分词速度:759.40717 字符/毫秒
行数完美率:54.72% 行数错误率:45.27% 总的行数:2533709 完美行数:1386683 错误行数:1147026
字数完美率:44.99% 字数错误率:55.0% 总的字数:28374490 完美字数:12768426 错误字数:15606064
8
、HanLP分词器极速词典分词:
分词速度:6015.3677 字符/毫秒
行数完美率:54.25% 行数错误率:45.74% 总的行数:2533709 完美行数:1374736 错误行数:1158973
字数完美率:46.12% 字数错误率:53.87% 总的字数:28374490 完美字数:13088320 错误字数:15286170
9
、word分词双向最大最小匹配算法:
分词速度:462.87158 字符/毫秒
行数完美率:53.06% 行数错误率:46.93% 总的行数:2533709 完美行数:1344624 错误行数:1189085
字数完美率:43.07% 字数错误率:56.92% 总的字数:28374490 完美字数:12221610 错误字数:16152880
10
、HanLP分词器 N-最短路径分词:
分词速度:77.89775 字符/毫秒
行数完美率:53.01% 行数错误率:46.98% 总的行数:2533709 完美行数:1343252 错误行数:1190457
字数完美率:44.42% 字数错误率:55.57% 总的字数:28374490 完美字数:12604878 错误字数:15769612
11
、HanLP分词器最短路径分词:
分词速度:384.70233 字符/毫秒
行数完美率:52.94% 行数错误率:47.05% 总的行数:2533709 完美行数:1341450 错误行数:1192259
字数完美率:43.76% 字数错误率:56.23% 总的字数:28374490 完美字数:12417741 错误字数:15956749
12
、AnsjNlpAnalysis NLP分词:
分词速度:172.19516 字符/毫秒
行数完美率:52.66% 行数错误率:47.33% 总的行数:2533709 完美行数:1334314 错误行数:1199395
字数完美率:42.66% 字数错误率:57.33% 总的字数:28374490 完美字数:12105808 错误字数:16268682
13
、HanLP分词器 NLP分词:
分词速度:408.2249 字符/毫秒
行数完美率:52.18% 行数错误率:47.81% 总的行数:2533709 完美行数:1322216 错误行数:1211493
字数完美率:43.03% 字数错误率:56.96% 总的字数:28374490 完美字数:12211399 错误字数:16163091
14
、FudanNLP:
分词速度:123.456985 字符/毫秒
行数完美率:51.48% 行数错误率:48.51% 总的行数:2533709 完美行数:1304371 错误行数:1229338
字数完美率:43.22% 字数错误率:56.77% 总的字数:28374490 完美字数:12265742 错误字数:16108748
15
、JiebaSEARCH:
分词速度:993.435 字符/毫秒
行数完美率:50.84% 行数错误率:49.15% 总的行数:2533709 完美行数:1288237 错误行数:1245472
字数完美率:41.54% 字数错误率:58.45% 总的字数:28374490 完美字数:11789036 错误字数:16585454
16
、Jcseg复杂模式:
分词速度:561.55975 字符/毫秒
行数完美率:47.96% 行数错误率:52.03% 总的行数:2533709 完美行数:1215171 错误行数:1318538
字数完美率:38.84% 字数错误率:61.15% 总的字数:28374490 完美字数:11021588 错误字数:17352902
17
、word分词双向最小匹配算法:
分词速度:967.68604 字符/毫秒
行数完美率:46.34% 行数错误率:53.65% 总的行数:2533709 完美行数:1174276 错误行数:1359433
字数完美率:36.07% 字数错误率:63.92% 总的字数:28374490 完美字数:10236574 错误字数:18137916
18
、word分词双向最大匹配算法:
分词速度:661.148 字符/毫秒
行数完美率:46.18% 行数错误率:53.81% 总的行数:2533709 完美行数:1170075 错误行数:1363634
字数完美率:35.65% 字数错误率:64.34% 总的字数:28374490 完美字数:10117122 错误字数:18257368
19
、HanLP分词器索引分词:
分词速度:942.4862 字符/毫秒
行数完美率:45.44% 行数错误率:54.55% 总的行数:2533709 完美行数:1151473 错误行数:1382236
字数完美率:35.48% 字数错误率:64.51% 总的字数:28374490 完美字数:10068062 错误字数:18306428
20
、Jcseg简易模式:
分词速度:1193.3085 字符/毫秒
行数完美率:44.59% 行数错误率:55.4% 总的行数:2533709 完美行数:1130000 错误行数:1403709
字数完美率:35.78% 字数错误率:64.21% 总的字数:28374490 完美字数:10155059 错误字数:18219431
21
、word分词正向最大匹配算法:
分词速度:1567.1318 字符/毫秒
行数完美率:41.88% 行数错误率:58.11% 总的行数:2533709 完美行数:1061189 错误行数:1472520
字数完美率:31.35% 字数错误率:68.64% 总的字数:28374490 完美字数:8896173 错误字数:19478317
22
、word分词逆向最大匹配算法:
分词速度:1232.6017 字符/毫秒
行数完美率:41.69% 行数错误率:58.3% 总的行数:2533709 完美行数:1056515 错误行数:1477194
字数完美率:30.98% 字数错误率:69.01% 总的字数:28374490 完美字数:8792532 错误字数:19581958
23
、word分词逆向最小匹配算法:
分词速度:1936.9575 字符/毫秒
行数完美率:41.42% 行数错误率:58.57% 总的行数:2533709 完美行数:1049673 错误行数:1484036
字数完美率:31.34% 字数错误率:68.65% 总的字数:28374490 完美字数:8893622 错误字数:19480868
24
、AnsjIndexAnalysis 面向索引的分词:
分词速度:677.1308 字符/毫秒
行数完美率:40.66% 行数错误率:59.33% 总的行数:2533709 完美行数:1030336 错误行数:1503373
字数完美率:29.81% 字数错误率:70.18% 总的字数:28374490 完美字数:8459997 错误字数:19914493
25
、MMSeg4jComplexSeg:
分词速度:1699.5801 字符/毫秒
行数完美率:38.81% 行数错误率:61.18% 总的行数:2533688 完美行数:983517 错误行数:1550171
字数完美率:29.6% 字数错误率:70.39% 总的字数:28374428 完美字数:8400089 错误字数:19974339
26
、MMSeg4jSimpleSeg:
分词速度:2355.5115 字符/毫秒
行数完美率:37.57% 行数错误率:62.42% 总的行数:2533688 完美行数:951909 错误行数:1581779
字数完美率:28.45% 字数错误率:71.54% 总的字数:28374428 完美字数:8074021 错误字数:20300407
27
、IKAnalyzer智能切分:
分词速度:319.28085 字符/毫秒
行数完美率:37.55% 行数错误率:62.44% 总的行数:2533686 完美行数:951638 错误行数:1582048
字数完美率:27.97% 字数错误率:72.02% 总的字数:28374416 完美字数:7938726 错误字数:20435690
28
、word分词正向最小匹配算法:
分词速度:2228.9465 字符/毫秒
行数完美率:36.7% 行数错误率:63.29% 总的行数:2533709 完美行数:930069 错误行数:1603640
字数完美率:26.72% 字数错误率:73.27% 总的字数:28374490 完美字数:7583741 错误字数:20790749
29
、JiebaINDEX:
分词速度:861.55615 字符/毫秒
行数完美率:36.02% 行数错误率:63.97% 总的行数:2533709 完美行数:912771 错误行数:1620938
字数完美率:25.9% 字数错误率:74.09% 总的字数:28374490 完美字数:7351689 错误字数:21022801
30
、MMSeg4jMaxWordSeg:
分词速度:1737.2491 字符/毫秒
行数完美率:34.27% 行数错误率:65.72% 总的行数:2533688 完美行数:868440 错误行数:1665248
字数完美率:25.2% 字数错误率:74.79% 总的字数:28374428 完美字数:7152898 错误字数:21221530
31
、IKAnalyzer细粒度切分:
分词速度:323.76926 字符/毫秒
行数完美率:18.87% 行数错误率:81.12% 总的行数:2533686 完美行数:478176 错误行数:2055510
字数完美率:10.93% 字数错误率:89.06% 总的字数:28374416 完美字数:3103178 错误字数:25271238
评估耗时:41分钟,42秒,725毫秒
重点说明:
关于分词速度,这个不是绝对的,每次测试都会有些差距,而完美率是固定的,所以按行数完美率排名
上面的评估报告中没有包括Stanford分词器和Paoding分词器
当前代码已经移除了Paoding分词器,因为Paoding分词器已经7年没有维护了
当前代码升级Stanford分词器到3.5.2,速度慢的无法等待评估完成,仅用于交互式效果对比
下面是之前代码对 Paoding分词器2.0.4-beta 和 Stanford分词器 3.3.1 的评估数据
Stanford Beijing Universitysegmentation
:
分词速度:14.4612055 字符/毫秒
行数完美率:58.29% 行数错误率:41.7% 总的行数:2533709 完美行数:1477034 错误行数:1056675
字数完美率:51.36% 字数错误率:48.63% 总的字数:28374490 完美字数:14574120 错误字数:13800370
Stanford Chinese Treebanksegmentation
:
分词速度:13.723294 字符/毫秒
行数完美率:55.45% 行数错误率:44.54% 总的行数:2533709 完美行数:1404968 错误行数:1128741
字数完美率:47.27% 字数错误率:52.72% 总的字数:28374490 完美字数:13414926 错误字数:14959564
Paoding MAX_WORD_LENGTH_MODE
:
分词速度:1343.1075 字符/毫秒
行数完美率:14.19% 行数错误率:85.8% 总的行数:2533158 完美行数:359637 错误行数:2173521
字数完美率:7.72% 字数错误率:92.27% 总的字数:28373102 完美字数:2191349 错误字数:26181753
Paoding MOST_WORDS_MODE
:
分词速度:1338.9246 字符/毫秒
行数完美率:11.6% 行数错误率:88.39% 总的行数:2533158 完美行数:294011 错误行数:2239147
字数完美率:5.92% 字数错误率:94.07% 总的字数:28373102 完美字数:1680261 错误字数:26692841
word
分词器 的分词结果:
1
、【全切分算法】 我 爱 楚离陌
2
、【双向最大最小匹配算法】 我 爱 楚离陌
3
、【最大Ngram分值算法】 我 爱 楚离陌
4
、【正向最大匹配算法】 我 爱 楚离陌
5
、【双向最大匹配算法】 我 爱 楚离陌
6
、【最少词数算法】 我 爱 楚离陌
7
、【逆向最大匹配算法】 我 爱 楚离陌
8
、【正向最小匹配算法】 我 爱 楚离陌
9
、【双向最小匹配算法】 我 爱 楚离陌
10
、【逆向最小匹配算法】 我 爱 楚离陌
Stanford
分词器 的分词结果:
1
、【Stanford Chinese Treebanksegmentation】 我爱 楚离陌
2
、【Stanford Beijing Universitysegmentation】 我爱 楚 离陌
Ansj
分词器 的分词结果:
1
、【BaseAnalysis】 我 爱 楚 离 陌
2
、【IndexAnalysis】 我 爱 楚 离 陌
3
、【ToAnalysis】 我 爱 楚 离 陌
4
、【NlpAnalysis】 我 爱 楚离 陌
HanLP
分词器 的分词结果:
1
、【NLP分词】 我 爱 楚 离 陌
2
、【标准分词】 我 爱 楚 离 陌
3
、【N-最短路径分词】 我 爱 楚 离 陌
4
、【索引分词】 我 爱 楚 离 陌
5
、【最短路径分词】 我 爱 楚 离 陌
6
、【极速词典分词】 我 爱 楚 离 陌
smartcn
分词器 的分词结果:
1
、【smartcn】 我 爱 楚 离 陌
FudanNLP
分词器 的分词结果:
1
、【FudanNLP】 我 爱楚离陌
Jieba
分词器 的分词结果:
1
、【SEARCH】 我爱楚 离 陌
2
、【INDEX】 我爱楚 离 陌
Jcseg
分词器 的分词结果:
1
、【简易模式】 我 爱 楚 离 陌
2
、【复杂模式】 我 爱 楚 离 陌
MMSeg4j
分词器 的分词结果:
1
、【SimpleSeg】 我爱 楚 离 陌
2
、【ComplexSeg】 我爱 楚 离 陌
3
、【MaxWordSeg】 我爱 楚 离 陌
IKAnalyzer
分词器 的分词结果:
1
、【智能切分】 我 爱 楚 离 陌
2
、【细粒度切分】 我 爱 楚 离 陌
word
分词器 的分词结果:
1
、【全切分算法】 结合 成 分子
2
、【双向最大最小匹配算法】 结 合成 分子
3
、【最大Ngram分值算法】 结合 成 分子
4
、【正向最大匹配算法】 结合 成分 子
5
、【双向最大匹配算法】 结 合成 分子
6
、【最少词数算法】 结合 成 分子
7
、【逆向最大匹配算法】 结 合成 分子
8
、【正向最小匹配算法】 结合 成分 子
9
、【双向最小匹配算法】 结 合成 分子
10
、【逆向最小匹配算法】 结 合成 分子
Stanford
分词器 的分词结果:
1
、【Stanford Chinese Treebanksegmentation】 结合成 分子
2
、【Stanford Beijing Universitysegmentation】 结合成 分子
Ansj
分词器 的分词结果:
1
、【BaseAnalysis】 结合 成 分子
2
、【IndexAnalysis】 结合 成 分子
3
、【ToAnalysis】 结合 成 分子
4
、【NlpAnalysis】 结合 成 分子
HanLP
分词器 的分词结果:
1
、【NLP分词】 结合 成 分子
2
、【标准分词】 结合 成 分子
3
、【N-最短路径分词】 结合 成 分子
4
、【索引分词】 结合 成 分子
5
、【最短路径分词】 结合 成 分子
6
、【极速词典分词】 结合 成分 子
smartcn
分词器 的分词结果:
1
、【smartcn】 结合 成 分子
FudanNLP
分词器 的分词结果:
1
、【FudanNLP】 结合 成 分子
Jieba
分词器 的分词结果:
1
、【SEARCH】 结合 成 分子
2
、【INDEX】 结合 成 分子
Jcseg
分词器 的分词结果:
1
、【简易模式】 结合 成分 子
2
、【复杂模式】 结合 成 分子
MMSeg4j
分词器 的分词结果:
1
、【SimpleSeg】 结合 成分 子
2
、【ComplexSeg】 结合 成分 子
3
、【MaxWordSeg】 结合 成分 子
IKAnalyzer
分词器 的分词结果:
1
、【智能切分】 结合 成 分子
2
、【细粒度切分】 结合 合成 成分 分子
1
、HanLP分词器极速词典分词:
分词速度:5030.1978 字符/毫秒
2
、MMSeg4jMaxWordSeg:
分词速度:2454.494 字符/毫秒
3
、MMSeg4jSimpleSeg:
分词速度:2184.697 字符/毫秒
4
、word分词逆向最小匹配算法:
分词速度:1407.4127 字符/毫秒
5
、word分词正向最小匹配算法:
分词速度:1234.6848 字符/毫秒
6
、MMSeg4jComplexSeg:
分词速度:1184.436 字符/毫秒
7
、Jcseg简易模式:
分词速度:1023.73364 字符/毫秒
8
、AnsjBaseAnalysis 基本分词:
分词速度:906.4427 字符/毫秒
9
、word分词双向最小匹配算法:
分词速度:833.2229 字符/毫秒
10
、JiebaSEARCH:
分词速度:831.52246 字符/毫秒
11
、word分词逆向最大匹配算法:
分词速度:808.4246 字符/毫秒
12
、IKAnalyzer细粒度切分:
分词速度:735.4621 字符/毫秒
13
、HanLP分词器索引分词:
分词速度:664.67535 字符/毫秒
14
、word分词正向最大匹配算法:
分词速度:573.46375 字符/毫秒
15
、word分词双向最大匹配算法:
分词速度:539.6636 字符/毫秒
16
、JiebaINDEX:
分词速度:507.40472 字符/毫秒
17
、word分词双向最大最小匹配算法:
分词速度:505.20273 字符/毫秒
18
、IKAnalyzer智能切分:
分词速度:483.90262 字符/毫秒
19
、HanLP分词器标准分词:
分词速度:461.43375 字符/毫秒
20
、AnsjIndexAnalysis 面向索引的分词:
分词速度:446.76096 字符/毫秒
21
、word分词最少词数算法:
分词速度:444.56738 字符/毫秒
22
、AnsjToAnalysis 精准分词:
分词速度:440.2442 字符/毫秒
23
、word分词最大Ngram分值算法:
分词速度:419.61484 字符/毫秒
24
、smartcn:
分词速度:419.39886 字符/毫秒
25
、Jcseg复杂模式:
分词速度:391.21075 字符/毫秒
26
、HanLP分词器最短路径分词:
分词速度:288.55948 字符/毫秒
27
、HanLP分词器 NLP分词:
分词速度:251.66522 字符/毫秒
28
、AnsjNlpAnalysis NLP分词:
分词速度:174.01068 字符/毫秒
29
、word分词全切分算法:
分词速度:146.16898 字符/毫秒
30
、FudanNLP:
分词速度:111.7975 字符/毫秒
31
、HanLP分词器 N-最短路径分词:
分词速度:67.67644 字符/毫秒
1、word分词器
2、ansj分词器
3、mmseg4j分词器
4、ik-analyzer分词器
5、jcseg分词器
6、fudannlp分词器
7、smartcn分词器
8、jieba分词器
9、stanford分词器
10、hanlp分词器
参考文献:
[1]ansj分词工具https://github.com/NLPchina/ansj_seg
[2] HanLP自然语言处理工具包https://github.com/hankcs/HanLP
[3] word分词工具https://github.com/ysc/word
[4] THULAC:一个高效的中文词法分析工具包https://github.com/thunlp/THULAC
[5] 盘古分词-开源中文分词组件 http://pangusegment.codeplex.com/
[6] Stanford汉语分词工具https://nlp.stanford.edu/software/segmenter.shtml
[7] 哈工大语言云 https://www.ltp-cloud.com/
[8] 中文分词器分词效果评估对比 https://github.com/ysc/cws_evaluation