Sanish Kumar
← Back to engineering notes

(Evaluation)

What 538 GIS parser tests actually measure

Why I test the rule-based parser separately from speech recognition, and what the 93.7% result leaves out.

July 2026 · 3 min read

Separate parsing from speech recognition

This is the earlier rule-based parser's evaluation, not a score for the current catalog-grounded compiler or MCP server. I keep it because the separation between language parsing, transcription, and execution still matters.

An end-to-end voice test mixes microphone quality, room noise, accent, browser support, transcription, parsing, and map execution. When one number covers all of that, a failure does not tell me which layer broke. VoiceGIS therefore tests its rule-based parser separately from speech recognition.

Each case provides text and the structured result I expect: an intent, its arguments, and any relevant flags. The corpus runs offline without a microphone, network connection, or model download.

Split the corpus by behaviour

An overall score is useful only if I can see what produced it. I group the 538 cases by behaviour so a strong navigation result cannot hide weak typo handling or conversational language.

  • Navigation commands: cities, coordinates, fuzzy names, and alternative phrasing.
  • Zoom and pan commands with direction, amount, and relative language.
  • Layer visibility and aliases.
  • Marker creation and relative locations.
  • Reset, map switching, conversational phrases, and command chaining.
  • Empty input, Unicode, malformed text, and other edge cases.

Put the benchmark in CI

The harness is an ordinary command. It writes a machine-readable result and exits non-zero when an enforced threshold or expected case regresses, so CI can treat parser behaviour like any other tested interface.

npm run evaluate

# Stored legacy-parser evaluation
# navigation: 385 / 387
# overall:    504 / 538  (93.7%)

The overall score hides weak categories

The stored result is 93.7%, but the categories are uneven. Navigation is strong because it has the largest and most structured set. Conversational phrases and typo resilience are materially weaker. Those gaps are useful; the aggregate score alone hides them.

There is another trap: tuning rules only for phrases already in the file. I add cases from observed ambiguity classes and review them for duplicates, unrealistic wording, and train-on-test behaviour.

What 93.7% does—and does not—measure

The figure is parser accuracy over a versioned text corpus. That qualifier belongs beside the number: it is not word-error rate, microphone accuracy, real-user task completion, or a guarantee that every browser can transcribe speech.

  • Web Speech availability and privacy vary by browser.
  • On-device Whisper adds model-download, CPU, and latency costs.
  • A private server profile still requires someone to host and secure transcription.
  • Correct parsing does not guarantee that an application should execute a destructive command without confirmation.