メインコンテンツへスキップ
見出し画像

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']

    次回



     
     

    npaka

     
     
    プログラマー。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガジェット。年2冊ペースで技術書を執筆。アニソン / カラオケ / ギター / 猫 twitter : @npaka123

    あなたへのおすすめ