去年对于自然语言处理(NLP)来说是巨大的。就改进而言,现在可以通过使用优化的库和高性能硬件来更快地实现神经网络。但是,基于深度学习的现代NLP管道中的瓶颈之一是tokenization,尤其是通用性强且独立于框架的实现。
为了提供对现代NLP管道良好配合的快速,最先进且易于使用的令牌化的访问,Hugging Face贡献者已开发并开源了Tokenizers.。顾名思义,令牌生成器是当今使用最广泛的令牌生成器的一种实现,着重于性能 和多功能性。
tokenizer的实现由以下流程管道组成,每个流程对文本信息应用不同的转换:
正规化第一归一化的文字,其结果被馈送到PreTokenizer它负责通过分裂文本应用简单的标记化到使用空格其不同的字的元素。该模型对应于实际的算法,例如BPE,WordPiece或SentencePiece,它们自己执行标记化。该后处理则需要合并了需要被添加到最终输出的任何其他有用信息的护理编码,然后将其随时可以使用,并送入,也就是说,一个语言模型进行训练。
这看起来像是典型的令牌化管道,确实有很多快速而出色的解决方案,例如SentencePiece,fast-BPE和YouTokenToMe。但是,Tokenizers真正的亮点在于以下关键领域:
- 性能(“在不到20秒的时间内对服务器CPU上的GB文本进行标记化”)
- 提供用于研究和生产用例的最新令牌生成器( BPE /字节级-BPE / WordPiece / SentencePiece… )
- 旨在实现易用性和多功能性
- 使用对齐跟踪提供与令牌相对应的原始文本的可重复性
- 应用预处理最佳实践,例如截断,填充等。
用法
标记器是用Rust实现的,并且存在Node和Python的绑定。计划将来增加对更多语言的支持。要开始使用Tokenizer,您可以使用以下任何选项进行安装:
- Rust: https://crates.io/crates/tokenizers
- Python:
pip install tokenizers
- Node:https://github.com/huggingface/tokenizers/tree/master/bindings/node
以下是有关如何对Tokenizer使用Python绑定的代码快照:
您可以使用预先训练的标记器,也可以训练自己的标记器。当前开箱即用的当前Tokenizer是BPETokenizer,ByteLevelBPETokenizer,SentencePieceBPETokenizer和BertWordPieceTokenizer。您可以在官方文档中阅读更多内容。