#tokenizer #openai #ChatGPT #gpt-3 #bpe #codec

gpt_tokenizer

Rust BPE 编码器解码器 (Tokenizer) for GPT-2 / GPT-3

1 个不稳定版本

0.1.0 2023年3月17日

#799 in 机器学习


fgpt中使用

MIT许可证

565KB
143

GPT-Tokenizer

将OpenAI的GPT-3分词器JavaScript包转换为Rust (借助ChatGPT-4) 的实现。您可以使用它来估算您的提示将大致消耗多少个标记。您还可以通过提供自己的 encoder.jsonvocab.bpe 文件来创建自己的自定义编码和解码函数。

一般来说,OpenAI建议100个标记等于75个单词。

查看与OpenAI发布的分词器的工作效果

https://platform.openai.com/tokenizer

use tokenizer::DefaultTokenizer;

fn main() {
    let tokenizer = DefaultTokenizer::new();

    let text = r#"I'Many words map to one token, but some don't: indivisible.

Unicode characters like emojis may be split into many tokens containing the underlying bytes: 🤚🏾

Sequences of characters commonly found next to each other may be grouped together: 1234567890"#;

    let encoded = &tokenizer.encode(text);
    let decoded = &tokenizer.decode(encoded);

    println!("Original text: {}", text);
    println!("Encoded text: {:#?}", encoded);
    println!("Decoded text: {}", decoded

    println!("Text size: {}", text.len());
    println!("Words: {}", text.split(" ").count());
    println!("Rule of Thumb: {}", text.split(" ").count() * 4 / 3);
    println!("Tokens: {}", encoded.len());
}

查看./examples 目录以查看更多使用示例。

依赖项

~2.4–4MB
~69K SLoC