是否有识别不完整单词的拼写库?

时间:2015-09-16 21:56:14

标签: c++ spell-checking spelling

我的用例如下:给定一个字符串,识别从字符串开头开始的所有有效单词。例如:

blueberryqqq

应输出:

blue
blueberry

为此,我有一个使用trie<char>的字典结构。例如,如果我的字典仅包含上面的两个单词,那么它就是这样的:

b->l->u->e->\0
          ->b->e->r->r->y->\0

当我调查我的输入字符串时,拼写检查过程可以告诉我,因为我从一封信到另一封信是否:

  1. 我正在通往有效字的路径
  2. 我找到了一个有效的字
  3. 我没有找到有效字的路径
  4. 请注意,这些是标记,12可以同时为true。通过这种方法,我可以一次有效地找到blueblueberry,并在我到达y时立即停止尝试。继续这个例子,这是我在一封信到另一封信时发生的事情:

    b:1, l:1, u:1, e:1|2, b:1, e:1, r:1, r:1, y:2
    

    当我看到1|2时,我知道&#34;蓝色&#34;是有效的单词,但我也知道继续沿着字符串向下走,因为我的字典告诉我有更多的单词可能。一旦我到达y,我就会停下来。非常高效,因为我只对所有有效单词访问每个字母一次,并且一旦字典告诉我没有必要进一步,我就停止拼写检查。完美!

    我的问题是我的字典特里是从/ usr / share / dict / words构建的,并且该文件不包含复数形式的&#34; bluberry&#34;这是&#34;蓝莓&#34;并且通常不会包含所有&#34;衍生物&#34;所有的话。因此,如果输入字符串为blueberriesqqq,我只会将blue视为有效。

    如果我使用像aspellhunspell这样的拼写检查库,,我可以告诉,我需要拼写检查所有子字符串单独!例如bblblu等等效率很低!不仅如此,我还不知道何时停止检查。例如我怎么知道没有以blueberriesqq开头的任何单词?

    所以,我的问题变成了:那里有一个能够容纳我的用例的拼写检查库吗?

    请注意,拼写建议不会削减它。将blueb传递给aspell不会返回任何以blueb开头的拼写建议。因此,即使仍然有可能有更多有效的单词,我也会结束我的搜索。

0 个答案:

没有答案