一只小狐狸带你解锁NLP/DL/ML秘籍
正文素材来源:量子位
缘起BERT
BERT带来的并不是只有一大波paper和嗷嗷上线,还带火了一个NLP团队——Huggingface(中文译作抱抱脸)。抱抱脸团队是一个创业团队。他们的Transformers是github上最火的NLP项目,已经获得了20K星。
不过本文当然不是来讲这个transformers项目的。跑过BERT等英文预训练模型的小伙伴都深深体会过英文语料的分词套路已经被带入新一波高潮,从BERT使用的wordpiece tokenizer到XLNet用的sentencepiece tokenizer到RoBERTa/GPT用的BPE tokenizer,似乎英文分词的套路再也回不去一行str.split()就搞定的旧时代了。
燃鹅这些分词器与预训练的transformer搭配起来虽然非常好用,但是却会带来明显的分词开销。并且这些天花乱坠的新型英文分词方法并没有集成到NLTK等这种传统的NLP库里。
显然抱抱脸团队发现了NLPer们的这个需求,又为我们带来了实实在在的福利!这一次就是NLP所有预处理都需要的,英文切词项目Tokenizers。
不要996,不要669,只要20秒就能编码1GB文本,适用Rust、Python和Node.js。截至今天(2020/1/15),tokenizers已经在GitHub上获⭐1300+。
速度快,功能多样
在NLP模型训练中,词语标记和切分往往是一个瓶颈。Tokenizer能够训练新的词汇,并且进行标记。
功能多样:适用于BPE/byte-level-BPE/WordPiece/SentencePiece各种NLP处理模型
可以完成所有的预处理:截断(Truncate)、填补(Pad)、添加模型需要的特殊标记。
速度超级快:只需要20秒就可以在CPU上标记1GB的文本。
目前适用三种编程语言:Rust/ Python/ Node.js
打开方式
github的资源页面上提供了在Python上使用Tokenizers的示例,进行简单的设置就可以使用:
也可以用Tokenizers进行新词训练:
虽然目前只可用于三种语言Python、JS、Rust,抱抱脸团队表示,将来会继续升级以适用更多~
快快用起来吧~
# 星标小夕 第一时间看更新哦 #
参考资料
https://github.com/huggingface/tokenizers
https://techcrunch.com/2019/12/17/hugging-face-raises-15-million-to-build-the-definitive-natural-language-processing-library/
https://www.alleywatch.com/2019/12/hugging-face-natural-language-processing-open-source-clement-delangue/