【问题标题】:Fuzzy record matching with multiple columns of information多列信息的模糊记录匹配
【发布时间】:2011-07-11 09:18:07
【问题描述】:

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

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

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

我的问题如下:

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

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

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

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

  • 如果他们使用 Python,那就太棒了,但没必要。

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

【问题讨论】:

  • 避免错误匹配/误报对您来说有多重要?
  • 好问题。我会说相当很重要。我进行匹配以执行统计分析。因此,一点点噪音是可以的,但是对于更少的“不正确的匹配”而不是更少的“不正确的不匹配”有强烈的偏好。理想情况下,我可以调整攻击性。

标签: algorithm theory string-matching fuzzy-comparison record-linkage


【解决方案1】:

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

链接的 Wikipedia 文章的详细信息非常少,但点击链接并进行一些搜索会为您提供一些有用的信息。可能是您可以修改以适合您的目的的实现。其实看看Simple implementation of N-Gram, tf-idf and Cosine similarity in Python

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

【讨论】:

    【解决方案2】:

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

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

    dedupe python library 可帮助您完成此和其他部分记录链接的艰巨任务。该文档有一个漂亮的good overview of how to approach the problem of record linkage comprehensively

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2011-03-16
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多