Python 拼写检查器

Python Spell Checker

我需要 python 中的拼写检查器。 我看过以前的答案,它们现在似乎都已过时或不适用:

Python spell checker using a trie这道题比较偏数据结构

Python Spell Checker 这是一个拼写校正器,给定两个字符串。

http://norvig.com/spell-correct.html 经常被引用并且很有趣,但也是一个拼写校正器,准确性不够好,尽管我可能会结合检查器使用它。

Spell Checker for Python 使用不再维护的 pyenchant。

Python: check whether a word is spelled correctly 还建议未维护的 Pyenchant。

我需要的一些细节:

最好的方法是什么?是否有维护的库?我需要下载字典并对照它吗?

如果您需要简单的逐词检查,您只需要词库(最好匹配您的术语),将其读入 python set 并通过一.

Once/if您对这种天真的实现有疑问,您将深入研究具体问题。

2 个最近的 Python 库,均基于针对任务优化的 Levenshtein 最小编辑距离:

需要说明的是,上面的symspellpylink是原始SymSpell C#实现its description is here. The original SymSpell Github repository includes a dictionary with word frequencies的Python端口。

Spello 包含基于 30K 条新闻和 30K 条维基百科文章的基本预训练模型。但最好在您域中的自定义语料库上对其进行训练。

您可以在 Python 中使用名为 enchant

的专用拼写检查库

要检查一个单词的拼写是否正确,即英语中是否存在这样的单词,您所要做的就是:

import enchant
d = enchant.Dict("en_US")
d.check("scienc")

这将给出输出:

False

这个库最好的部分是它建议单词的正确拼写。例如:

d.suggest("scienc")

将给出输出:

['science', 'scenic', 'sci enc', 'sci-enc', 'scientist']

此库中还有更多功能。例如,在上面的示例代码中,我使用了美国英语语料库 ("en_US")。您可以使用其他英语语料库,例如 "en_AU" 用于澳大利亚英语,"en_CA","en_GB" 分别用于加拿大和英国等等。也有非英语语言支持,例如 "fr_FR" 法语!

对于高级用法,此库可用于根据自定义单词列表检查单词(当您有一组专有名词时,此功能会派上用场)。这只是一个列出要考虑的单词的文件,每行一个单词。以下示例为存储在“my_custom_words.txt”中的个人单词列表创建一个 Dict 对象:

custom_d = enchant.request_pwl_dict("my_custom_words.txt")

要查看它的更多功能和其他方面,请参阅: http://pyenchant.github.io/pyenchant/