Python拼写检查器

3
我需要一个Python的拼写检查器。 我查看了以前的答案,它们似乎现在都过时或不适用: 使用trie的Python拼写检查器 这个问题更多地涉及数据结构。 Python拼写检查器 这是一个拼写纠正器,给定两个字符串。 http://norvig.com/spell-correct.html 经常被引用,非常有趣,但也是一个拼写纠正器,精度还不够好,尽管我可能会与检查器组合使用。 Python的拼写检查器 使用已不再维护的pyenchant。 Python:检查单词是否拼写正确 也建议使用已不再维护的Pyenchant。
一些我需要的细节:
  • 一个接受字符串(单词)并返回布尔值的函数,判断该单词是否为有效的英语。单元测试应该在输入"car"时返回True,在输入"ijjk"时返回False。
  • 准确率需要在90%以上,但不要超过这个范围。我只是用它来排除文档分类预处理中的单词。大多数错误仍将被捕捉到,因为出现得太少的单词会被标记为错误,但不是全部。拼写纠正不能在所有情况下起作用,因为很多错误都是OCR问题,无法修复。
  • 如果能处理法律术语,那就更好了。否则,我可能需要手动将某些术语添加到字典中。

最佳方法是什么?有维护的库吗?我需要下载字典并进行检查吗?

3个回答

3

最近有两个基于Levenshtein最小编辑距离的Python库:

需要说明的是,上面提到的symspellpy是原始SymSpell C#实现的Python版本,其描述在此处。原始SymSpell Github仓库包括一个附带单词频率的字典(英文)

Spello包括一个基于3万条新闻和3万篇维基百科文章的基础预训练模型,但最好使用您领域中的自定义语料库来进行训练。


1
如果您需要简单的逐字检查,您只需要一个单词语料库(最好与您的术语匹配),将其读入Python set并逐个进行成员资格检查。
一旦/如果您遇到这种天真实现的问题,您将深入研究具体问题。

对于谷歌员工:请查看此答案:https://dev59.com/Z14c5IYBdhLWcg3wFW2N - Neil

1
你可以在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”表示法语!

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

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

要了解更多功能和其他方面,请参考: http://pyenchant.github.io/pyenchant/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接