Tokenization 基础概念:定义、重要性、应用场景

做 NLP 的朋友,一定绕不开 Tokenization。说白了,它就是「把文本切成小碎片」的过程。你想想看,计算机不认识完整的句子,它只认数字。Tokenization 就是那个把人类语言翻译成机器能处理的「最小单元」的桥梁。

我第一次接触这个概念是在做中文分词的时候。当时以为用空格切分就完事了,结果发现中文根本没有空格……那叫一个惨。后来我才明白,Tokenization 远没有想象中简单。

这一章我们就来聊聊 Tokenization 到底是个啥,为什么重要,以及它都用在哪。

1.1 什么是 Tokenization?

Tokenization,中文常叫做「分词」或「令牌化」。它的任务很简单:给定一段文本,把它拆成一个个 (令牌)。 可以是单词、子词、字符,甚至标点符号。

举个例子:

原始文本:"I love NLP."
Tokenization 结果:["I", "love", "NLP", "."]

这里每个 就是一个单词加上一个句号。但对中文来说,事情就复杂了:

原始文本:"我爱自然语言处理"
Tokenization 结果(按字符):["我", "爱", "自", "然", "语", "言", "处", "理"]
Tokenization 结果(按词语):["我", "爱", "自然语言处理"]

你看,同一个句子,不同的切分方式,结果完全不同。所以选择哪种 Tokenization 策略,直接决定了后续模型的性能。

核心要点:Tokenization 是将连续文本切分为离散 的过程, 是模型能理解的最小语义单元。

1.2 为什么 Tokenization 如此重要?

我个人习惯把 Tokenization 比作「数据清洗的第一步」。如果这一步做不好,后面所有工作都是白搭。

它的重要性体现在三个方面:

  • 消除歧义:不同切分方式意味着不同的语义。比如“南京市长江大桥”——你切分成“南京/市长/江大桥”和“南京市/长江大桥”,意思完全不一样。我在实际项目中就遇到过因为分词错误导致搜索召回率暴跌的情况。
  • 控制词汇表大小:如果不切词,直接用全文本,词汇表可能上百万,模型根本训练不了。合理的 Tokenization 可以把词汇表压缩到几万甚至几千。
  • 处理未登录词:总有模型没见过的词,比如“”刚出来时。子词级别的 Tokenization(比如 BPE)可以拆成“Chat”和“”,让模型能泛化。
避坑指南:我曾经在一个中文情感分析项目里,直接用了空格分词(英文默认),结果准确率不到 40%。后来换成了基于词典的分词,准确率直接提升到 85%。选择合适的分词策略,永远是第一步。

1.3 典型应用场景

Tokenization 几乎出现在所有文本处理场景中。下面这张表格总结了我最常遇到的几个场景:

场景 典型任务 常用分词粒度
机器翻译 将源语言句子切分,逐 翻译后再合并 子词(BPE / SentencePiece)
搜索引擎 倒排索引的构建基础,查询和文档都要分词 词语(中文需中文分词)
大语言模型(LLM) 预训练、微调、推理的输入输出最小单元 子词(如 系列使用 BPE)
情感分析 从文本中提取情感特征 词语 / 字符
代码理解 将代码分割成标识符、关键字、符号 自定义规则 + 子词

嗯,这里要注意一下:不同场景对分词粒度的要求完全不同。比如搜索引擎通常需要以词语为单位,保证召回率;而 LLM 则更喜欢子词,方便处理罕见词。

1.4 一个简单的 Python 示例

我们用一个最简单的例子来感受一下 Tokenization 在 Python 里的样子。这里我用 transformers 库里的 BertTokenizer 演示:

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
text = "I love NLP and tokenization."
tokens = tokenizer.tokenize(text)
print(tokens)
# 输出:['i', 'love', 'nlp', 'and', '', '##ization', '.']

看到没?“tokenization”被分成了“”和“##ization”。这个“##”是 BERT 的约定,表示子词是拼接在前一个词后面的。这种子词切分方式,就是 Tokenization 最核心的智慧之一。

个人经验:实际使用中,我建议先搞几个样本测试一下分词效果,尤其是中文、混合语言或者专业术语。别上来就调大模型,否则排查 Bug 会怀疑人生。

1.5 本章小结

Tokenization 是文本处理的第一道工序。它把人类语言翻译成机器能操作的 序列。理解 Tokenization 的定义、重要性以及不同场景下的应用,是我们后续学习接口封装的基础。

记住一句话:没有不好的模型,只有不好的 Tokenization。(其实是开玩笑的,但道理是这么个道理。)

Tokenization 知识体系 原始文本 分词策略 子词(BPE等) 词语(中文分词) 字符切分 下游应用 核心思想:分词粒度决定 模型的能力和效率