快速将字符串与Java中的Collection进行比较

时间:2012-02-04 08:07:56

标签: java algorithm data-structures pattern-matching edit-distance

我正在尝试计算字符串与集合的编辑距离,以找到最接近的匹配项。我目前的问题是集合非常大(大约25000个项目),所以我不得不将集合缩小到相似长度的字符串,但仍然只能将其缩小到几千个字符串,这仍然非常慢。是否存在允许快速查找类似字符串的数据结构,还是有其他方法可以解决此问题?

3 个答案:

答案 0 :(得分:8)

听起来像BK-tree可能就是你想要的。这是一篇讨论它们的文章:http://blog.notdot.net/2007/4/Damn-Cool-Algorithms-Part-1-BK-Treesquick Google产生了一些Java实现。

答案 1 :(得分:6)

Levenshtein Automata允许从大字典中快速选择一组单词,使得它们与给定单词在给定的Levenshtein距离内。

见:Schulz K,Mihov S.(2002)Fast String Correction with Levenshtein-Automata

答案 2 :(得分:2)

如果“类似”的标准定义了总排序,则应该能够定义比较器并使用TreeSet查找最接近的匹配(例如,使用天花板和地板方法)。