如何找到两个单词的差异是多少距离>>有没有最简短的方法

我已经阅读了关于计算两个不同单词之间距离的Levenshtein距离。 我有一个源字符串,我必须将它与所有10,000个目标字匹配。应该返回最接近的单词。 问题是我给出了10,000个目标词的列表,输入源词也很大....所以在这里应用什么最短,最有效的算法。每个组合(蛮力逻辑)的每个n的Levenshtein距离计算将非常耗时。 任何提示或想法都是最受欢迎的。     
已邀请:
我想这取决于单词的结构。例如,这个人基于以下事实改进了实现:他按顺序处理他的单词并且不重复对公共前缀的计算。但是,如果你所有的10,000个单词完全不同,那对你来说就不会那么好。它是用python编写的,因此可能需要一些工作才能移植到C语言。 还有一些有点自制算法(我的意思是没有关于它的官方文件),但这可能会有所帮助。     
这有两种常见的方法,我在博客上写过这两种方法。更简单的实现是BK-Trees--一种树数据结构,它通过仅搜索树的相关部分来加速基于levenshtein距离的查找。它们可能完全足以满足您的使用需求。 Levenshtein Automata是一种更复杂但更有效的方法。这可以通过构造一个NFA来识别目标字符串的levenshtein距离x内的所有单词,然后以锁步方式迭代它和字典,从而有效地对它们执行合并连接。     

要回复问题请先登录注册