1

我有一个包含 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 与 cosine 方法一起使用:

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)), ]

正如您在此处看到的,结果不是很令人满意: 在此处输入图像描述

第一行很好,但随后出现了一堆糟糕的匹配,最后在底部我得到了很好的匹配“AMMINEX AS”。

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

4

0 回答 0