基于非数字数据聚合重复身份的算法?

数据挖掘 聚类 算法
2021-10-04 14:40:36

我有一个大型数据集(2M 条目),但许多人在数据库中有多个条目,识别信息略有(或显着)不同。例如,我可能有 J. Doe 和 John Doe,或者我可能有带电子邮件地址的 John Doe,而没有随附电子邮件地址的 John Doe。

我一直在研究不同的聚类算法,但似乎没有什么适合我正在做的事情,即根据如下规则聚合条目:

  • 根据其中一个名字是否全部大写来猜测名字和姓氏
  • 如果电子邮件地址匹配,则聚合“J. Doe”和“J. Doe”
  • 如果没有其他人的名字以“J”开头,姓氏“Doe”,则将“J. Doe”聚合为“John Doe”

对于较小的数据集,这将是一个相对简单的任务,只需使用一些简单的规则即可完成,但是对于我拥有的条目数量,聚合任务可能会变得非常慢并且逻辑变得非常复杂。我当前的解决方案(基于在我的数据库中使用全文搜索功能来查找类似条目,根据这些结果添加散列,然后基于散列和歧义类型的混合进行聚合)有效,但每次我尝试运行它或者更新它,它只是尖叫着说这是其他人已经解决的问题。但我一直无法找到解决方案。

有没有算法可以根据这样的规则做我想做的事?或者可能有用的特定软件包或软件?还是我完全错误地处理这个问题?

谢谢!

(请注意,尽管我很清楚有许多不同的方法可以错误地聚合身份(例如,J. Doe 可能意味着 John Doe 或 James Doe),所以我不需要警告不要尝试聚合事物。)

1个回答

我还没有成功解决我的记录链接问题,但我想分享一些我在这个过程中发现的东西,以防它对其他人有用。是一项基于GitHub的正在进行中的工作。


记录联动资源

(也称为去重、数据匹配、实体解析)

背景

文件

会谈

  • Peter Christen,在 ADRC-Scotland 的 Record Linkage 讲座:1 2 3 4 (2015)
  • Mike Mull,数据匹配的艺术与科学:https ://www.youtube.com/watch?v=Y-nYEOgq3YE (2015 年)
  • Rhydwyn Mcguire,加入现实生活:https ://www.youtube.com/watch?v=cEcVIjyHfiQ (2013)
  • Andrew Rowe,使用 Python 进行大数据重复数据删除和数据匹配:https ://www.youtube.com/watch?v=Z6mlvrYEYnk (2013 年)

图书

免费软件

(最后更新,截至 2017 年 11 月的 github 星号)

Python

  • 重复数据删除:https ://github.com/dedupeio/dedupe (2017, 1,413)
  • RLTK:https ://github.com/usc-isi-i2/rltk/ (2017, 13)
  • 二月:https ://sourceforge.net/projects/febrl/ (2013)

爪哇

R

其他

  • OpenRecLink:http: //reclink.sourceforge.net/ (2016)
    • 带有图形用户界面的 C++
  • Registry Plus™ Link Plus:https ://www.cdc.gov/cancer/npcr/tools/registryplus/lp_tech_info.htm (2007)

商业软件和解决方案

对于 SAS

数据清洗

名称解析器

Python JavaScript
  • 解析全名:https ://github.com/dschnelldavis/parse-full-name (2017, 18)

文件

组织

杂项