1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Subwords Tokenizer方法介绍: BPE Byte-level BPE WordPiece Unigram SentencePiece

Subwords Tokenizer方法介绍: BPE Byte-level BPE WordPiece Unigram SentencePiece

时间:2020-05-08 22:48:31

相关推荐

Subwords Tokenizer方法介绍: BPE  Byte-level BPE  WordPiece  Unigram  SentencePiece

参考于transformers tokenizer的文档

目录

Byte-Pair Encoding (BPE) [^1]出发点原理应用 Byte-level BPE[^2]出发点原理应用 WordPiece[^3]原理应用 Unigram [^4]原理 SentencePiece [^5]出发点原理应用 References

Byte-Pair Encoding (BPE)1

出发点

把每一个单词加入词表的话导致词表过大,因此可以把word切分成subwords加入词典。

原理

先进行pre-tokenization, 即通过空格得到单词,并且统计词频。创建一个base vocabulary包含所有单词中的符号(字符)。之后迭代方式地学习相邻两个符号结合的规则(所以叫做Byte-pair,字节),每次结合选择频数最高的一对。具体参考文章开头的链接。

应用

GPT: 词表大小:40,478(478个 base characters + 40,000个结合的字符)

Byte-level BPE2

出发点

BPE中包含所有单词中的符号的base vocabulary可能很大,比如unicode characters包含了不同语言的字符,是很大的。

原理

使用字节(bytes)而不是字符作为base vocabulary。一个字节是8位,一共256种可能,这样base vocabulary的大小就减小到了256。之后的迭代操作和BPE一样,要学习相邻符号的结合规则。

应用

GPT2:此表大小:50257 (256 base vocabulary + 1个end-of-text token + 50000 迭代/merge次数)

WordPiece3

原理

关键思想:先将所有字符(characters)作为base vocabulary,然后逐步学习结合字符的规则。相较于BPE每次结合符号选取频数最高的一对,WordPiece选取能够最大化训练数据集似然的一对。例如:字符“u”和“g”,他们融合成一对“ug”之后的数据集的似然除以“u”和“g”分开时候的似然的比值相较于其他字符结合来说最大。Intuition:相较于BPE,WordPiece验证融合某一对符号是值得的

应用

BERT,DistlBERT,Electra。

Unigram4

原理

相较于BPE从字符级别构建base vocabulary,Unigram相反,它先用pre-tokenization(比如空格切分)处理之后的所有词作为初始化的base vacobulary,然后逐步地裁剪符号,从而得到一个较小的词典。在每一步,Unigram都定义个训练集合的loss(如log-likelihood),然后它计算去除一个符号(字典中的一个token)之后整体loss的下降,最终把10%或者20%的那些loss下降最多的符号从词典中去除。直到词典大小符合预期。

###应用对于transformers的库来说,没有模型直接使用Unigram,但是它一般会和SentencePiece一起使用

SentencePiece5

出发点

上述Tokenization方法都存在的一个问题:都假设输入的文本的pre-tokenization都利用空格来切分字词。但是并不是所有的语言都使用空格来切分字词。

原理

解决思路就是把整个输入作为输入流,即包含了空格。之后再使用BPE或者Unigram的算法来构建词典。所以SentencePiece使用的时候Tokenize的结果包含空格的信息,用_来表示。

from transformers import XLNetTokenizertokenizer = XLNetTokenizer.from_pretrained("xlnet-base-cased")tokenizer.tokenize("Don't you love 🤗 Transformers? We sure do.")输出:["▁Don", "'", "t", "▁you", "▁love", "▁", "🤗", "▁", "Transform", "ers", "?", "▁We", "▁sure", "▁do", "."]

应用

在transformers库中的所有用SentencePiece的模型中都结合使用了Unigram。包括 ALBERT,XLNet,Marian,T5。

References

/abs/1508.07909 ↩︎

/better-language-models/language_models_are_unsupervised_multitask_learners.pdf ↩︎

/media//ja//pubs/archive/37842.pdf ↩︎

/pdf/1804.10959.pdf ↩︎

/pdf/1808.06226.pdf ↩︎

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。