Name
name ¶
Name similarity for Matching.
name_similarity(name1: str | None, name2: str | None) -> float ¶
Return normalized name similarity in percent.
Source code in src/equities_classifier/matching/name.py
names_are_similar(name1: str | None, name2: str | None, threshold: float = 85.0) -> bool ¶
Return whether two names are sufficiently similar.
normalize_name(name: str | None) -> str ¶
Normalize a security/company name for comparison.
Source code in src/equities_classifier/matching/name.py
def normalize_name(name: str | None) -> str:
"""Normalize a security/company name for comparison."""
if not name:
return ""
value = name.casefold()
value = re.sub(r"[^\w\s]", " ", value, flags=re.UNICODE)
words = value.split()
words = [
word
for word in words
if word not in _LEGAL_SUFFIXES
]
return " ".join(words)