资讯

分词与 Token 化是什么?把文本切成模型能处理的小单元

2026-11-053 分钟阅读百科
TL;DR标记化(Tokenization),又称分词或 Token 化,是把文本切分为词、子词或字符等基本单元(token)并映射为编号的过程;现代大语言模型多采用 BPE、WordPiece、SentencePiece 等子词算法,token 数量决定了上下文长度占用和 API 计费,中文的切分效率因分词器而异。

标记化(Tokenization),也常被称为分词或 Token 化,是指把一段文本切分成一个个小的基本单元的过程,这些单元叫作 token,中文里常译为“词元”或直接叫“token”。它是自然语言处理和大语言模型处理文本的第一步:模型无法直接读懂一串文字,需要先把文本切成 token,再把每个 token 转换成一个数字编号,才能进行后续的计算。

几种切分的粒度

按词切分:把文本切成一个个完整的词。对于英文这样用空格分隔单词的语言,这比较直接;对于中文、日文这样词语之间没有空格的语言,则需要专门的分词算法,比如“我爱自然语言处理”要切成“我、爱、自然语言、处理”。按词切分的问题是词表会非常庞大,而且总会遇到词表中没有的新词、生僻词、拼写错误的词,模型只能把它们当作“未知词”处理。

按字符切分:把文本切成一个个单独的字母或汉字。这样词表很小,也不会有未知词的问题,但切出的序列会很长,而且单个字符携带的意义很少,模型需要花更多的力气去组合理解。

按子词切分:介于两者之间,也是现代大语言模型普遍采用的方式。常见的词保留为一个完整的 token,不常见的词则被拆成几个更小的、有意义的片段。比如英文的“unhappiness”可能被切成“un”“happi”“ness”。这样既控制了词表的大小,又能处理任何新词,因为最坏的情况下也可以退回到字符或字节。

常用的子词算法

BPE(字节对编码):最初是一种数据压缩算法,2016 年被 Rico Sennrich 等人引入神经机器翻译。它从单个字符开始,统计语料中哪两个相邻的单元一起出现得最频繁,就把它们合并成一个新的单元,反复进行,直到词表达到预定的大小。GPT 系列模型使用的是在字节层面上进行的 BPE,可以处理任何语言和符号。WordPiece:谷歌提出的方法,被 BERT 使用,与 BPE 类似,但合并的标准不同。SentencePiece:谷歌推出的工具,把文本直接当作字符序列来处理,不依赖于空格预先分词,对中文、日文等语言更加友好,被很多多语言模型采用。

为什么要关心 token

上下文长度:大语言模型能处理的上下文长度是用 token 的数量来计算的,比如“支持 128K 上下文”指的是 128000 个 token。计费:大模型 API 通常按照输入和输出的 token 数量来收费。生成速度:模型是一个 token 一个 token 地生成内容的,所以输出速度也常用“每秒多少个 token”来衡量。不同语言的效率:同样的内容,在不同的分词器下切出的 token 数量可能相差很大。早期一些以英文为主训练的分词器,切分中文时效率较低,一个汉字可能要占一个甚至多个 token;而针对中文优化过的分词器,常见的词语可以作为一个 token,同样的中文内容消耗的 token 更少。粗略地说,在很多主流模型中,一个 token 大约相当于四分之三个英文单词,或者一到两个汉字,但具体的比例因模型而异。

分词带来的一些问题

分词方式也会影响模型的一些能力。比如早期的大模型常常数不清一个英文单词里有几个某个字母,原因之一就是它看到的是被切分后的 token,而不是一个个字母;数字被切分得不规则,也会影响模型的算术能力。为此,一些模型会把数字逐位切分,也有研究在探索不需要分词、直接处理字节的模型。