jieba 分词 - 精确模式介绍
1 课程概览
本课详细介绍 jieba 分词库的三种分词模式(精确模式、全模式、搜索引擎模式),重点讲解精确模式的特点与代码实现。通过对比三种模式的颗粒度差异,帮助理解不同模式的适用场景。
2 核心概念与定义
- 精确模式(Accurate Mode):试图将句子最精确地切开,适合文本分析。
cut_all=False - 全模式(Full Mode):将句子中所有可以成词的词语都扫描出来,速度快但不能消除歧义。
cut_all=True - 搜索引擎模式(Search Engine Mode):在精确模式基础上对长词再次切分,提高召回率。
cut_for_search() - 颗粒度(Granularity):分词的精细程度,切得越碎颗粒度越细。
- 召回率(Recall):预测为正例的样本在真实正例中的占比,搜索引擎模式通过再次切分长词提高召回率。
3 模型与算法详解
jieba 三种分词模式对比
| 模式 | 特点 | 适用场景 | 颗粒度 |
|---|---|---|---|
| 精确模式 | 最精确切分,适合文本分析 | 文本分析 | 中 |
| 全模式 | 扫描所有成词,速度快但不能消除歧义 | 关键词提取 | 细 |
| 搜索引擎模式 | 精确模式基础上对长词再次切分,提高召回率 | 搜索引擎分词 | 最细 |
jieba 分词库核心功能
- 支持多种分词模式:精确模式、全模式、搜索引擎模式
- 支持中文繁体分词
- 支持用户自定义词典
精确模式详解
- 原理:试图将句子最精确地切开
- 适用场景:文本分析
- 参数:
jieba.cut(text, cut_all=False)
常见分词工具回顾
| 工具 | 来源 | 特点 |
|---|---|---|
| jieba | Python 库 | 支持多种模式、繁体、自定义词典 |
| IK 分词器 | Elasticsearch(ES) | 搜索引擎常用,底层依赖 Lucene |
| SnowNLP | 概率算法 | 中文 NLP 工具包 |
| pyltp | 哈工大 | 复杂 NLP 任务 |
| THULAC | 清华大学 | 通用 |
4 数学原理与推导
召回率公式
$$\text{Recall} = \frac{TP}{TP + FN}$$
其中:
- $TP$(True Positive):真实为正例且预测为正例
- $FN$(False Negative):真实为正例但预测为负例
搜索引擎模式通过对长词再次切分,增加匹配可能性,从而提高召回率。
5 代码示例
import jieba
# 定义函数:演示 jieba 精确模式分词
def dm01_jieba_precise():
# 1. 准备分词内容
content = "传智教育是一家上市公司,旗下有黑马程序员品牌,我是在黑马这里学习人工智能"
# 2. 使用 jieba 进行精确模式分词
# cut_all=False 表示精确模式(默认)
result = jieba.cut(content, cut_all=False)
# 3. 打印结果
# jieba.cut 返回的是生成器,需转换为列表
print("精确模式分词结果:", list(result))
# 测试
if __name__ == "__main__":
dm01_jieba_precise()
输出示例:
精确模式分词结果: ['传智教育', '是', '一家', '上市公司', ',', '旗下', '有', '黑马程序员', '品牌', ',', '我', '是', '在', '黑马', '这里', '学习', '人工智能']
6 重难点与易错提醒
- ❗重点:
jieba.cut()返回的是生成器(generator),不是列表,需用list()转换才能查看结果。 - ⚠️易错:精确模式参数为
cut_all=False,全模式为cut_all=True,不要混淆。 - 💡深入理解:三种模式的本质区别在于颗粒度——精确模式颗粒度适中,全模式更细,搜索引擎模式最细。
- 💡深入理解:搜索引擎模式在精确模式基础上对长词再次切分,目的是提高召回率。
7 课堂问答精选
Q1:jieba 的三种分词模式有什么区别?
A:
- 精确模式:最精确切分,适合文本分析,颗粒度适中
- 全模式:扫描所有成词,速度快但不能消除歧义,颗粒度细
- 搜索引擎模式:精确模式基础上对长词再次切分,提高召回率,颗粒度最细
Q2:什么是召回率?
A:召回率是预测为正例的样本在真实正例中的占比。在分词场景中,搜索引擎模式通过对长词再次切分,增加匹配可能性,从而提高召回率,使搜索结果更全面。
Q3:jieba.cut() 返回什么类型?
A:返回生成器(generator),需要通过 list() 转换、next() 获取或 for 循环遍历来获取分词结果。
8 本课小结
- jieba 支持三种分词模式:精确模式、全模式、搜索引擎模式。
- 精确模式(
cut_all=False):最精确切分,适合文本分析。 - 全模式(
cut_all=True):扫描所有成词,速度快但不能消除歧义。 - 搜索引擎模式(
cut_for_search()):对长词再次切分,提高召回率。 - 三种模式本质是颗粒度的差异:精确 < 全模式 < 搜索引擎。
9 延伸思考
- 在什么场景下应该选择全模式而非精确模式?
- 搜索引擎模式如何具体提高召回率?能否用混淆矩阵解释?