Tokenizer是自然语言处理领域中非常重要的一个部分,它将原始的文本数据转换为模型可以输入的token序列。常见的tokenizer包括:
WordPiece Tokenizer: 一种基于字母的tokenization方法,通过学习字母级别的token来构建vocabulary,适用于处理不定长度的词汇。常用于BERT等Transformer模型。
BPE Tokenizer (Byte-Pair Encoding): 一种基于字节级的tokenization方法,通过识别高频出现的字节对来构建vocabulary,适用于处理未登录词和多语言场景。常用于GPT、RoBERTa等模型。
SentencePiece Tokenizer: 一种无需预先定义vocabulary的tokenization方法,能自动学习vocabulary。可处理未登录词和多语言场景,常用于训练多语言模型。
SpaCy Tokenizer: 工业级NLP工具包spaCy提供的tokenizer,针对不同语言有专门的优化,支持tokenization、词性标注、命名实体识别等功能。
注意,token可以是字符,也可以是单词.总之就是将原本的文本处理为字典,这些字典包含一系列token.
BPE原理
step 1:设定最大分词词典数量vocab size,初始化一个词典
step 2:将语料中所有文本切成单个字符形式加入词典,并且将,,,空格符等特殊字符也加入词典
step 3:对已经切为字符的语料,全局统计一轮连续两个字符出现组合的频率
step 4:取最大频率的组合,将这两个字符合并为一个整体,将这个整体添加到词典,并且在语料中将这两个字符也同步全部替换为这个新的整体,当作一个词
step 5:重复step 3和step 4直到达到vocab size或者无法再合并为止
step 6:将最终的词典生成分词编码模型文件,比如tokenizer.model,后续的任务都以这个分词词典来切词和编码
学习资料
Byte-Pair Encoding tokenization - Hugging Face NLP Course
领取专属 10元无门槛券
私享最新 技术干货