Sono abbastanza nuovo con Python e NLTK. Sono occupato con un'applicazione che può eseguire controlli ortografici (sostituisce la parola digitata in modo errato con la parola ortograficamente corretta), Im attualmente utilizza la libreria Enchant su Python-2.7, PyEnchant e la libreria NLTK. Il codice seguente è la classe che gestisce la correzione/sostituzione.Correttore ortografico per Python
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
Ho scritto una funzione che prende in un elenco di parole ed esegue il DEF sostituire su ogni parola e restituire una lista delle parole, ma digitato correttamente.
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']
ora non piace molto questo, perché non è molto accurato e sto cercando un modo per ottenere controlli di ortografia e sostituzioni di parole. Ho anche bisogno di qualcosa che possa raccogliere errori di ortografia come "caaaar"? Ci sono modi migliori per eseguire controlli ortografici là fuori? Se sì, quali sono? Come fa Google, ad esempio perché il loro suggeritore di spelling è molto buono? Qualsiasi suggerimento