2
用于构建快速拼写检查器的高效数据结构
我正在尝试编写一个拼写检查器,该检查器应与相当大的词典一起使用。我真的想要一种有效的方法来索引我的字典数据,该数据将使用Damerau-Levenshtein距离来确定哪些单词最接近拼写错误的单词。 我正在寻找一种数据结构,该结构将在空间复杂度和运行时复杂度之间取得最佳折衷。 根据我在互联网上发现的信息,我对使用哪种类型的数据结构有一些建议: 特里 这是我的第一个想法,看起来很容易实现,应该提供快速的查找/插入。使用Damerau-Levenshtein进行的近似搜索在此处也应易于实现。但是就空间复杂度而言,它看起来不是很有效,因为指针存储很可能会带来很多开销。 帕特里夏·特里(Patricia Trie) 这似乎比常规的Trie占用更少的空间,因为您基本上避免了存储指针的成本,但是对于像我一样的非常大的字典,我有点担心数据碎片。 后缀树 我不确定这一点,似乎有些人确实发现它在文本挖掘中很有用,但是我真的不确定它对于拼写检查器的性能会有什么帮助。 三元搜索树 这些看起来不错,并且在复杂性方面应该与Patricia Tries接近(更好?),但是我不确定碎片是否比Patricia Tries更好。 爆裂树 这似乎是一种混合,我不确定它比Tries等具有什么优势,但是我已经读过好几次了,它对于文本挖掘非常有效。 我想就哪种数据结构最适合在这种情况下使用以及什么使它比其他结构更好的问题得到一些反馈。如果我缺少一些更适合拼写检查的数据结构,我也很感兴趣。