纯python拼写检查器基于peter norvig的工作
pyspellchecker的Python项目详细描述
纯python拼写检查基于Peter Norvig’s关于设置的博客文章 一个简单的拼写检查算法。
它使用Levenshtein Distance 在编辑距离为2的范围内查找排列的算法 原话。然后比较所有排列(插入、删除, 替换和转置)到单词频率中的已知单词 列表。频率表中经常出现的单词有 更有可能得到正确的结果。
pyspellchecker支持多种语言,包括英语、西班牙语, 德语、法语和葡萄牙语。词典是使用 github上的WordFrequency project。
pyspellchecker支持python 3和python 2.7,但一如既往,支持python 3 是首选版本!
pyspellchecker允许设置要检查的levenshtein距离。 对于较长的单词,强烈建议使用距离1,而不是 默认2.请参见快速启动以了解如何更改距离参数。
安装
最简单的安装方法是使用pip:
pip install pyspellchecker
从源安装:
git clone https://github.com/barrust/pyspellchecker.git
cd pyspellchecker
python setup.py install
一如既往,我强烈建议使用 Pipenv帮助管理的包 依赖关系!
快速启动
安装后,使用pyspellchecker应该相当简单 前进:
fromspellcheckerimportSpellCheckerspell=SpellChecker()# find those words that may be misspelledmisspelled=spell.unknown(['something','is','hapenning','here'])forwordinmisspelled:# Get the one `most likely` answerprint(spell.correction(word))# Get a list of `likely` optionsprint(spell.candidates(word))
如果单词频率列表不符合您的喜好,您可以添加 文本以生成更适合您的用例的列表。
fromspellcheckerimportSpellCheckerspell=SpellChecker()# loads default word frequency listspell.word_frequency.load_text_file('./my_free_text_doc.txt')# if I just want to make sure some words are not flagged as misspelledspell.word_frequency.load_words(['microsoft','apple','google'])spell.known(['microsoft','google'])# will return both now!
如果要检查的单词太长,建议减少 到1的距离。这可以在初始化咒语时完成 上课或事后检查。
fromspellcheckerimportSpellCheckerspell=SpellChecker(distance=1)# set at initialization# do some work on longer wordsspell.distance=2# set the distance parameter back to the default
其他方法
On-line documentation可用;下面包含一些可用功能的cliff notes版本:
correction(word):返回 拼写错误的单词
candidates(word):返回 拼写错误的单词
known([words]):返回单词频率中的单词 列表
unknown([words]):返回那些不在频率内的单词 列表
word_probability(word):给定单词的频率 频率列表中的单词
用户不太可能需要以下内容,但可以使用:
edit_distance_1(word):返回levenshtein中所有字符串的集合 基于所选语言的字母表的距离
edit_distance_2(word):返回levenshtein中所有字符串的集合 基于所选语言的字母表的两个距离
学分
- Peter Norvig关于设置简单拼写检查算法的博客文章
- hermetdave’s WordFrequency project为非英语词典提供基础