速度と精度
このページでは、再現可能な Node/WASM の速度計測と、テストフィクスチャの一部に対する分割境界の一致率を示します。各数値の対象範囲を併記します。
Node での WASM 速度
公開 JavaScript API を結果のデコードまで含めて計測しています。スクリプトは先に共有ランタイムのハンドルを作るため、作成の行は WASM モジュールのキャッシュが温まった後の計測です。冷たい状態でのダウンロードやモジュール起動時間は含みません。
| 中央値 | |
|---|---|
| ロード済み・共有 WASM ランタイムでの解析器作成 | 2.386 ms |
| 作成後の初回解析 | 0.426 ms |
| 定常状態の解析(1テキストあたり) | 0.300291 ms |
| 定常状態のスループット | 13,320 トークン/秒 |
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=12026 年 10 月 9 日に、Suzume 0.9.14(コミット b0eaf611)を Apple M5 Max(arm64)上の Node v24.21.0 で、スクリプト組み込みの短い3テキストを使って計測しました。別の入力を測る場合は --corpus=/path/to/corpus.txt を渡します。ここに示すのは Node での計測値であり、ブラウザやスマートフォンの時間を予測するものではありません。
はじめに と 仕組み のプレイグラウンドは端末上でブラウザの計測を行い、結果の下に表示します。ネイティブ CLI には別のベンチマークコマンドがあります。
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 との違い)。
| スコア | |
|---|---|
| 境界 F1 | 0.9998 |
| 境界 精度 / 再現率 | 0.9995 / 1.0000 |
| トークン F1 | 0.9996 |
| トークン精度 / 再現率 | 0.9995 / 0.9998 |
| 文全体が完全一致した割合 | 0.9992(6,628 / 6,633) |
2026 年 10 月 9 日に、Suzume 0.9.14(コミット b0eaf611)で、6,633 ケース、24,144 トークンを対象に計測しました。
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 の推定には、ここでバグ修正に使っていないテキストが必要です。
- 敵対的入力下でのメモリ。 アロケーション回数の計測にはインストルメント済みビルドが必要で、配布物はこれを報告しません。