注意:翻译需要符合中文语序、流程、通顺
提供当今最常用的分词器实现,重点关注性能和多样性。
主要特点:
- 使用当今最常用的分词器训练新词汇表和进行分词。
- 由于采用了 Rust 实现,训练和分词速度极快。在服务器 CPU 上分词 1GB 文本不到 20 秒。
- 易于使用,但也非常灵活。
- 设计用于研究和生产环境。
- 规范化过程中带有对齐跟踪。始终可以获取对应于给定分词的原始句子部分。
- 处理所有预处理工作:截断、填充、添加模型所需的特殊标记。
性能
性能可能因硬件而异,但在 g6 aws 实例上运行 ~/bindings/python/benches/test_tiktoken.py 应该能得到如下结果:
绑定
我们为以下语言提供绑定(更多绑定即将推出!):
使用 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]", "?"]