常见分词器tokenizer汇总

常见分词器tokenizer

大模型中的分词器:BPE、WordPiece、Unigram LM、SentencePiece

Byte Pair Encoding (BPE)

OpenAI 从GPT2开始分词就是使用的这种方式,BPE每一步都将最常见的一对相邻数据单位替换为该数据中没有出现过的一个新单位,反复迭代直到满足停止条件。

字节对编码(Byte Pair Encoding, BPE)是一种最初为通用数据压缩设计的算法,在自然语言处理(NLP)中被重新用作一种子词(subword)分词方法。它因用于现代NLP模型,如OpenAI的GPT和其他基于变换器(transformer)的架构而广为人知。

在NLP中使用BPE的主要思想是从大量文本语料库开始,然后迭代地将出现频率最高的字节(或字符)对组合起来,形成新的、更长的字节(或字符)序列。这个过程通过合并常见的字符对来减少整个语料库的复杂性,并且能够捕捉到一些词汇的内部结构,这对于处理词形变化丰富的语言尤其有用。在语言模型的训练过程中,BPE允许模型处理未在训练集中直接见过的单词,因为它可以通过已知的子词单元来构造这些单词。

WordPiece

bert用的是wordpiece, wordpiece算法可以看作是BPE的变种。不同的是,WordPiece基于概率生成新的subword而不是下一最高频字节对。WordPiece算法也是每次从词表中选出两个子词合并成新的子词。BPE选择频数最高的相邻子词合并,而WordPiece选择使得语言模型概率最大的相邻子词加入词表。
WordPiece的工作原理如下:

从词汇表中的所有单词开始。
使用给定的词汇大小作为限制,迭代地选择最佳的单词或字符序列进行合并。
在每次迭代中,选择能最大化模型的语言概率的合并。
这个过程会持续,直到词汇表达到预设的大小。

Unigram LM

ULM是另外一种subword分隔算法,它能够输出带概率的多个子词分段。它和 BPE 以及 WordPiece 从表面上看一个大的不同是,前两者都是初始化一个小词表,然后一个个增加到限定的词汇量,而 Unigram Language Model 却是先初始一个大词表,接着通过语言模型评估不断减少词表,直到限定词汇量。

SentencePiece

SentencePiece它是谷歌推出的子词开源工具包,其中集成了BPE、ULM子词算法。除此之外,SentencePiece还能支持字符和词级别的分词。

SentencePiece主要解决了以下三点问题:

以unicode方式编码字符,将所有的输入(英文、中文等不同语言)都转化为unicode字符,解决了多语言编码方式不同的问题。
将空格编码为‘_’, 如’New York’ 会转化为[‘▁’, ‘New’, ‘▁York’],这也是为了能够处理多语言问题,比如英文解码时有空格,而中文没有, 这种语言区别
优化了速度,如果您实时处理输入并对原始输入执行标记化,则速度会太慢。 SentencePiece 通过使用 BPE 算法的优先级队列来加速它来解决这个问题,以便您可以将它用作端到端解决方案的一部分。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_刘文凯_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值