見出し画像

OpenAIのトークナイザー tiktoken の使い方

OpenAIのトークナイザー「tiktoken」の使い方をまとめました。

前回

1. tiktoken

「tiktoken」は、OpenAI のモデルで使用する高速 BPE トークナイザーです。同等のオープンソースのトークナイザーよりも3~6倍高速です。OpenAI APIで利用するトークン数をカウントするのにも使えます。

2. Colabで実行

Google Colabでの実行手順は、次のとおりです。

(1) パッケージのインストール。

# パッケージのインストール
!pip install tiktoken

(2) エンコード。

import tiktoken

# エンコード
enc = tiktoken.get_encoding("gpt2")
tokens = enc.encode("Hello World!")
print(len(tokens))
print(tokens)
3
[15496, 2159, 0]

tiktoken.get_encoding()の引数には、エンコーディングを指定します。

・gpt2 (or r50k_base) : 昔のGPT-3 モデル
・p50k_base : Codeモデル、text-davinci-002、text-davinci-003
・cl100k_base : text-embedding-ada-002

(2) デコード。

# デコード
print(enc.decode(tokens))
Hello World!

(3) 分割したままデーコード。

# 分割したままデコード
print(enc.decode_tokens_bytes(tokens))
[b'Hello', b' World', b'!']

3. 日本語と英語のトークン数の違い

日本語でもエンコード・デコードして、英語と日本語のトークン数の違いを確認します。

(1) エンコード。

# エンコード
tokens = enc.encode("こんにちは、世界!")
print(len(tokens))
print(tokens)
14
[46036, 22174, 28618, 2515, 94, 31676, 23513, 10310, 244, 45911, 234, 171, 120, 223]

(2) デコード。

# デコード
print(enc.decode(tokens))
こんにちは、世界!

(3) 分割したままデコード。

# 分割したままデコード
def data2str(data):
    try:
        return data.decode('utf-8')
    except UnicodeError:
        return data
print([data2str(data) for data in enc.decode_tokens_bytes(tokens)])
['こ', 'ん', 'に', b'\xe3\x81', b'\xa1', 'は', '、', b'\xe4\xb8', b'\x96', b'\xe7\x95', b'\x8c', b'\xef', b'\xbc', b'\x81']

次回



この記事が気に入ったらサポートをしてみませんか?