我有一个大型的管理数据文件,大约有100万条记录。在此数据集中可以多次表示个人。大约一半的记录都有识别代码,可以将记录映射到个人;对于没有的一半,我需要模糊匹配名称来标记可能属于同一个人的记录。
通过查看带有识别码的记录,我创建了一份记录同一个人姓名的差异列表:
鉴于我所追求的匹配类型,是否有比使用agrep()/ levenshtein的距离更好的方法,这很容易在R中实现?
编辑:R中的agrep()在这个问题上没有做得很好 - 因为我需要考虑大量的插入和替换来解释名称记录的方式不同,很多错误的匹配被扔了。
答案 0 :(得分:1)
我会多次通过。
"Jon .* Snow"
- 中间名
"Jon .*Snow"
- 姓氏第二名
昵称需要从长格式到短格式的字典,但没有正则表达式可以处理他的。
"Snow Jon"
- 逆转(duh)
agrep将处理轻微的拼写错误。
您可能还想将您的名字标记为第一个,中间一个和最后一个。