R中的模糊匹配 - 约100万行

时间:2017-03-10 12:11:07

标签: r pattern-matching bigdata

我有一个大约一百万人的名单 - 每个人都用他/她的姓名来识别。个人可能不止一次出现在列表中。我想按个人对观察进行分组,并计算它们出现的次数 - 这通常可以,并使用dplyr::group_by进行。

但是,有拼写错误。为了解决这个问题,我想到了在这个列表中计算字符串距离的度量。然后我会继续并假设如果字符串距离低于某个阈值,则记录识别同一个人。 到目前为止,我尝试过的所有方法要么过于耗时,要么显然不可行。 这是我尝试使用dplyrRecordLinkage

list_matrix <- expand.grid(x = individual_list, pattern = individual_list, stringsAsFactors = F)
# The same is achieved using stringdistmatrix (stringdist package)
result <- list_matrix %>% 
          group_by(x) %>% 
          mutate(similarity = levenshteinSim(x, pattern)) %>%
          summarise(match = similarity[which.max(similarity)], 
                    matched_to = pattern[which.max(match)])

此方法适用于小型数据集。直观地说,我总是面对彼此的所有元素。然而,得到的矩阵具有 numberofrows x numerofrows 的维度,在我的情况下是百万分之一百倍 - 太重而无法处理。 我还介绍了其他功能:adistpmatchagrep(l)。同样的逻辑适用。我认为问题在这里是概念性的。有什么想法吗?

0 个答案:

没有答案