R中的近似字符串匹配

时间:2013-04-22 10:38:59

标签: r string-matching levenshtein-distance

对于我的研究,我必须匹配包含基金信息的两个数据集。不幸的是,没有共同的标识符。好处是我在两个文件中都有一个标识符,但是文件编号可以包含多个资金。如果文件中有多个基金(例如20个),我只能通过基金的名称进行匹配,这个名称有时会略有不同。请注意,每个文档的资金数量在noth数据集中是相同的。在搜索了一下后,我尝试使用这个函数(在这里找到:agrep: only return best match(es)):

ClosestMatch2 = function(string, stringVector){

  distance = levenshteinSim(string, stringVector);
  stringVector[distance == max(distance)]

}

这适用于大多数基金,但我发现了两个问题:

  1. 有时会有多场比赛
  2. 有时候我有错误的比赛
  3. 例如: 该功能将“机构大核心基金”与“泛美合作伙伴机构核心债券”相匹配,而不是“泛美合作伙伴机构大核心”。

    我有两个想法可以解决这些问题:

    1. 我使用另一个匹配函数来验证上面的函数。即如果两个函数都产生相同的结果,我只接受匹配。
    2. 我以某种方式调整了上述功能。
    3. 我真的很感谢你的帮助。 最好, Laurenz

1 个答案:

答案 0 :(得分:0)

RecordLinkage包允许您使用多种方法匹配字符串(例如levenshtein以及其他测量),它允许您定义阈值甚至使用分类模型来指示何时匹配正常。