tokenizer的问题"/>
关于tokenizer的问题
1. BPE (Byte-Pair Encoding) 是怎么实现的?
将最常出现的连续字节对合并,直到词表达到预定的大小时停止。
2. Byte-level BPE是怎么实现的?
BPE的一个问题是,如果遇到了unicode,基本字符集可能会很大。一种处理方法是我们以一个字节为一种“字符”,不管实际字符集用了几个字节来表示一个字符。这样的话,基础字符集的大小就锁定在了256。
3. WordPiece是怎么实现的?
它的原理非常接近BPE,不同之处在于它做合并时,并不是直接找最高频的组合,而是选择能够最大化提升语言模型概率的连续字节对加入词表。
4. Unigram Language Model (ULM) 是怎么实现的?
与BPE或者WordPiece不同,Unigram的算法思想是从一个巨大的词汇表出发,再逐渐删除其中的子词,直到词表大小满足预定义。初始的词汇表可以采用所有预分词器分出来的词,再加上所有高频的子串。用EM算法求解每个子词在语料上的概率。对于每个子词,计算当该子词被从词表中移除时,总的似然概率L减少的幅度,记为该子词的loss。将子词按照loss大小进行排序,丢弃一定比例loss最小的子词(比如20%),保留下来的子词生成新的词表。
5. SentencePiece 是怎么实现的?
SentencePiece是把一个句子看作一个整体,再拆成片段,而没有保留天然的词语的概念。一般地,它把空格space也当作一种特殊字符来处理,再用BPE或者Unigram算法来构造词汇表。
更多推荐
关于tokenizer的问题
发布评论