34 个稳定版本 (7 个主要版本)

8.1.1 2023 年 10 月 1 日
8.1.0 2023 年 4 月 15 日
8.0.0 2023 年 1 月 29 日
7.0.2 2022 年 4 月 1 日
1.0.0 2020 年 2 月 15 日

#76 in 机器学习

Download history 1304/week @ 2024-04-08 1405/week @ 2024-04-15 1795/week @ 2024-04-22 958/week @ 2024-04-29 1122/week @ 2024-05-06 1157/week @ 2024-05-13 1362/week @ 2024-05-20 1371/week @ 2024-05-27 1253/week @ 2024-06-03 1093/week @ 2024-06-10 1339/week @ 2024-06-17 1312/week @ 2024-06-24 741/week @ 2024-07-01 1048/week @ 2024-07-08 843/week @ 2024-07-15 1085/week @ 2024-07-22

3,868 每月下载量
23 个 crate 中使用 (9 个直接使用)

Apache-2.0

1MB
18K SLoC

rust-tokenizers

Rust-tokenizer 是 Transformers 库 中分词方法的直接替换。它包含了一系列用于最先进变压器架构的分词器,包括

  • Sentence Piece (unigram 模型)
  • Sentence Piece (BPE 模型)
  • BERT
  • ALBERT
  • DistilBERT
  • RoBERTa
  • GPT
  • GPT2
  • ProphetNet
  • CTRL
  • Pegasus
  • MBart50
  • M2M100
  • NLLB
  • DeBERTa
  • DeBERTa (v2)

基于 wordpiece 的分词器包括单线程和多线程处理。Byte-Pair-Encoding 分词器倾向于使用共享缓存,并且仅作为单线程分词器提供。使用分词器需要手动下载所需的分词器文件(词汇表或合并文件)。这些文件可以在 Transformers 库 中找到。

使用示例

use std::path::PathBuf;

use rust_tokenizers::tokenizer::{BertTokenizer, Tokenizer, TruncationStrategy};
use rust_tokenizers::vocab::{BertVocab, Vocab};

let lowercase: bool = true;
let strip_accents: bool = true;
let vocab_path: PathBuf  = PathBuf::from("path/to/vocab");
let vocab: BertVocab = BertVocab::from_file(&vocab_path)?;
let test_sentence: Example = Example::new_from_string("This is a sample sentence to be tokenized");
let bert_tokenizer: BertTokenizer = BertTokenizer::from_existing_vocab(vocab, lowercase, strip_accents);

println!("{:?}", bert_tokenizer.encode(&test_sentence.sentence_1,
                                       None,
                                       128,
                                       &TruncationStrategy::LongestFirst,
                                       0));

依赖项

~12MB
~245K SLoC