Ich bin ziemlich neu mit Python und NLTK. Ich bin beschäftigt mit einer Anwendung, die Rechtschreibprüfungen durchführen kann (ersetzt das falsch buchstabierte Wort durch das korrekt geschriebene Wort), Ich verwende derzeit die Enchant Library auf Python-2.7, PyEnchant und die NLTK-Bibliothek. Der folgende Code ist die Klasse, die die Korrektur/Ersetzung behandelt.Rechtschreibprüfung für 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
Ich habe eine Funktion geschrieben, die in einer Liste von Wörtern nimmt und führt die def für jedes Wort ersetzen und eine Liste der Wörter zurück, aber richtig geschrieben sind.
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']
Jetzt mache ich so nicht wirklich, weil es nicht sehr genau ist, und ich bin auf der Suche nach einer Möglichkeit, die Rechtschreibung überprüft und Ersatzwort zu erreichen. Ich brauche auch etwas, das Rechtschreibfehler wie "caaaar" aufgreift? Gibt es bessere Möglichkeiten, Rechtschreibprüfungen durchzuführen? Wenn ja, was sind sie? Wie macht es Google zum Beispiel, weil die Rechtschreibhilfe sehr gut ist? Irgendwelche Vorschläge