分词技术详解:中文Jieba分词与英文WordPiece算法原理及PyTorch实现
目录
什么是分词?
分词的本质与重要性
分词是自然语言处理(NLP)的第一道工序,它的核心任务是将连续的文本序列切分为有意义的最小语义单元——Token。
分词的本质:将文本切分为模型可处理的最小语义单元
- 原始文本:
"我爱自然语言处理技术"- 中文分词结果:
["我", "爱", "自然语言", "处理", "技术"]- 英文分词结果:
["I", "love", "natural", "language", "processing"]不同语言的分词难度:
- 中文最难(无天然空格分隔)
- 日文次之(汉字+假名混合)
- 英文较简单(以空格为主要分隔)
为什么要分词?
机器学习模型无法直接理解文本,必须先将其转换为数字向量。分词策略直接决定了文本如何被“翻译”给模型:
💡 重要提示:分词质量直接影响下游NLP任务的性能。
例如,对于“机器学习”:
- 分词器A:
["机器学习"]→ 1个token- 分词器B:
["机器", "学习"]→ 2个token- 分词器C:
["机", "器", "学", "习"]→ 4个token不同的切分方式会让模型学习到完全不同的语义。
中文分词:Jieba详解
Jieba 是目前最流行的开源中文分词工具,以高效、准确著称,尤其适合在各类 Python 项目中快速集成。
安装与基本使用
Jieba 提供了三种核心分词模式,适用于不同场景:
自定义词典与增强功能
对于专业领域(如医疗、法律、金融),Jieba 默认词典可能不够用,我们可以添加自定义词汇:
词性标注与关键词提取
除了分词,Jieba 还提供词性标注和关键词提取功能,能够为后续任务提供丰富的特征。
英文分词:WordPiece与BPE
英文虽然有空格分隔,但需要处理缩写、时态和罕见词,现代大模型通常使用子词分词(Subword Tokenization)技术。
传统空格分词与预处理
最简单的英文分词是按空格切分,但需要处理标点和大小写:
子词分词:BPE vs WordPiece
子词分词能平衡词汇表大小和未知词处理能力,核心思想是将罕见词拆分为常见子词。我们可以直接使用 transformers 库体验主流分词器:
主流分词器对比
下表对比了当前流行的子词分词器,它们在设计理念和适用场景上有所不同:
现代分词器对比
我们可以写一个简单的函数来直观对比不同分词器的效果:
通用分词流程实现
我们将上面的知识整合,封装一个支持中英文自动检测的通用分词器,既使用了 Jieba 处理中文,又借助 Hugging Face 分词器处理英文,并可以输出模型可用的张量编码。
实际应用与案例
情感分析中的分词
在情感分析任务中,我们通常需要分词后过滤停用词,以保留真正有情感色彩的词汇:
文本相似度计算
基于分词结果,我们可以使用 TF-IDF 计算文本相似度,这在文档检索、去重等场景中非常实用:
相关教程
总结
分词技术是NLP的基础环节,本文主要介绍了:
- 中文分词:Jieba的三种模式、自定义词典及词性标注
- 英文/子词分词:BPE、WordPiece的原理及Hugging Face使用
- 实战整合:一个支持中英文的通用分词器
- 场景应用:情感分析与文本相似度计算
💡 核心要点:中文场景推荐Jieba(通用)或专业分词器,英文/多语言场景直接使用Hugging Face预训练分词器。
🔗 扩展阅读
📂 所属阶段:第一阶段 — 文本预处理(基石篇)
🔗 相关章节:文本清洗与规范化 · 词向量空间WordEmbeddings

