我正在写一个拼写检查器。我知道所有关于Levenshtein距离,尝试等...拼写检查重复字母
但我的问题是,用重复的字母,如:haaaaapppppyyy改正一个单词到快乐。解决这个问题的最好方法是什么?
到目前为止,我正在考虑使用修改的trie,当我到达“a”并且看到trie中没有另一个后面的“a”时,我跳过字符串中的所有a,直到到达p并继续从那里。
我不完全确定这是实现它的最佳方式,或者它可以在所有字符串上工作。
有什么建议吗?
我正在写一个拼写检查器。我知道所有关于Levenshtein距离,尝试等...拼写检查重复字母
但我的问题是,用重复的字母,如:haaaaapppppyyy改正一个单词到快乐。解决这个问题的最好方法是什么?
到目前为止,我正在考虑使用修改的trie,当我到达“a”并且看到trie中没有另一个后面的“a”时,我跳过字符串中的所有a,直到到达p并继续从那里。
我不完全确定这是实现它的最佳方式,或者它可以在所有字符串上工作。
有什么建议吗?
您可以创建一个删除了所有重复字母的新树(例如,happy - > hapy)。检查单词时,请执行相同的操作(haaaaapppppyyy - > hapy)并在特里搜索它。
请注意,它将无法区分“流血”和“流血”(这可能是好事还是坏事,取决于应用程序) – amit
它绝对不会适用于所有字符串,但我猜测它可以用于其中的99.99%:p – keyser
拼写检查的目的是什么?是为了人类还是作为机器的饲料? (如果后者使用词干可以解决问题,因为词干分析者将会删除大部分重复的字母,并且可以将所有词语转化为他们的词干形式) – amit
人类。所以你可以输入:hhhhaaaappppyyy,它应该表明'快乐'作为替代品。 – darksky