Manifest DEX online

Uneori, în afară de a face lucruri, este bine și să explici de ce le faci. Am încercat să expunem principiile pe care am construit proiectul DEX online și opiniile noastre despre direcția în care se îndreaptă limba și cultura română în era digitală. Am enumerat rolurile pe care considerăm că le are DEX online în raport cu limba română și limitele contribuției pe care credem că o putem aduce. Am adus în discuție politica noastră de deschidere și argumentele pentru care ea este singura atitudine viabilă față de valorile definitorii românești. Puteți citi manifestul DEX online aici.

Noul design DEX online

DEX online s-a schimbat la față (și nu, nu e păcăleală, deși am ales să lansăm pe 1 aprilie ca să facem un pic de vâlvă în plus). Intenția este de a contura un pic mai bine personalitatea siteului nostru, deoarece considerăm că vechiul design, deși este funcțional, este puțin cam searbăd.

Încercăm să urmărim reacțiile publicului, pentru că știm și noi că nu e bine să-ți enervezi audiența. 🙂 Citim tot ce este public pe twitter, pe indexuri de bloguri etc. Cabral a avut și un paragraf întreg despre noi și un poll (între timp pollul a dispărut).

Dacă doriți să reveniți la vechiul design, dați click pe Preferințe, iar dintre opțiunile pentru Design alegeți „Polar”.

Dacă aveți sugestii sau nemulțumiri, comentați aici sau scrieți-ne pe adresa de contact.

Îmbunătățiri de viteză

După cum probabil ați observat, în ultimele câteva zile DEX online a răspuns ceva mai greu la căutări. Această problemă a fost rezolvată și DEX online a redevenit rapid și ușor de consultat.

Pentru cei interesați de originea tehnică a problemei, doi factori au contribuit la ea. Zilele trecute am migrat tot codul-sursă la AdoDB, o bibliotecă de abstractizare a accesului la baza de date care include și un modul de ORM. Avantajele AdoDB sunt o structurare mult mai bună a codului și mai puține posibilități de eroare. Totuși, această migrare a dublat volumul de cod PHP executat pentru fiecare căutare și a scos la iveală cea de-a doua problemă cu serverul: DEX online nu avea încă un cache pentru PHP. La orele de vârf, când DEX online trebuie să răspundă cam la 10 căutări pe secundă, serverul începuse să nu mai facă față. Am adăugat și un pachet de cache, ceea ce a făcut ca DEX online să revină la timpi de încărcare foarte buni.

Îmbunătățiri la căutare

De curând, am făcut două schimbări în modul de căutare și de prezentare a rezultatelor. În cele mai multe cazuri, ele nu vor fi vizibile, dar sperăm ca ele să facă diferența acolo unde contează: când utilizatorul a introdus o interogare mai complexă decât un singur cuvânt, când avem o sugestie sau când dorim să atenționăm utilizatorul că a căutat o formă greșită a cuvântului.

  • Atunci când cuvântul introdus nu este găsit, dar avem exact o sugestie (nu mai multe), DEX online redirectează automat la acea sugestie, cu un mesaj de atenționare. Astfel, oprobiu redirectează la oprobriu, iar repercursiune la repercusiune. Când există mai multe sugestii, atunci DEX online nu redirectează automat, ci prezintă acea listă de sugestii.
  • Atunci când utilizatorul introduce mai multe cuvinte, încercăm să găsim un termen care se referă la cât mai multe dintre acele cuvinte. Astfel, făt frumos, cal de mare și fata morgana vor da rezultatele așteptate. Înaintea acestei schimbări, DEX online elimina automat spațiile din toate căutările făcute, ceea ce crea confuzie.

Lectură plăcută în continuare. 🙂

Pe ultima sută de metri

Ce mai este nou la DEX online?

Chiar azi am lansat un corector ortografic pentru Firefox (de limba română, evident). Îl puteţi instala din pagina de unelte, secţiunea „Integrare în browser”. Momentan există câteva limitări de care sunt conştient:

  1. Nu vă este folositor decât dacă scrieţi cu diacritice. Altfel va sublinia drept greşeli toate cuvintele pe care le scrieţi fără diacritice, de exemplu caciula în loc de căciulă.
  2. Nu ştie nici un nume propriu, deoarece se bazează exclusiv pe dicţionarele din DEX online, care nu sunt de natură enciclopedică.
  3. Nu se descurcă cu formele enclitice, de exemplu gândindu- din forma compusă gândindu-se.

O altă noutate (şi nu prea) este căutarea prin tot textul definiţiilor. Puteţi căuta mai mulţi termeni şi primiţi toate definiţiile care conţin toţi termenii. Acest mecanism, dacă este folosit cum trebuie, poate fi extrem de puternic. De exemplu, dacă nu vă mai amintiţi cum se numeşte teama de spaţii largi, puteţi căuta aceste cuvinte prin tot textul definiţiilor:

teamă de spaţii largi

Rezultatele includ aeroacrofobie, agorafobie şi cenofobie. Punct ochit, punct lovit!

Tot în pagina de unelte a apărut o secţiune specială dedicată pasionaţilor de scrabble. Aceştia pot consulta Lista Oficială de Cuvinte acceptată de Federaţia Română de Scrabble la toate concursurile oficiale.

De ce se numeşte acest post Pe ultima sută de metri? Pentru că, după îndelungi frământări, am ajuns la hotărârea că de anul acesta vreau să renunţ la programarea pentru DEX online şi să încerc şi altceva (tot din domeniul programării). Evident, voi rămâne alături de proiect pentru tot ce nu implică programarea: monitorizarea siteului, răspunsurile la mesaje, îmbunătăţirea bazei de date etc. Am scris mai mult despre această hotărâre în blogul meu personal.

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.