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

BPE、WordPiece 与 Unigram:三种主流子词分词算法对比

BPE、WordPiece 与 Unigram:三种主流子词分词算法对比

在构建现代自然语言处理模型时,Tokenizer 是连接文本与模型之间的桥梁。而在 tokenizer 的设计中,BPE(Byte Pair Encoding)、WordPiece 和 Unigram 三种子词(subword)分词算法是最常见的实现方式。本文将系统地介绍这三种方法的原理、特点以及适用场景,帮助读者更好地理解它们在大模型训练中的地位。

一、为什么需要子词(Subword)分词?

自然语言中的词汇是开放的,新词层出不穷。如果使用“词级分词”,会导致词表非常庞大,且容易出现 OOV(词表外)问题。而“字符级分词”虽然不需要大词表,但会导致序列过长,模型难以捕捉有用语义。

子词分词正好居中:通过将文本拆成较短、可组合的单元(如词根、词缀、常见组合),既减少了 OOV,又能有效压缩 token 数量,是目前大语言模型的主流选择。


二、BPE(Byte Pair Encoding)

原理:

BPE 是一种基于频率的贪心合并算法。

  1. 初始词表为所有字符。
  2. 每轮找出最常见的相邻 token 对(如 “天”+“气”),合并成一个新 token。
  3. 重复,直到词表达到预定大小(如 32,000)。

特点:

  • 拆词方式唯一,贪心合并。
  • 训练快、实现简单。
  • 对高频组合词(如 “人工智能”)压缩效果好。

应用:

GPT 系列、RoBERTa、Qwen 等模型。

示例(简化版):

语料:"天 气 真 好 天 气 真 好"

  1. 初始:['天', '气', '真', '好']
  2. 最频繁对:('天', '气') → 合并为 '天气'
  3. 继续合并:('真', '好') → 合并为 '真好'
    → 最终结果:['天气', '真好', '天气', '真好']

三、WordPiece

原理:

WordPiece 类似 BPE,但合并策略不是基于频率,而是基于语言模型的似然提升。

  1. 每轮尝试一个合并操作。
  2. 选择让训练语料 log-likelihood 增加最多的组合。
  3. 重复,直到词表达到目标大小。

特点:

  • 合并更“语言感知”,但训练慢。
  • 使用特殊符号表示子词拼接(如 “##ing”)。
  • 更适合英文场景。

应用:

BERT、DistilBERT 等模型。

示例(英文):

单词:"unhappiness"
拆分结果可能为:['un', '##happi', '##ness']
→ 带 ## 表示这是一个接续子词。


四、Unigram Language Model

原理:

Unigram 并不使用合并策略,而是假设一个大词表,保留其中概率最高的子词组合。

  1. 构造所有可能的子词候选。
  2. 初始化每个子词的概率。
  3. 用 EM 算法训练子词概率。
  4. 剪枝掉低概率子词,保留词表。

特点:

  • 多种分词路径可选,灵活性高。
  • 拆分不唯一,有更强的鲁棒性。
  • 特别适合多语言和小语种。

应用:

T5、mT5、ByT5、UL2 等模型。

示例:

语料:"今天真高兴"
候选分词路径可能有:

  • ['今天', '真', '高兴']
  • ['今', '天', '真', '高', '兴']
    Unigram 会保留概率最高的组合路径。

五、对比总结

特性BPEWordPieceUnigram
合并策略字符频率语言模型提升概率剪枝
拆分唯一性✅ 是✅ 是❌ 否
多语言支持中等较弱✅ 强
实现复杂度简单中等较复杂
常见应用模型GPT/QwenBERTT5/mT5/UL2

六、结语

BPE、WordPiece 和 Unigram 是构建高效、泛化性强的 tokenizer 的三种主流方法。它们在子词构建逻辑、鲁棒性、语言兼容性方面各有优势。在实际使用中,我们应结合模型类型、语种覆盖、资源限制等因素综合选择最合适的算法策略。

http://www.xdnf.cn/news/707743.html

相关文章:

  • 关于测试小记
  • flutter项目迁移空安全
  • ADQ36-2通道2.5G,4通道5G采样PXIE
  • 5G-A时代与p2p
  • 晶振频率稳定性:5G 基站与航天设备的核心竞争力
  • Axios 如何通过配置实现通过接口请求下载文件
  • 网络渗透基础:信息收集
  • thinkphp 5.1 部分知识记录<一>
  • t013-集团门户网站设计与实现 [基于springboot+Vue 含材料及源码]
  • 机器学习算法--随机森林
  • 13 接口自动化-框架封装之 csv 数据驱动封装和日志
  • SOC-ESP32S3部分:18-串口
  • Linux进程初识
  • 链表经典题目(力扣 easy)
  • 从汇编的角度接密C++函数重载,原来这么简单
  • 人工智能在智能零售中的创新应用与未来趋势
  • Unity Button 交互动画
  • 工厂模式 vs 策略模式:设计模式中的 “创建者” 与 “决策者”
  • Vulhub靶场搭建(Ubuntu)
  • 基于matlab遗传算法和模拟退火算法求解三维装箱优化问题
  • 商用飞机电池市场:现状、挑战与未来展望
  • 实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.7 R语言解题
  • JS高级使用技巧
  • 查看已安装的cuDNN版本
  • 爬虫到智能数据分析:Bright Data × Kimi 智能洞察亚马逊电商产品销售潜力
  • Linux 文件覆盖机制与实践:以 mv 命令为切入点
  • kali系统的安装及配置
  • Mysql数据库mycat部署与mha高可用实例解析
  • 低代码开发模式下的应用交付效率优化:拖拽式交互机制研究
  • Java大师成长计划之第34天:开源项目参与与贡献指南