
1.4.2
エンコード
エンコードは、テキストをトークンID のリストに変換する処理です。つまり、デコードの
逆の操作となります。BPE 方式のトークナイザは、事前学習によって得た語彙表を用いて入
力テキストをサブワード単位のトークンに分割し、それぞれのトークンに対応するIDを出力
します。この時、トークナイザは、テキストの先頭から順に最長一致のサブワードをトークン
IDに変換していきます。
ここでは簡素化した例として表1.4.2 の語彙表を想定し、「こんにちは世界!」が入力テキス
トとして与えられた場合のエンコード処理を考えてみましょう。入力テキストの先頭にマッチ
するサブワードとして、表1.4.2 には「こんにちは」と「こん」が存在します。この時の最長一
致は「こんにちは」ですから、トークナイザは「こんにちは」を語彙表にしたがって1に変換し
ます。残りは「世界!」ですが、同様に語彙表を用いた最長一致による変換により「世界」は2
に 、「 !」は 3 に変換されます。最後にテキストの終わり(
<|endoftext|>
)を示す0 を加えます。
この結果、トークン列
[1, 2, 3, 0]
が得られます。
表1.4.2
サブワード トークンID
<|endoftext|> 0
こんにちは 1
世界 2
! 3
こん 4
にちは 5
ばんは 6
こんばんは 7
このような最長一致による変換を効率よく行うために、トークナイザの実装では語彙表にト
ライツリーというデータ構造を使うことができます。トライツリーの各ノードは ...