当前位置: 首页 > news >正文

AI 术语通俗词典:Token

Token 是自然语言处理、大语言模型、Transformer、文本生成和人工智能应用中非常基础的一个术语,通常可以理解为“模型处理文本时的最小单位”。它用来描述:一段文本在进入模型之前,被切分成的一组可计算单元。换句话说,Token 是在回答:模型并不是直接阅读整句话,而是先把文本拆成哪些小块来处理。

如果说一句话是人类看到的自然语言形式,那么 Token 就是模型实际接收和计算的基本单位。一个 Token 可能是一个汉字、一个词、一个词的一部分、一个标点符号,也可能是一个特殊控制符号。文本在进入大语言模型之前,通常会先被切分成 Token,再转换成 Token id,最后通过 Embedding 层变成向量表示。

因此,Token 常用于分词、词表、Token id、Embedding、上下文长度、注意力机制、大语言模型推理、API 计费和文本生成控制中,是理解现代语言模型的关键基础概念。

一、基本概念:什么是 Token

Token 是文本被模型处理时的基本单位,中文译为“词元”。

例如,一句话:

我喜欢机器学习。

在人类看来,它是一句完整的话。但在模型处理之前,它通常会被切分成若干 Token,例如:

我 / 喜欢 / 机器 / 学习 / 。

也可能被切成:

我 / 喜 / 欢 / 机器 / 学习 / 。

还可能被切成:

我 / 喜欢 / 机器学习 / 。

具体如何切分,取决于所使用的 Tokenizer(分词器)。

Tokenizer 是把文本切分成 Token,并进一步转换成 Token id 的工具。

从通俗角度看:Token 就像模型阅读文本时的“字块”或“词块”。它不一定等于汉字,也不一定等于词语,而是由分词算法和词表共同决定的文本单位。

例如,在英文中:

unbelievable

可能被切成:

un / believable

也可能被切成:

un / believe / able

在中文中:

人工智能

可能作为一个 Token,也可能被拆成多个 Token。

因此,Token 不是一个固定语言学概念,而是模型工程中的文本计算单位。

二、为什么需要 Token

模型之所以需要 Token,是因为神经网络不能直接处理原始文字。

对模型来说,文本中的“我”“喜欢”“机器学习”都只是符号。神经网络真正能够处理的是数字、向量和张量。

因此,文本进入模型之前,通常需要经历:

原始文本 → Token → Token id → Embedding 向量 → 模型计算

其中:

• 原始文本是人类可读的字符串

• Token 是文本切分后的基本单位

• Token id 是每个 Token 在词表中的整数编号

• Embedding 向量是 Token id 对应的连续向量表示

• 模型基于向量序列进行后续计算

图 1:Token 的基本处理流程

从通俗角度看:Token 是自然语言进入神经网络之前的第一道“翻译层”。如果没有 Token,模型就无法把一整段文本变成有序的计算单元。

Token 的作用包括:

• 把连续文本拆成可处理单位

• 连接自然语言和数字编号

• 支持模型对长文本逐步计算

• 控制上下文长度和生成长度

• 让不同语言、符号、标点都能进入同一套模型流程

因此,Token 是语言模型处理文本的入口。

三、Token、Token id 与词表

Token 本身仍然是文本片段,模型还不能直接计算它。

因此,每个 Token 通常会被映射成一个整数编号,这个编号称为 Token id。

例如:

我 → 125喜欢 → 368机器 → 2048学习 → 952。 → 17

这样,句子:

我喜欢机器学习。

就可以被转换成 Token id 序列:

[125, 368, 2048, 952, 17]

这些编号来自词表(Vocabulary)。

词表可以理解为 Tokenizer 能够识别和编码的 Token 集合。

如果词表大小为 V,那么 Token id 通常在以下范围内:

其中:

• id 表示某个 Token 的整数编号

• V 表示词表大小

例如,词表大小 V = 50000,就表示 Tokenizer 大约可以使用 50000 个不同 Token 编号。

需要注意:Token id 只是索引,不表示语义大小。

也就是说,id = 1000 的 Token 并不一定比 id = 10 的 Token “更大”或“更重要”。它们只是词表中的不同位置。

从通俗角度看:

• Token 是文本片段

• Token id 是 Token 在词表中的编号

• 词表是 Tokenizer 使用的 Token 字典

三者关系可以概括为:

文本片段 → Token → 查词表 → Token id

四、Token 与 Embedding 的关系

Token id 只是整数编号,仍然不能直接表达语义。

因此,在神经网络中,Token id 通常会进一步进入 Embedding 层,转换成向量。

假设词表大小为 V,Embedding 维度为 d,那么 Embedding 矩阵可以写为:

其中:

• E 表示 Embedding 矩阵

• V 表示词表大小

• d 表示 Embedding 维度

• R 表示实数空间

如果某个 Token 的编号为 i,那么它对应的向量可以写为:

其中:

• eᵢ 表示第 i 个 Token 的 Embedding 向量

• E[i] 表示 Embedding 矩阵中的第 i 行

例如:

Token: 学习Token id: 952向量: E[952]

从通俗角度看:Token id 告诉模型“去 Embedding 表中查哪一行”,Embedding 向量才是模型真正参与计算的表示。

因此,Token 和 Embedding 的关系可以概括为:

Token → Token id → Embedding 向量

例如,一个句子被转换成 L 个 Token id 后,会得到 L 个 Embedding 向量。

如果每个向量是 d 维,那么这个句子就变成:

如果加入 batch 维度,则常见形状为:

其中:

• N 表示 batch size

• L 表示序列长度,也就是 Token 数量

• d 表示 Embedding 维度

五、Token 不一定等于字或词

理解 Token 时,最容易误解的一点是:Token 不一定等于一个字,也不一定等于一个词。

图 2:Token 不一定等于字或词

不同 Tokenizer 使用不同切分策略,Token 的粒度也不同。

1、字符级 Token

字符级 Token 会把文本切成一个个字符。

例如:

人工智能

可能切成:

人 / 工 / 智 / 能

这种方式简单,但序列可能变长。

2、词级 Token

词级 Token 会尽量按词语切分。

例如:

人工智能改变世界

可能切成:

人工智能 / 改变 / 世界

这种方式更接近人类语言直觉,但会遇到未登录词问题。

3、子词级 Token

现代语言模型常使用子词级 Token。

例如英文:

unhappiness

可能被切成:

un / happiness

也可能被切成:

un / happy / ness

子词级 Token 的优势是:

• 比字符更高效

• 比完整词更灵活

• 能处理新词、长词和罕见词

• 适合大规模语言模型

在中文中,子词切分也可能把一个词拆成多个片段,或者把常见词作为整体 Token。

从通俗角度看:Token 是模型词表中的“可识别文本块”,它的大小由 Tokenizer 决定,而不是由人类主观决定。

六、常见的 Tokenizer 思路

Token 的产生依赖 Tokenizer(中文常译为“分词器”)。

不同模型可能使用不同 Tokenizer,但常见思路包括:

• 基于字符

• 基于词

• 基于子词

• BPE

• WordPiece

• SentencePiece

这里重点理解思想,不必一开始深入所有算法细节。

1、BPE

BPE(Byte Pair Encoding)是一种常见子词切分方法。

它的核心思想是:从更小单位开始,不断合并高频相邻片段,形成更大的 Token。

例如:

l / o / w

如果某些组合经常出现,就可能逐渐合并为:

lo / w

再合并为:

low

从通俗角度看:BPE 会把常见片段合并成较大 Token,把不常见词拆成较小片段。

2、WordPiece

WordPiece 也是常见子词方法,常用于一些经典语言模型。

它同样会把词拆成子词片段,但合并或选择片段的标准与 BPE 不完全相同。

从通俗角度看:WordPiece 的目标也是用有限词表尽量高效表示大量文本。

3、SentencePiece

SentencePiece 常用于多语言模型。

它可以直接从原始文本学习切分规则,不强依赖预先按空格分词,因此适合中文、日文等没有天然空格分隔的语言。

从通俗角度看:SentencePiece 把分词也看成模型要学习的一部分,可以更统一地处理不同语言文本。

七、Token 与上下文长度

在大语言模型中,经常会听到“上下文长度”这个说法。

上下文长度通常不是按字数或词数计算,而是按 Token 数计算。

例如,一个模型支持:

上下文长度 = 8192 Tokens

这表示模型一次最多能够处理约 8192 个 Token,而不是 8192 个汉字或 8192 个英文单词。

这点非常重要。

因为不同语言、不同文本类型的 Token 数可能差异很大。

例如:

• 英文单词可能被切成一个或多个 Token

• 中文一句话可能接近按字、词或子词切分

• 代码、公式、符号可能产生较多 Token

• 空格、标点、换行也可能影响 Token 数

从通俗角度看:上下文窗口不是“能放多少字”,而是“能放多少 Token”。

如果输入文本太长,超过模型上下文限制,通常需要:

• 截断文本

• 分段处理

• 摘要压缩

• 检索相关片段

• 使用更长上下文模型

例如,一篇长文被切成 Token 后长度为 L,如果模型最大上下文长度为 M,则必须满足:

其中:

• L 表示当前输入 Token 数

• M 表示模型最大上下文 Token 数

如果 L > M,模型就不能一次完整处理全部内容。

八、Token 在文本生成中的作用

在大语言模型生成文本时,模型通常不是一次生成整段话,而是一个 Token 一个 Token 地生成。

图 3:Token 与上下文长度、文本生成过程

生成过程可以理解为:

已有上下文 → 预测下一个 Token → 加入上下文 → 继续预测

例如,输入:

人工智能正在

模型会根据上下文预测下一个 Token,可能是:

改变

然后新的上下文变成:

人工智能正在改变

模型继续预测下一个 Token:

世界

于是得到:

人工智能正在改变世界

从通俗角度看:大语言模型的生成过程,就像不断接龙。每一步都根据已有 Token 序列,预测下一个最合适的 Token。

在数学上,模型通常是在估计下一个 Token 的概率分布:

其中:

• t₁, t₂, …, t_k 表示已有 Token 序列

• t_{k+1} 表示下一个 Token

• p 表示条件概率

模型会根据这个概率分布选择下一个 Token。不同采样策略会影响生成结果,例如:

• 贪心解码(Greedy Decoding)

• 温度(Temperature)

• Top‑k 采样(Top-k Sampling)

• Top‑p 采样(Top-p Sampling)

因此,Token 不仅影响输入理解,也直接影响输出生成。

九、Token 的优势、局限与使用注意事项

1、Token 的主要优势

Token 最大的优势是把文本转换成模型可处理的离散单位。

它使神经网络能够把自然语言转为 Token id,再转为向量进行计算。

其次,Token 支持开放词汇处理。

通过子词切分,模型即使遇到罕见词,也可以把它拆成较小片段来表示。

再次,Token 便于控制模型输入和输出长度。

例如,可以限制最大输入 Token 数,也可以限制最大生成 Token 数。

从通俗角度看,Token 的优势在于:它把人类语言拆成模型可以逐步读取、计算和生成的基本单位。

2、Token 的主要局限

Token 也有局限。

首先,Token 不等于语义单位。

一个词可能被拆成多个 Token,一个 Token 也可能只是词的一部分。

其次,不同 Tokenizer 的切分结果不同。

同一句话在不同模型中可能对应不同 Token 数和 Token id。

再次,Token 数不等于字数或词数。

这在估算上下文长度、API 费用和生成长度时尤其需要注意。

此外,Tokenization 可能影响模型效果。

如果某些语言或专业术语经常被切得很碎,模型处理效率和表示质量可能受到影响。

3、使用 Token 时需要注意的问题

使用 Token 时,需要注意:

• Token 不一定等于一个字或一个词

• 不同模型的 Tokenizer 可能不同

• Token id 只是索引,不表示语义大小

• 上下文长度通常按 Token 计算

• 生成长度通常也按 Token 控制

• 标点、空格、换行也可能影响 Token 数

• 代码、公式、表格可能产生较多 Token

• 输入模型前通常需要 Tokenization

• Token id 通常还要经过 Embedding 才能进入模型计算

从实践角度看,理解 Token 有助于解释为什么同样长度的文本,在不同语言、不同模型或不同格式下,实际占用的上下文长度可能不同。

十、Python 示例

下面给出几个简单示例,用来帮助理解 Token 的基本使用。

示例 1:手动理解 Token 与 Token id

# 假设有一个简单词表vocab = { "我": 1, "喜欢": 2, "机器": 3, "学习": 4, "。": 5} tokens = ["我", "喜欢", "机器", "学习", "。"] # 把 token 转成 token idtoken_ids = [vocab[token] for token in tokens] print("tokens:", tokens)print("token ids:", token_ids)

这个例子中:

• tokens 是文本切分后的单位

• token_ids 是每个 Token 在词表中的编号

• 编号只是索引,不表示语义大小

示例 2:一个极简 Tokenizer

def simple_tokenizer(text): # 这里只是演示:按空格切分 return text.split() text = "I like machine learning" tokens = simple_tokenizer(text) print("原始文本:", text)print("tokens:", tokens)

输出类似:

原始文本: I like machine learningtokens: ['I', 'like', 'machine', 'learning']

这个例子只是为了说明 Tokenizer 的基本作用。

真实大语言模型通常不会简单按空格切分,而会使用更复杂的子词 Tokenizer。

示例 3:Token id 进入 Embedding 层

import torchimport torch.nn as nn # 词嵌入层:词表大小100,每个词映射为8维向量embedding = nn.Embedding(num_embeddings=100, embedding_dim=8) # 输入:一个句子,包含5个token的IDtoken_ids = torch.tensor([1, 2, 3, 4, 5]) # 查表:每个ID被替换为对应的嵌入向量vectors = embedding(token_ids) print("token id 形状:", token_ids.shape) print("Embedding 输出形状:", vectors.shape)

输出形状通常为:

token id 形状: torch.Size([5])Embedding 输出形状: torch.Size([5, 8])

其中:

• 5 表示 Token 数量

• 8 表示每个 Token 的 Embedding 维度

从通俗角度看:每个 Token id 都被查表转换成了一个向量。

示例 4:batch 中的 Token 序列

import torchimport torch.nn as nn # 词嵌入层:词表大小1000,嵌入维度16embedding = nn.Embedding(num_embeddings=1000, embedding_dim=16) # 一批输入:2个句子,每个句子长度6(包含padding token 0)token_ids = torch.tensor([ [12, 45, 8, 9, 3, 0], [7, 21, 5, 0, 0, 0]]) # 查表:每个token ID映射为16维向量,输出形状 (2,6,16)vectors = embedding(token_ids) print("输入 token ids 形状:", token_ids.shape) print("输出向量形状:", vectors.shape)

输出形状通常为:

输入 token ids 形状: torch.Size([2, 6])输出向量形状: torch.Size([2, 6, 16])

其中:

• 2 表示 batch size

• 6 表示序列长度,也就是每条文本的 Token 数

• 16 表示 Embedding 维度

这说明文本 batch 进入模型前,通常会从:

batch × seq_len

变成:

batch × seq_len × embedding_dim

示例 5:填充与注意力掩码

import torch # token ID 序列,0 表示 padding 填充符token_ids = torch.tensor([ [12, 45, 8, 9, 3, 0], [7, 21, 5, 0, 0, 0]]) # 生成注意力掩码:真实 token 位置为 1,padding 位置为 0attention_mask = (token_ids != 0).long() print("token ids:")print(token_ids) print("attention mask:")print(attention_mask)

输出类似:

token ids:tensor([[12, 45, 8, 9, 3, 0], [ 7, 21, 5, 0, 0, 0]])attention mask:tensor([[1, 1, 1, 1, 1, 0], [1, 1, 1, 0, 0, 0]])

这个例子中:

• token id = 0 表示补齐位置

• attention mask 告诉模型哪些位置是真实 Token

• padding 位置通常不应被当作正常文本内容处理

📘 小结

Token 是模型处理文本时的基本单位。原始文本进入语言模型前,通常会先被 Tokenizer 切分成 Token,再转换成 Token id,最后通过 Embedding 变成向量。Token 不一定等于字或词,而是由 Tokenizer 和词表决定。对初学者而言,可以把 Token 理解为:模型阅读和生成语言时使用的最小文本计算单位。

“点赞有美意,赞赏是鼓励”

http://www.jsqmd.com/news/893810/

相关文章:

  • 为什么92%的翻译平台在V3迭代时崩溃?Lovable平台稳定性架构设计,48小时上线零回滚
  • 规范驱动开发:从OpenAPI到契约测试的API设计实战
  • 2026年资质代理代办流程评测:代理记账报税、代理记账收费标准、建筑资质代理代办、成都代理记账、成都公司注册、成都资质代理代办选择指南 - 优质品牌商家
  • 上班族必备:2026年PDF转Word免费分享,告别手动打字 - 时时资讯
  • Unity游戏开发:用A* Pathfinding Project插件5分钟搞定2D/3D角色自动寻路(保姆级配置流程)
  • 用Python和Numpy从零实现回声状态网络ESN:一个时间序列预测的实战Demo
  • 2026质量好的空调风口TOP名录:铝合金检修门/铝框石膏板检修口/雕花风口/ABS风口厂家/不锈钢风口/中央空调检修口/选择指南 - 优质品牌商家
  • 2026年至今,四川地区实力办公家具定制服务商深度推荐 - 2026年企业资讯
  • Lovable媒体管理系统权限体系设计(企业级RBAC落地全图谱):金融/广电/教育三大行业合规验证版
  • 鸿蒙 PC 开发:传统前端经验为什么会失效?
  • 湖南好课优选《Python软件开发》教材正式出版 | 匠心筑教,赋能未来 !
  • 2026四川高速路围栏网技术选型:车间隔离围栏网/铁丝网护栏网/铁路护栏网/防护网围栏网/体育场围栏网/体育场护栏网/选择指南 - 优质品牌商家
  • 从‘看不懂’到‘门儿清’:手把手教你解读Linux性能监控命令的输出(附真实案例)
  • 2026年Q2评价高地埋式污水处理设备技术选型指南:絮凝沉淀池、MBR膜生物反应器、一体化污水处理设备、厌氧反应器选择指南 - 优质品牌商家
  • 告别Excel手工报表!Lovable低代码看板搭建全流程(含17个可复用模板)
  • 深圳俄罗斯白关物流技术强的厂家有哪些
  • 人工智能通识课:大语言模型
  • Windows 10托盘图标管理进阶:除了手动隐藏,你还可以用这些方法和工具(附源码)
  • 2026年耐火材料供应厂家技术解析:耐火砖哪家好、耐火砖批发、耐火砖报价、四川耐火材料、四川耐火砖、成都耐火材料选择指南 - 优质品牌商家
  • 25道Prompt/Skill核心面试题深度解析:从基础到工程化落地,助你拿下AI高薪Offer!
  • 不追新概念只做可信落地:JBoltAI让企业AI从能用变敢用
  • 事件冒泡图解
  • Unity动画师必看:用Parent Constraints替代父子关系,轻松实现角色装备的动态绑定
  • 2026专业仿木栏杆排行:混凝土仿竹栏杆/混凝土仿藤栏杆/混凝土树桩栏杆/混凝土格栅栏杆/混凝土组合式栏杆/仿木栈道护栏/选择指南 - 优质品牌商家
  • 900V/6A N沟道功率MOSFET:FMV06N90E的SuperFAP-E3系列参数解析
  • 告别龟速搜索!用Everything搞定局域网共享文件,保姆级配置指南(含开机自启与快捷键设置)
  • 穿透式监管怎么落地?一文详解穿透式监管体系构建:8大领域、4个支柱、2条路径
  • 工厂老板如何从0开始做短视频获客?2026年制造业实战全流程指南
  • 2026年异形铝单板行业标杆名录:雕花铝单板、雕花铝板、冲孔铝单板、冲孔铝板、双曲铝单板、双曲铝板、幕墙铝单板选择指南 - 优质品牌商家
  • 别再只盯着AUC了!用Python手把手教你计算gAUC,搞定搜索推荐中的排序评估难题