比方说,我有坐满了人与下列数据元素数据库:模糊数据的个人人口统计信息匹配
- 是PersonID(无意义替代自动编号)
- 姓
- MiddleInitial
- 姓氏
- NameSuffix
- DateOfBirth
- AlternateID(如SSN,Militarty ID等)
我从各种格式中获得大量数据源,并且可以对这些信息进行合理的变化。一些例子是:
- 全名,出生日期
- 全名,最后4 SSN
- ,姓,出生日期
当此数据进来,我需要写的东西来匹配起来。我不需要也不期望得到超过80%的匹配率。自动匹配后,我会在网页上呈现不确定的匹配,以供某人手动匹配。
一些复杂的是:
- 一些数据匹配是比别人更好,我想权重分配给那些。例如,如果SSN完全匹配,但名称因为某人名字中间名而关闭,我想为该匹配指定一个更高的置信度值,如果名称完全匹配但SSN关闭。
- 名称匹配有一些困难。 John Doe Jr与John Doe II相同,但与John Doe Sr.不一样,如果我得到John Doe并没有其他信息,我需要确定系统不会选择一个,因为无法确定谁来挑选。
- 名字匹配真的很难。你有Bob/Robert,John/Jonathon,Tom/Thomas等。
- 仅仅因为我有一个Feed FullName + DOB并不意味着每个记录都会填写DOB字段。我不想错过联系,只是因为无与伦比的DOB杀死了匹配的分数。如果缺少一个字段,我想将它从可用于匹配的元素中排除。
- 如果有人手动匹配,我希望他们的匹配影响所有未来的比赛。所以,如果我们再次获得相同的确切数据,那么下次没有理由不自动匹配它。
我已经看到SSIS有模糊匹配,但我们目前没有使用SSIS,而且我觉得它非常糟糕,并且几乎不可能进行版本控制,所以它不是我的第一个工具选择。但如果这是最好的,告诉我。否则,有没有用于解决这类问题的任何工具/库/实用程序/技术(最好是免费的,最好是基于.NET或T-SQL的)?
这是我以前见过的一种方法。误报风险很高,代码很脆弱,因为很难考虑所有的组合。此外,我们系统中的数据相当完整......我们从其他供应商处获得的数据,其他人的数据也是如此。 – mattmc3 2010-07-16 14:07:56
无论采用何种方法,您的假阳性风险都很高。但是,如果您使用有条不紊的方法并将其构建出来,您至少可以知道匹配完成的方式和原因,并减少误报。 – 2010-07-16 14:32:05