Adăugare diacritice pentru textele în limba română

 


Scop: crearea unui aplicații care să adauge diacritice la un text scris fără diacritice sau parțial cu diacritice.

Notă: În cele ce urmează voi folosi expresia "adăugare diacritice" pentru a indica transformarea unui text fără diacritice sau parțial cu diacritice într-un text cu diacritice.

Aplicații:
  1. posibilitatea de a vizualiza "normal" o pagină web care a fost scrisă fără diacritice
  2. integrarea cu suita OpenOffice, mai exact LanguageTools: acesta oferă infrastructura necesară, trebuie să venim doar cu un set de reguli (aceste reguli vor fi exportate de aplicație)
  3. posibilitatea de transforma un document scris fără diacritice într-un document cu diacritice folosind o interfață web

Nu încurajez prin aceasta scrierea fără diacritice. Intenția este aceea de a putea vizualiza 'normal' un text scris fără diacritice de către o terță persoană.


Cum funcționează
Se disting două cazuri:
- cuvinte care au o singură formă validă și aceea cu diacritice (ex: "căsnicie" - nu există cuvântul "casnicie") - acestea se înlocuiesc cu forma corectă
- cuvinte ambigue: există mai multe forme valide cu diacritice( ex: pentru "sa" există : sa - cartea sa, să - să mergem, șa - ca piesă de harnașament). Aceste cuvinte vor fi dezambiguizate ținând cont de contextul în care apar.
    Exemplu: fie textul "vreau sa mergem": se observă că "sa" este încadrat de două verbe. Dintre cele trei variante posibile pentru "sa" (șa, sa, să) singura care poate sta între două verbe este "să", de aici varianta corectă "vreau mergem". Se poate defini astfel o regulă de genul "orice apariție a cuvântului "sa" între două verbe trebuie înlocuită cu cuvântul "să". Efect: la întâlnirea textului "pot sa muncesc" sitemul va aplica regula de mai sus și va obține "pot muncesc" (similar pentru "propun sa facem", "doresc sa citesc", etc). Se acoperă astfel printr-o singură regulă un număr foarte mare de situații.

Faptul că o singură regulă se aplică în nenumărate contexte a impus definirea uniui mecanism de validare automată a regulilor, și anume:
- se iau un număr cât mai mare de texte corecte, cu diacritice
- se obține pe lângă forma cu diacritice a textului și forma fără diacritice
- regulile ce se doresc validate se aplică la textul fără diacritice
- se verifică textul rezultat: regula este invalidă dacă a produs o altă formă cu diacritice decât cea din  textul inițial.
Exemplu:
Fie textul "mai sunt doua zile". Se definește regula (greșită): "doua" urmat de un substantiv se transformă în "două" (pentru a obține: mai sunt două zile).
După aplicarea automată a regulilor este foarte probabil ca sistemul să evidențieze cazurile de genul "a doua zi": aici regula transformă textul în "a două zi", ceea ce nu corespunde textului inițial. Regula este astfel invalidată.

Un alt aspect important la definirea regulilor îl reprezintă informația morfologică: regulile se pot baza și pe această informație pentru a crește corectitudinea sistemului.
Exemplu: pentru cazul de mai sus: "mai sunt doua zile": o regula corectă este de genul: dacă "doua" este încadrat de verb la indicativ prezent și substantiv comun, număr plural, nearticulat, atunci "doua" se transformă în "două". Astfel enunțată regula nu se va aplica asupra textului "a doua zi" deoarece "a" poate fi verb la indicativ prezent. Regula se va aplica însă cu succes la situații de genul: "mai vreau doua zile", "el mananca doua mere", etc

Dezavantaje:
- durata relativ mare de procesare la validarea regulilor (circa zece minute)

Notă: în urma procesului de validare automată a regulilor a rezultat o lista de erori deja existente în textele procesate. Pentru ro.wikipedia.org lista este disponibilă aici iar pentru ro.wikisource.org este disponibilă aici.

Alte abordări:
- metoda probabilistică:
    Ex: Adăugarea diacriticelor la textul  "cartea si caietul". Cuvântul fără diacritice este "si". Făcând abstracție de context, probabilitatea ca acesta să indice nota muzicală si este foarte mică, deci va fi înlocuit cu "și". Dezavantaj: foarte multe cuvinte au aproximativ aceeași probabilitate de apariție, caz în care acuratețea sistemului este foarte scăzută (de exemplu: "casă" și "casa").
- metoda bazată pe alte texte - se crează o bază de date cu forma cu și fără diacritice a cât ai multe text: se pleacă de la texte corecte, cu diacritice și se reține atât forma cu diacritice cât și cea obținută prin eliminarea diacriticelor. Dezavantaj: este nevoie de texte corecte, cu diacritice, dar mai ales: este nevoie de foarte multe texte: acuratețea sistemului crește odată nu numărul textelor procesate. Oricâte texte se procesează, nu se vor putea acoperi toate cazurile și mai ales nu se vor putea acoperi cazurile de ambiguitate: cuvântul "fata" poate indica: fâță, față, fată, fața, făta, etc.


De remarcat că niciuna dintre metode nu va putea vreodată să garanteze acuratețe de 100%. Sunt cazuri de ambiguitate chiar și pentru om, voi reveni cu exemple pe măsură ce se definesc reguli și se evidențiază cazurile complexe (un exemplu la îndemână este "Aceasta este o fata." - cum trebuie perceput "fata": față, fată sau fâță?).


Concluzii:

Puteți vedea stadiul actual al proiectului la această pagină . Pentru a raporta erori sau a sugera îmbunătățiri puteți folosi această pagină.