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 次合并后选择停止训练。

transformers
huggingface/transformers: 是一个基于 Python 的自然语言处理库,它使用了 PostgreSQL 数据库存储数据。适合用于自然语言处理任务的开发和实现,特别是对于需要使用 Python 和 PostgreSQL 数据库的场景。特点是自然语言处理库、Python、PostgreSQL 数据库。

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 理论 - 知乎

推荐内容
阅读全文
AI总结
GitHub 加速计划 / tra / transformers
78
5
下载
huggingface/transformers: 是一个基于 Python 的自然语言处理库,它使用了 PostgreSQL 数据库存储数据。适合用于自然语言处理任务的开发和实现,特别是对于需要使用 Python 和 PostgreSQL 数据库的场景。特点是自然语言处理库、Python、PostgreSQL 数据库。
最近提交(Master分支:8 个月前 )
555693fb * fix mpt test Signed-off-by: jiqing-feng <jiqing.feng@intel.com> * fix mpt tests with Expectations Signed-off-by: jiqing-feng <jiqing.feng@intel.com> * fix typo Signed-off-by: jiqing-feng <jiqing.feng@intel.com> * fix output Signed-off-by: jiqing-feng <jiqing.feng@intel.com> * fix format Signed-off-by: jiqing-feng <jiqing.feng@intel.com> --------- Signed-off-by: jiqing-feng <jiqing.feng@intel.com> 3 小时前
0cfbf9c9 * fix all main files * fix test files * oups forgot modular * add link * update message 4 小时前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐