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.

Intrări

N-am mai postat nimic de vreo două luni, pentru că nu au fost prea multe noutăţi. În octombrie şi noiembrie am lucrat, cu pauze, la structurarea mai bună a bazei de date prin introducerea „intrărilor” în DEX online. O „intrare” este o colecţie de lexeme, iar un „lexem” este o unitate minimală de analiză lingvistică. De exemplu, DEX online are 8 definiţii pentru „episcop”, care până astăzi erau toate listate de-a valma. Începând de astăzi, avem ocazia să împărţim definiţiile în minim două intrări diferite ca înţeles (episcopul ca grad bisericesc şi episcopul ca aparat).

Schema bazei de date este acum mai complexă, dar am eliminat o redundanţă foarte dăunătoare. Până astăzi, fiecare definiţie era asociată cu un număr de cuvinte-cheie. De exemplu, fiecare definiţie pentru „episcop” era asociată cu un cuvânt „episcop” (astfel încât o căutare după „episcop” să producă toate aceste definiţii). Tabela cuvintelor conţinea episcop de 8 ori, o dată pentru fiecare definiţie.

După schimbarea de azi, între cuvinte şi definiţii se interpun intrările. Pentru episcop avem două intrări, fiecare din ele asociată cu câte un cuvânt „episcop” (ceea ce este de dorit, pentru că aceste două cuvinte se declină diferit: episcop/episcopi, respectiv episcop/episcoape). Cele opt definiţii sunt asociate fie cu o intrare, fie cu cealaltă, în funcţie de întelesul lor, dar nu cu amândouă. Similar, pentru „sol” vom avea nu mai puţin de 5 intrări (solul ca emisar, solul ca notă muzicală, solul ca pământ, solul ca monedă şi solul ca soluţie coloidală).

Intenţia pe termen scurt a fost să reducem numărul de cuvinte-duplicat, pentru că urmează să începem flexionarea ( = declinarea = conjugarea) cuvintelor şi vrem să ne uşurăm munca. De exemplu, pentru episcop aveam 8 cuvinte-cheie înainte (exact unul pentru fiecare definiţie), iar acum avem doar două, exact câte înţelesuri are cuvântul. Pe termen lung, sperăm ca această modificare să ne permită o structurare şi mai bună a definiţiilor.

Găzduire în România

Prin amabilitatea firmei Elvsoft, serverul principal al DEX online este acum găzduit în România! Sperăm ca aceasta să ducă la o latenţă mai mică şi timpi de acces mai buni pentru vizitatorii noştri din România (majoritatea, adică). Până de curând, serverul principal era la mine în sufragerie — nu chiar locul ideal pentru un server cu pretenţii! Acesta rămâne în continuare activ ca mirror al DEX online, cu numele voronet.dexonline.ro.

Salutări! A trecut ceva vreme de la ultimele mâzgălituri. Am fost ocupat, dar lucrurile arată mult mai bine acum şi am tone de timp liber pentru DEX online (ce-i drept, în mod misterior o parte din acest timp se pierde cu diverse jocuri pe calculator; dar oricum rămâne destul!). O să încerc să ţin acest blog mai la zi decât până acum.

Pe termen lung, proiectul de anvergură la care lucrăm acum se numeşte Dex Flex şi urmăreşte să genereze o listă completă a cuvintelor limbii române, împreună cu formele lor flexionare (conjugările verbelor, declinările substantivelor şi adjectivelor).

Pe termen mai scurt, vreau să actualizez pagina de informaţii cu unele noutăţi, cum ar fi adresa de unde cei interesaţi pot descărca baza de date şi codul. Vreau să creez o pagină cu legături legate de limba şi cultura română. Vreau să caut găzduire, şi când zic „să caut” vreau să spun „să caut prin folderul de mail”, pentru că am primit deja mai multe oferte de la oameni generoşi, şi a venit momentul să mut DEX online pe un calculator care să nu fie în sufrageria mea. Şi vreau să repar 10-20 de bug-uri, pentru că s-au adunat diverse mărunţişuri.

Gazduire profesionista

Am trecut si prin acest stadiu! Din pacate, numai tranzitoriu. Pe 8 aprilie s-a parlit hard-disk-ul de la Dell-ul pe care atat il laudasem. Nici pana azi nu mi-e clar de ce. S-ar putea sa fi fost pur si simplu defect din fabrica. Baietii de la Dell au fost super-profesionisti, in doua zile imi venise deja unul identic de schimb, dar intre timp trebuia sa fac ceva. Si am pierdut si toate definitiile trimise in saptamana dinainte, spre marea mea rusine.

Asa incat am cautat gazduire in diferite locuri. M-am lamurit rapid ca toate ofertele pentru amatori ne sunt nefolositoare. Ele sunt suficiente pentru o pagina personala, dar nu pentru un site cu 20.000 de afisari pe zi. In plus, furnizorii obisnuiti impart un calculator intre sute de utilizatori, ori DEX online manaca destul de mult procesor (pentru cautari cu expresii regulate si altele). In cele din urma, la recomandarea lui Tavi, am dat de rimuhosting.com. Aici conditiile sunt mult mai bune, in sensul ca eram root (= administrator) pe propria mea masina virtuala, unde puteam instala orice software.

Din pacate, nici asta nu pare sa mearga. Pentru $40/luna, maximul pe care eram dispus sa-l platesc, primim o cota de 500 Mhz procesor si 128 MB RAM, care este clar insuficient. Am incercat, vreme de vreo saptamana, sa optimizez codul ca sa-l fac sa mearga pe acest hardware limitat, si am imbunatatit enorm timpii de incarcare a paginilor. Dar chiar si asa, la orele de varf DEX online primeste mai mult de o cautare pe secunda si calculatorul oferit de rimuhosting nu face fata. Ca sa avem intr-adevar propriul nostru calculator dedicat ar costa cam $140/luna.

Asadar, am revenit la vechiul meu Dell din sufragerie 🙂 Avem un hard-disk nou, sa vedem cat tine si acesta. Deocamdata a trecut o luna si nu mai sunt nici un fel de probleme. Una peste alta, ne-am ales cu lucruri bune. Codul este mai rapid (acum cautarile obisnuite dureaza cam 0,02 secunde) si m-am invrednicit in sfarsit sa fac backup automat in fiecare zi, ca sa nu mai pierdem date.

Saptamanile trecute, DEX online a avut probleme de hardware. El functiona pe un Athlon/2.4GHz care incingea copios. N-au fost chiar cele mai frumoase saptamani din viata mea 🙂 Obisnuiam sa ma scol o data si de doua ori pe noapte ca sa verific daca mai merge si, daca nu, sa-l resetez. Ca un facut, placa de baza si procesorul de schimb pe care le-am comandat au ajuns defecte (nu stiu care din ele, dar combinatia nu boota).

Satul de nesomn si de returnat componente defecte, am cumparat un calculator Dell (Intel P4/2.8GHz/1GB RAM), de care sunt extaziat. Are o cutie nemaipomenit de mica, in care nu credeam ca pot sa incapa toate componentele, este foarte silentios (trebuie sa dau televizorul la mic si sa fac un efort ca sa-l aud) si, mai ales, nu se incinge. Nu stiu cum reusesc baietii de la Dell sa-l raceasca atat de bine fara zgomot.

Inca mai pot sa rulez DEX online de pe calculatorul meu personal din sufragerie. Probabil insa ca, la ritmul curent de crestere, in circa un an va trebui sa caut gazduire profesionala. Abonamentul la DSL e si asa destul de scump si oricum am ajuns la upload-ul maxim pe care mi-l poate oferi cineva in zona in care locuiesc.

Le cer scuze tuturor celor pe care i-au deranjat intreruperile din ultimele saptamani!

Elogiul nebuniei

Pe 1 august 2004, echipa de voluntari a DEX online a terminat de cules şi transpus pe internet ediţia 1998 a Dicţionarului explicativ al limbii române. Acesta conţine 65531 definiţii însumând circa 1200 pagini şi 13,5 milioane de caractere. Prin comparaţie, Biblia are circa 4 milioane de caractere.

Proiectul DEX online a debutat acum trei ani sub deviza „e cazul”. Pentru toţi românii din România şi din afara ei care doresc să-şi vorbească limba puţin mai bine, existenţa pe internet a unui dicţionar explicativ nu este un moft, ci o necesitate. Cineva trebuia să facă acest efort şi noi am fost aceia. Din păcate, am fost nevoiţi să alegem calea mai puţin netedă, care în esenţă a presupus retastarea de la zero a tuturor definiţiilor.

Am demarat proiectul DEX online pe 28 august 2001, cu serioase îndoieli că se vor găsi suficienţi oameni cu devotament şi timp liber care să contribuie la acest efort. Şi totuşi, entuziasmul a zeci de oameni a depăşit orice închipuire. În calitate de iniţiator al proiectului, doresc să le mulţumesc din inimă tuturor acestor oameni — jucători de scrabble, rebusişti, programatori, bibliografi, traducători. Dacă aţi fost alături de DEX online din primele zile şi vă mai amintiţi că la început fundalul era mov; 🙂 dacă v-aţi alăturat nouă în ultimele luni şi aţi scurtat enorm timpul necesar pentru completare; dacă aţi contribuit cu definiţii însumând milioane de litere (sensibil mai mult decât Un veac de singurătate); dacă ne-aţi ajutat numai cu o definiţie, o sugestie sau un mesaj de încurajare, vă mulţumim pentru că aţi fost alături de DEX online.

Dacă vreodată aţi scris un mesaj pe o listă de discuţii argumentând de ce DEX online nu are nici un viitor şi este o nebunie, vă mulţumim în mod deosebit. Ne-aţi făcut să spunem „ei da?” şi ne-aţi dat un binevenit spor de adrenalină 🙂 Şi mai ales, aţi pus punctul pe i, arătând exact ce este DEX online: o idee nebună în care o mână de entuziaşti au crezut suficient încât să o ducă la îndeplinire.

Dacă vreodată DEX online v-a fost de folos, lor trebuie să le mulţumiţi. Ei şi-au rupt ore din timpul lor şi al familiei lor pentru a le dedica limbii române şi celor care o vorbesc. Ei au privit dincolo de efortul sisific şi au văzut roadele. O parte din ei, cei care au cules efectiv definiţiile, sunt listaţi aici. O altă parte, cei care au adăugat bucăţi de cod la DEX online pentru a-l face mai util şi mai atractiv, sunt listaţi aici.

Ce facem mai departe? Mai întâi, ne odihnim. Pe urmă, avem multe extensii în curs de dezvoltare. Există multe dicţionare valoroase în afară de DEX şi sperăm să vi le oferim într-un viitor nu prea lung. De asemenea, pornind de la baza de cuvinte existentă, dorim să producem un corector ortografic pentru limba română. Avem deja programe-client care pot descărca întreaga bază de date a DEX online, pentru ca aceia dintre noi care nu au o legătură permanentă la internet să poată beneficia offline de acest dicţionar. Şi aici mai este mult loc pentru îmbunătăţiri. Sperăm că voi ne veţi da idei şi pentru alte direcţii de dezvoltare. Baza de date a DEX online este liberă. Folosiţi-o oriunde vă trebuie.

Şi, pentru că fiecare din noi, la orice vârstă şi indiferent de preocupări, tot de cei dragi caută să se înconjure, profit de ocazie pentru a mulţumi familiei mele şi tuturor prietenilor mei. Slavă Domnului, nu-s puţini, şi m-am sustras de nenumărate ori de la obligaţii familiale şi prieteneşti pentru a mai lucra un pic la DEX online. Nu ştiu de câte ori mi-au auzit urechile cuvântul geek în aceşti ani.

Mai ales, vreau să-i mulţumesc Dariei. Cea mai mare scăpare a Dicţionarului explicativ al limbii române este că au uitat să pună o poză a ei lângă cuvântul răbdare.

Vesti grozave, conform statisticilor de la trafic.ro avem mai multi vizitatori decat site-ul revistei Romania Mare 🙂

50.000 de cuvinte! Si, ca de obicei, www.scrabble.ro au fost primii care au consemnat evenimentul.

Am adaugat campuri in tabela si cod pentru contorizarea numarului de afisari ale fiecarei definitii. Sunt contorizate numai cautarile reusite (cand a existat cel putin un rezultat) si cele cu expresii regulate. Pe primele locuri incep sa se detaseze, desigur, obscenitatile 🙂

Ce software foloseste DEX online? Lista a ajuns la dimensiuni impresionante:

Fedora Linux (sistemul de operare)

Apache httpd (serverul de web)

MySQL (baza de date)

PHP (paginile de web)

gcc (compilatorul de C, pentru unele bucati de cod)

emacs (editorul de texte)

Smarty (generatorul de sabloane PHP)

PHP Accelerator (caching; merge de minune in combinatie cu Smarty)

zip/gzip/bzip2 (pentru comprimarea bazei de date)

CVS (pentru intretinerea codului si editarea lui in mai multi clienti simultan)

Galeon, Mozilla (browsere de web, pentru testare)

ABBYY FineReader (OCR – singurul program comercial din lista!)

Aceasta spune multe despre ce inseamna Open Source si care e frumusetea sa.

Close Menu