7

我有一个有点高水平的问题,所以我会尽量具体。

我正在进行大量研究,涉及将不同的数据集与引用同一实体(通常是公司或金融证券)的标题信息相结合。这种记录链接通常涉及标题信息,其中名称是唯一常见的主要标识符,但通常可以使用一些辅助信息(例如城市和州、操作日期、相对大小等)。这些匹配通常是一对多的,但也可能是一对一的,甚至是多对多的。我通常是手动完成这种匹配,或者对已清理的子字符串进行非常基本的文本比较。我偶尔会使用一个简单的匹配算法,比如 Levenshtein 距离测量,但我没有从中得到太多,部分原因是我没有一个好的正式的应用方法。

我的猜测是,这是一个相当普遍的问题,并且必须已经开发了一些正式的流程来完成此类事情。我已经阅读了一些关于该主题的学术论文,这些论文涉及给定方法的理论适用性,但我还没有找到任何好的资源来介绍配方或至少是一个实用的框架。

我的问题如下:

  • 有谁知道实现多维模糊记录匹配的良好来源,例如书籍或网站或已发表的文章或工作论文?

  • 我更喜欢有实际例子和明确方法的东西。

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

  • 编辑)链接数据用于统计分析。因此,一点点噪音是可以的,但是对于更少的“不正确匹配”而不是更少的“不正确的不匹配”有强烈的偏好。

  • 如果他们在 Python 中,那就太棒了,但不是必需的。

最后一件事,如果重要的话,是我不太关心计算效率。我没有动态实现这一点,我通常处理几千条记录。

4

2 回答 2

3

对于“几千条记录”而言,一种不应该非常昂贵的常用方法是cosine Similarity。虽然最常用于比较文本文档,但您可以轻松修改它以处理任何类型的数据。

链接的 Wikipedia 文章在细节上非常稀疏,但点击链接并进行一些搜索将为您提供一些很好的信息。可能是您可以修改以适合您的目的的实现。其实看看Python中N-Gram、tf-idf和余弦相似度的简单实现

一个更简单的计算,并且对于您的目的可能“足够好”的是Jaccard index。主要区别在于,余弦相似度通常会考虑一个词在文档和整个文档集中使用的次数,而 Jaccard 索引只关心文档中的特定词。还有其他差异,但我认为这是最重要的。

于 2011-03-08T20:12:58.397 回答
0

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

这是一个分类问题,有很多方法可以做到,但逻辑回归是更简单的方法之一。要训​​练分类器,您需要将一些记录对标记为匹配或不匹配。

dedupe python 库可以帮助您完成记录链接这一艰巨任务的其他部分。该文档很好地概述了如何全面解决记录链接问题

于 2016-09-24T19:17:38.137 回答