【发布时间】:2013-04-15 05:37:14
【问题描述】:
对于我的研究,我必须匹配两个包含基金信息的数据集。不幸的是,没有通用标识符。好消息是我在两份文件中都有一个文件编号的标识符,但它可以包含多个资金。如果文件中有多个基金(例如 20 个),我只能通过基金名称进行匹配,有时可能略有不同。请注意,在任何数据集中,每个文档的基金数量是相同的。经过一番搜索后,我尝试使用此功能(在此处找到:agrep: only return best match(es)):
ClosestMatch2 = function(string, stringVector){
distance = levenshteinSim(string, stringVector);
stringVector[distance == max(distance)]
}
这对大多数基金都有效,但我发现了两个问题:
- 有时会有多个匹配项
- 有时我匹配错误
例如: 此功能将“INSTITUTIONAL LARGE CORE FUND”匹配到“Transamerica Partners Institutional Core Bond”,而不是“Transamerica Partners Institutional Large Core”。
我有两个想法来规避这些问题:
- 我使用另一个匹配函数来验证上面的函数。 IE。如果两个函数产生相同的结果,我只接受匹配。
- 我以某种方式调整了上面的函数。
非常感谢您的帮助。 最好的, 劳伦兹
【问题讨论】:
-
您似乎在寻找整个子字符串的存在(如“Large”、“Partners”等),而不是其中的“不匹配”。对吗?
-
大部分时间是正确的。但是,在极少数情况下子字符串可能但不相同,例如:Mid-Cap Fund & Mid Cap Fund 或 MODERATE STRATEGY ALLOCATION FUND & Moderate Strategy Alloc。基金
标签: r string-matching levenshtein-distance