DataLearner 标志DataLearnerAI
最新AI资讯
大模型排行榜
大模型评测基准
大模型列表
大模型对比
资源中心
工具
语言中文
DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

自然语言处理中常见的字节编码对(Byte-Pair Encoding,BPE)简介

2022/12/16 20:52:27
5,030 阅读
NLP自然语言处理

字节对编码(Byte Pair Encoder,BPE),又叫digram coding,是一种在自然语言处理领域经常使用的数据压缩算法。在GPT系列模型中都有用到。主要是将数据中最常连续出现的字节(bytes)替换成数据中没有出现的字节的方法。该算法首先由Philip Gage在1994年提出。在这篇博客中我们将简单介绍一下这个方法。

  • 基于子词的标记化
  • 字节编码对(Byte Pair Encoder,BPE)简介
  • 总结

基于子词的标记化

标记化(tokenizer)是将自然语言转变成标记的过程,它将文本转换为模型可以处理的数据。模型只能处理数字,因此标记化(Tokenizer)需要将我们的文本输入转换为数字数据。

自然语言处理的基本对象是单词,这其中包括三类,一种是word(单词),一种是subword(子词),还有一种是character(字符)。第一种就是我们英语处理中常见的单词,用空格分开的。但是算法的处理要灵活的多,因为单词是由单个字母组成的,单个字母也叫character。除此之外,为了追求处理速度与语义的均衡,NLP领域还会处理一种叫Subword(子词)的对象。这是一种介于word和character之间的处理粒度。

基于子词的标记化(tokenizer)是介于词和基于字符的标记化之间的一种解决方案。

基于单词的处理面临的问题包括:非常大的词汇量,大量的OOO标记,以及非常相似的词的不同含义。而基于字符的标记化的问题是非常长的序列和意义不大的单个标记。

基于子词的标记化算法并不把常用的词分成更小的子词。相反,它将罕见的词分割成更小的有意义的子词。例如,"boy "不被分割,但 "boys "被分割成 "boy "和 "s"。这有助于模型了解到 "boys "这个词是用 "boy "这个词形成的,其含义略有不同,但都是同一个词根。

字节编码对(Byte Pair Encoder,BPE)就是一种子词处理的方法。其它一些流行的子词标记化算法包括WordPiece、Unigram和SentencePiece。而BPE用于GPT-2、RoBERTa、XLM、FlauBERT等语言模型中。这些模型中有几个使用空间标记化作为预标记化方法,而有几个使用Moses, spaCY, ftfy提供的更高级的预标记化方法。

字节编码对(Byte Pair Encoder,BPE)简介

主要是将数据中最常连续出现的字节(bytes)替换成数据中没有出现的字节的方法。思想很简单,但是很好用。

维基百科中有个简单的例子,假设我们有如下的数据:

aaabdaabac

可以看到,上述数据中字节对“aa”出现得最频繁。那么,我们可以使用数据中没有出现过一个字节,例如“Z”来替代,结果如下:

ZabdZabac

可以看到这里的Z=aa,接下来,ab依然是最长出现的连续字节对,那么再用一个新的字节“Y”代替得到如下结果:

ZYdZYac

显然,“ZY”又是一个最频繁出现的连续字节对,那么继续用心的字节“X”代替,得到:

XdXac

其中:

X=ZY
Y=ab
Z=aa

到这里,已经无法继续压缩了。如果要还原数据,只需要把上述过程反过来即可。

总结

为了以最有效的方式表示语料库,BPE在每次迭代时都会通过查看其频率来检查每一个潜在的合并选项。因此,是的,它遵循一种贪婪的方法来优化可能的最佳解决方案。

总之,BPE是最广泛使用的子词标记化算法之一,尽管它是贪婪的,但它具有良好的性能。

参考内容: https://towardsdatascience.com/byte-pair-encoding-subword-based-tokenization-algorithm-77828a70bee0 https://en.wikipedia.org/wiki/Byte_pair_encoding

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

相关博客

  • 开源版本的GPT-3来临!Meta发布OPT大语言模型!
  • Python生态系统中5个NLP工具库
  • 8个非常好的NLP领域的预训练模型(包含代码和论文资源)
  • 自然语言处理中常见的10个任务简介及其资源
  • 最新发布!基于推文(tweet)训练的NLP的Python库TweetNLP发布了!

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署