我有两个列表,每个列表包含50个名称。
两个列表之间存在1-1的对应关系:对于列表1中的每个名称x,列表2中x的拼写错误(或正确)。
如果我有列表1并得到了拼写错误的列表2,是否有可靠的算法可以将拼写错误的名称与拼写正确的名称相匹配?
例如
清单1: 衬套 奥巴马 特朗普
清单2: 突发 巴贝姆 流浪汉
答案 0 :(得分:0)
首先,从每个拼写错误的单词到所有正确拼写的单词计算Levenshtein distance。
然后,使用Gale-Shapley算法,您可以从拼写错误的单词到正确拼写的单词进行最佳配对。
在配对算法中,每个拼写错误的单词都会偏爱距离较短的正确拼写单词。
注意:在某些情况下,解决方案并非唯一。
答案 1 :(得分:-1)
最受欢迎的绝对是KMP,如果您需要快速的字符串匹配而又没有任何特殊的用例,那么就应该使用它。这是您的选择(具有时间复杂度):
蛮力O(nm)
Knuth–Morris–Pratt算法-O(n)
Rabin–Karp字符串搜索算法-O(m ^ 2)但Θ(n + m)
Boyer–Moore字符串搜索算法-O(mn)
Bitap算法-O(mn)
双向字符串匹配算法-O(n + m)