[转]自然语言分词简介

一.分词软件简介

主流分词软件

挑重要的讲,目前的分词软件很多,也比较杂。这里列举一些效果比较好的分词软件。

  • Stanford Word Segmenter (Java,GPL) 老牌美帝斯坦佛大学NLP小组出品
  • nlpbamboo (C++, BSD) PostgreSQL的大大们制作的一个基于CRF++库的分词软件
  • ICTCLAS (闭源但是提供非商业使用lib)中科院出品也是目前比较广泛的分词软件
  • LTP (主要C++, 很神奇的LTP开源协议) 哈工大的一个自然语言处理平台,已经做到浅层语义分析了,分词是其中的一个模块。
  • fudannlp (Java,LGPL) 复旦大学的语言处理平台,与LTP类似,已经做到依存句法分析以及指代消歧了。用Java编写LGPL协议,非常推荐。

分类

分词算法在20世纪80年代就有研究,不过基于当时的技术条件所限,大多数就是原始的机械分词算法。比如,最大匹配算法,mmseg等。

关于原始的机械分词算法 http://www.cnblogs.com/alic/articles/1215001.html 这篇blog有很详细的介绍。

之后随着统计算法在自然语言处理领域地位的奠定以及机器学习的兴起,基于统计和机器学习的分词算法逐渐成为主流。根据机器学习方法的分类,分词算法也可以分成无监督分词,半监督分词以及有监督的分词。目前有监督的分词以及半监督的分词已经研究的比较成熟。对于这种分词算法,大致可以分为四类。

  • 第一类是生成式的基于词的分词方法,这类具有代表的是中科院的ICTCLAS等等比较经典的分词软件。
  • 第二类是判别式的基于词的分词方法,这类中的算法比较少,其中一个是基于平衡感知机的分词。
  • 第三类是生成式基于字的生成式分词方法,比如Wang(2009)所提出的n元模型分词算法。
  • 第四类也是目前主流的是基于字的判别式分词方法,主要是最大熵模型和条件随机场模型。几乎全部2003年之后提出的分词算法都与这一类别有关,比如哈工大的LTP和Stanford Word Segmenter就是采用CRF模型。

此外,分词算法还可以根据在自然预言处理中的步骤来分,比如纯分词,就是除了分词之外什么都不做,大多数基于字的分词算法都属于这一类。此外将分词和词性标注结合在一起完成,比如ICTCLAS。还有基于语义网络分词的算法。总的来说,结合额外信息越多,对于分词结果就越好。比如ICTCLAS将分词与词性标注结果结合起来,效果就比光光使用一元概率模型(ICTCLAS)效果要好。

分词模型

分词模型大致可以分为判别式和生成式,以及基于词和基于字的方法。主要使用到的模型为: n-Gram,Percepton,HMM,SVM,ME,CRF。

判别式和生成式的区别就是判别式是计算P(Y|X)的条件概率,但是生成式则是计算P(X1, X2)的联合概率,通常来说判别式的效果要比生成式的要好,这一分类比较复杂,不好解释,涉及到很多数学模型,详情可以去看看相关资料。

基于词和基于字的分词的区别就是基于词的算法将词看成算法中最小单元,比如这句话

结合/成/分子/时

在基于词的分词算法中,主要用到一个词典,“结合”、“成”、“分子”在词典中,它们是分词中的最小单元,不可拆分,一旦拆分就会出现分词错误。但是基于字的分词算法则不同,它将每个字看成是一个单元,通常和序列标注相结合,对每个字进行标注,然后得出分词结果。比如

结合成分子时

使用CRF等序列标注模型得出的序列标注结果是

B E S B E S

其中B表示一个词的开头,E表示一个词的结尾,S表示单个字作为词。然后分词的结果经过一些小处理就可以得出了。

通常来说基于词的分词算法在词典比较全,文章比较正式的时候效果比较好。但是总是会遇见一些比较变态的词典中没有的词,其中最有代表的就是人名地名还有商标名等等。所以一般这些基于词分词软件还必须要加上识别人名地名的功能。

基于字的分词算法主要是依赖于某些字在构词方面的特征,比如“的”字通常就是单个字出现,有很大的几率是标注为S,“化”字比较喜欢出现在词的末尾,比如现代化,工业化等等。根据这些信息进行标注分词,它对于词典中不存在的词效果识别几率比较大,但是对于词典中的词可能会识别错误,另外还会出现千奇百怪的分词错误,比如“沙把”等等。 因此,现在多数的分词软件在基于字的基于上,或多或少的结合了一点基于词的特征。

相关资源

关于中文分词的课程,可以去搜索一下刘群教授的课程录像或者课件,非常好。

二.实现中文分词的18种分词工具

由于中文文本词与词之间没有像英文那样有空格分隔,因此很多时候中文文本操作都涉及切词,这里整理了一些。一般来说用CRF实现的分词工具的处理速度是比较慢的(训练CRF模型是非常耗时的),但是精度高,涉及CRF的分词工具有CRF++,Stanford分词工具。

Bakeoff是一个国际中文处理比赛,有多个语料,所以每个语料都有排名。只有部分优秀的Bakeoff工具开源。

介绍了以下18种分词工具(大部分是基于java语言):

perminusminus
Stanford 汉语分词工具(Bakeoff-2两项第一)
哈工大语言云(LTP -cloud)
ICTCLAS——(Bakeoff -1两项第一)
Ansj(ICTCLAS的java实现)
庖丁解牛分词
盘古分词
IKAnalyzer
imdict-chinese-analyzer
mmseg4j
FudanNLP(复旦大学)
Jcseg
SCWS
Friso
HTTPCWS
libmmseg
OpenCLAS
CRF++ (Bakeoff-3四项第一)

Stanford 汉语分词工具

Stanford 汉语分词工具的成绩:2005年Bakeoff2两个语料的测试第一。

官网:http://nlp.stanford.edu/software/segmenter.shtml

一篇使用介绍:

http://hi.baidu.com/liheming333/item/585fba1f898838623e87ce18

斯坦福自然语言小组直接使用CRF 的方法,特征窗口为5。

哈工大语言云(LTP -cloud)

项目网址:http://www.ltp-cloud.com/download/#ltp_cloud_sdk

HIT的ITNLP Lab, HIT Wei JIANG在Bakeoff 2005的open语料MSR上获得测评第一名。不确定LTP –cloud是否是在Wei JIANG的工作基础上进行的开发。

语言云曾获CoNLL2009七国语言句法语义分析评测总成绩第一名,

使用方式为web service。

语言云(语言技术平台云 LTP-Cloud)是由哈工大社会计算与信息检索研究中心研发的云端自然语言处理服务平台。 后端依托于语言技术平台,语言云为用户提供了包括分词、词性标注、依存句法分析、命名实体识别、语义角色标注在内的丰富高效的自然语言处理服务。

作为基于云端的服务,语言云具有如下一些优势:

    • 免安装:用户只需要下载语言云客户端源代码,编译执行后即可获得分析结果,无需调用静态库或下载模型文件。
    • 省硬件:语言云客户端几乎可以运行于任何硬件配置的计算机上,用户不需要购买高性能的机器,即可快捷的获得分析结果。
    • 跨平台:语言云客户端几乎可以运行于任何操作系统之上,无论是Windows、Linux各个发行版或者Mac OS。
    • 跨编程语言:时至今日,语言云已经提供了包括C++,Java,C#,Python,Ruby在内的客户端,其他编程语言的客户端也在开发之中。

在运算资源有限,编程语言受限的情况下,语言云无疑是用户进行语言分析更好的选择。

从2006年9月5日开始该平台对外免费共享目标代码,截止目前,已经有国内外400多家研究单位共享了LTP,也有国内外多家商 业公司购买了LTP,用于实际的商业项目中。2010年12月获得中国中文信息学会颁发的行业最高奖项:”钱伟长中文信息处理科学技术奖”一等奖。

2011年6月1日,为了与业界同行共同研究和开发中文信息处理核心技术,我中心正式将LTP的源代码对外共享,LTP由C++语言开发,可运行于Windows和Linux操作系统。

ICTCLAS: 汉语词法分析系统

官网:http://ictclas.nlpir.org/newsdownloads?DocId=354

(这是作者在中科院读研时的作品,最新版本是NLPIR,官网  )

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 个最符合的切分结果 , 生成二元分词表 , 然后生成分词结果 , 接着进行词性标注并完成主要分词步骤 .

Ansj(ICTCLAS的java实现)

项目网址:https://github.com/ansjsun/ansj_seg

作者网址:http://www.ansj.org/

演示网址:http://demo.ansj.org/seg.action

ansj分词.ict的真正java实现.分词效果速度都超过开源版的ict.中文分词,人名识别,词性标注,用户自定义词典

增加了对lucene的支持.如果不想编译文件可以直接到 https://github.com/ansjsun/mvn-repo/tree/gh-pages/org/ansj这里下载jar包!

这是一个ictclas的java实现.基本上重写了所有的数据结构和算法.词典是用的开源版的ictclas所提供的.并且进行了部分的人工优化

内存中中文分词每秒钟大约100万字(速度上已经超越ictclas)

文件读取分词每秒钟大约30万字

准确率能达到96%以上

目前实现了.中文分词. 中文姓名识别 . 用户自定义词典

可以应用到自然语言处理等方面,适用于对分词效果要求搞的各种项目.

庖丁解牛分词

官网:http://code.google.com/p/paoding/

语言和平台:

Java,提供 lucence  3.0  接口,仅支持 Java 语言。

性能:

在PIII 1G 内存个人机器上, 1 秒 可准确分词  100 万 汉字。

算法:

采用基于 不限制个数 的词典文件对文章进行有效切分

主要功能:

使能够将对词汇分类定义。能够对未知的词汇进行合理解析

盘古分词

官网:http://pangusegment.codeplex.com/

作者:eaglet

博客:http://www.cnblogs.com/eaglet/

是一个中英文分词组件。

项目描述

Pan Gu Segment is alibrary that can segment Chinese and English words from sentence.

盘古分词是一个中英文分词组件。作者eaglet 曾经开发过KTDictSeg 中文分词组件,拥有大量用户。

作者基于之前分词组件的开发经验,结合最新的开发技术重新编写了盘古分词组件。

主要功能:

中文分词功能

中文未登录词识别

词频优先

盘古分词可以根据词频来解决分词的歧义问题

多元分词

盘古分词提供多重输出解决分词粒度和分词精度权衡的问题

中文人名识别

强制一元分词

繁体中文分词

同时输出简体和繁体

中文词性输出

盘古分词可以将以登录词的中文词性输出给用户,以方便用户做进一步处理。

全角字符支持

盘古分词可以识别全角的字母和数字

英文分词

英文专用词识别

一些英文简写是字母符号混合,或者是字母数字混合,这个分词起来就不能按照空格符号这样分割了,对于字母符号混合的如 U.S.A  ,只要将这个词录入到字典中,盘古分词就可以分出整词。对于字母和数字混合的,盘古分词会自动作为整词输出。

英文原词输出

英文大小写同时输出

其他功能

停用词过滤

对于一些标点符号,连词,助词等有时候需要在分词时过滤掉,盘古分词提供一个 StopWord.txt  文件,用户只要将需要过滤的词加入到这个文件中,并将停用词过滤开发打开,就可以过滤掉这些词。

设置分词权值

盘古分词可以让用户对如下特性设置自定义权值

1 未登录词权值

2 最匹配词权值

3 次匹配词权值

4 再次匹配词权值

5 强行输出的单字的权值

6 数字的权值

7 英文词汇权值

8 符号的权值

9 强制同时输出简繁汉字时,非原来文本的汉字输出权值。

*用户自定义规则

字典管理

盘古分词提供一个字典管理工具 DictManage  通过这个工具,你可以增加,修改,和删除字典中的单词

动态加载字典

通过字典工具增加,修改,和删除字典中的单词后,保持字典,盘古分词会自动将新的字典文件加载进去,而不需要重新启动。

关键词高亮组件

Lucene 提供了一个关键词高亮组件,但这个组件对中文的支持不是特别好,特别是如果还有多元分词的情况,处理的就更不好。盘古分词提供了一个针对中文和英文的关键词高亮组件  PanGu.HighLight  ,其对中文的支持要好于Lucene  那个高亮组件。

同义词输出( 后续版本提供 )

Lucene.net 接口及示例

在PanGu4Lucene 这个包里面有我做的一个盘古 +Lucene  的简单新闻搜索 Web 示例程序, Release  包里面有使用说明。

性能:

Core Duo 1.8 GHz 下单线程 分词速度为 390K  字符每秒, 2 线程分词速度为 690K  字符每秒。

算法:

盘古分词提供的字典包括17万个中文常用单词,但这个字典依然不够完整,如果要分词更准确,需要适当维护一下这个字典。中文人名的识别能力取决于  ChsSingleName.txt , ChsDoubleName1.txt ,  ChsDoubleName2.txt  这三个文件,它们分别表示单子人名,双字人名的首字和双字人名的尾字。

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 检索的命中率。

性能:

在系统环境:Core2i7 3.4G双核,4G内存,window 7 64位, Sun JDK 1.6_29 64位 普通pc环境测试,IK2012具有160万字/秒(3000KB/S)的高速处理能力

imdict-chinese-analyzer

官网: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 开源分词项目,简化了原分词程序的复杂度,旨在为广大的中文分词爱好者一个更好的学习机会。

mmseg4j

项目网址:

(旧)http://code.google.com/p/mmseg4j/

(新)https://github.com/chenlb/mmseg4j-solr

作者博客:

1、http://blog.chenlb.com/

2、http://chenlb.iteye.com/

算法:

1、mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/)实现的中文分词器,并实现 lucene 的 analyzer和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。

2、MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方(指mmseg论文的作者)说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。

    • 1.5版的分词速度simple算法是 1100kb/s左右、complex算法是 700kb/s左右,(测试机:AMD athlon 64 2800+ 1G内存 xp)。
    • 1.6版在complex基础上实现了最多分词(max-word)。“很好听” -> “很好|好听”; “中华人民共和国” -> “中华|华人|共和|国”; “中国人民银行” -> “中国|人民|银行”。
    • 1.7-beta 版, 目前 complex 1200kb/s左右, simple 1900kb/s左右, 但内存开销了50M左右. 上几个版都是在10M左右.
    • 1.8 后,增加 CutLetterDigitFilter过虑器,切分“字母和数”混在一起的过虑器。比如:mb991ch 切为 “mb 991 ch”。

mmseg4j实现的功能详情请看:

3、在 com.chenlb.mmseg4j.example包里的类示例了三种分词效果。

FudanNLP(复旦大学)

官网:http://code.google.com/p/fudannlp/

2013.8.14 发布FudanNLP1.6.1版。时常更新。

复旦大学开发的软件。

FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算法和数据集。本工具包及其包含数据集使用LGPL3.0许可证。开发语言为Java。功能包括中文分词等,不需要字典支持。

功能:

    1. 信息检索: 文本分类 新闻聚类
    2. 中文处理: 中文分词 词性标注 实体名识别 关键词抽取 依存句法分析 时间短语识别
    3. 结构化学习: 在线学习 层次分类 聚类 精确推理

Jcseg

官网:http://code.google.com/p/jcseg/

一、jcseg中文分词器

jcseg是使用Java开发的一个中文分词器,使用mmseg算法实现。

1。目前最高版本:jcseg1.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。

SCWS

   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

Friso

官网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]

HTTPCWS:

基于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 开发的目的正在于此,对于短句、小文本中文分词切分,速度非常之快。

libmmseg

Author:李沫南

语言和平台: 用C++ 编写的开源的中文分词软件, libmmseg 主要被作者用来实现 Sphinx 全文检索软件的中文分词功能,因此作者给 Sphinx 提供了一个补丁文件,可以让 Sphinx 集成 libmmseg ,从而支持对于中文文章的全文检索功能。 libmmseg 从 0.7.2版本开始,作者提供了 ruby 调用的接口,所以我们可以直接在ruby 程序里面调用 libmmseg 进行分词了。特别是我们可以用 ferret 去调用 libmmseg 分词功能,从而让 ruby 原生支持中文的全文检索。

算法 :

“基于词库的最大匹配算法 ”

性能:

分词速度为每秒300KB左右。

OpenCLAS

是一个开源的中文词法分析库。

主要功能:

其中包括了中文分词、词性标注等功能。系统使用基于概率的多层HMM 。可以对已登录词和未登录词进行识别分析。

OpenCLAS是对原有的 ICTCLAS ( 中科院中文词法分析系统 ) 进行的重写。 OpenCLAS 将不包含任何 ICTCLAS 中的源代码,并且以 BSD 协议发布。因此其代码可以在满足 BSD 协议的前提下,用于包括商用在内的各种场合。

OpenCLAS将包含三个语言分支,C++, Java 和 C# 。 ( 目前只实现了 C++ 的版本 ) 。

CRF++(上海交大)

项目网址: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的正式结果在。 我们的系统报告在

原文地址:

http://ling0322.info/2013/02/13/cws-intro.html

http://www.onexin.net/to-achieve-the-18-chinese-word-segmentation-tool/

时间: 2024-10-09 14:26:23

[转]自然语言分词简介的相关文章

模式识别之中文分词---简介

Lucene系列介绍 Lucene:分词器和索引文件 目录 分词器 索引文件结构 常用的中文分词器 1.分词器 分词器,对文本资源进行切分,将字符文本串按照一定的规则切分为一个个可以进行索引的最小单位(关键词),以便检索时使用. 建立索引和进行检索时都要用到分词器.为了保证能正确的检索到结果,在建立索引与进行检索时使用的分词器应是同一个. 2.索引文件结构 索引库是一组索引文件的集合. 索引文件的检索:索引表规模相对较小,文档集合规模较大.进行检索时,先从检索索引表开始,然后找到相对应的文档.如

深度学习与自然语言处理(1)_斯坦福cs224d Lecture 1

作者:寒小阳 && 龙心尘 时间:2016年6月 出处: http://blog.csdn.net/han_xiaoyang/article/details/51567822 http://blog.csdn.net/longxinchen_ml/article/details/51567960 声明:版权所有,转载请联系作者并注明出处 说明:本文为斯坦福大学CS224d课程的中文版内容笔记,已得到斯坦福大学课程@Richard Socher教授的授权翻译与发表 特别鸣谢:@XXX同学的帮

汉语分词软件的使用 (python底下)

目前我常常使用的分词有结巴分词.NLPIR分词等等 最近是在使用结巴分词,稍微做一下推荐,还是蛮好用的. 一.结巴分词简介 利用结巴分词进行中文分词,基本实现原理有三: 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG) 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法 二.安装及使用(Linux) 1.下载工具包,解压后进入目录下,运行:python setup

Solr集群、KI分词、项目实战

Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎. 讲师本人之前在互联网大数据.国家水电数据中心方面的项目时,对海量数据的查询和检索都采用了solr的集群服务,达到高效的实时搜索效果,为满足越来越多大数据人才的需求,特意整理录制成视频,适合各层次学员学习本视频的知识点,当然课程中的知识点大家一看也就知道

中文分词简单理解及 jieba的简单运用

汉语分词中的基本问题:分词规范,歧义的切分和未登录词的识别 分词规范:(一般也就是指"词"的概念的纠缠不清的问题,),一方面来源于 单字词和词素之间的划界,另一方面就是词和短语(词组)的划界问题 歧义切分问题: 交集型切分歧义:汉字串AJB  其中 AJ,JB同时为词,此时的J 称作交集串 例如:结合成,   "结合", "合成"分别为词,此时的"合"则为交集串 链长的概念:一个交集型切分歧义所拥有的交集串的集合成为交集串链,

《Python自然语言处理实战:核心技术与算法》PDF新书推介,附带链接地址

本书从各个方面着手,帮助读者理解NLP的过程,提供了各种实战场景,结合现实项目背景,帮助读者理解NLP中的数据结构和算法以及目前主流的NLP技术与方法论,结合信息检索技术与大数据应用等流行技术,终完成对NLP的学习和掌握. --黄英 阿里巴巴达摩院高级算法专家 目前市面上的NLP书籍,要么是针对研究人员的偏理论性的教科书,要么是针对资深工程师进一步深入了解NLP技术的高级读物.为了填补这一空白,三位来自工业界的资深NLP专家,结合真实的项目,让读者能够以快的速度掌握NLP技术的精髓.同时,穿插大

Attention Please!TWO HUNDREDS OF machine learning turorial summary

Machine Learning The First Column The Second Column Machine Learning 1 从机器学习入手 Machine Learning 2 机器学习很有趣! Machine Learning 3 机器学习规则:ML工程的最佳实践 Machine Learning 4 机器学习速成课程:第一部分 Machine Learning 5 第二部分;伯克利机器学习 Machine Learning 6 第三部分;伯克利机器学习 Machine Le

中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)

2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包,在这一点上它比其余五款分词工具都要便捷.另外,jieba库支持的文本编码方式为utf-8. Jieba库包含许多功能,如分词.词性标注.自定义词典.关键词提取.基于jieba的关键词提取有两种常用算法,一是TF-IDF算法:二是TextRank算法.基于jieba库的分词,包含三种分词模式: 精准

大数据文本分析:灵玖自然语言中文语义分词系统

自然语言通常是指一种自然地随文化演化的语言.英语.汉语.日语为自然语言的例子,而世界语则为人造语言,即是一种为某些特定目的而创造的语言. 自然语言具备两个属性:语言属性与自然属性."语言"属性表现为公认的某些约定俗成的内在规律性;"自然"属性是说并不存在某个人为制造的.严格的语法规则体系来约定人们的语言表达方式,这是和程序设计语言大相径庭的.自然语言需要遵循一定的内在规律,但更大程度上是"存在即合理". 一个自然语言处理系统必须考虑许多语言自身与