什么是WordPiece

WordPiece 简介

WordPiece 是 Google 在 2016 年提出的一种 子词(sub‑word)分词算法,最早用于语音搜索系统,随后在机器翻译BERT预训练语言模型中得到广泛采用。它的核心目标是 在保持词汇表规模可控的同时,提升对未登录词(OOV)和稀有词的处理能力


1. 设计动机

  • 词表过大:传统的词级别词表会随语料规模指数增长,导致模型参数膨胀。
  • OOV 问题:纯词级别词表无法覆盖所有出现的词,尤其是新词、专有名词等。
  • 语言多样性:对没有显式空格分隔的语言(如日语、韩语)也需要有效的切分方式。

WordPiece 通过 将单词拆解为更小的子词单元(word‑pieces),在保持信息完整的前提下显著压缩词表大小。


2. 算法流程(概览)

步骤 说明
① 初始化词表 以所有出现的 单字符 为基础词表,同时加入模型需要的特殊标记(如 [CLS]、[SEP]、[UNK])。
② 语言模型训练 使用当前词表对训练语料构建 语言模型(通常是最大似然的 n‑gram 或神经语言模型),为后续的合并提供概率评估。
③ 计算候选合并对的得分 对词表中每一对相邻子词,计算 加入该合并后对训练数据似然性的提升(即概率增益),而不是仅依据出现频率。
④ 选择最佳合并 选取 增益最大的子词对 进行合并,生成新的子词并加入词表。
⑤ 重复迭代 重复步骤③‑④,直至达到预设的词表规模或增益阈值停止。
⑥ 分词阶段 对新句子进行 最长匹配(greedy)切分:从单词左侧开始,寻找词表中最长的子词,若子词不是词首则在前面加 ## 前缀,以标记它是后续片段。

3. 与 BPE 的区别

维度 WordPiece BPE
合并准则 基于 语言模型似然增益(概率最大化) 基于 出现频率最高的字符对
是否保存合并规则 只保留 最终词表,分词时采用 最长匹配 同样只保留词表,但合并规则可用于逆向解码
未知词处理 若子词不存在,则整个词标记为 [UNK],但通过子词拆分可显著降低 [UNK] 率 类似,亦会产生 [UNK],但频率最高的合并可能导致更粗糙的切分
实现细节 采用 概率模型,对低频子词有更细致的控制 更直接、实现简单,适合快速实验

4. 实际应用

  • BERT 系列:BERT、DistilBERT、MobileBERT、Funnel‑Transformer、MPNet 等均使用 WordPiece 作为默认 tokenizer。
  • 机器翻译:在 Google 的神经机器翻译系统中,WordPiece 通过子词切分提升了对低资源语言的适配能力。
  • 多语言模型:WordPiece 能在不依赖空格的语言上直接工作,适用于跨语言预训练模型(如 XLM‑R)。

5. 示例

以英文单词 “unhappiness” 为例,使用 BERT 的 WordPiece 词表进行切分:

un ##happi ##ness
  • un##happi##ness 均在词表中,前缀 ## 表示它们是 后续子词,这样即使完整单词未出现,也能通过已知子词表达其含义。

6. 优势总结

  1. 词表规模可控:通过概率驱动的合并,能够在数万到数十万的词表大小内覆盖大多数语言现象。
  2. 降低 OOV 率:子词拆分使得几乎所有词都能被表示,提升下游任务的鲁棒性
  3. 语言无关:不依赖空格或特定语言特征,适用于多语言或低资源语言。
  4. 兼容 Transformer:子词序列长度适中,便于 Transformer 的位置编码并行计算

结论
WordPiece 是一种基于 语言模型似然最大化 的子词分词技术,兼具 高效词表压缩 与 强大 OOV 处理 能力,已成为 BERT 及其衍生模型的核心 tokenizer,并在机器翻译、跨语言预训练等多个 NLP 场景中发挥关键作用。

来源:www.aiug.cn
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!