ByteNoteByteNote

字节笔记本

2026年2月19日

jieba:结巴中文分词 - Python 最流行的中文分词库

本文介绍 jieba(结巴中文分词),一个流行的 Python 中文分词库,支持多种分词模式和关键词提取功能。

jieba 简介

jieba(结巴中文分词)是由 fxsjy 开发的 Python 中文分词库,是目前最流行的中文分词工具之一。它支持多种分词模式,在 GitHub 上拥有 34.8k stars 和 6.7k forks,采用 MIT 许可证。

核心定位:做最好的 Python 中文分词组件

核心特性

  • 四种分词模式:精确模式、全模式、搜索引擎模式、paddle 模式
  • 支持繁体分词
  • 支持自定义词典
  • 基于前缀词典实现高效的词图扫描,生成 DAG(有向无环图)
  • 采用动态规划查找最大概率路径
  • 对未登录词使用 HMM 模型和 Viterbi 算法

基本信息

安装方法

bash
pip install jieba

安装 paddle 模式支持(可选):

bash
pip install paddlepaddle-tiny

分词模式

1. 精确模式

试图将句子最精确地切开,适合文本分析。

python
import jieba

seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("/ ".join(seg_list))
# 输出: 我/ 来到/ 北京/ 清华大学

2. 全模式

把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义。

python
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("/ ".join(seg_list))
# 输出: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学

3. 搜索引擎模式

在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

python
seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所")
print("/ ".join(seg_list))
# 输出: 小明/ 硕士/ 毕业/ 于/ 中国/ 科学院/ 中国科学院/ 计算/ 计算所

4. Paddle 模式

基于 PaddlePaddle 深度学习框架,分词效果更优。

python
jieba.enable_paddle()
seg_list = jieba.cut("我来到北京清华大学", use_paddle=True)

主要功能

添加自定义词典

python
# 加载自定义词典
jieba.load_userdict("userdict.txt")

# 动态添加词语
jieba.add_word("石墨烯")

# 调整词频
jieba.suggest_freq(("中", "将"), True)

关键词提取

基于 TF-IDF 算法:

python
import jieba.analyse

text = "机器学习是人工智能的一个分支"
keywords = jieba.analyse.extract_tags(text, topK=3)
print(keywords)
# 输出: ['机器学习', '人工智能', '分支']

基于 TextRank 算法:

python
keywords = jieba.analyse.textrank(text, topK=3)

词性标注

python
import jieba.posseg as pseg

words = pseg.cut("我爱北京天安门")
for word, flag in words:
    print(f"{word} {flag}")
# 输出:
# 我 r
# 爱 v
# 北京 ns
# 天安门 ns

并行分词

python
# 开启并行分词(仅支持 Linux/Unix)
jieba.enable_parallel(4)  # 4个进程

# 分词操作...

# 关闭并行分词
jieba.disable_parallel()

Tokenize

返回词语在原文的起止位置:

python
result = jieba.tokenize("永和服装饰品有限公司")
for tk in result:
    print(f"word: {tk[0]}, start: {tk[1]}, end: {tk[2]}")

命令行分词

bash
python -m jieba input.txt > output.txt

分词速度

  • 全模式:1.5 MB/Second
  • 默认模式:400 KB/Second

其他语言实现

jieba 已被移植到多种编程语言:

  • Java: jieba-analysis
  • C++: cppjieba
  • Rust: jieba-rs
  • Node.js: nodejieba
  • Erlang: ejieba
  • R: jiebaR
  • iOS: jieba-ios
  • PHP: jieba-php
  • .NET(C#): jieba.NET
  • Go: gojieba
  • Android: android-jieba

适用场景

  • 中文自然语言处理
  • 搜索引擎开发
  • 文本挖掘和分析
  • 机器学习数据预处理
  • 关键词提取
  • 情感分析

总结

jieba 是中文分词领域的标杆项目,其优势包括:

  • 算法先进:基于 DAG + HMM,分词准确率高
  • 模式丰富:四种分词模式满足不同场景
  • 功能完善:支持自定义词典、关键词提取、词性标注
  • 生态丰富:多语言移植版本
  • 社区活跃:34.8k stars,持续维护

对于需要中文分词功能的 Python 项目来说,jieba 是首选方案。

分享: