准确实用,7个优秀的开源中文分词库推荐

文章来自开源中国(微信ID:oschina2013)

如需转载请注明上述来源,其他来源无效并视为侵权

中文分词是中文文本处理的基础步骤,也是中文人机自然语言交互的基础模块。由于中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词。

纵观整个开源领域,陆陆续续做中文分词的也有不少,不过目前仍在维护的且质量较高的并不多。下面整理了一些个人认为比较优秀的中文分词库,以供大家参考使用。

1、jieba —— Python 中文分词组件

“结巴”中文分词,做最好的 Python 中文分词组件。

特性

支持三种分词模式:

精确模式,试图将句子最精确地切开,适合文本分析;

全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

支持繁体分词

支持自定义词典

算法

基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)

采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合

对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

代码示例

输出:

2、HanLP —— 汉语言处理包

HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。

HanLP提供下列功能:

中文分词

HMM-Bigram(速度与精度最佳平衡;一百兆内存)

最短路分词、N-最短路分词

由字构词(侧重精度,可识别新词;适合NLP任务)

感知机分词、CRF分词

词典分词(侧重速度,每秒数千万字符;省内存)

极速词典分词

所有分词器都支持:

索引全切分模式

用户自定义词典

兼容繁体中文

训练用户自己的领域模型

词性标注

HMM词性标注(速度快)

感知机词性标注、CRF词性标注(精度高)

命名实体识别

基于HMM角色标注的命名实体识别 (速度快)

中国人名识别、音译人名识别、日本人名识别、地名识别、实体机构名识别

基于线性模型的命名实体识别(精度高)

感知机命名实体识别、CRF命名实体识别

关键词提取

TextRank关键词提取

自动摘要

TextRank自动摘要

短语提取

基于互信息和左右信息熵的短语提取

拼音转换

多音字、声母、韵母、声调

简繁转换

简繁分歧词(简体、繁体、臺灣正體、香港繁體)

文本推荐

语义推荐、拼音推荐、字词推荐

依存句法分析

基于神经网络的高性能依存句法分析器

MaxEnt依存句法分析

文本分类

情感分析

word2vec

词向量训练、加载、词语相似度计算、语义运算、查询、KMeans聚类

文档语义相似度计算

语料库工具

默认模型训练自小型语料库,鼓励用户自行训练。所有模块提供训练接口,语料可参考OpenCorpus

在提供丰富功能的同时,HanLP内部模块坚持低耦合、模型坚持惰性加载、服务坚持静态提供、词典坚持明文发布,使用非常方便,同时自带一些语料处理工具,帮助用户训练自己的模型。

3、Jcseg —— 轻量级 Java 中文分词器

Jcseg 是基于 mmseg 算法的一个轻量级中文分词器,同时集成了关键字提取,关键短语提取,关键句子提取和文章自动摘要等功能,并且提供了一个基于 Jetty 的 web 服务器,方便各大语言直接 http 调用,同时提供了最新版本的 lucene, solr, elasticsearch 的分词接口!Jcseg 自带了一个 jcseg.properties 文件用于快速配置而得到适合不同场合的分词应用,例如:最大匹配词长,是否开启中文人名识别,是否追加拼音,是否追加同义词等!

核心功能:

中文分词:mmseg 算法 + Jcseg 独创的优化算法,四种切分模式。

关键字提取:基于 textRank 算法。

关键短语提取:基于 textRank 算法。

关键句子提取:基于 textRank 算法。

文章自动摘要:基于 BM25+textRank 算法。

自动词性标注:基于词库+(统计歧义去除计划),目前效果不是很理想,对词性标注结果要求较高的应用不建议使用。

命名实体标注:基于词库+(统计歧义去除计划),电子邮件,网址,大陆手机号码,地名,人名,货币,datetime 时间,长度,面积,距离单位等。

Restful api:嵌入 jetty 提供了一个绝对高性能的 server 模块,包含全部功能的http接口,标准化 json 输出格式,方便各种语言客户端直接调用。

中文分词模式:

六种切分模式

(1).简易模式:FMM 算法,适合速度要求场合。

(2).复杂模式:MMSEG 四种过滤算法,具有较高的歧义去除,分词准确率达到了 98.41%。

(3).检测模式:只返回词库中已有的词条,很适合某些应用场合。

(4).检索模式:细粒度切分,专为检索而生,除了中文处理外(不具备中文的人名,数字识别等智能功能)其他与复杂模式一致(英文,组合词等)。

(5).分隔符模式:按照给定的字符切分词条,默认是空格,特定场合的应用。

(6).NLP 模式:继承自复杂模式,更改了数字,单位等词条的组合方式,增加电子邮件,大陆手机号码,网址,人名,地名,货币等以及无限种自定义实体的识别与返回。

4、sego —— Go 中文分词

sego 是一个 Go 中文分词库,词典用双数组 trie(Double-Array Trie)实现,分词器算法为基于词频的最短路径加动态规划。

支持普通和搜索引擎两种分词模式,支持用户词典、词性标注,可运行JSON RPC 服务

分词速度单线程9MB/s,goroutines 并发42MB/s(8核 Macbook Pro)。

示例代码:

5、 FoolNLTK —— 可能是最准的开源中文分词

中文处理工具包

特点

可能不是最快的开源中文分词,但很可能是最准的开源中文分词

基于BiLSTM 模型训练而成

包含分词,词性标注,实体识别, 都有比较高的准确率

用户自定义词典

可训练自己的模型

批量处理

定制自己的模型

分词

6、Ansj 中文分词 —— 基于 n-Gram+CRF+HMM 的中文分词的 Java 实现

Ansj 中文分词是一个基于 n-Gram+CRF+HMM 的中文分词的 java 实现。分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上。目前实现了中文分词、中文姓名识别、用户自定义词典、关键字提取、自动摘要、关键字标记等功能,可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目。

下面是一个简单的分词效果,仅做参考:

7、word 分词 —— Java 分布式中文分词组件

word 分词是一个 Java 实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用 ngram 模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词频统计、词性标注、同义标注、反义标注、拼音标注等功能。提供了10种分词算法,还提供了10种文本相似度算法,同时还无缝和 Lucene、Solr、ElasticSearch、Luke 集成。注意:word1.3 需要 JDK1.8 。

分词算法效果评估:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 常用概念: 自然语言处理(NLP) 数据挖掘 推荐算法 用户画像 知识图谱 信息检索 文本分类 常用技术: 词级别...
    御风之星阅读 9,148评论 1 25
  • 转自 进击的Coder 公众号 原理 中文分词,即 Chinese Word Segmentation,即将一个汉...
    Epiphron阅读 11,547评论 2 56
  • 转载请注明:终小南 » 中文分词算法总结 什么是中文分词众所周知,英文是以 词为单位的,词和词之间是靠空格隔开,而...
    kirai阅读 9,800评论 3 24
  • 妈妈给豆豆半个苹果,两个人一起吃着甜甜的苹果,妈妈看着豆豆,豆豆看着妈妈,一起开心的笑了。 吃完苹果,豆豆刚要把吃...
    灰灰的白阅读 819评论 0 1
  • 做事,运用专业的态度和思维,来看待并尝试找到遇到问题的出口。这就是理性! 专业塑造理性!
    juan子阅读 175评论 0 1