jieba 分词 - 搜索引擎模式介绍
1 课程概览
本课详细讲解 jieba 分词的搜索引擎模式(Search Engine Mode),通过电商搜索的实际案例(如"苹果手机保护套"与用户搜索"苹果套"的匹配问题),深入解释搜索引擎模式如何在精确模式基础上对长词再次切分以提高召回率,并给出代码实现。
2 核心概念与定义
- 搜索引擎模式(Search Engine Mode):在精确模式分词基础上,对长词再次切分,提高召回率,适合搜索引擎分词和文本匹配。
- 召回率(Recall Rate):真实正例中被正确预测为正例的比例,搜索引擎模式通过再次切分长词提高匹配可能性。
- 文本匹配(Text Matching):将用户查询词与文档内容进行匹配的过程。
3 模型与算法详解
搜索引擎模式原理
- 先进行精确模式分词
- 对精确模式切出的长词再次切分
- 从而提高召回率
搜索引擎模式 vs 精确模式
| 对比项 | 精确模式 | 搜索引擎模式 |
|---|---|---|
| 原理 | 最精确切分 | 精确模式基础上对长词再次切分 |
| 颗粒度 | 适中 | 最细 |
| 召回率 | 较低 | 较高 |
| 适用场景 | 文本分析 | 搜索引擎、文本匹配 |
实际应用场景分析
场景一:搜索"程序员"
| 模式 | 匹配结果 | 说明 |
|---|---|---|
| 精确模式 | 只匹配完整包含"程序员"三字的文档 | 召回率低 |
| 搜索引擎模式 | 匹配"程序""员""程序员"相关文档 | 召回率高 |
场景二:电商搜索(核心案例)
商品标题:苹果手机保护套
用户搜索:苹果套
| 模式 | 分词结果 | 能否匹配 | 原因 |
|---|---|---|---|
| 精确模式 | 苹果 / 手机 / 保护套 | ❌ 不能 | "苹果套"无法与"苹果""保护套"匹配 |
| 搜索引擎模式 | 苹果 / 手机 / 保护 / 套 / 保护套 | ✅ 能 | 长词再次切分,"苹果"+"套"可匹配 |
搜索引擎模式对精确模式切出的"保护套"再次切分为"保护""套",使用户搜索"苹果套"时能匹配到"苹果手机保护套"的商品。
搜索引擎模式的核心价值
- 用户搜索时话没说完或没说全,系统仍能理解意图
- 提高搜索结果的召回率,使搜索更智能
- 电商搜索是最典型的应用场景
4 数学原理与推导
召回率提升原理
精确模式分词结果:${w_1, w_2, ..., w_n}$
搜索引擎模式在精确模式基础上对长词 $w_i$(长度 > 阈值)再次切分:
$$w_i \rightarrow {w_{i1}, w_{i2}, ..., w_{ik}}$$
最终分词结果:${w_1, w_2, ..., w_{i1}, w_{i2}, ..., w_{ik}, ..., w_n}$
词集合扩大 → 匹配可能性增加 → 召回率提高。
5 代码示例
import jieba
# 定义函数:演示 jieba 搜索引擎模式分词
def dm03_jieba_search():
# 1. 准备分词内容
content = "传智教育是一家上市公司,旗下有黑马程序员品牌,我是在黑马这里学习人工智能"
# 2. 使用 jieba 进行搜索引擎模式分词
# cut_for_search() 方法实现搜索引擎模式
result = jieba.cut_for_search(content)
# 3. 打印结果
# 返回生成器,需转换为列表
print("搜索引擎模式分词结果:", list(result))
# 测试
if __name__ == "__main__":
dm03_jieba_search()
输出示例:
搜索引擎模式分词结果: ['传智', '教育', '传智教育', '是', '一家', '上市', '公司', '上市公司', ',', '旗下', '有', '黑马', '程序员', '品牌', ',', '我', '是', '在', '黑马', '这里', '学习', '人工', '智能', '人工智能']
注意:搜索引擎模式中,长词如"传智教育"会被切分为"传智""教育""传智教育","上市公司"被切分为"上市""公司""上市公司"。
6 重难点与易错提醒
- ❗重点:搜索引擎模式使用
jieba.cut_for_search()方法,而非jieba.cut(),注意方法名不同。 - ⚠️易错:搜索引擎模式不是通过
cut_all参数控制,而是使用独立的方法cut_for_search()。 - 💡深入理解:搜索引擎模式 = 精确模式 + 长词再次切分,目的是提高召回率。
- ❗重点:电商搜索是搜索引擎模式最典型的应用场景,解决用户搜索词与商品标题不完全匹配的问题。
7 课堂问答精选
Q1:为什么搜索引擎模式能提高召回率?
A:搜索引擎模式在精确模式分词基础上,对长词再次切分。例如"保护套"被切分为"保护""套""保护套",词集合扩大后,用户搜索"苹果套"时,"苹果"和"套"都能匹配到,从而提高召回率。
Q2:搜索引擎模式在电商搜索中如何应用?
A:商品标题"苹果手机保护套"经搜索引擎模式分词为"苹果/手机/保护/套/保护套",用户搜索"苹果套"分词为"苹果/套",两者可以匹配。若用精确模式,"苹果套"无法与"苹果/手机/保护套"匹配,商品搜不出来。
Q3:搜索引擎模式的代码与精确模式有何区别?
A:精确模式使用 jieba.cut(content, cut_all=False),搜索引擎模式使用 jieba.cut_for_search(content),是不同的方法。
8 本课小结
- 搜索引擎模式:在精确模式基础上对长词再次切分,提高召回率。
- 使用
jieba.cut_for_search()方法实现。 - 典型应用:电商搜索,解决用户搜索词与商品标题不完全匹配的问题。
- 核心价值:用户话没说完或没说全,系统仍能理解意图,使搜索更智能。
9 延伸思考
- 搜索引擎模式切分长词的阈值是如何确定的?
- 在实际搜索引擎中,如何平衡召回率与精确率?