【发布时间】:2013-10-18 17:55:37
【问题描述】:
我写了一个方法来帮助匹配代表同一个人但写法不同(全名或简称)的名字,例如:
根据我的方法,Paul Samuelson-Smith 和 Paul Smith 将被视为相等:
private static boolean equalName(String name_2, String name_1){
boolean equality1 = true;
name_1 = name_1.replace("&", " ").replace("-", " ");
String [] names1 = name_1.split(" ");
for (int i = 0; i < names1.length ; i ++) {
if (!name_2.contains(names1[i])) {equality1 = false; break;}
}
boolean equality2 = true;
name_2 = name_2.replace("&", " ").replace("-", " ");
String [] names2 = name_2.split(" ");
for (int i = 0; i < names2.length ; i ++) {
if (!name_1.contains(names2[i])) {equality2 = false; break;}
}
return equality1 || equality2;
}
但是我仍然有一个问题,如果名称中有拼写错误,比如 Paul Samuelson-Smith 和 Paull Smith 是同一个人。我的问题是是否有任何 API 可以帮助解决可能的拼写错误?如何改进我的方法?
【问题讨论】:
-
您可能需要查看Levenstein distance。但是,在实践中,我发现唯一可靠的方法是保留一个“别名”表并在那里进行检查。