2015-06-24 7 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 

Come raggiungo c di restituire il testo corretto senza utilizzare 0 manualmente dal cmdlinechecker?Come correggere il testo e restituire il testo corretto automaticamente con PyEnchant

Il programma deve scorrere la stringa contenente il testo non corretto, correggerlo e salvarlo in una variabile da esportare in un DB MySQL.

risposta

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 

Funziona esattamente come intendevo farlo funzionare. Aggiungi filtri e corregge tutti testo di piccole dimensioni che consente automaticamente di eseguire ricerche di parole chiave, ecc ...

Mi ha portato 13 ore per capire; (

+0

Grazie, la tua risposta mi ha aiutato. Accanto, ho anche scoperto che all'interno della stessa libreria c'è una funzione store_replacement (mis, cor), dove memorizza una ortografia sostitutiva per una parola miss-spelled: Ma non sono in grado di implementarla correttamente altrimenti, potrebbe anche essere un possibile soluzione. – user3050590

1

In realtà non ho familiarità con Python e le librerie che descrivi ma l'approccio generale per correggere il testo sta usando un approccio al dizionario. Ciò significa in altre parole che controlli se una parola è inclusa in un dizionario francese (o una lista di parole francesi) e se è il caso, la parola è corretta, altrimenti usa la parola dal dizionario.

0

Per i miei scopi, il livello di automazione che hai fornito qui era troppo rischioso - le parole stavano per includere i nomi propri - così ho costruito un po 'più di un controllo nel sistema

sto aggiungendo le correzioni per un file-scrivere più avanti nel processo

pensato che questo sarebbe.. essere utile per gli altri, poiché la documentazione non era abbastanza sufficiente per me ...

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

Vedo cosa hai fatto lì. Il tuo scopo è di avere un testo accurato e comprensibile, quindi hai un controllo manuale che c'è una funzione inbuild in PyEnchant per quella chiamata CmdLineChecker che potresti voler dare un'occhiata. Lo scopo del mio programma è quello di importare il testo originale ma lasciarlo così com'è, correggere le parole critiche come "eror" "faliur" "porblem" sullo sfondo in modo completamente automatico e attivare tramite azioni basate su parole chiave dal testo corretto. Il err.suggest [0] per quella materia ha una precisione del 98,87% anche se il testo corretto non ha alcun senso per gli esseri umani –

+0

sì, stavo usando cmdlinchecker quando ho impostato per la prima volta ma ho ritenuto che fosse imbarazzante interagire con . Forse ero solo io"... –

Problemi correlati