Token / Subword / OOV 深扒:NLP 与 LLM 的词元世界

本文系统阐释NLP与大语言模型中token(词元)、subword(子词)和OOV(未登录词)三者的核心定义、内在关系及工程影响。重点说明token作为模型输入最小单位的粒度中立性;subword作为主流tokenizer的典型粒度,如何在词与字之间实现开放词表闭合;以及OOV如何被subword结构性消除,尤其byte-level BPE在数学上归零UNK。同时强调token数直接决定计算成本、上下文窗口与API计费。

0 · 导读:三个词,一个闭环

一句话概括:token 是模型能"读"的最小单位;subword(子词)是现代模型最常见的 token 粒度(介于词与字之间);OOV(未登录词)是 token 体系覆盖不到的输入,正是 subword 要结构性消灭的敌人。 三者构成一个闭环:

我们想让任意文本都变成有限、可控的 token 序列;subword 是性价比最高的 token 粒度;OOV 是"词表没覆盖到"的失败模式,subword 把它压到几乎为零。

概念 一句话 在链路中的角色
token tokenizer 的输出单元,每个 token = 一个词表 id “词元”——模型输入的基本粒子
subword 比词小、比字大的片段(词根/后缀等) 现代 tokenizer 的典型粒度
OOV 输入里词表没有的符号/词,退化为 [UNK] 子词方案要消灭的失败模式

建议阅读顺序:Q1 定义 token 及其在 Transformer 输入链的位置 → Q2 定义 subword 与"为什么不是词也不是字" → Q3 定义 OOV 与它的消亡 → Q4 三者关系图与数学刻画 → Q5 实战数 token / 算成本 → Q6 误区;附录 A/B/C 是 tokenizer 速查、子词三算法回顾、工程清单。


Q1 · Token 是什么:从"字/词/词元"到模型输入

定义

token = tokenizer 把文本切成的最小单元,每个 token 对应词表里一个 id。 模型并不直接读字符或单词,而是先 文本 → token 序列 → 每个 token 查 embedding 表 → 向量 → 注意力计算。一个 token 可能是一个字、一个词、或一个词片段——取决于用哪种 tokenizer(见 Q2)。

粒度谱系(从小到大)

字符 (char)  <  子词 (subword)  <  词 (word)  <  句子 (sentence) \text{字符 (char)} \;<\; \text{子词 (subword)} \;<\; \text{词 (word)} \;<\; \text{句子 (sentence)} 字符 (char)<子词 (subword)<词 (word)<句子 (sentence)

token 可以是这条谱线上的任意一级。关键认知:"token"是粒度中性的词,它既不等于"词"也不等于"字"——具体等于哪一级,由 tokenizer 决定。

token 在 Transformer 输入链中的位置

对一条长度为 nnn(= token 数)的输入:

raw text→tokenizer[id1,…,idn]→embedding[e1,…,en]→+positionTransformer\text{raw text} \xrightarrow{\text{tokenizer}} [id_1,\dots,id_n] \xrightarrow{\text{embedding}} [\mathbf{e}_1,\dots,\mathbf{e}_n] \xrightarrow{\text{+position}} \text{Transformer}raw texttokenizer ​[id1​,…,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reset2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值