我正在寻找一个需要2个字符串的算法,它会给我一个"相似因子".
基本上,我将有一个可能拼写错误,输入字母等的输入,我必须在我可能的值列表中找到最接近的匹配项.
这不适用于在数据库中搜索.我将有一个500个左右的字符串匹配的内存列表,全部在30个字符以下,所以它可能相对较慢.
我知道这存在,我以前见过,但我不记得它的名字.
编辑:感谢指出Levenshtein和汉明.现在,我应该实施哪一个?它们基本上测量不同的东西,两者都可以用于我想要的东西,但我不确定哪一个更合适.
我已经阅读了算法,汉明似乎显然更快.既然都不会检测到两个被转置的角色(即乔丹和乔丹),我相信这将是一个常见的错误,这对我想要的更准确?有人可以告诉我一些关于权衡的事吗?
给出了两个包含字符串的python列表(人名):
list_1 = ['J. Payne', 'George Bush', 'Billy Idol', 'M Stuart', 'Luc van den Bergen']
list_2 = ['John Payne', 'George W. Bush', 'Billy Idol', 'M. Stuart', 'Luc Bergen']
Run Code Online (Sandbox Code Playgroud)
我想要一个最相似的名称映射.
'J. Payne' -> 'John Payne'
'George Bush' -> 'George W. Bush'
'Billy Idol' -> 'Billy Idol'
'M Stuart' -> 'M. Stuart'
'Luc van den Bergen' -> 'Luc Bergen'
Run Code Online (Sandbox Code Playgroud)
在python中有一个简洁的方法吗?这些列表平均包含5个或6个名称.有时更多,但这很少.有时它只是每个列表中的一个名称,可能拼写略有不同.