多列信息的模糊记录匹配

7
我有一个问题,涉及到整合不同的数据集和引用相同实体(通常是公司或金融证券)的头信息。这个记录链接通常涉及到头信息,其中名称是唯一的主要标识符,但通常会提供一些次要信息(例如城市和州、运营日期、相对规模等)。这些匹配通常是一对多的,但也可能是一对一甚至多对多的。我通常通过手工或基本文本比较已清理的子字符串来完成此匹配。我偶尔使用简单的匹配算法,如Levenshtein距离测量,但没有得到太多结果,部分原因是我没有一个好的正式方法来应用它。
我的猜测是这是一个相当普遍的问题,必定有一些正式的流程已经被开发出来来解决这种类型的问题。我读了一些关于该主题的学术论文,涉及给定方法的理论适当性,但我没有找到任何好的资源来讲解配方或至少是实用框架。
我的问题如下:
  • 是否有人知道实现多维模糊记录匹配的好资源,如书籍、网站或已发布的文章或工作论文?

  • 我希望它有实际的例子和明确的方法。

  • 该方法可以是迭代的,中间阶段需要人工检查以改进。

  • (编辑)链接数据用于统计分析。因此,一些噪音是可以接受的,但更少的“错误匹配”优于更少的“错误未匹配”。

  • 如果使用Python就太棒了,但不是必需的。

最后一件事,如果有关系,我不太在意计算效率。我没有动态实现它,通常处理几千条记录。

避免错误匹配/误报对您有多重要? - Tim
好问题。我会说它是相当重要的。我进行匹配以执行统计分析。因此,一点噪音是可以接受的,但更少的“错误匹配”比更少的“错误非匹配”更受青睐。理想情况下,我可以调整匹配的侵略性。 - WildGunman
2个回答

3

一种常用的方法,对于“几千条记录”来说不应该太昂贵,是余弦相似度。虽然通常用于比较文本文档,但您可以轻松修改它以适用于任何类型的数据。

维基百科上的链接文章缺乏详细信息,但是跟随链接并进行一些搜索将为您提供一些有用的信息。可能有一个实现可以修改以适合您的目的。事实上,请看看Python中N-Gram、tf-idf和余弦相似度的简单实现

一种更简单的计算方法,并且对于您的目的可能已经足够了,是Jaccard指数。主要区别在于,通常余弦相似度考虑了单词在文档中和整个文档集中使用的次数,而Jaccard指数只关心特定单词是否在文档中。还有其他差异,但这个差异对我来说最重要。


0

问题在于您有一组距离数组,至少每列一个,您希望以最佳方式组合这些距离,以指示一对记录是否相同。

这是一个分类问题,有许多方法可以解决,但逻辑回归是其中较简单的方法之一。要训练分类器,您需要将一些记录对标记为匹配或不匹配。

dedupe Python库可以帮助您完成此任务以及记录链接的其他困难部分。文档提供了一个全面解决记录链接问题的很好概述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接