我有一个充满城镇及其地理数据和一些输入数据的数据集。这个输入数据几乎总是一个城镇。但是,如果城镇被互联网刮掉,它们可能会有点拼写错误或拼写不同。例如圣彼得堡< - >圣彼得堡
在我的研究过程中,我遇到了几个算法并尝试了两个算法。首先我尝试了
Sørensen–Dice coefficient。这给了我一些有希望的结果,直到我尝试将短字符串与较长的字符串匹配。当所有字符串的大小大致相同时,算法非常好,但是当它们的大小差别很大时,您会得到混合的结果。例如将Saint
与该集匹配时,它会将Sail
作为最佳匹配,而我需要Saint-Petersburg
。
我试过的第二个算法是Levenshtein distance,但出于同样的原因,它的表现并不好。
我遇到了其他一些算法,例如余弦相似度,最长公共子序列等等,但这看起来有点复杂,我想保持计算成本降低。
是否有任何算法优先匹配匹配百分比的匹配长度?
任何人都有匹配奇怪拼写城镇名称的经验吗?请让我知道!
编辑:
我认为SO question可能是重复的,但事实证明它描述的是Sorenson-Dice。