tokenizers 项目介绍
tokenizers 是一个旨在提供当今最常用的分词器实现的项目,强调性能和多功能性。这一项目由 Hugging Face 团队开发,广泛应用于自然语言处理领域。
项目主要功能
- 训练新词汇且进行分词:支持当前广泛使用的各种分词器。
- 超快速:得益于 Rust 的实现,无论是训练还是分词的速度都非常快。例如,在服务器的CPU上可以在不到20秒内处理1GB的文本。
- 简便易用:尽管易于使用,但也非常灵活,适合各种场景的需求。
- 为研究和生产环境设计:不仅适合研究人员进行实验,也适用于生产环境中的应用。
- 带有对齐追踪功能的规范化:总是可以获取到原始句子中与某一特定token对应的部分。
- 全面的预处理功能:包括截断、填充以及添加模型所需的特殊token。
性能表现
根据不同硬件环境可能会有变化,但在g6 AWS实例上测试,性能表现优异。具体测试结果和更多细节可以在项目的性能基准测试中查看。
语言绑定
tokenizers 提供以下几种语言的绑定(未来会增加更多语言支持):
- Rust:原始实现。
- Python:广泛使用的绑定语言。
- Node.js:适合JavaScript环境。
- Ruby:由外部贡献者开发。
Python实例快速入门
tokenizers 提供了简单易用的 API 来帮助用户快速开始。以下是使用Python进行一个简单示例的步骤:
-
选择和实例化模型:可以选择 Byte-Pair Encoding, WordPiece 或 Unigram 模型。
from tokenizers import Tokenizer from tokenizers.models import BPE tokenizer = Tokenizer(BPE())
-
定制化预分词:例如可以选择使用空格分词。
from tokenizers.pre_tokenizers import Whitespace tokenizer.pre_tokenizer = Whitespace()
-
训练分词器:仅需两行代码即可在一组文件上训练分词器。
from tokenizers.trainers import BpeTrainer trainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"]) tokenizer.train(files=["wiki.train.raw", "wiki.valid.raw", "wiki.test.raw"], trainer=trainer)
-
编码文本:训练完成后,可以用一句代码对任何文本进行编码。
output = tokenizer.encode("Hello, y'all! How are you 😁 ?") print(output.tokens) # 输出:["Hello", ",", "y", "'", "all", "!", "How", "are", "you", "[UNK]", "?"]
更多详细内容和使用教程可以参考 tokenizers 文档 或访问 快速入门指南。