Skip to content

速度と精度 ​

このページでは、再現可能な Node/WASM の速度計測と、テストフィクスチャの一部に対する分割境界の一致率を示します。各数値の対象範囲を併記します。

Node での WASM 速度 ​

公開 JavaScript API を結果のデコードまで含めて計測しています。スクリプトは先に共有ランタイムのハンドルを作るため、作成の行は WASM モジュールのキャッシュが温まった後の計測です。冷たい状態でのダウンロードやモジュール起動時間は含みません。

中央値
ロード済み・共有 WASM ランタイムでの解析器作成2.386 ms
作成後の初回解析0.426 ms
定常状態の解析(1テキストあたり)0.300291 ms
定常状態のスループット13,320 トークン/秒
bash
make build
make wasm
(cd bindings/wasm && yarn install --immutable && yarn build:js)
node scripts/measure_wasm_metrics.mjs --instances=3 --iterations=500 --samples=5 --warmup=1

2026 年 10 月 9 日に、Suzume 0.9.14(コミット b0eaf611)を Apple M5 Max(arm64)上の Node v24.21.0 で、スクリプト組み込みの短い3テキストを使って計測しました。別の入力を測る場合は --corpus=/path/to/corpus.txt を渡します。ここに示すのは Node での計測値であり、ブラウザやスマートフォンの時間を予測するものではありません。

はじめに と 仕組み のプレイグラウンドは端末上でブラウザの計測を行い、結果の下に表示します。ネイティブ CLI には別のベンチマークコマンドがあります。

bash
suzume-cli test benchmark --iterations=500 --samples=5 --warmup=1

これらは実装も計測条件も異なるため、測定した環境ごとに結果を比較してください。WASM バイナリの gzip 圧縮後のサイズは 260KiB で、読み込み後はキャッシュされます。このサイズは内蔵辞書を含みますが、JavaScript のローダーと API ファイルは含みません。

テストデータの一部に対する境界一致 ​

tests/data/tokenization のうち、期待される表層形を連結すると元の1行入力に戻るケースをスクリプトで採点します。ネイティブ CLI は既定の辞書読み込みで実行します。完全な universal_tokenization_test スイートは skip_user_dictionary=true を使いますが、このスクリプトは入力が正規化されるケースや改行を含むケースを除外します。したがって、ここでの数値はこのスクリプトの対象範囲に対する in-sample の回帰指標であり、スイート全体の健全性を表しません。

Suzume は MeCab との一致率では評価しません。両者は交換可能な出力を目指していないためです(MeCab との違い)。

スコア
境界 F10.9998
境界 精度 / 再現率0.9995 / 1.0000
トークン F10.9996
トークン精度 / 再現率0.9995 / 0.9998
文全体が完全一致した割合0.9992(6,628 / 6,633)

2026 年 10 月 9 日に、Suzume 0.9.14(コミット b0eaf611)で、6,633 ケース、24,144 トークンを対象に計測しました。

bash
make dict
python3 scripts/measure_segmentation_accuracy.py --per-category

この数値の範囲

これらのケースは Suzume 自身のテストスイートであり、トークナイザはそれを通るまで修正されます。報告された数値は、まだ見たことのないテキストの処理や、ネイティブテスト全体の成否を推定するものではありません。スクリプトのケース除外条件と辞書設定も、完全なスイートとは異なります。

他のトークナイザとの比較や、自分のコーパスでの期待精度には使えません。自分のテキストは ライブデモか CLI に通してください。

境界スコアは隣接トークン間の内部境界の一致を数え、文書の両端は除外します。トークンスコアは各トークンの両端が一致した場合に数え、文全体の一致は分割全体が一致した場合だけです。現在のカテゴリ別内訳は --per-category の出力で確認できます。

ここで測っていないもの ​

  • 他ツールとの精度比較。 共通コーパス上で Suzume の F1 を他のトークナイザと並べた表はありません。公平に行うには両者が目指す注釈基準が必要で、Suzume は意図的に MeCab の基準を目指していません。MeCab との違いを参照してください。
  • held-out での精度。 報告対象は in-sample です。held-out の推定には、ここでバグ修正に使っていないテキストが必要です。
  • 敵対的入力下でのメモリ。 アロケーション回数の計測にはインストルメント済みビルドが必要で、配布物はこれを報告しません。