jieba 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
jieba 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
jieba 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 Python 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发中文分词库
开源组织
地区 国产
投 递 者 fxsjy
适用人群 未知
收录时间 2012-10-03

软件简介

jieba

"结巴"中文分词:做最好的Python中文分词组件 "Jieba" 

Feature

  • 支持三种分词模式:

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

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

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

  • 支持繁体分词

  • 支持自定义词典

在线演示

http://jiebademo.ap01.aws.af.cm/

(Powered by Appfog)

Python 2.x 下的安装

  • 全自动安装:easy_install jieba 或者 pip install jieba

  • 半自动安装:先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py install

  • 手动安装:将jieba目录放置于当前目录或者site-packages目录

  • 通过import jieba 来引用 (第一次import时需要构建Trie树,需要几秒时间)

Python 3.x 下的安装

  • 目前master分支是只支持Python2.x 的

  • Python3.x 版本的分支也已经基本可用: https://github.com/fxsjy/jieba/tree/jieba3k

    git clone https://github.com/fxsjy/jieba.git
    git checkout jieba3k
    python setup.py install

Algorithm

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

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

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

功能 1):分词

  • jieba.cut方法接受两个输入参数: 1) 第一个参数为需要分词的字符串 2)cut_all参数用来控制是否采用全模式

  • jieba.cut_for_search方法接受一个参数:需要分词的字符串,该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细

  • 注意:待分词的字符串可以是gbk字符串、utf-8字符串或者unicode

  • jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list

代码示例( 分词 )

#encoding=utf-8
import jieba

seg_list = jieba.cut("我来到北京清华大学",cut_all=True)
print "Full Mode:", "/ ".join(seg_list) #全模式

seg_list = jieba.cut("我来到北京清华大学",cut_all=False)
print "Default Mode:", "/ ".join(seg_list) #精确模式

seg_list = jieba.cut("他来到了网易杭研大厦") #默认是精确模式
print ", ".join(seg_list)

seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") #搜索引擎模式
print ", ".join(seg_list)

Output:

【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学

【精确模式】: 我/ 来到/ 北京/ 清华大学

【新词识别】:他, 来到, 了, 网易, 杭研, 大厦    (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)

【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造

功能 2) :添加自定义词典

  • 开发者可以指定自己自定义的词典,以便包含jieba词库里没有的词。虽然jieba有新词识别能力,但是自行添加新词可以保证更高的正确率

  • 用法: jieba.load_userdict(file_name) # file_name为自定义词典的路径

  • 词典格式和dict.txt一样,一个词占一行;每一行分三部分,一部分为词语,另一部分为词频,最后为词性(可省略),用空格隔开

  • 范例:

  • "通过用户自定义词典来增强歧义纠错能力" --- https://github.com/fxsjy/jieba/issues/14

功能 3) :关键词提取

  • jieba.analyse.extract_tags(sentence,topK) #需要先import jieba.analyse

  • setence为待提取的文本

  • topK为返回几个TF/IDF权重最大的关键词,默认值为20

代码示例 (关键词提取)

https://github.com/fxsjy/jieba/blob/master/test/extract_tags.py

功能 4) : 词性标注

  • 标注句子分词后每个词的词性,采用和ictclas兼容的标记法

  • 用法示例

    >>> import jieba.posseg as pseg
    >>> words =pseg.cut("我爱北京天安门")
    >>> for w in words:
    ...    print w.word,w.flag
    ...
    我 r
    爱 v
    北京 ns
    天安门 ns

功能 5) : 并行分词

  • 原理:将目标文本按行分隔后,把各行文本分配到多个python进程并行分词,然后归并结果,从而获得分词速度的可观提升

  • 基于python自带的multiprocessing模块,目前暂不支持windows

  • 用法:

    • jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数

    • jieba.disable_parallel() # 关闭并行分词模式

  • 例子: https://github.com/fxsjy/jieba/blob/master/test/parallel/test_file.py

  • 实验结果:在4核3.4GHz Linux机器上,对金庸全集进行精确分词,获得了1MB/s的速度,是单进程版的3.3倍。

 

功能 6) : Tokenize:返回词语在原文的起始位置

  • 注意,输入参数只接受unicode

  • 默认模式

result = jieba.tokenize(u'永和服装饰品有限公司')
for tk in result:
    print "word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2])
word 永和                start: 0                end:2
word 服装                start: 2                end:4
word 饰品                start: 4                end:6
word 有限公司            start: 6                end:10
  • 搜索模式

result = jieba.tokenize(u'永和服装饰品有限公司',mode='search')
for tk in result:
    print "word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2])
word 永和                start: 0                end:2
word 服装                start: 2                end:4
word 饰品                start: 4                end:6
word 有限                start: 6                end:8
word 公司                start: 8                end:10
word 有限公司            start: 6                end:10

功能 7) : ChineseAnalyzer for Whoosh搜索引擎

 

其他词典

  1. 占用内存较小的词典文件 https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.small

  2. 支持繁体分词更好的词典文件 https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big

下载你所需要的词典,然后覆盖jieba/dict.txt 即可或者用jieba.set_dictionary('data/dict.txt.big')

模块初始化机制的改变:lazy load (从0.28版本开始)

jieba采用延迟加载,"import jieba"不会立即触发词典的加载,一旦有必要才开始加载词典构建trie。如果你想手工初始jieba,也可以手动初始化。

import jieba
jieba.initialize() #手动初始化(可选)

在0.28之前的版本是不能指定主词典的路径的,有了延迟加载机制后,你可以改变主词典的路径:

jieba.set_dictionary('data/dict.txt.big')

例子: https://github.com/fxsjy/jieba/blob/master/test/test_change_dictpath.py

分词速度

  • 1.5 MB / Second in Full Mode

  • 400 KB / Second in Default Mode

  • Test Env: Intel(R) Core(TM) i7-2600 CPU @ 3.4GHz;《围城》.txt

常见问题

1)模型的数据是如何生成的?https://github.com/fxsjy/jieba/issues/7

2)这个库的授权是? https://github.com/fxsjy/jieba/issues/2

更多问题请点击:https://github.com/fxsjy/jieba/issues?sort=updated&state=closed

Change Log

http://www.oschina.net/p/jieba/news#list

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(9)
发表了资讯
2014/10/20 00:00

结巴分词 0.34 发布,Python 中文分词组件

结巴分词 0.34 发布,更新内容如下: 2014-10-20: version 0.34 1. 提升性能,词典结构由Trie改为Prefix Set,内存占用减少2/3, 详见:https://github.com/fxsjy/jieba/pull/187;by @gumblex 2. 修复关键词提取功能的性能问题 jieba "结巴"中文分词:做最好的Python中文分词组件 "Jieba" Feature 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非...

8
51
发表了资讯
2014/08/31 00:00

结巴分词 0.33 发布,Python 中文分词组件

2014-08-31: version 0.33 1. 支持自定义stop words; by @fukuball 2. 支持自定义idf词典; by @fukuball 3. 修复自定义词典的词性不能正常显示的bug; by @ShuraChow 4. 支持python3.x 版本的自动安装:pip3 install jieba3k

1
15
发表了资讯
2014/02/07 00:00

结巴分词 0.32 发布,Python 中文分词组件

结巴分词:做最好的Python中文分词。 此次release包含以下更新: 1. 新增分词控制选项:可以关闭新词发现功能;详见:https://github.com/fxsjy/jieba/blob/master/test/test_no_hmm.py#L8 2. 修复词性标注子模块的Bug;详见: https://github.com/fxsjy/jieba/issues/111 https://github.com/fxsjy/jieba/issues/132 3. ChineseAnalyzer提供了更好的英文支持(感谢@jannson),例如单词Stemming; 详见:https://github.com/fxsj...

3
25
发表了资讯
2013/07/29 00:00

结巴分词 0.31 发布,Python 中文分词组件

结巴分词:做最好的Python中文分词。 此次release包含以下更新: 1. 修改了代码缩进格式,遵循PEP8标准 2. 支持Jython解析器,感谢 @piaolingxue 3. 修复中英混合词汇不能识别数字在前词语的Bug 4. 部分代码重构,感谢 @chao78787 5. 多进程并行分词模式下自动检测CPU个数设置合适的进程数,感谢@linkerlin 6. 修复了0.3版中jieba.extra_tags方法对whoosh模块的错误依赖...

1
22
发表了资讯
2013/07/01 00:00

结巴分词 0.30 发布,Python 中文分词组件

Chagelog: 2013-07-01: version 0.30 ========================== 1) 新增jieba.tokenize方法,返回每个词的起始位置 2) 新增ChineseAnalyzer,用于支持whoosh搜索引擎 3)添加了更多的中英混合词汇 4)修改了一些py文件的加载方法,从而支持py2exe,cxfree打包为exe Tokenize:返回词语在原文的起始位置 注意,输入参数只接受unicode 默认模式 result = jieba.tokenize(u'永和服装饰品有限公司')  for tk in result:      ...

0
25
发表了资讯
2013/06/07 00:00

结巴分词 0.29 发布,Python 中文分词组件

从0.28版本以后的Changelog如下: 2013-06-07: version 0.29 ========================== 1) 提升了finalseg子模块命名体识别的准确度 2) 修正了一些badcase 2013-06-01: version 0.28.4 ========================== 1) 修正了一些badcase 2) add wraps decorator, by @cloudaice 3) unittest, by @cloudaice 2013-05-02: version 0.28.3 ========================== 1) 修正了临时cache文件生成在pypy解析器下出错的问题 2013...

1
15
发表了资讯
2013/04/27 00:00

结巴分词 0.28 发布,Python 中文分词组件

2013-04-27: version 0.28 ======================== 1) 新增词典lazy load功能,用户可以在'import jieba'后再改变词典的路径. 感谢hermanschaaf 2) 显示词典加载异常时错误的词条信息. 感谢neuront 3) 修正了词典被vim编辑后会加载失败的bug. 感谢neuront 模块初始化机制的改变:lazy load ===================== jieba采用延迟加载,"import jieba"不会立即触发词典的加载,一旦有必要才开始加载词典构建trie。如果你想手工初...

11
13
发表了资讯
2013/04/22 00:00

结巴分词 0.27 发布,Python 中文分词组件

本次release的主要更新: 1) 新增并行分词功能,可以在多核计算机上显著提高分词速度 2) 修正了“的”字频过高引起的bug;修正了对小数点和下划线的处理 3) 修正了python2.6存在的兼容性问题 并行分词介绍: 原理:将目标文本按行分隔后,把各行文本分配到多个python进程并行分词,然后归并结果,从而获得分词速度的可观提升 基于python自带的multiprocessing模块,目前暂不支持windows 用法: jieba.enable_parallel(4) # 开启...

8
26
发表了资讯
2013/04/07 00:00

结巴分词 0.26 发布,Python 中文分词组件

本次的主要更新: 1) 改进了对标点符号的处理,之前的版本会过滤掉所有的标点符号; 2) 允许用户在自定义词典中添加词性; 3) 改进了关键词提取的功能jieba.analyse.extract_tags; 4) 修复了一个在pypy解释器下运行的bug. 在线演示:http://jiebademo.ap01.aws.af.cm/

8
23
发表了资讯
2013/02/18 00:00

结巴分词 0.25 发布,Python 中文分词组件

年后第一发,此次更新如下: 1)支持繁体中文的分词 2)修正了多python进程时生成cache文件失败的bug 详见: https://github.com/fxsjy/jieba/issues/25 https://github.com/fxsjy/jieba/issues/26

3
16
发表了资讯
2012/12/28 00:00

结巴分词 0.24 发布,Python 中文分词组件

结巴分词:做最好的中文分词组件 0.24版的更新如下: 1) 解决了没有标点的长句子分词效果差的问题。问题在于连续的小概率乘法可能会导致浮点下溢或为0。现在已经改为对数加法的方式,详见:issue19: https://github.com/fxsjy/jieba/issues/19 2) 修复了0.23的全模式下英文分词的bug

3
7
发表了资讯
2012/12/12 00:00

结巴分词 0.23 发布,Python 中文分词组件

结巴分词:做最好的中文分词组件 0.23版主要修复了之前版本不能识别中英混合词语的问题。 由于之前的版本在"初分"阶段便把中文和英文分开了,所以不能识别中英混合的词语, 比如“B超”,“T恤”。 现在,用户还可以通过自定义词典来添加新的混合词,比如“长袖T恤”,“江南style"

7
17
发表了资讯
2012/11/28 00:00

结巴分词 0.22 发布,Python 中文分词组件

结巴分词: 做最好的Python中文分词组件:-) 此次0.22版主要包含两个更新: 1) 新增jieba.cut_for_search方法, 该方法在精确分词的基础上对“长词”进行再次切分,适用于搜索引擎领域的分词,比精确分词模式有更高的召回率。 seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") #搜索引擎模式 print ", ".join(seg_list) 输出: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科...

0
17
发表了资讯
2012/11/23 00:00

结巴分词 0.21 发布 Python 中文分词组件

结巴分词:做最好的Python中文分词组件:-) jieba 0.21 主要包含以下两点更新: 1)修复了全模式分词中散字过多的问题 有网友在结合搜索引擎whoosh和jieba的过程中,发现cut_all=True这种模式下切分的散字过多,现已修复。 2)用户自定义词典函数load_userdict支持file-like object作为输入 此功能有网友felixonmars添加,详见:https://github.com/fxsjy/jieba/pull/13...

0
8
发表了资讯
2012/11/06 00:00

结巴分词 0.20 发布 Python 中文分词组件

结巴分词: 做最好的Python中文分词组件 有很多网友提了issue,希望jieba支持词性标注,因为他们做文本分析有时只需要某种词性的词,比如名词。 结巴0.20版增加了词性标注功能,由于是纯Python实现,对算法做了很多裁剪以免速度太慢。 标注句子分词后每个词的词性,采用和ictclas兼容的标记法 用法示例: import jieba.posseg as pseg words =pseg.cut("我爱北京天安门") for w in words: print w.word,w.flag 我 r 爱 v 北京 ns...

15
15
发表了资讯
2012/10/25 00:00

结巴分词 0.19 发布 Python 中文分词组件

结巴分词: 做最好的Python中文分词组件 jieba 0.19主要包含以下两个更新: 1) 提升了模块加载的速度。 "import jieba"除了第一次以外,加载时间缩短了75%,在主流PC Server上可以实现一秒以内加载完毕。 工作机制:第一次“import jieba”时加载文本词典到内存生成模型,然后dump到磁盘上的cache文件。以后再"import jieba"时,会判断文本文件与cache文件的时间戳决定从哪里加载,由于cache文件加载更快,所以提升了速度。 2)...

0
11
发表了资讯
2012/10/16 00:00

结巴分词 0.18 发布 Python 中文分词组件

“结巴分词” 自推出以来收到了很多网友的反馈,其中“关键词提取”是一个被普遍要求加入的功能。 jieba 0.18已经有了一个简单的关键词提取功能,基本原理是对文本分词后,按照tf/idf的权重进行排序,然后取权重较大的几个。 功能:关键词提取 jieba.analyse.extract_tags(sentence,topK) #需要先import jieba.analyse setence为待提取的文本 topK为返回几个权重最大的关键词,默认值为20 代码示例 (关键词提取) https://gith...

8
15
发表了资讯
2012/10/12 00:00

结巴 0.17 版发布 Python中文分词组件

"结巴"中文分词:做最好的Python中文分词组件。 此release主要包含以下两点更新: 1) 将词典文件dict.txt排序后存储,提升了Trie树构建速度,使得组件初始化时间缩短了10%; 2) 增强了人名词语的训练,增强了未登录人名词语的识别能力

5
4
发表了资讯
2012/10/09 00:00

结巴分词 0.16 发布,Python 中文分词组件

jieba是一款纯Python编写的中文分词组件。 此次0.16版主要包括下面两点更新: 1)将求最优切分路径的记忆化递归搜索算法改用循环实现,使分词速度提高了15% 2) 修复了Viterbi算法实现上的一个Bug

2
10
发表了资讯
2012/10/07 00:00

结巴分词 0.14 版发布,Python 中文分词库

主要更新如下: 1. 结巴分词被发布到了pypi,用户可以通过easy_install或者pip快速安装该组件; 2. 合并了搜狗开源词库2006版,删除了一些低频词 3. 优化了代码,缩短了程序初始化时间。 4. 增加了在线效果演示

4
29
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
9 评论
391 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部