Algorithm 这类单词查找/拼写检查的最佳数据结构?
我有一个单词列表,例如:Algorithm 这类单词查找/拼写检查的最佳数据结构?,algorithm,spell-checking,trie,spelling,Algorithm,Spell Checking,Trie,Spelling,我有一个单词列表,例如: mmad mmaaddd bbad bbaadddd 让我们假设根据一些字典,mad和bad被认为是有效的单词。是否有理想的算法或数据结构来查找这些拼写错误的匹配项?我认为trie是有用的,但我不确定如果有效的单词列表/字典由数千个单词组成,它将如何发挥作用 编辑:我应该提到的是,我并不担心从角色的角度来看这些词会被消除,即我不希望“mmad”被改成“sad”或类似的词。我认为这就是Levenshtein距离和LD距离的优点;这个问题是其中一个奇怪的子集。a通常非常适
mmad
mmaaddd
bbad
bbaadddd
让我们假设根据一些字典,mad和bad被认为是有效的单词。是否有理想的算法或数据结构来查找这些拼写错误的匹配项?我认为trie是有用的,但我不确定如果有效的单词列表/字典由数千个单词组成,它将如何发挥作用
编辑:我应该提到的是,我并不担心从角色的角度来看这些词会被消除,即我不希望“mmad”被改成“sad”或类似的词。我认为这就是Levenshtein距离和LD距离的优点;这个问题是其中一个奇怪的子集。a通常非常适合这个问题,您可以使用它来构造一个。不确定您在编辑中的意思。您可以定义最终如何使用它的逻辑。如果词典中有
sad
,那么bad
和sad
和mad
是可行的选择。你可以使用LD找出与你所拥有的单词最接近的匹配项,然后使用其他逻辑来选择正确的一个。当你说“这些拼写错误”时,你的意思是“拼写错误的受限子类”(因为你说你不希望“mmad”改成“sad”),但你从来没有确切地说出该子类是什么。在您的示例中,所有拼写错误都是通过重复某些字符从有效单词中生成的——这是您要更正的子类吗?