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。
我需要的一些细节:
- 一个接受字符串(单词)和returns布尔值的函数,该布尔值是否是有效的英语。单元测试希望 "car" 输入为 True,"ijjk".
输入为 False
- 准确率需要在90%以上,但不能高于90%。我只是在文档分类的预处理过程中使用它来排除单词。大多数错误无论如何都会被识别为出现得太少的单词(尽管不是全部)。拼写更正并非在所有情况下都有效,因为很多错误都是 OCR 问题,离修复太远了。
- 如果它可以处理法律条款,那将是一个很大的优势。否则我可能需要手动将某些术语添加到字典中。
最好的方法是什么?是否有维护的库?我需要下载字典并对照它吗?
如果您需要简单的逐词检查,您只需要词库(最好匹配您的术语),将其读入 python set 并通过一.
Once/if您对这种天真的实现有疑问,您将深入研究具体问题。
2 个最近的 Python 库,均基于针对任务优化的 Levenshtein 最小编辑距离:
- symspellpy 2019年底发布,
- spello 2020 年发布
需要说明的是,上面的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/
我需要 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。
我需要的一些细节:
- 一个接受字符串(单词)和returns布尔值的函数,该布尔值是否是有效的英语。单元测试希望 "car" 输入为 True,"ijjk". 输入为 False
- 准确率需要在90%以上,但不能高于90%。我只是在文档分类的预处理过程中使用它来排除单词。大多数错误无论如何都会被识别为出现得太少的单词(尽管不是全部)。拼写更正并非在所有情况下都有效,因为很多错误都是 OCR 问题,离修复太远了。
- 如果它可以处理法律条款,那将是一个很大的优势。否则我可能需要手动将某些术语添加到字典中。
最好的方法是什么?是否有维护的库?我需要下载字典并对照它吗?
如果您需要简单的逐词检查,您只需要词库(最好匹配您的术语),将其读入 python set 并通过一.
Once/if您对这种天真的实现有疑问,您将深入研究具体问题。
2 个最近的 Python 库,均基于针对任务优化的 Levenshtein 最小编辑距离:
- symspellpy 2019年底发布,
- spello 2020 年发布
需要说明的是,上面的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/