关键词: BPE, WordPiece, Unigram, SentencePiece
https://arxiv.org/pdf/2004.03720.pdf
https://huggingface.co/transformers/tokenizer_summary.html?highlight=tokenizer
目录
- 预训练模型使用的分词方式统计;
- 常见的分词方法:
2.1 算法
2.2 代码
预训练模型使用的分词方式
分词 | 模型 |
---|---|
rule-based | Transformer XL |
BPE | GPT |
WordPiece | BERT, DistillBERT, Electra |
Unigram | 作为SentencePiece子模块 |
SentencePiece | XLNet, ALBERT, T5 |
常见的分词方法
Rule-based tokenization
根据标点符合和空格对文本进行切割。
一般来说,transformer的模型,很少有词表大于5w的,Transformer XL使用的就是rule-based模型,词表大小为267735。
- 这种方式会导致词表过大,在进行embedding操作时,非常耗时耗memory;
- 如果遇到OOV的单词,可能需要用特殊字符(比如[UNKNOWN])表示,从而不能很好的学习到它的语义信息。
Subword tokenization
混合了单词和字母的分词方式。
分词原则:高频单词不再进行细粒度的分割,但低频单词会被切分成subword。
比如:对低频词'annoyingly',可以分解成'annoying'和'ly',分解后的subword往往比原词的出现频率较高。
如果遇到OOV的单词,可以将它分解成已知的subword,从而学习到它的语义信息。
常见的subword 分词方式为BPE, WordPiece, Unigram, SentencePiece。
1. BPE (Byte-pair encoding)
BPENeural Machine Translation of Rare Words with Subword Units (Sennrich et al., 2015).
步骤:
- 给定语料,将语料分割成词,统计词频,确定词表大小;
备注:一般中文直接按照字分割,英文按空格分割成完整单词。 - 将词分为subword,并在末尾添加<\w>;
- 统计subword的频次,merge最高频次的subword对,成为新的subword;
- 重复3步骤,直到满足词表大小或者最高频次为1。
2. WordPiece
BPE根据频次选择合并的bigram,WordPiece用的n-gram LM 模型的likelihood选择合并的对象。
假设subword-pair为<'u','g'>,如果<'ug'>的likelihood高于subword-pair<'ux'>,<'xg'>,x表示其他token组合,则合并这对subword。
3. Unigram
BPE和WordPiece是自下而上的构建方式,从subword到word,Unigram相反,通过语言模型,对词表中的每一个symbol,计算删去这个symbol后的log-likelihood损失。按照损失排序,去掉loss损失少的symbol。
对词x,这个词可能被切割的所有可能的subword,损失可表示为:
一般会去掉10%or20%词表大小的symbol。
Unigram LM步骤:
- 给定语料D,对文本切词,构建初始的词表V,确定目标词表大小;
- 如果词表V数量大于目标词表;
2.1 训练语言模型LM,参数为;
2.2 对词表V中的每个词t,计算没有这个词后的LM的损失:
2.3 ,基于该式,去掉loss最小的词; - 重复步骤2,训练LM,返回词表和LM的参数。
3. SentencePiece
前面提到的subword分词手段,都需要对文本切割成词,再做unigram分词。
SentencePiece的输入是原始文本,初始的分割方式包含不限于空格分词,接着再进行subword的分词。
网友评论