我试图使用" stringdist"模糊匹配两个数据框之间的公司名称,但它不能很好地工作,可以做些什么?

时间:2018-03-31 09:41:00

标签: r stringdist

我有一个包含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)), ]

正如您在此处所见,结果并不十分令人满意: enter image description here

第一行很好,但是在最后到底之前出现了一堆不好的比赛我得到了比赛&#34; AMMINEX AS&#34;这很好。

这对我来说并不合适。有什么方法可以改善这种模糊匹配,或者使用不同的方法来获得更好的结果?也许一种方法可以看出字母出现在字符串中的顺序?

0 个答案:

没有答案