STEP 2 / 6

トークナイザ

取引事象 → 勘定科目という「記号」への変換(仕訳の入口)

文字のままでは計算できないので、各文字に通し番号(トークンID)を振る。全名前を1本に連結し、set で重複を消して使われている文字の一覧 uchars を作り、その並び順が「文字→番号」の対応表になる。

会計で言えば、取引事象を「現金=コード101」のように勘定科目コードへ変換する仕訳の入口。生の言葉のままでは集計できないので、まず記号に直す。

BOS は文字数の次の番号を割り当てた特別な記号で、名前の始まり/終わりを表す区切り。仕訳でいう期首・期末の締め線に近い。

実際のコード(microgpt.py L23-27)

この段が、Karpathy のオリジナル200行のどこに当たるか。

# Let there be a Tokenizer to translate strings to sequences of integers ("tokens") and back
uchars = sorted(set(''.join(docs))) # unique characters become token ids 0..n-1
BOS = len(uchars)                   # 名前の始まり/終わりを表す特別な記号
vocab_size = len(uchars) + 1        # 使う記号の総数(文字数 + BOS)
print(f"vocab size: {vocab_size}")

出典: karpathy / microgpt.py (本体は原文ベース、抜粋・コメントは日本語に補足)

この段は読み下し中心です(個別デモはありません)。次の段へ進むか、ハブで全体像に戻ってください。