我希望通过C#
中的记录链接模糊匹配算法比较两个数据元素或字段,我想确定哪种算法最适合每次比较。
我想要比较的字段是:
我目前正在使用的近似字符串匹配算法(ASM):
首先,我要比较两个字段,例如FirstName1
和FirstName2
,看看它们是否完全匹配。
例如,FirstName1 = "Bob"
和FirstName2 = "Bob"
将完全匹配,因此不会继续进行模糊匹配。
另一方面,FirstName1 = "Jill"
和FirstName2 = "Bob"
将继续对两个字段进行模糊比较。
我想知道是否有人知道什么模糊匹配算法更适合在某些字段比较而不是其他字段比较,反之亦然。
答案 0 :(得分:1)
我刚刚为实体解析编写了一些类似的代码。关键是并非所有字段都是相同的。例如,你应该不在SSN
上使用ASM - 即使一个不同的数字/字符是完全不同的SSN和人。
我会尝试首先解析地址,然后进行完全匹配,而不是模糊匹配地址组件。例如,一个好的地址解析服务将会对待:
Second Street NW
和NW 2nd St
同样,您可以使用Google的电话号码解析库(可用于C#,Java等)以标准方式格式化所有电话号码,然后进行直接比较。
我确实使用Jaro-Winkler来比较名称组件,但我没有研究您列出的几个指标。
简而言之:
规范化和比较
而不是模糊匹配。