Python拼写检查器

时间:2018-10-23 12:04:32

标签: python spell-checking

我需要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。

我需要的一些细节:

  • 接受字符串(单词)并返回布尔值的函数,该单词是否为无效的英语。单元测试希望输入“ car”为True,输入“ ijjk”为False。
  • 精度必须高于90%,但不能高于此水平。我只是用它来在文档分类的预处理过程中排除单词。无论如何,大多数错误都会被发现,因为出现的单词很少(尽管不是全部)。拼写校正并非在所有情况下都有效,因为很多错误是OCR问题,距离无法解决。
  • 如果它可以处理法律条款,那将是一个很大的优势。否则,我可能需要手动向词典中添加某些术语。

这里最好的方法是什么?是否有任何维护的库?我需要下载字典并进行核对吗?

3 个答案:

答案 0 :(得分:1)

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

应该提到的是,上面的symspellpy链接是原始SymSpell C#实现its description is here的Python端口。原始的SymSpell Github存储库包括a dictionary with word frequencies

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

答案 1 :(得分:0)

如果您需要按单词进行简单检查,则只需要单词集(最好与您的术语相匹配),将其读入python set中,然后对每个单词进行成员资格检查即可。

一旦/如果您对此天真的实现有疑问,将深入研究具体问题。

答案 2 :(得分:0)

您可以在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/