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

AI 术语通俗词典:Token

Token 是自然语言处理、大语言模型、Transformer、文本生成和人工智能应用中非常基础的一个术语通常可以理解为“模型处理文本时的最小单位”。它用来描述一段文本在进入模型之前被切分成的一组可计算单元。换句话说Token 是在回答模型并不是直接阅读整句话而是先把文本拆成哪些小块来处理。如果说一句话是人类看到的自然语言形式那么 Token 就是模型实际接收和计算的基本单位。一个 Token 可能是一个汉字、一个词、一个词的一部分、一个标点符号也可能是一个特殊控制符号。文本在进入大语言模型之前通常会先被切分成 Token再转换成 Token id最后通过 Embedding 层变成向量表示。因此Token 常用于分词、词表、Token id、Embedding、上下文长度、注意力机制、大语言模型推理、API 计费和文本生成控制中是理解现代语言模型的关键基础概念。一、基本概念什么是 TokenToken 是文本被模型处理时的基本单位中文译为“词元”。例如一句话我喜欢机器学习。在人类看来它是一句完整的话。但在模型处理之前它通常会被切分成若干 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 对应的连续向量表示• 模型基于向量序列进行后续计算图 1Token 的基本处理流程从通俗角度看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 层转换成向量。假设词表大小为 VEmbedding 维度为 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 不一定等于一个字也不一定等于一个词。图 2Token 不一定等于字或词不同 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、BPEBPEByte Pair Encoding是一种常见子词切分方法。它的核心思想是从更小单位开始不断合并高频相邻片段形成更大的 Token。例如l / o / w如果某些组合经常出现就可能逐渐合并为lo / w再合并为low从通俗角度看BPE 会把常见片段合并成较大 Token把不常见词拆成较小片段。2、WordPieceWordPiece 也是常见子词方法常用于一些经典语言模型。它同样会把词拆成子词片段但合并或选择片段的标准与 BPE 不完全相同。从通俗角度看WordPiece 的目标也是用有限词表尽量高效表示大量文本。3、SentencePieceSentencePiece 常用于多语言模型。它可以直接从原始文本学习切分规则不强依赖预先按空格分词因此适合中文、日文等没有天然空格分隔的语言。从通俗角度看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 地生成。图 3Token 与上下文长度、文本生成过程生成过程可以理解为已有上下文 → 预测下一个 Token → 加入上下文 → 继续预测例如输入人工智能正在模型会根据上下文预测下一个 Token可能是改变然后新的上下文变成人工智能正在改变模型继续预测下一个 Token世界于是得到人工智能正在改变世界从通俗角度看大语言模型的生成过程就像不断接龙。每一步都根据已有 Token 序列预测下一个最合适的 Token。在数学上模型通常是在估计下一个 Token 的概率分布其中• t₁, t₂, …, t_k 表示已有 Token 序列• t_{k1} 表示下一个 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一个极简 Tokenizerdef 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。示例 3Token id 进入 Embedding 层import torchimport torch.nn as nn # 词嵌入层词表大小100每个词映射为8维向量embedding nn.Embedding(num_embeddings100, embedding_dim8) # 输入一个句子包含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 都被查表转换成了一个向量。示例 4batch 中的 Token 序列import torchimport torch.nn as nn # 词嵌入层词表大小1000嵌入维度16embedding nn.Embedding(num_embeddings1000, embedding_dim16) # 一批输入2个句子每个句子长度6包含padding token 0token_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 位置为 1padding 位置为 0attention_mask (token_ids ! 0).long() print(token ids)print(token_ids) print(attention mask)print(attention_mask)输出类似token idstensor([[12, 45, 8, 9, 3, 0], [ 7, 21, 5, 0, 0, 0]])attention masktensor([[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.gsyq.cn/news/1397856.html

相关文章:

  • 数据同步利器 Kettle:Windows 安装配置及基础使用详解
  • 不追新概念只做可信落地:JBoltAI让企业AI从能用变敢用
  • Unity动画师必看:用Parent Constraints替代父子关系,轻松实现角色装备的动态绑定
  • LeetCode 32:最长有效括号 | 栈与动态规划
  • 金装裁决(传世元神版)| 正版复古传世,元神合击热血归来
  • 从理论到实战:用Python复现一篇边缘计算顶会论文的完整流程(以任务卸载为例)
  • 安全左移与自主可控:Gitee Team 如何支撑关键领域行业 DevSecOps 落地
  • 3.1万Star!PageIndex:不用向量数据库,RAG准确率做到98.7%
  • 旅游API聚合响应超时频发?Lovable自研弹性熔断网关上线后P99延迟压降至187ms——架构图+Go源码片段首次公开
  • 观察taotoken在多模型聚合调用时的自动路由与故障转移效果
  • Java高级全套教程(二)—— RocketMQ超详细实战详解
  • 企业知识库的升级,不是把文档放一起,而是把知识变成能力
  • 最好用的开源问卷系统:调问DWSurvey二次开发自由,一站式搞定调研与系统集成
  • 2026年Q2乐山可靠正宗跷脚牛肉:乐山美食排行榜/乐山美食探店/乐山美食推荐/乐山美食攻略/乐山美食有哪些/乐山美食街/选择指南 - 优质品牌商家
  • 3分钟极速上手DeTikZify:科研图表自动化生成终极指南
  • FT8440AD-DRB 与PN8034/PN8036、KP3221/KP3222/KP3281对比 能否兼容?
  • vss-performance 配置与设备快照的分频拉取
  • Taotoken模型广场选型实践为你的项目找到最合适的大模型
  • 轴承PHM入门实战:基于FEMTO-ST数据集(IEEE 2012)的剩余寿命预测模型搭建
  • 【Lovable旅游网站SEO突围战】:基于Google Core Web Vitals 2024最新标准的12项技术改造清单
  • 别再用2024旧榜单做采购决策!2026真实工作流压力测试:17个企业级任务,仅4款工具全项达标
  • 别再死记硬背了!用Python代码和可视化动画,5分钟搞懂MCMC采样到底在干什么
  • 2026年无尘车间厂家推荐榜:食品/电子/制药/半导体/新能源等百级至十万级洁净车间源头公司实力解析 - 企业推荐官【官方】
  • 为什么83%的保险中台项目失败?Lovable系统开发中的4层信任架构设计(含银保监备案对照表)
  • KRAS和MYC协同抑制:一种靶向KRAS突变癌症的强效策略
  • 【论文解析】CoPCS — 让无人机与无人车“心有灵犀“的协同规划框架
  • 2026最新大数据完整学习路线
  • 事件冒泡图解
  • 大模型应用开发真相:看清本质,理性择业
  • git 生成密钥,将公钥添加到gitlab