【发布时间】:2020-09-15 21:24:07
【问题描述】:
我有一个从单词词典中构建的 trie。我想将其用于拼写检查(并建议字典中最接近的匹配项,可能是给定数量的编辑 x)。我在想我会在目标单词和字典中的单词之间使用 levenshtein 距离,但是有没有一种聪明的方法来遍历特里树而不实际分别对每个单词运行编辑距离逻辑?我应该如何进行遍历和编辑距离匹配?
例如,如果我有单词 MAN、MANE,我应该能够在 MANE 中重用 MAN 上的编辑距离计算。否则 Trie 不会有任何用途
【问题讨论】:
-
“man/mane”几乎是微不足道的,试试“mane/bane”
-
我认为这些方法并不适合。您需要对字典中的每个单词应用 edit distance 才能提出建议恕我直言。
-
是的,但是如何重叠编辑距离计算以避免重新计算相同的距离
-
好的,这是一个想法:对每个单词运行编辑距离,并对超过确定编辑次数的单词进行修剪(这在大多数情况下无需搜索整个单词)。如何改进它?由于编辑距离是向后计算的,所以 后缀树 可能会表现得更好。当您超过某个编辑阈值时,您可以丢弃整个分支。 (这只是一个疯狂的想法:)
标签: algorithm language-agnostic spell-checking trie