私は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はどのようにそれを行いますか? 彼らのスペルサジェストはとても良いからです。
助言がありますか?