File size: 580 Bytes
e291f84 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | from __future__ import annotations
import re
_NON_ALNUM_HYPHEN = re.compile(r"[^a-z0-9\-]+")
_WS = re.compile(r"\s+")
def normalize_key(surface: str) -> str:
s = surface.lower()
s = _NON_ALNUM_HYPHEN.sub(" ", s)
s = _WS.sub(" ", s).strip()
s = s.replace("-", "").replace(" ", "")
return s
def pick_display_label(variants: dict[str, int]) -> str:
if not variants:
return ""
# Sort by (count desc, length desc, lexicographic asc)
return sorted(
variants.items(),
key=lambda kv: (-kv[1], -len(kv[0]), kv[0]),
)[0][0]
|