当前位置:   article > 正文

transformers的tokenizer总结_transformers tokenizer

transformers tokenizer

1.BPE(byte-pair encoding)

根据字母搭配出现的频率组成词根。

初始vocabulary:["b", "g", "h", "n", "p", "s", "u"]

假设训练数据中有10个hug,5个pug,12个pun,4个bun和5个hugs:

("hug", 10), ("pug", 5), ("pun", 12), ("bun", 4), ("hugs", 5)

那么此时tokenizer会将其分割成:

("h" "u" "g", 10), ("p" "u" "g", 5), ("p" "u" "n", 12), ("b" "u" "n", 4), ("h" "u" "g" "s", 5)

然后计数字母搭配出现的频率,比如"hu"=10+5=15次,"ug"=10+5+5=20次,"un"=12+4=16次

每次选取频率最高的搭配进行更新vocabulary,那么此时vocabulary:["b", "g", "h", "n", "p", "s", "u","ug"]

再次对语料进行分割,结果为:

("h" "ug", 10), ("p" "ug", 5), ("p" "u" "n", 12), ("b" "u" "n", 4), ("h" "ug" "s", 5)

再次计数,再次更新,此时vocabulary:["b", "g", "h", "n", "p", "s", "u","ug","un"]

第三次对语料进行分割,结果为:

("hug", 10), ("p" "ug", 5), ("p" "un", 12), ("b" "un", 4), ("hug" "s", 5)

以此不断更新,直到遇到<unk>(unkonwn,没见过的字母/字符),而vocabulary size和更新次数都是tokenizer训练时的超参数。例如,GPT 的词汇量为 40478,因为它们有 478 个基本字符,并在 40000 次合并后选择停止训练。

2.Byte-level BPE

BPE是基于char的维度进行的,但这样对于某些语言来说,vocabulary会很大。BBPE将文本的UTF-8编码中的一个字节(每个字节有8位的2进制编码,2的8次方=256位。UTF-8可以保证任何语言通用)不同的编码作为vocabulary的base。再加上一些处理标点符号的附加规则。 GPT-2 的词汇量为 50257,对应于 256 字节的基本标记、特殊的文本结束标记以及通过 50,000 次合并学习的符号。

3.WordPiece

与BPE类似,但是与 BPE 相比,WordPiece 不会选择最常见的符号对,而是选择在添加到词汇表后使训练数据的可能性最大化(似然概率最大)的符号对:

P(tx) = freq(x) 就是单词 x 出现的频率,选择x和y合并为z之后句子似然值的变化为freq(z)/(freq(x)*freq(y)),取似然值变化最大的进行合并。

4.Unigram

初始vocabulary的size很大,然后以最大似然的log值作为Loss,选取删掉后对Loss影响最小的约10~20%个symbols从vocabulary中删除

5.SentencePiece

使用“_"代替空格,用于BPE或者Unigram

参考https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/en/tokenizer_summary.ipynb#scrollTo=NZqxbedEtCI9

NLP 中的Tokenizer:BPE、BBPE、WordPiece、UniLM 理论 - 知乎

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/932162
推荐阅读
相关标签
  

闽ICP备14008679号