Jestem dość nowy w Pythonie i NLTK. Jestem zajęty aplikacją, która może wykonywać sprawdzanie pisowni (zastępuje błędnie napisane słowo poprawnie pisownym słowem), Im obecnie korzystam z Enchant Library na Pythonie-2.7, PyEnchant i bibliotece NLTK. Poniższy kod jest klasą, która obsługuje korektę/wymianę.Sprawdzanie pisowni dla Pythona
from nltk.metrics import edit_distance
class SpellingReplacer(object):
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
Pisałem funkcję, która pobiera listę słów i wykonuje def wymienić na każdym słowie i zwróci listę słów, ale poprawnie napisane.
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']
Teraz ja nie lubię tego, ponieważ nie jest bardzo dokładne i szukam sposób do osiągnięcia kontroli pisowni i zamienniki na słowach. Potrzebuję też czegoś, co pozwoli wykryć błędy w pisowni, takie jak "caaaar"? Czy istnieją lepsze sposoby sprawdzania pisowni? Jeśli tak, jakie one są? Jak Google robi to na przykład, ponieważ ich sugestia do pisowni jest bardzo dobra? Wszelkie sugestie: