Token与分词:LLM如何理解文字
一句话总结
Token是LLM处理文本的最小单元,分词(Tokenization)是将原始文本切分为Token序列的过程,直接决定了模型’看到’什么。
核心概念
LLM不直接处理字符串,而是将文本转换为整数ID序列。每个ID对应词表(Vocabulary)中的一个Token。Token可以是完整单词、子词(subword)、单个字符甚至字节。中文通常被切分为单字或常见词组,英文则以子词为主。词表大小通常在32K-150K之间,GPT-4使用cl100k_base词表约10万Token。词表越大,同一文本所需Token数越少,但Embedding层参数量也越大。
为什么重要
分词决定了模型的输入粒度。不合理的分词会导致:(1)语义割裂——将有意义的词拆成无意义的片段;(2)序列过长——增加计算成本且可能超出上下文窗口;(3)OOV问题——未登录词无法表示。此外,Token数量直接影响API调用成本和推理延迟。
实践要点
使用tiktoken等工具预估Token数量;注意中文平均每个字消耗1.5-2个Token;不同模型词表不同,不能混用Tokenizer;多语言场景需关注词表中目标语言的覆盖率,覆盖不足会导致该语言效率低下。
常见误区
误区一:一个汉字等于一个Token——实际取决于具体词表,可能1个也可能2个。误区二:Token数等于字数——英文中一个Token平均约4个字符,中文则差异更大。误区三:分词方式对模型性能无影响——分词策略直接影响模型对语言结构的学习效率。