-1

建议我一个程序或方法来处理单词更正/建议系统。- 假设输入为“Suggset”,它应该建议“Suggest”。

提前谢谢。我正在使用 python 和 AJAX。请不要向我推荐任何 jquery 模块,因为我需要算法部分。

4

2 回答 2

1

解决您的问题的算法称为“编辑距离”。鉴于某些语言的单词列表和输入错误/不完整的单词,您需要从最接近它的给定字典中构建单词列表。例如,“suggest”和“suggset”之间的距离等于 2 - 您需要一次删除和一次插入。作为一种优化,您可以为每个操作分配不同的权重 - 例如,您可以说替换比删除更便宜,并且在键盘上更靠近的两个字母(例如'v'和'b')之间的替换更便宜。相距很远(例如“q”和“l”)。

拼写和校正算法的第一个描述出现在 1964 年。1974 年,基于动态规划的高效算法出现在 Robert A. Wagner 和 Michael J. Fischer 的论文“字符串到字符串校正问题”中。任何算法书籍都有或多或少的详细处理。

对于 python,有一个库可以做到这一点:Levenshtein distance library 另请查看早期关于 Stack Overflow 的讨论

于 2011-03-27T21:25:34.180 回答
1

自己制作一个需要做很多工作。有一个用 python 编写的非常好的拼写检查器库,名为PyEnchant,我发现它非常好。这是他们网站上的一个例子:

>>> import enchant
>>> d = enchant.Dict("en_US")
>>> d.check("Hello")
True
>>> d.check("Helo")
False
>>> d.suggest("Helo")
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]
>>>
于 2011-03-27T17:46:26.173 回答