Source code for agentlib.utils.fuzzy_matching
from typing import Iterable, Union, List
try:
from rapidfuzz import process as fuz_process
from rapidfuzz import fuzz
RAPIDFUZZ_IS_INSTALLED = True
except ImportError:
RAPIDFUZZ_IS_INSTALLED = False
[docs]def fuzzy_match(target: str, choices: Iterable[str]) -> Union[None, List[str]]:
if not RAPIDFUZZ_IS_INSTALLED:
return None
matches = fuz_process.extract(query=target, choices=choices, scorer=fuzz.WRatio)
return [m[0] for m in matches]