返回首页

词元

词元,英语里面叫做 Token,这是模型里面一个最基本的概念。

2 约 2 分钟 · 1829 字 AI

什么是词元(Token)

一、基本定义

词元(Token) 是自然语言处理(NLP)和大语言模型(LLM)中的最小处理单位。它是把一段文本切分后得到的"碎片",模型不直接读取文字,而是读取这些碎片对应的数字编号。

简单来说:词元 = 模型眼中的"一个字符块",可以是一个字、一个词、一个子词,甚至是一个标点。


二、词元的几种粒度

不同分词策略下,"一个词元"代表的内容不同:

粒度类型 示例(输入:"人工智能很强大" 说明
字符级(Char) 每个字一个词元,词表小但序列长
词级(Word) 人工智能 强大 按完整词切,符合直觉但词表巨大
子词级(Subword) 人工 智能 很强 当前主流(BPE / WordPiece / SentencePiece)
字节级(Byte) 0xE4 0xBA 0xBA ... GPT 系列使用的 BBPE,对所有语言友好

三、英文 vs 中文的差异

​```text 英文:"Hello, world!" → ["Hello", ",", " world", "!"] 约 4 个词元

中文:"你好,世界!" → ["你", "好", ",", "世", "界", "!"] 约 6 个词元 ​```

经验法则(以 GPT 类模型为例):

  • 英文:约 1 token ≈ 4 个字符 ≈ 0.75 个单词
  • 中文:约 1 个汉字 ≈ 1~2 个 token(取决于模型分词器)

四、为什么要有词元?

  1. 降维:把无限的"字符串空间"映射到有限的"整数空间"(词表,通常 3 万 ~ 20 万)。
  2. 加速:模型只需对固定大小的词表做 embedding 查表。
  3. 泛化:子词切分能处理未登录词,例如 unhappinessun + happi + ness

五、和 LLM 使用相关的几个点

text ┌──────────────┐ 分词器 ┌──────────────┐ 模型 ┌──────────────┐ │ 原始文本 │ ───tokenizer───▶ │ 词元 ID 序列 │ ──forward─▶ │ 下一个词元 │ │ "你好" │ │ [872, 1962] │ │ ID = 65510 │ └──────────────┘ └──────────────┘ └──────────────┘ ​

  • 上下文长度(Context Length):例如 128K tokens,指模型一次能"看到"的词元数量上限。
  • 计费单位:OpenAI、Claude、通义千问等 API 都按 input tokens + output tokens 计费。
  • 截断(Truncation):超过上下文长度时,最早的词元会被丢弃。

六、一个直观例子

​```text 输入: "ChatGPT is amazing!"

分词后(以 GPT-4 的 cl100k_base 为例): ["Chat", "G", "PT", " is", " amazing", "!"] ↓ ↓ ↓ ↓ ↓ ↓ ID: 1163, 38, 2898, 374, 8056, 0

共 6 个 token ​```


七、一句话总结

词元是把"人类的文字"翻译成"模型能算的数字"的桥梁,它决定了模型的输入长度、训练效率,以及你调用 API 时要付多少钱。