1 安装
代码对 Python 2/3 均兼容
- 全自动安装: easy_install jieba 或者 pip install jieba / pip3 install jieba
- 半自动安装:先下载 https://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install
- 手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录
- 通过 import jieba 来引用
2 特点
- 支持三种分词模式:
- 精确模式,试图将句子最精确地切开,适合文本分析;
- 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
- 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
- 支持繁体分词
- 支持自定义词典
- MIT 授权协议
3 示例
1 基本用法
# encoding=utf-8
import jieba
words = jieba.cut("我今天去国家科学技术馆参观")
print("/".join(words))
结果: 我/今天/去/国家/科学技术/馆/参观
2 添加字典
# encoding=utf-8
import jieba
jieba.load_userdict("dict.txt")
words = jieba.cut("我今天去国家科学技术馆参观")
print("/".join(words))
结果: 我/今天/去/国家科学技术馆/参观
dict.txt
国家科学技术馆 100 n
自定义的词典一行上面有三列,第二个是指出现的次数,第三个是词性
3 动态修改词频字典
# encoding=utf-8
import jieba
words = jieba.cut("我今天去国家科学技术馆参观", HMM=False)
jieba.suggest_freq(('国家科学技术馆'), True)
print("/".join(words))
结果: 我/今天/去/国家科学技术馆/参观
使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其(或不能)被分出来。
注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。
4 三种模式的分词
# 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))
结果:
Full Mode: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
Default Mode: 我/ 来到/ 北京/ 清华大学
他, 来到, 了, 网易, 杭研, 大厦
小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, ,, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造、
5 词性标注
# encoding=utf-8
import jieba
import jieba.posseg as pseg
words = pseg.cut("我爱祖国大好河山")
pseg.jieba.suggest_freq(('爱', '祖国'), True)
for word, flag in words:
print('%s %s' % (word, flag))
结果:
我 r
爱 v
祖国 n
大好河山 i
6 Tokenize:返回词语在原文的起止位置
- 注意,输入参数只接受 unicode\
默认模式
# encoding=utf-8
import jieba
import jieba.posseg as pseg
result = jieba.tokenize("如意进出口贸易有限公司")
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: 5
word 贸易 start: 5 end: 7
word 有限公司 start: 7 end: 11
搜索模式
# encoding=utf-8
import jieba
import jieba.posseg as pseg
result = jieba.tokenize("如意进出口贸易有限公司", 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: 3 end: 5
word 进出口 start: 2 end: 5
word 贸易 start: 5 end: 7
word 有限 start: 7 end: 9
word 公司 start: 9 end: 11
word 有限公司 start: 7 end: 11