开源中文分词工具介绍
这里介绍常用的开源中文分词工具,大部分是java实现。如果是java生产环境,建议使用ansj、word或HanNlp。
Bakeoff是一个国际中文处理比赛,有多个语料,所以每个语料都有排名。
最后一小节介绍分词工具的性能比较。
1 什么是中文分词
中文分词或中文切词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。
中文分词是针对汉字的处理。英文是有空格分隔每一个词,而中文没有空格分隔,因此需要预先切词。
例如:“我今天去学习”
中文:我今天去学习
切词后:我 今天 去 学习
英文:I'm going to study today
2 Ansj分词工具
项目网址: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
<dependency>
<groupId>org.ansj</groupId>
<artifactId>ansj_seg</artifactId>
<version>5.1.1</version>
</dependency>
3 Hanlp分词器
项目网址: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提供下列功能:
- 中文分词
- 最短路分词
- N-最短路分词
- CRF分词
- 索引分词
- 极速词典分词
- 用户自定义词典
- 词性标注
- 命名实体识别
- 中国人名识别
- 音译人名识别
- 日本人名识别
- 地名识别
- 实体机构名识别
- 关键词提取
- TextRank关键词提取
- 自动摘要
- TextRank自动摘要
- 短语提取
- 基于互信息和左右信息熵的短语提取
- 拼音转换
- 多音字
- 声母
- 韵母
- 声调
- 简繁转换
- 繁体中文分词
- 简繁分歧词(简体、繁体、臺灣正體、香港繁體)
- 文本推荐
- 语义推荐
- 拼音推荐
- 字词推荐
- 依存句法分析
- 基于神经网络的高性能依存句法分析器
- MaxEnt依存句法分析
- CRF依存句法分析
- 语料库工具
- 分词语料预处理
- 词频词性词典制作
- BiGram统计
- 词共现统计
- CoNLL语料预处理
- CoNLL UA/LA/DA评测工具
在提供丰富功能的同时,HanLP内部模块坚持低耦合、模型坚持惰性加载、服务坚持静态提供、词典坚持明文发布,使用非常方便,同时自带一些语料处理工具,帮助用户训练自己的模型。
Maven
为了方便用户,特提供内置了数据包的Portable版,只需在pom.xml加入:
<groupId>com.hankcs</groupId>
<version>portable-1.3.4</version>
4 word分词器
项目网址: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:
<dependencies>
<dependency>
<groupId>org.apdplat</groupId>
<artifactId>word</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
5 IKAnalyzer
官网: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)的高速处理能力
6 盘古分词
官网: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日)
7 Stanford 汉语分词工具
Stanford 汉语分词工具的成绩:2005年Bakeoff 2两个语料的测试第一。斯坦福自然语言小组直接使用CRF 的方法,特征窗口为5。
官网:http://nlp.stanford.edu/software/segmenter.shtml
最后更新于2017-06-09(今天2017-10-06)
一篇使用介绍:
点评:印象中Stanford 汉语分词工具需要2Gb的内存,不知道目前改进了没。at 2017-10-06
8 FudanNLP(复旦大学)
项目官网:https://github.com/FudanNLP/fnlp
使用文档:https://github.com/FudanNLP/fnlp/wiki
FudanNLP后来改名为FNLP
FNLP主要是为中文自然语言处理而开发的工具包,使用java实现,包含为实现这些任务的机器学习算法和数据集。本工具包及其包含数据集使用LGPL3.0许可证。
功能(Functions)
信息检索: 文本分类 新闻聚类
中文处理: 中文分词 词性标注 实体名识别 关键词抽取 依存句法分析 时间短语识别
结构化学习: 在线学习 层次分类 聚类
9 庖丁解牛分词
官网:http://code.google.com/p/paoding/
语言和平台:
Java,提供lucence 3.0 接口,仅支持 Java 语言。
性能:
在PIII 1G 内存个人机器上,1 秒 可准确分词 100 万 汉字。
算法:
采用基于 不限制个数 的词典文件对文章进行有效切分
主要功能:
使能够将对词汇分类定义。能够对未知的词汇进行合理解析
10哈工大语言云(LTP -cloud)
项目网址: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)是由哈工大社会计算与信息检索研究中心研发的云端自然语言处理服务平台。 后端依托于语言技术平台,语言云为用户提供了包括分词、词性标注、依存句法分析、命名实体识别、语义角色标注在内的丰富高效的自然语言处理服务。
作为基于云端的服务,语言云具有如下一些优势:
- 免安装:用户只需要下载语言云客户端源代码,编译执行后即可获得分析结果,无需调用静态库或下载模型文件。
- 省硬件:语言云客户端几乎可以运行于任何硬件配置的计算机上,用户不需要购买高性能的机器,即可快捷的获得分析结果。
- 跨平台:语言云客户端几乎可以运行于任何操作系统之上,无论是Windows、Linux各个发行版或者Mac OS。
- 跨编程语言:时至今日,语言云已经提供了包括C++,Java,C#,Python,Ruby在内的客户端,其他编程语言的客户端也在开发之中。
在运算资源有限,编程语言受限的情况下,语言云无疑是用户进行语言分析更好的选择。
11ICTCLAS : 汉语词法分析系统
官网:http://ictclas.nlpir.org/newsdownloads?DocId=354
12