在自然语言处理(NLP)任务中,中文文本的预处理往往从分词开始。与英文不同,中文句子没有空格作为天然的分隔符,因此需要借助工具来识别词语边界。
jieba 是目前 Python 生态中最流行的中文分词库之一。它基于前缀词典实现高效的词图扫描算法,并结合隐马尔可夫模型(HMM)来识别未登录词。下面我们将通过实际代码演示其核心功能。
安装与导入
使用 pip 即可快速安装:
pip install jieba
安装完成后直接导入:
import jieba
三种分词模式
jieba 提供了三种常用的分词策略,适用于不同的业务场景。
1. 精确模式(默认)
这是最常用的模式,旨在将句子最准确地切分成有意义的词语,适合文本分析。
import jieba
text = "我来到北京清华大学"
words = jieba.cut(text, cut_all=False)
print("/".join(words))
输出结果为:我/来到/北京/清华大学。这种模式下,程序会尝试找到最合理的组合,避免过度拆分。
2. 全模式
该模式会扫描句子中所有可能的词语,速度较快但会产生冗余信息。适合对召回率要求较高的场景。
words = jieba.cut("我来到北京清华大学", cut_all=True)
print("/".join(words))
输出可能包含:我/来到/北京/清华/清华大学/华大/大学。注意这里出现了'清华'和'清华大学'同时存在的情况。
3. 搜索引擎模式
在精确模式的基础上,对长词再次进行细分,适合用于搜索引擎的索引构建。
words = jieba.cut_for_search("小明硕士毕业于中国科学院计算所")
print("/".join(words))
输出结果会将'中国科学院'进一步拆分为'中国/科学院',以便更细粒度的匹配。
自定义词典
默认词典可能无法覆盖特定领域的专有名词,比如人名、品牌或新造词。我们可以通过动态添加或加载文件的方式扩展词典。
动态添加
jieba.add_word("李小龙")
添加后,再对包含该词的文本进行分词,就能正确识别为整体。
加载外部文件
如果词汇量较大,建议维护一个 user_dict.txt 文件,格式如下:
李小龙 10 nr
中国功夫 5 nz
然后在代码中调用:
jieba.load_userdict("user_dict.txt")


