1 Tokenizer的作用
- 将文本序列转化为数字序列,作为transformer输入
-
是训练和微调LLM必不可少的一部分
2 三种不同分词粒度的Tokenizers
- Word-based:将文本划分为一个个词(包括标点),会引入规则避免不合理分词,例如spaCy和Moses。这种划分符合人的自然语言和直觉,但相同意思的词会被划分成不同token(如dog和dogs),词表会非常大。可以通过限制词表大小解决,未知的词用特殊的token表示,但会丢失信息。
- Character-based:将文本划分为一个个字符,西文词表非常小,但相对单词来说信息量很低,会产生很长的Token序列。
- Subword-based:能保持语义,适合多语言,常见方法BPE/BBPE,WordPiece,Unigram
四种常用的Subword Tokenizers
-
Byte-Pair Encoding(BPE) Tokenization:BPE算法包含两部分,“词频统计”和“词表合并”。首先按词表切分每个词,统计词内相邻token同时出现的频率,对频率高的进行合并添加到词表,如此迭代合并。
BPE的缺点:包含所有可能的基本字符的基本词汇表可能特别大(中文等)。改进为Byte-level BPE(BBPE),将字节视为基本token,两个字节合并即可表示Unicode
-
WordPiece:
-
Unigram Tokenization:
缺点:划分单词计算概率非常耗时
-
SentencePiece Tokenization