我有一个大的数据集(300k),我想清理一个特殊的列--名字列.问题是同一个名字可能会因为人为输入错误而出现多个无意的拼写,比如 "Benjamin "拼成 "Banjamin"。
我试过openrefine,但ngram合并和键碰撞都无法解决上面的例子,而Leveshtein距离公式却一直在进行,把我的电脑冻坏了。我试过Python,但fuzzywuzzy+for循环又要花很长时间,似乎不可行。R studio似乎是一个很好的选择,然而我不知道该如何处理?我试过包'refinr',但那和openrefine一样,不能处理 "Benjamin "和 "Banjamin "类型的错别字。只有当有一个字母重复或单词之间有空格时,它才会好。
有谁有什么建议,我应该怎么做?
谅谅
我认为 fuzzyjoin
-包装将满足你的愿望。
df1 <- data.frame( name = c("James", "Benjamin", "Bert"), id = 1:3 )
df2 <- data.frame( name = c("Banjamin", "David", "Jemes"), id = 4:6 )
library( fuzzyjoin )
stringdist_join( df1, df2, by = "name")
# name.x id.x name.y id.y
# 1 James 1 Jemes 6
# 2 Benjamin 2 Banjamin 4