2015-06-24 3 views
5
import enchant 
import wx 
from enchant.checker import SpellChecker 
from enchant.checker.wxSpellCheckerDialog import wxSpellCheckerDialog 
from enchant.checker.CmdLineChecker import CmdLineChecker 

a = "Ceci est un text avec beuacuop d'ereurs et pas snychro" 
chkr = enchant.checker.SpellChecker("fr_FR") 
chkr.set_text(a) 
cmdln = CmdLineChecker() 
cmdln.set_checker(chkr) 
b = cmdln.run() 
c = chkr.get_text() # returns corrected text 
print c 

Wie erhalte ich c den korrigierten Text zurückzukehren, ohne 0 manuell von cmdlinechecker mit?Wie Text zu korrigieren und gibt den korrigierten Text automatisch mit PyEnchant

Das Programm sollte die Zeichenkette mit dem unkorrigierten Text durchlaufen, korrigieren und in einer Variablen speichern, um sie in eine MySQL DB zu exportieren.

Antwort

6
a = "Ceci est un text avec beuacuop d'ereurs et pas snychro" 
chkr = enchant.checker.SpellChecker("fr_FR") 
chkr.set_text(a) 
for err in chkr: 
    print err.word 
    sug = err.suggest()[0] 
    err.replace(sug) 

c = chkr.get_text()#returns corrected text 
print c 

Funktioniert genau so, wie ich wollte, dass es funktioniert. Filter hinzufügen und korrigiert alle kleinen Text automatisch mit dem Sie Suchabfragen ausführen etc ...

13 Std Hat mich, um herauszufinden, (

+0

Danke, Ihre Antwort hat mir geholfen. Nebenbei fand ich auch, dass es innerhalb derselben Bibliothek eine Funktion store_replacement (mis, cor) gibt, wo es eine Ersatzschreibweise für ein falsch geschriebenes Wort speichert: Aber ich kann es nicht richtig implementieren, sonst könnte es auch ein sein mögliche Lösung. – user3050590

1

Eigentlich bin ich nicht vertraut mit Python und den Bibliotheken, die Sie beschreiben, aber der allgemeine Ansatz zum Korrigieren von Text verwendet einen Wörterbuchansatz. Das bedeutet, dass Sie prüfen, ob ein Wort in einem französischen Wörterbuch (oder einer Liste französischer Wörter) enthalten ist. Wenn dies der Fall ist, ist das Wort korrekt, andernfalls verwenden Sie das Wort aus dem Wörterbuch.

0

Für meine Zwecke der Automatisierungsgrad Sie hier vorgesehen war zu riskant - die Worte würden Eigennamen enthalten - so baute ich ein bisschen mehr von einem Scheck in das System

ich die Korrekturen für eine Datei-schreiben später im Prozess bin anhängt

dachte, dies wäre.. für andere hilfreich sein, da die Dokumentation für mich nicht ganz ausreichte ...

for data_field in fields: 
    checker.set_text(str(data_field)) 
    for err in checker: 
     print err.word 
     print err.suggest() 
     correct = raw_input("provide 0-index int of correct word or i to ignore, e to edit ") 
     if correct == 'i': 
      pass 
     elif correct == 'e': 
      suggest = raw_input("") 
      err.replace(suggest) 
     else: 
      correct = int(correct) 
      suggest = err.suggest()[correct] 
      err.replace(suggest) 
    corrected_text.append(checker.get_text()) 
+0

Ich sehe was du da gemacht hast. Ihr Bereich ist, einen genau korrigierten und verständlichen Text zu haben, deshalb haben Sie eine manuelle Überprüfung, es gibt eine eingebaute Funktion in PyEnchant, die CmdLineChecker genannt wird. Vielleicht sollten Sie einen Blick darauf werfen. Der Zweck meines Programms ist es, den Originaltext zu importieren, aber so zu lassen, wie er ist, kritische Wörter wie "eror" "faliur" "porblem" im Hintergrund vollautomatisch zu korrigieren und über keywordbasierte Aktionen aus dem korrigierten Text auszulösen. Der err.suggest [0] hat eine Genauigkeit von 98,87%, obwohl der korrigierte Text für Menschen keinen Sinn ergibt. –

+0

Ja, ich benutzte Cmdlinchecker, als ich die Dinge zum ersten Mal aufstellte, aber ich fand es unangenehm mit ihm zu interagieren . vielleicht war es "nur ich" ... –

Verwandte Themen