我应该使用哪种数据结构来查找相似的字符串?例如,当您查询谷歌搜索字符串“hapyp brithdya”时,谷歌会问您是否是“happy birthday”,这是一个非常类似于先前拼写错误的字符串“hapyp brithdya”的字符串。
哪种数据结构在空间和时间上执行此类操作最有效?
请帮忙。非常感谢您的时间。
我应该使用哪种数据结构来查找相似的字符串?例如,当您查询谷歌搜索字符串“hapyp brithdya”时,谷歌会问您是否是“happy birthday”,这是一个非常类似于先前拼写错误的字符串“hapyp brithdya”的字符串。
哪种数据结构在空间和时间上执行此类操作最有效?
请帮忙。非常感谢您的时间。
如果你需要一种数据结构,我会推荐 Levenshtein自动机。
这可以扩展到概率变量,返回字符串的最可能(根据语料库统计)的更正。参见Google的Peter Norvig的文章 "如何编写拼写纠正器",了解基本思路;将其与Levenshtein自动机相结合需要一些有限状态转换器的知识。有关详细信息,请参阅Hassan,Noeman和Hassan。