Current Results
Tested withmySpellChecker_production.db (565 MB, 601K words, full POS + enrichment tables) on macOS Apple Silicon, validation level word.
The dictionary database and semantic model (v2.3) used in these benchmarks are not included in the library. They were built from our own proprietary corpus using the data pipeline and training pipeline respectively. Your results will vary depending on the dictionary database you build and the semantic model you train. See Building Dictionaries and Training Models to create your own.
Overall Metrics (no semantic)
Overall Metrics (with semantic v2.3)
Per-Tier Breakdown (no semantic)
Benchmark Dataset
Sentence Distribution
The benchmark is defined in
benchmarks/myspellchecker_benchmark.yaml (1,138 sentences, 564 error spans) covering 6 domains: conversational, academic, technical, news, religious, and literary.
Composite Score Formula
latency_normalized = min(p95 / 500ms, 1.0).
Running Benchmarks
Basic Run
Key Flags
Ablation Runs
Disable targeted rule groups to measure their impact:Utility Scripts
Run Comparison
Compare two benchmark run artifacts to track regressions:Rule Auditing
Audit targeted rerank rules from telemetry data:Ablation Matrix
Run full ablation study (default + each group off + all off):Semantic Model Evaluation
Head-to-head model comparison (confusable discrimination, logit analysis, perplexity):DB Query Profiling
Instrument SQLiteProvider to count and time every database call per sentence:Known Limitations
- 10 residual FPs: false positives on edge-case constructions, documented and accepted.
- 25 FNs without semantic: context-dependent errors requiring MLM; semantic model rescues 23 of 25.
- Suggestion quality plateau: remaining rank>1 cases are inherent morpheme/compound ambiguity where the same error pattern has conflicting gold corrections.
See Also
- Testing Guide - Unit, integration, and e2e tests
- Performance Tuning - Runtime optimization strategies
- Training Guide - Training semantic MLM and neural reranker models