The Functionalizer: 无损功能分解在子词分词中的应用

arXiv cs.CL 论文

摘要

Functionalizer 是一种无损预分词框架,它将正字法和结构变体分解为操作码和操作数,从而在保持文本连贯性的同时,将词汇表需求最高降低16%,并改善了代码分词效果。

arXiv:2609.15991v1 公告类型:新 摘要:标准的子词分词器要么将一个词的每种正字法变体(例如 hello, Hello, HELLO, 和 H\'ello)视为无关的词汇表条目,这会导致嵌入空间碎片化;要么通过有损归一化来丢弃这些变体。我们提出了 Functionalizer,一个无损预分词框架,它在分词之前将正字法和结构变体分解为由参数化变换操作码前缀的组合操作码/操作数流:一个规范的基础标记(操作数)由编码在 Unicode 私人使用区内的参数化变换操作码(操作码)作为前缀。我们引入了涵盖大小写(CAPITALIZE)、变音符号(13 个专用操作码)和字符重复(REPEAT, MULTIREPEAT)的运算符,这些运算符是完全可逆的。在六个自然语言和代码语料库上,Functionlizer 在无约束条件下使用显著更小的词汇表实现了完整的语料库覆盖,将实际词汇表槽位需求最高降低了16%。观察序列长度时,我们发现存在一个尖锐的、依赖领域的权衡:它压缩了缩进密集的代码序列,但会扩大自然语言散文序列的长度。在2500万参数的 GPT-2 规模模型上进行的初步下游评估表明,在此规模下,Functionlizer 极大改善了代码语法的有效性并降低了代码字符的困惑度,同时在散文上保持了相似的文本连贯性。这些发现表明,功能分解可以成为实现词汇高效、结构感知的语言建模的有效机制,并为在生产规模上进行进一步验证提供了动力。
查看原文
查看缓存全文

缓存时间: 2026/09/16 08:34

# 功能化器:用于子词分词的无损功能分解
来源:https://arxiv.org/html/2609.15991
Connor Makowski
交通与物流中心
麻省理工学院
马萨诸塞州剑桥市,美国
[email protected]

Willem Guter
交通与物流中心
麻省理工学院
马萨诸塞州剑桥市,美国
[email protected]

###### 摘要
标准的子词分词器要么将单词的每种字形变体(例如hello、Hello、HELLO和Héllo)视为无关的词汇条目,导致嵌入空间碎片化;要么通过有损规范化丢弃这些变体。我们提出**功能化器**,一个无损的预分词框架,它在分词前将字形和结构变体分解为组合的**操作码/操作数前缀流**:一个规范的基本词(操作数)加上编码在Unicode私用区中的参数化变换操作符(操作码)。我们引入了涵盖大小写(CAPITALIZE)、变音符号(13个专用操作码)和字符重复(REPEAT、MULTIREPEAT)的操作符,这些操作符完全可逆。在六个自然语言和代码语料库上,功能化器在无约束条件下能够以更小的词汇量实现语料库的完全覆盖,将实际词汇槽需求最多减少**16%**。在序列长度方面,我们观察到明显的领域相关权衡:它压缩了缩进密集的代码序列,但拉伸了自然语言文本序列。在2500万参数的GPT-2规模模型上的初步下游评估表明,在这个规模上,功能化器极大地提高了代码语法有效性,改善了代码字符困惑度,同时在文本上保持了类似的连贯性。这些发现表明,功能分解可以成为词汇高效、结构感知语言建模的有效机制,并推动在生产规模上的进一步验证。

## 1 引言
子词分词器面临一个困境。将hello、Hello和Héllo视为独立的令牌会导致**词汇膨胀**:冗余的表面形式消耗嵌入槽位,而针对Hello的梯度更新永远不会惠及hello。另一种方法,激进的小写化和口音剥离,则是**有损的**。它压缩了词汇,但永久丢弃了下游模型永远无法恢复的信息。功能化器选择了第三条道路:**无损功能分解**。它不是记忆表面形式或摧毁它们,而是将变体分解为可复用的**操作符**,应用于单个**规范基元**。这一设计直接借鉴自指令集架构:CPU不会为每个常数(ADD_1, ADD_2, ...)实现单独的指令;它将操作(操作码)与其数据(操作数)分离,例如ADD A, #1。功能化器应用了同样的分解;基本令牌是操作数,变换前缀是操作码。

##### 贡献。
1. 一个统一的操作码/操作数框架,在一个组合的、参数化的、无损的方案下处理大小写、变音符号和字符重复。先前的工作单独处理这些字形变体,要么使用有损规范化,要么使用单个操作符,不一定能减少分词开销。
2. 一个具体的私用区(PUA)编码方案,可在大多数分词器(如Hugging Face的BPE)中使用,并且完全可逆。
3. 在六个自然语言和代码语料库上的实证验证,表明当不受目标词汇量限制时,功能化器通过折叠格式变体,将完全覆盖语料库所需的总词汇槽位最多减少**16%**。关于序列,我们展示了明显的领域差异:它显著压缩了缩进密集的代码序列(产生高达**22.8%**的推理吞吐量加速),同时在自然语言文本上引入了可测量的序列长度开销(**6-9%**)。
4. 在约**2500万**参数规模下的下游语言模型训练和评估表明,功能化器显著提高了下一个令牌的代码可预测性(python字符困惑度相对改善**12.6%**),并极大提高了基本语法有效性(语法成功率高达**9.20%**,而标准基线为**0.00%-2.20%**),同时在自然语言文本上保持了连贯性。

## 2 相关工作
##### 子词分词。
BPE(Sennrich等人,2016)[1]、WordPiece(Schuster和Nakajima,2012)[3]和Unigram(Kudo,2018)[2]自底向上地从频繁合并中构建词汇表;字节级BPE(Radford等人,2019)[4]通过在256个字节值上操作来避免词汇表外失败。解决字形变体的现有预分词器要么是有损的(小写化、口音剥离),要么局限于单个操作符。例如,Bayram等人(2025)[8]介绍了一个土耳其语分词器,它使用单个令牌将大小写折叠到共享的根嵌入中。功能化器将这些方法推广为完全参数化的多操作符指令集,涵盖位置、变音符号种类和重复次数以及其他潜在的未来扩展。

##### 形态感知分词。
Morfessor(Creutz和Lagus,2002[5],2007[6])执行无监督的词素分割;MorphBPE(Asgari等人,2025)[7]将BPE合并约束在词素边界。功能化器是互补的:形态感知方法针对语言结构,而功能化器针对字形表面变体,两者可以组合。

##### 无分词模型。
ByT5(Xue等人,2022)[9]、MrT5(Kallini等人,2024)[10]和MegaByte(Yu等人,2023)[11]通过在原始字节或字符上操作来追求字形鲁棒性,代价是序列长度大大增加。功能化器朝着类似的不变性迈进,同时保留子词粒度并避免了代码的序列长度惩罚。

##### 结构化Unicode编码。
SCRIPT-BPE(Land和Arnett,2025)[12]通过Unicode书写系统和类别重新编码字符,以消除跨语言偏差。规范化文献(例如,Gorman和Pinter,2024)[13]记录了不一致的Unicode处理带来的下游成本。功能化器与两者互补:一种可以层叠在任何现有流水线之上的结构化前缀方案。

## 3 功能化器框架
功能化器建立了一个参数化的、无损的、基于前缀的预分词框架。该框架不是直接分词原始表面形式,而是将字形和结构变体分解为组合的非破坏性操作符(操作码)序列,前置于规范的基本令牌(操作数)。设计上,任何完全可逆(双射)且可映射到字符索引的变换都可以作为操作符集成到该框架中。这不仅包括大小写和组合变音符号,还包括结构性变换(例如字符重复)。潜在的未来扩展包括可逆的形态词干折叠、数字/日期规范化、空白符前置以及机器学习预处理(例如纠正可能的拼写错误)。通过将参数化变换与语义词根分离,该框架使下游语言模型能够处理干净的、共享的规范词元,同时保留所有字形细节以实现无损重建。

### 3.1 PUA 指令布局
指令作为PUA码点序列前置于基本令牌,由一个操作符后跟数字参数组成:
```
[操作符] [参数1] [参数2] ... -> [基本令牌]
```
- **数字参数**(U+E000–U+E0FF):编码整数值0-255(值 = 码点 - 0xE000)。
- **操作符**(U+E100–U+EFFF):消耗固定数量参数的操作码。将操作码与参数解耦,为未来的操作符留出了整个平面空间。

### 3.2 编码与可逆性
变换管线设计为完全双射,确保原始字符串的无损恢复。例如:
##### 编码:
1. 提取变音符号(生成序列化操作符)和大写位置(生成CAPITALIZE)。
2. 剥离组合标记并将剩余字符小写化。
3. 前置操作符前缀。
##### 解码:
1. 按相反顺序对基本令牌应用操作符,恢复变音符号和大写。
2. 移除操作符前缀,得到原始字符串。

重复文本可以同样被检测和编码。在解码顺序中,重复操作符最后执行:逐段变换(CAPITALIZE,变音符号)首先应用。所有位置参数(包括CAPITALIZE/REPEAT的pos,以及MULTIREPEAT的start/end)指的是在其各自片段内的字符位置(在应用任何先前操作之后,但在扩展之前)。该变换是双射的,原始文本可以精确恢复(有关工作编码示例,请参见附录中的表6)。

这种固定的解码顺序引入了一个表示约束:由于逐段变换首先应用然后重复,任何大小写或格式都会在所有扩展单元中复制(例如,对基本abc应用CAPITALIZE(0)并重复3次产生AbcAbcAbc,而不是大小写各异的单元如Abcabcabc)。在这种混合情况下,编码器必须回退到未折叠的表示。虽然这种限制在标准语料库中很小,但理论上该框架可以扩展以支持任意的解码顺序(例如从左到右或从右到左评估)来处理复杂的格式组合。

### 3.3 流水线集成
我们建议功能化器应运行在预分割的片段上,而不是原始文本上。就当前设计而言,这是因为操作符仅处理前256个字符(pos≤255)。这可以在未来的迭代中扩展以覆盖更大的索引空间。从更战略性的角度来看,这一建议是成立的,因为它可以允许像“大写下一个字符”这样的前置操作符/操作码序列在分词期间被学习为一个令牌。在本次实现的测试中,自定义Split正则表达式将每个单独的空格字符隔离为一个独立的空格片段。功能化器的REPEAT然后将连续的相同空格片段重新聚合为一个操作码和一个基本空格片段(例如,12个独立的空格片段→[REPEAT(0,12)] + 空格)。因为空格是独立的片段,重复折叠不会影响相邻词片段内的字符偏移量。默认情况下(split_operators = true),操作符和参数作为与规范基本令牌分开的令牌发出,以便每个操作符及其参数独立分词。这允许模型分别从基本令牌嵌入中学习操作符语义和参数分布。其他选项可以用于将整个操作符序列作为单个令牌发出,这对于某些下游任务可能是有益的。在词汇表训练期间,BPE合并过程被允许自然地将这些分离的操作符和参数片段合并回组合令牌(例如将[CAPITALIZE]和[0]合并为单个[CAPITALIZE(0)]令牌)。在我们的实验中,BPE训练自然地合并了高频的操作符-参数对,这消耗了额外的词汇槽位。

## 4 当前操作符与预期性能特征
### 4.1 当前操作符规范
功能化器的当前实现包含用于大小写、组合变音符号(详见表1)和字符重复(详见表2)的操作符。每个大写和变音符号变体都映射到U+E100–U+E10F空间中的专用1参数操作符(最后两个保留),精确消耗一个参数(pos):
表1:大小写和变音符号操作符规范
重复操作符从U+E200开始:
表2:重复操作符规范

### 4.2 预期性能特征
我们预计性能改进和训练动态会因所应用操作符的功能而以不同方式显现。虽然这些效应可能因操作符而大不相同,但我们在此提供两个我们认为代表当前操作符类别的示例:
1. **语义不变性与大小写共享(CAPITALIZE)**:大小写变体通常不改变单词的核心语义身份(例如h与Hi或hello与Hello)。通过将大写操作提取到参数化前缀中,大小写变体被折叠到相同的基本令牌嵌入中。下游模型在所有出现实例之间共享参数更新,增强了表示共享并加速了梯度更新。
2. **结构可预测性与压缩(REPEAT)**:相比之下,重复操作符针对的是结构和语法格式化,尤其是在编程语言中。重复的空格或字符(例如缩进级别)由单个空格字符和一个参数值紧凑地表示。这避免了因许多空白块(例如,,,,)的变体而碎片化序列或词汇表。因此,重复空白对模型来说变得更容易理解和预测,减少了上下文序列长度,并实现了代码块结构的更清晰空间表示。

## 5 实验设置
### 5.1 流水线与配置
为阐明测试配置的机制,我们定义了跨实验流水线使用的主要组件和标志:
- **Unicode规范化(NFC)**:所有分词配置在预分词前对原始输入文本应用Unicode NFC(规范化形式标准组合)。NFC将预组合字符和分解的字符-组合标记序列(例如重音字符的不同形式)的所有视觉变体标准化为单一的、统一的规范组合字符表示(例如,将分解的é + 结合锐音符组合成单个预组合的é)。虽然不是必需的,但这有助于减少文本变体并提高功能化器分解的效率。
- **分割操作符(split_operators)**:一个配置标志,决定是否在BPE子词训练前将前置的PUA操作符(操作码)及其数字参数(参数)分割为独立的字符串片段。例如,当启用时(split_operators = true),BPE接收[CAPITALIZE(0)]和hello作为独立令牌,而不是融合的序列[CAPITALIZE(0)]hello。这防止了词汇表记忆融合的操作符-操作数结构,并允许模型学习可重用、可泛化的操作符和参数嵌入。禁用时,前缀保持连接到基本词上。
- **正则表达式分割(Split)**:在子词训练前将原始文本分割为局部的字符序列(词、数字、符号、空格或换行符)。这种预分割隔离...

相似文章

利用自引导标记化平衡图像压缩与生成

arXiv cs.LG

介绍了SelfBootTok,一种自引导标记化方法,它将全局和局部信息分离,使生成器计算量减少约40%,仅用64个标记即实现了1.56的gFID新最先进水平。

贪心最长匹配分词联合优化

arXiv cs.CL

本文提出JOLT,一种整数规划方法,用于优化基于从左到右贪心最长匹配解码(WordPiece)的子词分词。JOLT实现了近乎最优的压缩,缩小了BPE与理论下界之间的大部分差距,使token数量相比BPE最多减少0.78%。

超越原子标记:音节分解在语言模型预训练中的应用

arXiv cs.CL

本文介绍了一种基于语言学的音素分词器,用于越南语和中文,该分词器将音节分解为声母、韵母和声调成分,从而减小词汇表大小并提高效率。所提出的PhonemicBERT模型在语言理解任务中与现有的分词器和预训练模型相比,展示了具有竞争力或更优的性能。

Compute Optimal Tokenization (2分钟阅读)

TLDR AI

本文通过训练近1300个模型,系统推导了压缩感知的神经缩放定律,证明了广泛使用的每参数20个词元的启发式方法是由特定分词器造成的。作者提出了基于字节的分词器无关缩放定律,为跨多样语言和模态的计算高效训练提供了新框架。