我正在做记录链接项目,我需要对各种字符串比较器做一些调查工作。我正在看的是:
Jaro-Winkler、Levenshtein 距离、最长公共子串和精确匹配。
我想知道,有没有做任何工作来确定哪个好用以及什么时候用?也就是说,Jaro-Winkler 似乎对名称有好处,但对社会安全号码进行精确匹配可能会更好。您会使用哪个地址?Jaro-Winkler 比其他人有优势吗?
有没有人可以指出我的白皮书?
谢谢。
我正在做记录链接项目,我需要对各种字符串比较器做一些调查工作。我正在看的是:
Jaro-Winkler、Levenshtein 距离、最长公共子串和精确匹配。
我想知道,有没有做任何工作来确定哪个好用以及什么时候用?也就是说,Jaro-Winkler 似乎对名称有好处,但对社会安全号码进行精确匹配可能会更好。您会使用哪个地址?Jaro-Winkler 比其他人有优势吗?
有没有人可以指出我的白皮书?
谢谢。
一个很好的起点是 William W. Cohen 等人的论文“名称匹配任务的字符串距离度量的比较” 。该论文比较了几个字符串距离度量。
他们还在SecondString 项目中实现了其中的大部分。它是一个“基于 Java 的开源近似字符串匹配技术包”,因此您可以轻松比较不同的指标,而无需自己实现所有内容。
几乎不可能说哪个指标是最好的。正如您所说,Jaro-Winkler 对名称很有用,为了比较地址,使用 Cohen 描述的 TFIDF 或 SoftTFIFD 等基于令牌的指标可能是有意义的。
为了能够做出决定,您还应该考虑底层算法的复杂性和相关的执行时间。
对于姓名,尤其是英语姓氏,Caverphone 算法非常值得一看。我在我的数据集上测试了几个,它表现最好——至少满足我的需要。