【发布时间】:2018-01-03 23:00:41
【问题描述】:
我有一个很大的管理数据文件,大约有 100 万条记录。在这个数据集中,个人可以多次表示。大约一半的记录具有将记录映射到个人的识别代码;对于没有的那一半,我需要模糊匹配名称以标记可能属于同一个人的记录。
通过查看带有识别码的记录,我创建了一个在记录同一个人姓名时出现的差异的列表:
- 包含中间名,例如琼恩·雪诺 vs 琼恩·坦格利安·斯诺
- 包含第二个姓氏,例如乔恩·雪诺 vs 乔恩·坦格利安-斯诺
- 昵称/名字的缩写,例如乔纳森·斯诺 vs 乔恩·斯诺
- 名称颠倒,例如琼恩雪诺 vs 雪琼恩
- 拼写错误/错别字/变体:例如Samual/Samuel、莫妮卡/莫妮卡、拉斐尔/拉斐尔
鉴于我所追求的匹配类型,有没有比使用 agrep()/levenshtein 的距离更好的方法,在 R 中很容易实现?
编辑:R 中的 agrep() 不能很好地解决这个问题 - 因为我需要允许大量的插入和替换来解释名称的不同记录方式,很多错误匹配被抛出。
【问题讨论】:
-
@ImranAli 这个问题是关于效率的,鉴于我的数据集中记录名称的方式存在特殊差异,我问的是解决问题的最佳方法。
标签: r string-matching agrep