模糊匹配多个单词

时间:2013-04-05 04:28:03

标签: r fuzzy-search

我正在尝试在R中进行一些模糊匹配,其中我有多个数据字段要匹配。

例如:

try_to_match <- c('seoul korea', 'bisbane', 'korea', 'australia brisbane')
locations <- data.frame(name=c('seoul', 'brisbane'),
                        country=c('south korea', 'australia'))

我希望将try_to_match中用户输入的位置与locations数据框进行匹配。

现在,关于SO上的R模糊匹配存在类似问题,大多数覆盖agrep。但是,当有多个要匹配的单词时,我找不到覆盖模糊匹配的任何内容。

例如,如果我只与locations$name匹配,我就会得到“bisbane”到“brisbane”的匹配,正如我所料。此外,由于locations$name中没有国家/地区,因此我对其中包含国家/地区的各种搜索没有匹配。

sapply(try_to_match, agrep, locations$name, value=T)
# $`seoul korea`
# character(0)    
# $bisbane
# [1] "brisbane"    
# $korea
# character(0)
# $`australia brisbane`
# character(0)

所以,我想我也应该与国家合作:

sapply(try_to_match, agrep, paste(locations$name, locations$country), value=T)
# $`seoul korea`
# character(0)    
# $bisbane
# [1] "brisbane australia"    
# $korea
# [1] "seoul south korea"    
# $`australia brisbane`
# character(0)

然而,由于缺少单词,我仍然无法将“首尔韩国”与“汉城韩国”相提并论。同样地,虽然“布里斯班澳大利亚”会恰当地匹配,但“澳大利亚布里斯班”却没有(因为单词的顺序是相反的)。 (有点不合时宜的“韩国”会与“韩国首尔”相提并论,但我现在很高兴为此留下来。)

所以,我的问题是:当搜索匹配术语时,如何进行模糊匹配可能会有多个单词并且单独拼错,并且单词的顺序可能不同吗

是否有一个包来做这种搜索?

(是的,我可以使用优秀的geonames Web服务来完成我的大量匹配,但我想避免向其服务器发出很多请求。我对在R中进行此类搜索的能力更感兴趣而不是地理编码的能力。)

0 个答案:

没有答案