0 引言
jieba 是目前最好的 Python 中文分词组件,它主要有以下 3 种特性:
- 支持 3 种分词模式:精确模式、全模式、搜索引擎模式
- 支持繁体分词
- 支持自定义词典
# 导入 jieba
import jieba
import jieba.posseg as pseg #词性标注
import jieba.analyse as anls #关键词提取
1 分词
可使用 jieba.cut
和 jieba.cut_for_search
方法进行分词,两者所返回的结构都是一个可迭代的 generator,可使用 for 循环来获得分词后得到的每一个词语(unicode),或者直接使用 jieba.lcut
以及 jieba.lcut_for_search
直接返回 list。其中:
jieba.cut
和jieba.lcut
接受 3 个参数:- 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
- cut_all 参数:是否使用全模式,默认值为
False
- HMM 参数:用来控制是否使用 HMM 模型,默认值为
True
jieba.cut_for_search
和jieba.lcut_for_search
接受 2 个参数:- 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
- HMM 参数:用来控制是否使用 HMM 模型,默认值为
True
# 尽量不要使用 GBK 字符串,可能无法预料地错误解码成 UTF-8
1.1 全模式和精确模式
# 全模式
seg_list = jieba.cut("他来到上海交通大学", cut_all=True)
print("【全模式】:" + "/ ".join(seg_list))
【全模式】:他/ 来到/ 上海/ 上海交通大学/ 交通/ 大学
# 精确模式
seg_list = jieba.cut("他来到上海交通大学", cut_all=False)
print("【精确模式】:" + "/ ".join(seg_list))
【精确模式】:他/ 来到/ 上海交通大学
type(seg_list)
generator
# 返回列表
seg_list = jieba.lcut("他来到上海交通大学", cut_all=True)
print("【返回列表】:{0}".format(seg_list))
【返回列表】:['他', '来到', '上海', '上海交通大学', '交通', '大学']
type(seg_list)
list
1.2 搜索引擎模式
# 搜索引擎模式
seg_list = jieba.cut_for_search("他毕业于上海交通大学机电系,后来在一机部上海电器科学研究所工作")
print("【搜索引擎模式】:" + "/ ".join(seg_list))
【搜索引擎模式】:他/ 毕业/ 于/ 上海/ 交通/ 大学/ 上海交通大学/ 机电/ 系/ ,/ 后来/ 在/ 一机部/ 上海/ 电器/ 科学/ 研究/ 研究所/ 工作
# 返回列表
seg_list = jieba.l