23 august 2007

Forme flexionare

Scriu rar, dar am mereu ceva important de spus :)

Astăzi am lansat componenta Dex Flex (numită şi Flex online, încă nu ne-am hotărât asupra unui nume). Această componentă permite, deocamdată:
  • Consultarea formelor flexionare ale oricărui cuvânt al limbii române (conjugarea verbelor, declinarea substantivelor, adjectivelor şi pronumelor). Pe fiecare pagină de rezultate, există un link numit "Flexiuni". Încercaţi-l cu nădejde!
  • Căutarea unui cuvânt după o formă flexionară, nu neapărat după cea de bază (verze).
  • Navigarea între definiţii printr-un click pe orice cuvânt din cadrul oricărei definiţii. Mecanismul funcţionează pentru orice cuvânt din orice definiţie. Nu mai este nevoie ca moderatorii să insereze manual trimiteri pentru cuvintele-cheie dintr-o definiţie.
  • Afişarea accentelor în formele flexionare. Deocamdată la acest capitol avem doar informaţii parţiale, dar chiar şi aşa, un procent semnificativ din formele flexionare conţin şi informaţii despre accent.
Motivul pentru care acest proiect a fost considerabil de dificil este că limba română, spre deosebire de alte limbi (în special engleza) nu se pretează la derivare regresivă (stemming). Dându-se un cuvânt în engleză (shining), este de obicei simplu de aflat forma de bază a cuvântului (shine). În română, dându-se un cuvânt (de exemplu perilor sau străzi), de obicei este imposibil de dedus automat forma de bază (păr sau stradă), deoarece pentru orice regulă găsită există un număr mare de excepţii.

Am optat pentru metoda inversă: derivarea completă a tuturor cuvintelor şi stocarea tuturor formelor flexionare ale limbii române. Pentru aceasta, aveam nevoie de o catalogare a cuvintelor după modul în care se declină / conjugă. De exemplu, cuvintele casă, artă şi sonată se declină la fel (formând pluralul în -e), iar cuvintele viaţă, vară şi iarnă se declină în alt fel (formând pluralul în -i şi suferind şi transformarea a/e la plural: iarnă/ierni).

Această clasificare a fost făcută pentru prima oară în 1981 de Alf Lombard şi Constantin Gâdei în Dictionnaire morphologique de la langue roumaine. Matei Gall şi Octavian Mocanu de la Federaţia Română de Scrabble (care are nevoie de o listă a formelor flexionare acceptate la jocul de scrabble) au construit în continuarea DMLR, perfecţionând şi extinzând lista de modele. Această listă are acum circa 770 de modele de flexionare. Unele din aceste modele acoperă mii de cuvinte, iar altele au un singur reprezentant. De exemplu, mai toate participiile verbelor se declină la fel (apărut, lăbărţat, irizat), dar verbe ca a fi şi a avea sau substantive ca staroste şi sombrero nu seamănă cu nimic altceva. Aşa a rezultat LOC4, Lista Oficială de Cuvinte admisă la jocul de scrabble.

Radu Borza şi cu mine ne-am ocupat de importarea LOC4 în DEX online. Şi acest pas are capcane. Modelele din LOC4 sunt listate desfăşurat, dar a fost treaba noastră să scriem cod care să examineze formele flexionare, să îşi dea seama ce se schimbă faţă de forma de bază, să extragă aceste transformări şi să le aplice altor cuvinte etichetate cu acelaşi model. De exemplu, modelul F62 este stradă, cu pluralul străzi. Programul compară cele două forme şi extrage transformările a→ă, d→z şi ă→i. Când întâlneşte un alt cuvânt etichetat cu F62, ca gardă, nadă sau ogradă, programul aplică aceste transformări pentru a obţine formele corecte de plural gărzi, năzi sau ogrăzi.

Importarea LOC4 este numai un pas de pornire. Afişarea conjugărilor verbelor sau navigarea între definiţii cu un singur click sunt aplicaţii interesante care decurg cu un minim de efort din LOC. Dar orizonturile de abia acum se deschid către alte aplicaţii şi mai utile:
  • Setul de forme flexionare este probabil cel mai complet de până acum, el putând fi folosit de aplicaţii ca OpenOffice pentru a verifica ortografia unui document scris în limba română.
  • Căutarea prin întreg corpul definiţiilor, nu doar prin cuvintele cheie. Această aplicaţie era posibilă şi mai înainte, folosind simple căutări de subşiruri. Dar, de exemplu, o căutare a şirului carte este inutilă dacă definiţia conţine textul cărţi. Având informaţiile despre flexiune, putem indexa baza de date şi căuta un cuvânt indiferent în ce caz/număr/timp/persoană se află.
  • Verificarea închiderii tranzitive a bazei de date a DEX online. Acum putem semnaliza orice definiţii care folosesc cuvinte care nu sunt la rândul lor definite în DEX online, precum şi definiţiile circulare. Ştim sigur că acest gen de erori există, pentru că le-am preluat din DEX. :) De exemplu, există multe perechi de cuvinte care se definesc prin referinţă unul la altul, fără ca vreunul din ele să enunţe şi o definiţie propriu-zisă.
Este greu de făcut o estimare, dar eu sunt de părere că, atunci când toate aceste funcţii vor fi implementate, proiectul Dex Flex va avea un impact la fel de mare şi va fi la fel de util ca şi baza de definiţii în sine.

Evident, toate datele adăugate astăzi la Dex online pot fi copiate şi redistribuite, ca şi restul bazei de date, sub Licenţa Publică Generală GNU.

6 comentarii:

Anonim spunea...

Felicitări, e un feature excelent.

Anonim spunea...

Intr-o zi, cand o sa ajung mare om de stat, o sa va propun pentru o statuie. Sau un grup statuar :) Daca nu o sa aveti niciodata asa ceva, insemana ca nu am ajuns atat de important :(
Lasand gluma la o parte, va felicit pentru proiectul realizat. Il folosesc zilnic si nu stiu ce m-as face fara el.

VA MULTUMESC !

Mihai

Anonim spunea...

Acest site este foarte practic si folositor mai ales ca un dictionar din acesta este foarte scump.

DorinD spunea...

Felicitari pentru munca depusa!

Anonim spunea...

scoate-ti si voi link-ul spre LOC4 (http://scrabrom.3x.ro/Loc4.html) ca este o adresa web virusata.

Cătălin Frâncu spunea...

Mulțumesc, am corectat.