匹配名称/地址数据的工具
这是一个有趣的问题。
我有一个带有名称和地址信息的oracle数据库,该数据库必须保持最新状态。
我们从许多不同的政府来源获得数据提要,需要找出匹配项,是否用数据更新数据库,或者是否需要创建新记录。
没有任何类型的唯一标识符可用于将记录绑定在一起,并且数据质量并不总是那么好,总会有错别字,使用不同名称的人(例如Joe vs. Joseph),等等。
我很想听听任何从事过此类问题工作的人,然后他们将如何解决这个问题,或者至少解决其中的一些自动化问题。
解决方案
回答
在我目前的工作中,我们有很多数据完整性问题。我们尝试在加载数据之前先对其进行"清理",以确保质量。目前,我们使用Melissa Data清理姓名,地址和电子邮件。在加载之前,它对标准化事情做得很好。这样,我们可以避免重复数据。
另外,SQL Server Integration Services(我知道我们正在使用Oracle)具有一个对字符串进行"模糊"匹配的组件,从而使我们可以找到近似匹配而不是直接的一对一匹配。这称为模糊查找。基本上,它会给我们一个分数,告诉我们两个输入之间的匹配程度...我们可以设置阈值以告诉它认为匹配必须达到的程度(即80%以内)。
过去,我还使用SOUNDEX来确定在确定重复项时名称是否相似。有很多SOUNDEX实现。
祝你好运。
回答
我们要解决的问题的术语是"记录链接"。
我不能推荐特定的工具。搜索"记录链接软件"或者"合并清除软件",通过一些研究,我们应该能够找到满足我们需求的内容。
我找到了一个名为Febrl的开源解决方案。该工具最初是为生物医学研究领域开发的,其解释为"可自由扩展的生物医学记录链接"的名称。我们可以在此处了解更多信息:"用于高性能记录链接的并行大规模技术"
有关记录链接所涉及的问题/解决方案的完整概述,请阅读有关"合并/清除和重复检测"的信息。
回答
每个活跃于此领域的主要软件公司都提供解决方案套件,用于处理名称和地址解析,数据标准化,记录重复数据删除或者匹配,记录链接/合并,生存等等。不过它们都有点贵。
例如,Oracle自己针对此问题的解决方案是产品"面向Oracle数据集成器(ODI)的Oracle数据质量(ODQ)",该产品是其融合中间件堆栈的一部分。顾名思义,ODQ需要ODI(即,它是一个单独许可的添加模块,并且依赖于ODI)。
IBM的Websphere解决方案套件(通过其Ascential收购获得)包括QualityStage。
现在是SAP公司的Business Objects在其企业信息管理(EIM)套件下拥有一个数据质量产品。
其他主要的数据质量品牌包括Dataflux(一家SAS公司)和Trillium Software(一家Harte-Hanks公司)
Gartner集团发布了针对数据质量解决方案套件的年度魔力象限。在这些"魔力象限"中评分很高的供应商通常会将整个报告在线提供给其网站上的注册用户(示例1,示例2)。
回答
我在一家保险公司的会员注册列表上做了类似的事情。幸运的是,我们有SSN来确定主要成员,但我必须确定受抚养者是新的还是现有的(仅按名称)。作为解决方案的一部分,我尝试了soundex算法,但它似乎不符合要求,因为它似乎将太多不同的名称映射到同一事物(许多家庭倾向于使用相似的发音来命名他们的孩子)。我最终只是使用(我认为)家属名字的前四个字母作为唯一标识符,并称其为"足够好"。我不知道我该如何处理乔治·福尔曼的家人:-)
回答
使用FirstLogic的经验教训。 (其他产品应该是相似的。)就上下文而言,我们从数十个来源获取文件,并且每个文件的格式都不同。我们需要知道哪些人需要添加到我们的数据库中,哪些人需要更新,以及哪些人仅需要标记为"在列表中"。
- 我希望软件能够查看整个文件并确定-例如-如果A列的姓氏在100行中有98行,那么A列必须是姓氏列。这不是真的;每个记录都是单独处理的。
- 如果我们确切知道哪个字段中包含什么数据,则可以告诉软件它将处理该数据。但是,如果我们不能始终确定自己最好还是给它整个字符串,然后让软件弄清楚。例如,姓氏字段包含" Smith Jr MD"之类的内容。如果我们将其声明为"姓氏"列,则将假定姓氏为" Smith Jr MD"。但是,如果我们通过" John Smith Jr MD"并让软件弄清楚,它将正确识别所有位。
- 有些似乎显而易见的事情却没有。例如,开箱即用的FirstLogic并不假定逗号表示"姓氏,名字"。实际上,它具有很大的姓氏列表和很大的名字列表,因此它认为它可以忽略逗号。我们一直与"约翰·托马斯"这样的人有问题。有时会感到困惑,因为在我们看来,显而易见的姓氏实际上是西班牙语的名字。
- 很难使用系统添加虚拟数据。如果我们有诸如"测试帐户"或者" TBD"之类的名字,他们将根本不会被处理-FirstLogic将丢弃该记录,因为它找不到任何可识别的数据。
- 定制系统是可能的,但并非像销售人员所说的那样容易。有上百万个选项以及自定义文件和词典。如果我们希望能够对其进行自定义,则需要花费时间来了解其工作原理。就像RDBMS或者ETL工具一样。这不是一个神奇的黑匣子。
- 它还具有大量的数据质量功能,有助于证明购买该软件的合理性,但需要专门的精力来学习和应用。
- 这些工具并不是真正针对主文件处理列表而设计的。它们是为合并清除操作而创建的。有可能(我们正在这样做),但是它要求我们将数据库视为一个列表(这要求我们将所有实时记录提取到一个平面文件中)。另外,我们想要对哪些记录去往何处进行更多控制(即,如果名称匹配80%,并且邮政编码的前两位相同,则可能是同一个人,等等),那么批处理过程就变得很复杂。将。
- 最后,当我们尝试确定两个位于不同地址的人是否实际上相同时,我们意识到处理" John Smith"和处理" Annabelle DiGiovanni"是非常不同的野兽。我们可以对软件进行微调,以使不常见的名称在比赛中比普通的名称更有分量,但是谁有时间呢?我们的匹配过程的准确率约为80%,我们对手动处理剩余的20%感到满意。
不要将其视为自动进行匹配的工具。可以将其视为使人工数据处理器提高工作效率的工具。这样,我们就可以进行设置,这样,如果我们达到80%的准确度,那将是巨大的成功,而不是成绩斐然。
回答
我已经看到了Dataflux的实际应用,据我们的"明星"数据分析师称,这是他发现的用于链接人员和公司名称的最准确的"聚类"工具(如Dataflux所说)。不过,它非常昂贵。
回答
这是记录链接的经典问题。错别字,字母丢失等可以通过概率规则定义阻塞规则来处理。
FRIL是一款最适合软件。在Java中,免费且非常友好。网站上有指向教程和视频的链接。它支持数据库连接,尽管我不确定oracle。
RecLink可能是另一种方式,尽管由于没有手册/教程(据我所知),我们可能需要更加努力才能使其启动并运行。
除了免费选项,还有RELAIS。