BPE-NLP重要的编码方式

Byte Pair Encoding 原理

BPE是一种简单的数据压缩算法,它在1994年发表的文章“A New Algorithm for Data Compression”中被首次提出,是一种用于自然语言处理的子词切分算法。它的目标是找到一种最优的字符组合方式,使得整个数据集中不同单词的字符组合尽可能的少。这种算法最初被设计用于字节级的数据压缩,后来被应用于NLP。其核心思想是:
BPE每一步都将最常见的一对相邻数据单位替换为该数据中没有出现过的一个新单位,反复迭代直到满足停止条件。

举个例子:
假设我们有需要编码(压缩)的数据aaabdaaabac。相邻字节对(相邻数据单位在BPE中看作相邻字节对)aa最常出现,因此我们将用一个新字节Z替换它。我们现在有了ZabdZabac,其中Z = aa。下一个常见的字节对是ab,让我们用Y替换它。我们现在有ZYdZYac,其中Z = aaY = ab。剩下的唯一字节对是ac,它只有一个,所以我们不对它进行编码。我们可以递归地使用字节对编码将ZY编码为X。我们的数据现在已转换为XdXac,其中X = ZYY = abZ = aa。它不能被进一步压缩,因为没有出现多次的字节对。那如何把压缩的编码复原呢?反向执行以上过程就行了。

NLP实例

NLP中使用了上述算法的一个变体。首先来明确一下基础概念:token可以理解为一个符号,就代表一个语言单位(就像单词,字符等);tokenize的意思是把一个句子或长语料分成token

基础概念:

  1. token可以理解为一个符号,就代表一个语言单位(就像单词,字符等);
  2. tokenize的意思是把一个句子或长语料分成token

BPE确保最常见的词在token列表中表示为单个token,而罕见的词被分解为两个或多个subword tokens,因此BPE也是典型的基于subwordtokenization算法。

假设我们有一个语料库,其中包含单词(pre-tokenization之后)—— old, older, highestlowest,我们计算这些词在语料库中的出现频率。假设这些词出现的频率如下:

{
   “old”: 7, “older”: 3, “finest”: 9, “lowest”: 4}

让我们在每个单词的末尾添加一个特殊的结束标记</w>

{
   “old</w>: 7, “older</w>: 3, “finest</w>: 9, “lowest</w>: 4}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值