Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 这类单词查找/拼写检查的最佳数据结构?_Algorithm_Spell Checking_Trie_Spelling - Fatal编程技术网

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”),但你从来没有确切地说出该子类是什么。在您的示例中,所有拼写错误都是通过重复某些字符从有效单词中生成的——这是您要更正的子类吗?