我对 Python 和 NLTK 还很陌生。我正忙于一个可以执行拼写检查的应用程序(用正确的单词替换拼写错误的单词)。我目前在 Python 2.7、PyEnchant 和 NLTK 库上使用 Enchant 库。下面的代码是一个处理更正/替换的类。
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”之类的拼写错误的东西?有没有更好的方法来执行拼写检查?如果是这样,它们是什么?谷歌是如何做到的?因为他们的拼写建议非常好。
有什么建议么?