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

Jak uzyskać c zwrócić poprawiony tekst bez użycia 0 ręcznie z cmdlinechecker?Jak poprawić tekst i powrócić skorygowany tekst automatycznie PyEnchant

Program powinien przebiegać przez ciąg zawierający nieskorygowany tekst, poprawić go i zapisać w zmiennej do eksportu do MySQL DB.

Odpowiedz

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 

Działa dokładnie tak, jak zamierzałem, aby działało. Dodaj filtry i koryguje wszystkie małe tekst automatycznie umożliwiając wykonywanie wyszukiwania słów kluczowych itp ...

Zajęło mi 13hrs, aby dowiedzieć się, (

+0

Dzięki, Twoja odpowiedź pomogła mi. Oprócz tego odkryłem, że w tej samej bibliotece znajduje się funkcja store_replacement (mis, cor), w której zapisuje zastępczą pisownię dla niewypowiedzianego słowa: Ale nie jestem w stanie jej poprawnie wdrożyć, może to być również możliwe rozwiązanie. – user3050590

1

Właściwie nie znam się na pythonie i bibliotekach, które opisujesz, ale ogólne podejście do poprawnego tekstu używa podejścia słownikowego. Oznacza to innymi słowy, że sprawdzasz, czy słowo jest zawarte w słowniku francuskim (lub liście słów francuskich), a jeśli tak, to słowo jest poprawne, w przeciwnym razie użyj słowa ze słownika.

0

Dla moich celów, poziom automatyzacji podany tutaj było zbyt ryzykowne - słowa jechaliśmy zawierać odpowiednie rzeczowniki - więc zbudowany nieco więcej kontroli do systemu

jestem dodanie poprawki do pliku zapisu później w procesie

że byłoby.. bądź pomocny dla innych, ponieważ dokumentacja nie była dla mnie wystarczająca ...

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

Widzę, co tam zrobiłeś. Twoim celem jest posiadanie dokładnego tekstu poprawionego i zrozumiałego, dlatego masz ręczne sprawdzenie, czy w PyEnchant znajduje się funkcja inbuilda o nazwie CmdLineChecker, którą możesz chcieć obejrzeć. Celem mojego programu jest zaimportowanie oryginalnego tekstu, ale pozostawienie go takim jakim jest, poprawne słowa kluczowe, takie jak "eror" "tymczasowy" "porblem" w tle w pełni automatycznie i wyzwalanie za pomocą słów kluczowych z poprawionego tekstu. The err.suggest [0] w tym przypadku ma dokładność 98,87%, mimo że skorygowany tekst naprawdę nie ma sensu dla ludzi –

+0

tak, używałam cmdlinchecker, kiedy pierwszy raz ustawiałam rzeczy, ale czułam się niezręcznie wchodzić w interakcje z . może to było "tylko ja" ... –

Powiązane problemy