パフォーマンスと汎用性を重視した、今日最も使用されているトークナイザーの実装を提供します。
現在最も使用されているトークナイザーを使用して、新しい語彙をトレーニングし、トークン化します。
Rust 実装のおかげで (トレーニングとトークン化の両方で) 非常に高速です。サーバーの CPU 上で 1 GB のテキストをトークン化するのに 20 秒もかかりません。
使いやすいだけでなく、非常に多用途です。
研究および生産用に設計されています。
正規化にはアライメントの追跡が伴います。特定のトークンに対応する元の文の部分を取得することは常に可能です。
すべての前処理を実行します: トランケート、パディング、モデルに必要な特別なトークンの追加。
パフォーマンスはハードウェアによって異なる場合がありますが、~/bindings/python/benches/test_tiktoken.py を g6 aws インスタンスで実行すると次のようになります。
次の言語へのバインディングを提供します (さらに追加予定!)。
Rust (オリジナルの実装)
パイソン
Node.js
Ruby (@ankane 提供、外部リポジトリ)
以下を使用してソースからインストールできます。
pip install git+https://github.com/huggingface/tokenizers.git#subdirectory=bindings/python
リリースされたバージョンをインストールします
pip インストールトークナイザー
Byte-Pair Encoding、WordPiece、Unigram からモデルを選択し、トークナイザーをインスタンス化します。
from tokenizers import Tokenizerfrom tokenizers.models import BPEtokenizer = Tokenizer(BPE())
事前トークン化 (単語への分割など) の実行方法をカスタマイズできます。
from tokenizers.pre_tokenizers import Whitespacetokenizer.pre_tokenizer = Whitespace()
次に、一連のファイルでトークナイザーをトレーニングするには、次の 2 行のコードを使用するだけです。
from tokenizers.trainers import BpeTrainertrainer = BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"])tokenizer.train(files=[ "wiki.train.raw"、"wiki.valid.raw"、"wiki.test.raw"]、トレーナー=トレーナー)
トークナイザーがトレーニングされたら、テキストを 1 行だけエンコードします。
Output = tokenizer.encode("こんにちは、皆さん!お元気ですか? ?")print(output.tokens)# ["こんにちは", ",", "y", "'", "all", "! 「、「どうやって」、「います」、「あなた」、「[UNK]」、「?」]
詳細については、ドキュメントまたはクイックツアーを確認してください。