2.1 KiB
2.1 KiB
RapidFuzz fuzz_py.py (WRatio, partial_ratio)
Metadata
| Field | Value |
|---|---|
| Institute | Molodetz Institute — Research & Retrieval Division |
| Subject | fuzzy-matching-selectors |
| Document type | Source Dossier |
| Tier | 1 |
| Source title | RapidFuzz fuzz_py.py (WRatio, partial_ratio) |
| Source URL | https://raw.githubusercontent.com/rapidfuzz/RapidFuzz/main/src/rapidfuzz/fuzz_py.py |
| Source publisher / author | maxbachmann and RapidFuzz contributors |
| Source type | repository |
| Source date (published) | Unknown — not stated |
| Date researched | 2026-10-25 |
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
| Research method | direct page fetch |
| Confidence | High |
| Status | Active |
Summary
The pure-Python reference implementation of RapidFuzz scorers, read for how the weighted WRatio combines ratio, token and partial scorers.
Key findings
- WRatio constants: UNBASE_SCALE 0.95; PARTIAL_SCALE 0.9 when the length ratio is <= 8.0, else 0.6.
- Length ratio < 1.5: max(ratio, token_ratio * 0.95) where token_ratio is the max of token_set_ratio and token_sort_ratio.
- Length ratio >= 1.5: ratio, then partial_ratio * PARTIAL_SCALE, then partial_token_ratio * 0.95 * PARTIAL_SCALE; score_cutoff is raised after each step so later scorers can prune.
- partial_ratio slides the shorter string over the longer string (prefix windows, full-length windows, suffix windows), scoring each with normalized Indel similarity and keeping the best.
- Empty input or a None input returns 0.
Pros / strengths
Precise, small and readable; shows the max-of-scaled-scorers pattern tai also uses.
Cons / limitations / caveats
Designed for sentences and records, not identifiers. The docstring and code disagree for needles longer than 64 characters (noted by the fetch).
Relevance to tai
Validated the 'max of several scaled signals' structure. Not ported: token_set semantics (a subset scores 100) would make claude tie with every claude-* id and hide real differences.
Changelog
| Date | Change |
|---|---|
| 2026-10-25 | Initial dossier created. |