everstu / gpt3-tokenizer
用于 GPT-3 的字节对编码 (BPE) 的 PHP 包。
v1.0.0
2023-04-12 03:06 UTC
Requires
- php: ^7.0
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^8.4|^9.3.3
README
此包是从 https://packagist.org.cn/packages/gioni06/gpt3-tokenizer 分支出来的,并修改以支持 PHP 7,感谢原作者!
这是 GPT-3 分词器的 PHP 版本。它基于 原始的 Python 实现 和 Nodejs 实现。
GPT-2 和 GPT-3 使用字节对编码技术将文本转换为一系列整数,这些整数随后用作模型的输入。当你与 OpenAI API 交互时,在将文本发送到 API 之前计算给定文本中的标记数量可能很有用。
如果你想了解更多,请阅读 Hugging Face 的 分词器总结。
支持 ⭐️
如果你觉得我的工作有用,我将非常高兴如果你能通过给这个项目加星 ⭐️ 来支持我。这只需要一秒钟,对我来说意义重大。你的星标不仅会让我内心感到温暖,也会帮助更多的人受益于这个项目。
安装
使用 Composer 从 Packagist 安装此包
composer require everstu/gpt3-tokenizer
测试
加载词汇表文件会消耗大量内存。你可能需要增加 phpunit 内存限制。 https://stackoverflow.com/questions/46448294/phpunit-coverage-allowed-memory-size-of-536870912-bytes-exhausted
./vendor/bin/phpunit -d memory_limit=-1 tests/
使用配置类
use everstu\Gpt3Tokenizer\Gpt3TokenizerConfig; // default vocab path // default merges path // caching enabled $defaultConfig = new Gpt3TokenizerConfig(); $customConfig = new Gpt3TokenizerConfig(); $customConfig ->vocabPath('custom_vocab.json') // path to a custom vocabulary file ->mergesPath('custom_merges.txt') // path to a custom merges file ->useCache(false)
关于缓存的说明
分词器会尝试使用 apcu
进行缓存,如果不可用,则使用普通的 PHP array
。当使用缓存时,对于长文本会有更好的性能。缓存默认启用。
编码文本
use everstu\Gpt3Tokenizer\Gpt3TokenizerConfig; use everstu\Gpt3Tokenizer\Gpt3Tokenizer; $config = new Gpt3TokenizerConfig(); $tokenizer = new Gpt3Tokenizer($config); $text = "This is some text"; $tokens = $tokenizer->encode($text); // [1212,318,617,2420]
解码文本
use everstu\Gpt3Tokenizer\Gpt3TokenizerConfig; use everstu\Gpt3Tokenizer\Gpt3Tokenizer; $config = new Gpt3TokenizerConfig(); $tokenizer = new Gpt3Tokenizer($config); $tokens = [1212,318,617,2420] $text = $tokenizer->decode($tokens); // "This is some text"
计算文本中的标记数量
use everstu\Gpt3Tokenizer\Gpt3TokenizerConfig; use everstu\Gpt3Tokenizer\Gpt3Tokenizer; $config = new Gpt3TokenizerConfig(); $tokenizer = new Gpt3Tokenizer($config); $text = "This is some text"; $numberOfTokens = $tokenizer->count($text); // 4
许可
本项目使用 Apache License 2.0 许可证。有关更多信息,请参阅 LICENSE 文件。