我对Python和NLTK相当新。 我正在开发一个可以执行拼写检查(用正确的单词替换错误拼写的单词)的应用程序。 我目前在Python 2.7上使用Enchant库、PyEnchant和NLTK库。下面的代码是处理更正/替换的类。
from nltk.metrics import edit_distance
class SpellingReplacer:
def __init__(self, dict_name='en_GB', max_dist=2):
self.spell_dict = enchant.Dict(dict_name)
self.max_dist = 2
def replace(self, word):
if self.spell_dict.check(word):
return word
suggestions = self.spell_dict.suggest(word)
if suggestions and edit_distance(word, suggestions[0]) <= self.max_dist:
return suggestions[0]
else:
return word
我编写了一个函数,它接收一个单词列表并对每个单词执行replace()操作,然后返回那些拼写正确的单词列表。
def spell_check(word_list):
checked_list = []
for item in word_list:
replacer = SpellingReplacer()
r = replacer.replace(item)
checked_list.append(r)
return checked_list
>>> word_list = ['car', 'colour']
>>> spell_check(words)
['car', 'color']
现在,我不太喜欢这样,因为它不是非常准确,我正在寻找一种实现单词拼写检查和替换的方法。我还需要一些东西来捕捉"caaaar"这样的拼写错误?有更好的拼写检查方法吗?如果有,它们是什么?Google是如何做到的?因为他们的拼写建议非常好。
有什么建议吗?
spell = Speller(lang='en')
会抛出TypeError:JSON对象必须是str,而不是'bytes'
。 - duhaimecaaaar
应该被解释为car
并修剪多余字符并重新检查语法。Mussage 在发音上与 massage 更相似,而不是 message,正如其他评论所建议的那样。 - WASasquatch