── WordTokenizer ───────────────────────────────────────────────────
Same chunking as Whitespace, but emits UNK for OOV instead of
dropping (which Whitespace also does — the difference is purely
semantic / API-clarity). The Python wrapper enforces that
special_tokens.unk is set.