我有一个包含500万个不同公司名称的数据框,其中许多是指以不同方式或拼写错误拼写的同一家公司。我使用公司名称" Amminex"作为一个例子,然后尝试将其串联到500万公司名称:
Companylist <- data.frame(Companies=c('AMMINEX'))
这是我打开的公司名单的大名单:
Biglist <- data.frame(name=c(Biglist[,]))
我把AMMINEX和500万家公司放在一个矩阵中:
Matches <- expand.grid(Companylist$Companies,Biglist$name.Companiesnames)
更改列名称:
names(Matches) <- c("Companies","CompaniesList")
我使用带有余弦方法的stringdist:
Matches$dist <- stringdist(Matches$Companies,Matches$CompaniesList, method="cosine")
我删除所有超过0.2的距离以消除不良匹配:
Matches_trimmed <- Matches[!(Matches$dist>0.2),]
我按距离列排序,因此最佳匹配显示在顶部:
Matches_trimmed <- Matches_trimmed[with(Matches_trimmed, order(dist)), ]
第一行很好,但是在最后到底之前出现了一堆不好的比赛我得到了比赛&#34; AMMINEX AS&#34;这很好。
这对我来说并不合适。有什么方法可以改善这种模糊匹配,或者使用不同的方法来获得更好的结果?也许一种方法可以看出字母出现在字符串中的顺序?