以编程方式确定翻译后的名称是否相同

Programmatically figuring out if translated names are equivalent

我想看看两个翻译后的名字是否等同。有时翻译的名称顺序会有所不同。例如:

>>> import difflib
>>> a = 'Yuk-shing Au'
>>> b = 'Au Yuk Sing'
>>> seq=difflib.SequenceMatcher(a=a.lower(), b=b.lower())
>>> seq.ratio()
0.6086956521739131

'Yuk-Shing Au'和'Au Yuk Sing'是同一个人。有没有办法检测到这样的事情,这样这样的名字的 ratio 会高得多?类似于以下结果:

>>> a = 'Yuk-shing Au'
>>> b = 'Yuk Sing Au'
>>> seq=difflib.SequenceMatcher(a=a.lower(), b=b.lower())
>>> seq.ratio()
0.8181818181818182

您可以在比较之前规范化名称的顺序:

def normalize(name):
    name_parts = name.replace("-", " ").split()
    return " ".join(sorted(name_parts)).lower()