zxell.ai
この資料は、プロジェクト内部のレポートを公開用に編集したものです。サーバ運用・セキュリティに関わる部分と、コーパスの詳細は省略しています(省略箇所には印があります)。

zxell.ai トークナイザ比較レポート(再生成版)

作成日: 2026-09-27((省略: 原版が失われた経緯)本書は 2026-09-05 に新サーバで再学習したモデルから再生成。数値は 8/13 時点のレポートと小数第 3 位まで一致している)

対象: zxell_prep/train_compare_tokenizers.py による SentencePiece BPE 48k / 64k の学習と比較。モデル本体: sp_bpe_48k.model(採用)/ sp_bpe_64k.model(比較用)。語彙のテキスト一覧: sp_bpe_48k.vocab(48,000 行、「ピース␉スコア」)。


1. 結論

語彙 48k を採用。 コーパス全体の推定トークン数は 6.14B(実測 6.152B、9/5 の全量トークン化で確定)。

64k は総トークン数を 3%(0.18B)減らすだけで、埋め込み層が 33% 太る(S モデルでは 48k×384 = 18.4M パラメータが 64k×384 = 24.6M になり、総 30M の大半を埋め込みが占める)。 2GB VRAM の GTX 1050 で S を回す前提では 48k が妥当。RTX 3060 が合流した現在も、埋め込みの肥大が S/M の「本体の学習能力」を圧迫する構図は同じなので判断は変えない。

2. 学習データ(サンプル)

extract_sample.py でスナップショットから抽出(全言語 id%20==0 の 5% + ja は id%4==0 に増量)。 9/5 実測(旧 8/13 の稼働 DB 版と 0.2% 以内で一致):

言語学習用記事学習用文字数評価用記事(学習に未使用)評価用文字数
en193,917829.9M3,00013.28M
de98,657291.2M2,0285.71M
fr53,944129.3M1,0942.57M
ja207,976111.8M3,0001.72M

抽出 567,982 行 / link 重複 2,164 / 空 2,202 / 所要 315 秒(新サーバ)。

トークナイザ学習用ファイル sp_train.txt は言語別の文字数上限で配分(en 120M / de 85M / fr 70M / ja 65M 字。合計 340,379,150 字、192,625 文)。自然比率のままだと ja は 1.5% しか入らず日本語の語彙が育たないため、 トークナイザ学習に限り ja を約 19% まで厚くしている(学習データ本体の配分とは別)。

3. 学習条件

model_type=bpe, character_coverage=0.9995, byte_fallback=True(UNK を出さずバイト列へ)
split_digits=True(数字は 1 桁ずつ)、normalization_rule_name=nmt_nfkc
max_sentence_length=16384, input_sentence_size=2,000,000, shuffle=True

学習時間(Ryzen 3 4300U、AVX2 あり): 48k 約 84 秒 / 64k 約 86 秒(旧 Celeron N3350 では各約 4 分)。 Alphabet size 2,177 / 文字カバレッジ 99.95%。

4. 圧縮効率(評価セット、学習に未使用)

言語48k 字/トークン64k 字/トークン48k 推定コーパストークン64k 推定
en4.1854.2893.87B3.77B
de4.1814.3491.36B1.31B
fr3.8003.9220.67B0.65B
ja1.9452.0330.24B0.23B
合計6.14B5.96B

推定はフェーズ0 実測の言語別総文字数 × 重複除去後の残存率 0.947 ÷ 字/トークン。 9/5 の全量トークン化の実測は 6.152B(推定との差 0.2%)、言語構成は en 64.6% / de 21.7% / fr 10.0% / ja 3.7%(トークンベース)。

5. 語彙(48k)の中身

ピース 48,000 個の文字種構成(機械分類):

種別個数備考
ラテン文字(en/de/fr)29,46361%
漢字のみ7,003
漢字+かな混在6,447「首相は」「対策を」のような文節単位
かなのみ4,479
バイトフォールバック256<0x00>〜<0xFF>
数字100〜9(split_digits のため 1 桁ずつ)
記号・その他342

日本語のピースが合計約 18,000(37%)を占める。ja 増量サンプリングの効果。

6. 分割の実例(48k モデル)

en: The central bank raised interest rates for the third time this year.
    ␣The | ␣central | ␣bank | ␣raised | ␣interest | ␣rates | ␣for | ␣the | ␣third | ␣time | ␣this | ␣year | .
    68 字 → 13 トークン(5.23 字/トークン)

de: Die Bundesregierung hat ein neues Konjunkturpaket beschlossen.
    ␣Die | ␣Bundesregierung | ␣hat | ␣ein | ␣neues | ␣Konjunktur | p | aket | ␣beschlossen | .
    62 字 → 10 トークン(6.20)。複合語 Konjunkturpaket は 3 分割

fr: Le gouvernement a annoncé de nouvelles mesures économiques mercredi.
    ␣Le | ␣gouvernement | ␣a | ␣annoncé | ␣de | ␣nouvelles | ␣mesures | ␣économiques | ␣mercredi | .
    68 字 → 10 トークン(6.80)

ja: 政府は水曜日に新しい経済対策を発表した。
    ␣政府は | 水曜 | 日に | 新しい | 経済 | 対策を | 発表した | 。
    20 字 → 8 トークン(2.50)。「政府は」「対策を」「発表した」と意味単位で切れている

短い整った文では評価セット平均(4.2 / 4.2 / 3.8 / 1.9)より効率が良く出る。評価セット側には URL・数字・固有名詞・HTML 残骸が含まれるため、そちらが実効値。

7. 既知の注意点