Tokenize/Wordcut方法汇总

关键词: BPE, WordPiece, Unigram, SentencePiece

https://arxiv.org/pdf/2004.03720.pdf
https://huggingface.co/transformers/tokenizer_summary.html?highlight=tokenizer

目录

  1. 预训练模型使用的分词方式统计;
  2. 常见的分词方法:
    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。

  1. 这种方式会导致词表过大,在进行embedding操作时,非常耗时耗memory;
  2. 如果遇到OOV的单词,可能需要用特殊字符(比如[UNKNOWN])表示,从而不能很好的学习到它的语义信息。

Subword tokenization

混合了单词和字母的分词方式。
分词原则:高频单词不再进行细粒度的分割,但低频单词会被切分成subword。

比如:对低频词'annoyingly',可以分解成'annoying'和'ly',分解后的subword往往比原词的出现频率较高。

如果遇到OOV的单词,可以将它分解成已知的subword,从而学习到它的语义信息。

常见的subword 分词方式为BPE, WordPiece, Unigram, SentencePiece。

1. BPE (Byte-pair encoding)

Neural Machine Translation of Rare Words with Subword Units (Sennrich et al., 2015).

BPE

步骤

  1. 给定语料,将语料分割成词,统计词频,确定词表大小;
    备注:一般中文直接按照字分割,英文按空格分割成完整单词。
  2. 将词分为subword,并在末尾添加<\w>;
  3. 统计subword的频次,merge最高频次的subword对,成为新的subword;
  4. 重复3步骤,直到满足词表大小或者最高频次为1。

2. WordPiece

Japanese and Korean Voice Search (Schuster et al., 2012)

BPE根据频次选择合并的bigram,WordPiece用的n-gram LM 模型的likelihood选择合并的对象。

假设subword-pair为<'u','g'>,如果<'ug'>的likelihood高于subword-pair<'ux'>,<'xg'>,x表示其他token组合,则合并这对subword。

3. Unigram

Subword Regularization: Improving Neural Network Translation Models with Multiple Subword Candidates (Kudo, 2018)

BPE和WordPiece是自下而上的构建方式,从subword到word,Unigram相反,通过语言模型,对词表中的每一个symbol,计算删去这个symbol后的log-likelihood损失。按照损失排序,去掉loss损失少的symbol。
对词x,这个词可能被切割的所有可能的subword,损失可表示为:

一般会去掉10%or20%词表大小的symbol。

Unigram LM

步骤

  1. 给定语料D,对文本切词,构建初始的词表V,确定目标词表大小;
  2. 如果词表V数量大于目标词表;
    2.1 训练语言模型LM,参数为;
    2.2 对词表V中的每个词t,计算没有这个词后的LM的损失:

    2.3 ,基于该式,去掉loss最小的词;
  3. 重复步骤2,训练LM,返回词表和LM的参数。

3. SentencePiece

SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing (Kudo et al., 2018)

前面提到的subword分词手段,都需要对文本切割成词,再做unigram分词。
SentencePiece的输入是原始文本,初始的分割方式包含不限于空格分词,接着再进行subword的分词。

你可能感兴趣的:(Tokenize/Wordcut方法汇总)