我有一个大的行政数据文件,大约 100 万条记录。在这个数据集中,个人可以多次表示。大约一半的记录具有将记录映射到个人的识别代码;对于没有的那一半,我需要模糊匹配名称以标记可能属于同一个人的记录。
通过查看带有识别码的记录,我创建了一个在同一个人的姓名记录中出现的差异列表:
- 包含中间名,例如 Jon Snow vs Jon Targaryen Snow
- 包含第二个姓氏,例如 Jon Snow vs Jon Targaryen-Snow
- 昵称/名字的缩写,例如 Jonathon Snow vs Jon Snow
- 姓名颠倒,例如 Jon Snow vs Snow Jon
- 拼写错误/错别字/变体:例如 Samual/Samuel、Monica/Monika、Rafael/Raphael
鉴于我所追求的匹配类型,有没有比使用 agrep()/levenshtein 的距离更好的方法,这在 R 中很容易实现?
编辑:R 中的 agrep() 不能很好地解决这个问题 - 因为我需要允许大量的插入和替换来解释名称的不同记录方式,所以会抛出很多错误的匹配项.