专注 NLP 的初创团队抱抱脸(hugging face)发布帮助自然语言处理过程中,更快的词语切分(tokenization)工具:Tokenizers —— 只要 20 秒就能编码 1GB 文本。
功能多样:适用于 BPE / byte-level-BPE / WordPiece / SentencePiece 各种 NLP 处理模型
可以完成所有的预处理:截断(Truncate)、填补(Pad)、添加模型需要的特殊标记。
速度超级快:只需要 20 秒就可以在 CPU 上标记 1GB 的文本。
目前适用三种编程语言:Rust / Python / Node.js
- 主要包含的 Tokenizer 有:
ByteLevelBPETokenizer,字节级别的 BPE (Byte Pair Encoding) 训练和 tokenize,facebook 那几个预训练模型比如 Roberta 就用的这个,应对多语言比较方便;
CharBPETokenizer,比字节高一个级别,字级别的 BPE,其实就是最经典 Sennrich 教授用的那个,subword-nmt;
SentencePieceTokenizer,现在越来越搞不清这些命名之间的关系了,不过看代码应该是在 BPE 过程之前加了一个 pretokenization 过程,先对文本进行预处理再 BPE;
BertWordPieceTokenizer,应该就是基于 unigram language model 那篇论文来做的。