用于匹配名称/地址数据的工具

时间:2008-09-05 15:13:52

标签: duplicates data-quality record-linkage

这是一个有趣的问题。

我有一个名为&的oracle数据库需要保持最新的地址信息。

我们从许多不同的gov't源获取数据,并且需要找出匹配项,以及是否使用数据更新数据库,或者是否需要创建新记录。

没有任何类型的唯一标识符可用于将记录绑定在一起,并且数据质量并不总是那么好 - 总会有拼写错误,人们使用不同的名称(即Joe vs. Joseph),等。

我有兴趣听到任何曾就这类问题进行过工作的人,以及他们如何解决这个问题,或者至少是自动化部分问题。

10 个答案:

答案 0 :(得分:7)

在此领域活跃的每个主要软件公司都提供处理名称和地址解析,数据标准化,记录重复数据删除或匹配,记录链接/合并,生存等的解决方案套件。不过,它们都有点贵。

例如,Oracle针对此问题的解决方案是产品“Oracle Data Quality (ODQ) for Oracle Data Integrator (ODI)”,这是其融合中间件堆栈的一部分。顾名思义,ODQ需要ODI(即,它是一个单独许可并依赖于ODI的附加模块)。

IBM的Websphere解决方案套件(通过他们的Ascential收购获得)包括QualityStage

Business Objects(现为SAP公司)在其企业信息管理(EIM)套件下拥有Data Quality产品。

其他主要数据质量品牌包括Dataflux(SAS公司)和Trillium Software(Harte-Hanks公司)

Gartner Group发布年度数据质量解决方案套件Magic Quadrant。在这些魔力象限中评分良好的供应商通常会在其网站(example 1example 2)上向注册用户提供整个报告。

答案 1 :(得分:6)

在开源方面,现在有一个用于执行此类记录重复数据删除/实体解析的python库:Dedupe

需要编程技巧,但它是免费的,可以在笔记本电脑上运行,而不是大型服务器。

以下是how it works的概述。

答案 2 :(得分:4)

使用FirstLogic的经验教训。 (其他产品应该是类似的。)对于上下文,我们从几十个来源获取文件,每个都采用不同的格式。我们需要知道谁需要添加到我们的数据库中,谁需要更新,以及谁只需要标记为“在列表中”。

  1. 我希望软件会查看整个文件并确定 - 比如说 - 如果A列在100行中有98个姓,那么A列必须是姓氏列。这不是真的;每条记录都是单独处理的。

  2. 如果您确切知道哪些数据在哪个字段中,那么您可以告诉软件它将处理它。但是,如果你不总是确定你最好只给它整个字符串并让软件搞清楚。一个例子是姓氏字段,其中包含类似“Smith Jr MD”的内容。如果您将其声明为姓氏列,则它将假定姓氏为“Smith Jr MD”。但是如果你传递“John Smith Jr MD”并让软件弄清楚它会正确识别所有位。

  3. 一些看似显而易见的事情并非如此。例如,开箱即用的FirstLogic并不认为逗号表示“姓氏,名字”。它实际上有一个很棒的姓氏列表和一个很棒的名字列表,所以它认为它可以忽略逗号。我们一直与像“约翰,托马斯”这样的人有问题。有时会让人感到困惑,因为对我们来说看起来像是一个明显的姓氏实际上是西班牙语中的名字或其他名称。

  4. 使用系统添加虚拟数据很困难。如果您有人命名为“测试帐户”或“TBD”,他们将不会被处理 - FirstLogic会抛弃记录,因为它没有找到它识别的任何数据位。

  5. 可以自定义系统,但不像销售人员那样容易。有一百万个选项和自定义文件和词典。如果您希望能够自定义它,您需要花时间来了解它的工作原理。它就像一个RDBMS或ETL工具。这不是一个神奇的黑盒子。

  6. 它还具有大量数据质量功能,有助于证明购买软件的合理性,但这需要专门的努力来学习和应用。

  7. 这些工具并非真正用于处理主文件列表;它们是为合并清除操作而创建的。这是可能的(我们正在这样做),但它要求您将数据库视为一个列表(这需要您将所有实时记录提取到平面文件中)。此外,您想要对哪些记录进行控制的位置越多(例如,如果名称是80%匹配且邮政编码的前两位数字相同,那么它可能是同一个人等),您的批处理过程就很复杂将会是。

  8. 最后,当你试图确定不同地址的两个人是否真的相同时,我们意识到处理“John Smith”和处理“Annabelle DiGiovanni”是非常不同的野兽。您可以对软件进行微调,以使不常见的名称在匹配时比普通名称更重,但谁有时间?我们的匹配过程准确率约为80%,我们对手动处理剩余的20%感到满意。

  9. 不要将其视为自动进行匹配的工具。可以将其视为一种工具,使您的人工数据处理器更高效。这样你就可以设置它,这样如果你达到80%的准确率就会取得圆满成功而不是标记。

答案 3 :(得分:2)

在我目前的工作中,我们遇到了很多数据完整性问题。我们尝试在加载数据之前“清理”数据以确保质量。我们目前使用Melissa Data来清理姓名,地址和电子邮件。在加载之前,它可以很好地标准化。这样,我们可以避免重复数据。

此外,SQL Server Integration Services(我知道您使用的是Oracle)有一个组件可以对字符串进行“模糊”匹配,允许您查找近似匹配而不是直接的一对一匹配。它被称为模糊查找。基本上它会给你一个分数,告诉你两个输入的匹配程度是多么接近......然后你可以设置阈值来告诉它有多接近将它视为一个匹配(即80%或其他)。< / p>

过去,我还使用SOUNDEX来确定名称在确定重复项时是否相似。有很多SOUNDEX实现。

祝你好运。

答案 4 :(得分:2)

您要解决的问题的术语是“记录链接”。

我不推荐使用特定工具。搜索“记录链接软件”或“合并清除软件”,通过一些研究,您应该能够找到满足您需求的东西。

我找到了一个名为Febrl的开源解决方案。该工具最初是为生物医学研究领域开发的,它解释了“可自由扩展的生物医学记录联系”的名称。您可以在此处详细了解:"Parallel Large Scale Techniques for High-Performance Record Linkage"

要详细了解记录链接中涉及的问题/解决方案,请阅读"Merge/Purge and Duplicate Detection"

答案 5 :(得分:1)

每个主要提供商都有自己的解决方案。 Oracle,IBM,SAS Dataflux等都声称是最好的。

独立验证评估:

在澳大利亚科廷大学数据链接中心进行的一项研究模拟了440万条记录的匹配。确定了提供商在准确性方面的优势(找到的匹配数与可用数量。错误匹配数)

  1. DataMatch Enterprise,最高准确度(> 95%),非常快,成本低
  2. IBM Quality Stage,高精度(> 90%),非常快,成本高(> $ 100K)
  3. SAS数据通量,中等准确度(> 85%),快速,高成本(> 100K)
  4. 这是我们能找到的最好的独立评估,非常彻底。

答案 6 :(得分:0)

我在保险公司的会员登记名单上做了类似的事情。幸运的是,我们有SSN确定主要成员,但我必须决定家属是新的还是现有的(仅凭名称)。我尝试使用soundex算法作为解决方案的一部分,但它似乎不适合该法案,因为它似乎将太多不同的名称映射到同一个东西(并且许多家庭倾向于将他们的孩子命名为具有相似的声音名称)。我最后只使用(我认为)dependents名字的前四个字母作为唯一标识符,并称之为“足够好”。我不知道如何处理George Foreman的家人: - )

答案 7 :(得分:0)

我已经看到Dataflux正在运行,并且根据我们的“明星”数据分析师的说法,它是用于链接人们和公司名称的“群集”(如Dataflux所称)的最准确工具。但是它非常昂贵。

答案 8 :(得分:0)

这是记录链接的经典问题。可以通过定义阻塞规则集来使用概率方法处理错别字,丢失字母等。

可以为您做得很好的一个软件是FRIL。在Java中,免费且非常友好。网站上有教程和视频的链接。它支持数据库连接,虽然我不确定oracle。

RecLink可能是另一种方式,尽管你可能不得不更加努力地开始运行,因为没有手册/教程(据我所知)。

从免费选项中,还有RELAIS

答案 9 :(得分:0)

我使用http://www.netresec.com/?page=SplitCap作为名称的大数据集。他们做了很棒的工作,用不同的拼写方法匹配不同的数据库,并切入了大量的重复数据。