0 引言
-
支持 3 种分词模式:精确模式、全模式、搜索引擎模式 -
支持繁体分词 -
支持自定义词典
jieba
库的安装
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)
简单应用:
需求:使用 jieba
分词对一个文本进行分词,统计次数出现最多的词语,这里以三国演义为例
# -*- coding: utf-8 -*-
import jieba
txt = open("三国演义.txt", "r", encoding='utf-8').read()
words = jieba.lcut(txt) # 使用精确模式对文本进行分词
counts = {} # 通过键值对的形式存储词语及其出现的次数
for word in words:
if len(word) == 1: # 单个词语不计算在内
continue
else:
counts[word] = counts.get(word, 0) + 1 # 遍历所有词语,每出现一次其对应的值加 1
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True) # 根据词语出现的次数进行从大到小排序
for i in range(3):
word, count = items[i]
print("{0:<5}{1:>5}".format(word, count))
文章评论