absolvent: monica macoveiciuccorinfor/sketchengine-monica.pdf · 2008-11-04 · facultatea de...

69
Universitatea „Alexandru Ioan Cuza” Iaşi Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent: Monica Macoveiciuc Îndrumător: Corina Forăscu Iaşi, iulie 2008

Upload: others

Post on 14-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Universitatea „Alexandru Ioan Cuza” Iaşi Facultatea de Informatică

Teză de licenţă

Analiză de corpus românesc folosind Sketch Engine

Absolvent: Monica Macoveiciuc

Îndrumător: Corina Forăscu

Iaşi, iulie 2008

Page 2: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

2

Cuprins

Introducere ................................................................................................................... 3

1. Stadiul cercetărilor în domeniu ............................................................................... 5 1.1. Sketch Engine ...................................................................................................... 5 1.1.1. Pregătirea corpusului ................................ Error! Bookmark not defined. 1.1.2. Fişierul de configurare .............................. Error! Bookmark not defined. 1.1.3. Gramatica .................................................. Error! Bookmark not defined. 1.1.3.1. Macro-uri în limbajul m4 ............. Error! Bookmark not defined. 1.1.3.2. Fişierele de relaţii ......................... Error! Bookmark not defined. 1.1.4. Aplicaţia .................................................... Error! Bookmark not defined. 1.1.4.1. Concordanţe ................................................................................ 21 1.1.4.2. Funcţia Word List ....................................................................... 27 1.1.4.3. Funcţia Word Sketch................................................................... 28 1.1.4.4. Funcţia Thesaurus ....................................................................... 29 1.1.4.5. Funcţia Word Sketch Differences ............................................... 30 1.2. Corpus Query Language (CQL) .......................... Error! Bookmark not defined. 1.3. WebBootCaT ...................................................... Error! Bookmark not defined. 1.3.1. Descrierea aplicaţiei .................................. Error! Bookmark not defined. 1.3.2. Detalii de procesare................................... Error! Bookmark not defined.

2. Corpusul românesc .................................................. Error! Bookmark not defined. 2.1. Colectare. Structură............................................. Error! Bookmark not defined. 2.2. Statistici iniţiale .................................................. Error! Bookmark not defined. 2.3. Prelucrare ............................................................ Error! Bookmark not defined. 2.3.1. Fişierul Perl ............................................... Error! Bookmark not defined. 2.3.2. TTL ........................................................... Error! Bookmark not defined. 2.3.3. Aplicaţia Java ............................................ Error! Bookmark not defined.

3. Reguli pt limba română ........................................... Error! Bookmark not defined.

4. Rezultate obţinute cu SkE pentru limba română . Error! Bookmark not defined. 4.1. Performanţe ......................................................... Error! Bookmark not defined. 4.2. Comparaţie cu alte limbi ..................................... Error! Bookmark not defined. 4.3. Puncte tari vs. puncte slabe ................................. Error! Bookmark not defined.

5. Aplicaţii posibil de realizat pe baza SkE românesc ............................................. 62

Concluzii şi perspective .............................................................................................. 64

Bibliografie .................................................................................................................. 66

Anexe ............................................................................. Error! Bookmark not defined.

Page 3: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

3

Introducere

Lucrurile simple sunt cel mai greu de explicat. Copilul învaţă să vorbească, iar acest proces - care ni se pare natural - este obiect de studiu pentru neurologie. Cert este că putem comunica, putem transmite informaţie de la unul la celălalt. Ne înţelegem pentru că toţi folosim aceleaşi automatisme şi reguli în vorbire şi scriere.

Lucrarea de faţă descrie modul în care aceste automatisme au fost transformate într-o gramatică folosită ulterior la analiza textelor aparţinând limbii române, cu ajutorul motorului de căutare Sketch Engine (SkE) - un serviciu web care oferă o serie de instrumente pentru analiza şi prelucrarea corpusurilor. Disponibil pentru alte limbi, cum ar fi engleză, franceză, germană, spaniolă, cehă şi chiar chineză, serviciul reprezintă un instrument ce poate fi utilizat pentru determinarea sensurilor unui cuvânt, pentru selectarea celei mai potrivite traduceri ale unui termen, pentru învăţarea vocabularului unei limbi străine sau pentru studiul operelor literare.

Un lingvist care lucrează la construcţia unui dicţionar începe prin a căuta, pentru fiecare cuvânt, toate contextele în care apare, pentru a putea să-i determine ulterior toate sensurile. Volumul de muncă este unul imens. Dicţionarul Explicativ al Limbii Române cuprinde peste 65000 de definiţii. Să considerăm că, pentru fiecare din cele 65000 de cuvinte, este necesară o oră de muncă pentru a descoperi toate situaţiile în care poate să apară. Aceasta înseamnă 2708 zile pentru a finaliza căutarea, adică aproape 7 ani şi jumătate. Bineînţeles că munca nu este realizată de un singur om, la fel cum şi estimarea, pe de altă parte, este nerealistă – o oră ar fi, cu siguranţă, insuficientă pentru a analiza un cuvânt. Este însă evident că volumul de muncă e imens. Într-o perioadă în care puterea de procesare a calculatoarelor creşte aproape de la o zi la alta, este firesc să ne punem problema dezvoltării unor soluţii computerizate care să reducă din munca oamenilor şi să asigure găsirea rezultatelor dorite.

Ideea care a stat la baza proiectului Sketch Engine este tocmai generarea unor „liste de contexte” pentru fiecare cuvânt al unei limbi, pe baza unui corpus. Aceste liste au fost denumite Word Sketches şi conţin, în plus, o succintă analiză a cuvântului, constând în descrierea comportamentului gramatical şi colocaţional al acestuia.

Deşi este un serviciu relativ nou, fiind finalizat - pentru limba engleză - în 2004, Sketch Engine şi-a dovedit deja utilitatea în cadrul a numeroase proiecte, cum ar fi construcţia dicţionarelor Macmillan şi Oxford, sau crearea unui sistem de învăţare a limbii engleze în Universităţile din Asia.

Rezultatele obţinute sunt datorate unui sistem de procesare a corpusului foarte complex, care înglobează operaţii de căutare, sortare, calcul de frecvenţă sau de relevanţă a colocaţiilor unui cuvânt. Acesta este independent de limba în care este scris textul, însă

Page 4: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

4

pentru a putea fi folosit pentru limba respectivă, trebuie să existe un corpus adnotat corespunzător şi un set de reguli care să descrie relaţiile gramaticale specifice limbii.

Construcţia acestei gramatici este obiectul studiului lucrării de faţă. Spre deosebire de celelalte limbi pentru care a fost adaptat SkE, limba română este mult mai flexibilă. Există prea puţine reguli generale de poziţionare a cuvintelor în cadrul unei propoziţii, de aceea a fost nevoie de scrierea mai multor definiţii pentru fiecare relaţie ilustrată. Gramatica rezultată conţine 25 de reguli şi 68 de şabloane realizate în limbajul m4.

Anterior construcţiei gramaticii, a fost nevoie de crearea unui corpus care să respecte normele impuse de Sketch Engine. În fazele iniţiale ale studiului, au fost utilizate două corpusuri – primul, bazat pe romanul „1984”, de George Orwell, iar cel de-al doilea, varianta în limba română a corpusului „SemCor”. Dimensiunile relativ reduse ale acestora, şi faptul că nu surprindeau satisfăcător particularităţile limbii române (fiind vorba de traduceri din limba engleză) au determinat construirea unui al treilea corpus, având ca principal suport romanul „Cel mai iubit dintre pământeni”, de Marin Preda.

Prelucrarea corpusurilor a necesitat scrierea unui modul Perl care să realizeze formatarea şi adnotarea structurală, urmată de scrierea unei aplicaţii Java care să apeleze serviciile web puse la dispoziţie de RACAI, în vederea adnotării poziţionale a textelor.

Având la dispoziţie gramatica şi un corpus adecvat, pasul următor l-a constituit configurarea acestora pentru a putea fi integrate cu Sketch Engine. Rezultatele obţinute sunt superioare celor raportate la adaptarea SkE pentru o altă limbă. De exemplu, pentru substantivul „om”, care are 725 de apariţii (în toate formele sale) în cadrul textului, relaţiile identificate însumează 956 de contexte, adică fiecare apariţie a fost încadrată, în medie, în 1.31 de relaţii. Spre comparaţie, pentru limba italiană, raportul dintre numărul de relaţii identificate şi numărul de apariţii ale substantivului „uomo” este de 0.62.

Lucrarea descrie în primul capitol Sketch Engine, utilitatea şi maniera de utilizare a acestuia, precum şi modul în care poate fi integrat alături de alte aplicaţii pentru a spori performanţa acestuia. Următoarea secţiune este dedicată prezentării corpusurilor româneşti utilizate în cadrul acestui studiu. Partea cea mai importantă, reprezentând elementul de noutate pe care îl aduce lucrarea, cuprinde descrierea gramaticii construite pentru limba română şi expunerea rezultatelor obţinute cu Sketch Engine, comparativ cu alte limbi. Sunt propuse, ulterior, posibile utilizări ale motorului de căutare împreună cu gramatica dezvoltată. În încheiere, sunt prezentate concluziile şi direcţiile viitoare de cercetare pe această temă.

Page 5: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

5

1. Stadiul cercetărilor în domeniu

1.1. Sketch Engine

Sketch Engine 1

Word Sketches

este un serviciu web care oferă o serie de unelte pentru analiza şi prelucrarea corpusurilor (Kilgarriff et al., 2004).

Proiectul iniţiat de Adam Kilgarriff, finalizat pentru limba engleză în 2004 şi dezvoltat în continuare pentru alte limbi, are ca scop generarea de Word Sketches (o succintă analiză a unui cuvânt, constând în descrierea comportamentului gramatical şi colocaţional al acestuia, realizată pe baza unui corpus).

2 descrie asocierile dintre cuvinte. Plecând de la termenul pentru care se realizează analiza, se folosesc şabloane pentru determinarea relaţiilor gramaticale în care este implicat şi a cuvintelor cu care este relaţionat.

1 http://www.sketchengine.co.uk/ 2 Pentru că nu există o traducere larg acceptată în limba română, pe parcursul lucrării se va folosi denumirea în engleză („Word Sketches”), mult mai clară şi familiară celor care lucrează în domeniu decât o eventuală traducere. Menţiunea este valabilă şi pentru alţi termeni consacraţi în limba engleză, sau pentru denumirile funcţiilor oferite de Sketch Engine.

Fig. 1.1. Funcţia Word Sketch. Rezultate parţiale obţinute pentru substantivul „om”. Fiecare lista descrie tipul relaţiei şi conţine cuvintele care contribuie la realizarea respectivei relaţii, însoţite de frecvenţa de apariţie.

Page 6: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

6

Utilizate pentru prima oară la editarea dicţionarului Macmillan English Dictionary for Advanced Learners, acestea sunt folosite în prezent, prin intermediul Sketch Engine, de Oxford University Press, FrameNet, Collins, Chambers Harrap, Macmillan etc. şi sunt subiect de cercetare în multe universităţi din întreaga lume.

Contextul indică sensul cuvintelor. Prin intermediul Word Sketches şi al concordanţelor3, Sketch Engine oferă suport pentru identificarea sensului corect al unui cuvânt într-un anumit context. Facilitatea a fost exploatată de lexicografi pentru construcţia Oxford Dictionary of English, Second Edition, pe baza corpusului Oxford English Corpus 4

Utilizat împreună cu WebBootCaT

. Rezultatele obţinute în timp scurt şi cu precizie foarte mare au determinat continuarea folosirii aplicaţiei pentru analiza corpusului, care este actualizat în permanenţă.

Un alt domeniu în care Sketch Engine se anunţă a fi o soluţie viabilă este cel al traducerilor. Funcţiile oferite de aplicaţie - Concordance şi Word Sketch Differences (care vor fi descrise în capitolul 1.1.4.1, respectiv, 1.1.4.5) pot indica traducerea cea mai potrivită pentru un cuvânt, dat fiind contextul în care se găseşte acesta.

5

3 Prin concordanţă se înţelege organizarea sub formă de dicţionar a tuturor cuvintelor utilizate de un anumit autor, cu indicarea tuturor ocurenţelor fiecărui cuvânt şi a contextelor acestor ocurenţe.

, Sketch Engine stă la baza unui proiect al Univeristăţii Ming Chuan din Taiwan, al cărui scop este facilitarea învăţării vocabularului unei limbi străine. A fost elaborat un algoritm de generare a propoziţiilor de tip fill-in-the-blank. Acestea sunt propoziţii din care lipseşte un cuvânt. Ideea algoritmului este următoarea: se alege un cuvânt-cheie şi se determină, prin intermediul Sketch Engine (Thesaurus), cuvinte similare acestuia (fie semantic, fie sintactic). Se caută apoi un context (o propoziţie) în care apare termenul de bază şi în care cuvintele determinate la pasul anterior nu s-ar potrivi din punct de vedere logic. Utilizatorului i se cere să completeze spaţiile libere cu varianta cea mai potrivită pentru a obţine o construcţie corectă.

De exemplu, se alege cuvântul „librărie”. Se generează termeni asemănători acestuia („magazin”, „farmacie”, „atelier”) şi un context corespunzător: „Cartea a fost cumpărată de la librăria din capătul străzii.” Propoziţia rezultată este următoarea:

„Cartea a fost cumpărată de la ______ din capătul străzii”.

Cu opţiunile: (a) farmacia; (b) atelierul; (c) librăria; (d) magazinul.

4 http://www.askoxford.com/oec/mainpage/oec04/?view=uk 5 WebBootCaT este un serviciu web capabil să colecteze rapid corpusuri de mari dimensiuni, folosind resurse web (documente) accesibile public.

Page 7: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

7

Ideea proiectului a apărut în urma unui experiment la care au participat 25 de persoane care nu cunoşteau limba chineză. Pe parcursul a şase săptămâni, ei au utilizat Sketch Engine pentru a determina răspunsul corect la întrebări de tipul celor descrise mai sus (fill-in-the-blank). Testele finale au indicat o rată de îmbunătăţire a cunoştinţelor cuprinsă între 55% şi 95% faţă de testele de preevaluare.

Sketch Engine oferă, în momentul de faţă, şi alte facilităţi, cum ar fi Word List sau Thesaurus (descrise în capitolul 1.1.4.2, respectiv 1.1.4.4). Pentru a putea fi folosite, este necesar un corpus formatat conform specificaţiilor Sketch Engine şi un set corespunzător de reguli.

Pachetul soft e disponibil la adresa http://www.sketchengine.co.uk/ şi poate fi utilizat de oricine îşi crează un cont de utilizator (cu funcţionalitate şi durată în timp limitată, pentru versiunea gratuită). Sketch Engine oferă o serie de corpusuri gata formatate6

1. pregătirea corpusului;

, dar şi posibilitatea de a încărca sau colecta (prin intermediul WebBootCaT) propriul corpus. Analiza unui corpus folosind Sketch Engine presupune parcurgerea următoarelor etape, care sunt detaliat descrise în continuare:

2. pregătirea fişierului de configurare;

3. scrierea unei gramatici pentru generarea de Word Sketches; aceasta implică definirea unor relaţii între cuvinte şi editarea corespunzătoare a fişierului care le conţine;

4. încărcare celor trei fişiere în Sketch Engine şi folosirea funcţiilor oferite de serviciul web.

1.1.1. Pregătirea corpusului

Un corpus reprezintă o colecţie de texte, memorată şi prelucrată în scopul cercetării lingvistice. Textele sunt selectate pe baza unor criterii explicite, în aşa fel încât să reflecte regularităţile şi particularităţile unei limbi7

Cel mai simplu corpus are aspectul unei înşiruiri de cuvinte: textele sunt păstrate într-un format comun şi concatenate. Cu toate acestea, de cele mai multe ori se păstrează

.

6 Cel mai cunoscut dintre acestea este British National Corpus (BNC), care conţine peste 100 milioane de cuvinte. Alte corpusuri disponibile sunt ukWaC (obţinut prin web crawling; peste 2 miliarde de simboluri), British Academic Written English Corpus, dar şi corpusuri în alte limbi (franceză, germană, spaniolă, chineză, rusă etc.). 7 http://www.ilc.cnr.it/EAGLES/corpintr/node13.html

Page 8: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

8

identitatea fiecărui text – dată fiind o secvenţă de cuvinte, se poate identifica textul din care a fost extrasă.

Pentru a fi util din punct de vedere al analizei lingvistice, un corpus trebuie să fie suficient de mare încât să permită generalizări, dar şi să conţină toate varietăţile relevante ale vocabularului limbii respective. Trebuie să fie conceput în aşa fel încât pe baza lui să se poată construi gramatici, dicţionare, tezaure şi alte materiale referitoare la limbă. Un astfel de corpus se numeşte corpus de referinţă.

În cazul Sketch Engine, corpusul prelucrat corespunzător se află în fişierul de intrare. Acesta conţine text ASCII8

are următorul aspect, în format WPL, respectiv în format adnotat la lemă şi partea de vorbire, conform cu specificaţiile MULTEXT-East Morphosyntactic, versiunea 3.0

şi trebuie să fie în format vertical (sau WPL – word-per-line). Cuvintele sunt scrise în coloană, pe fiecare linie aflându-se un cuvânt, un număr sau un semn de punctuaţie. Eventualele adnotări opţionale ataşate fiecărui cuvânt apar pe aceeaşi linie cu acesta, separate printr-un caracter „tab”. De exemplu, textul

„Dintre sute de catarge Care lasă malurile, Câte oare le vor sparge Vânturile, valurile?”

9

Dintre Sute de catarge Care lasã malurile , Câte oare le vor sparge Vânturile , valurile ?

:

Dintre Spsa dintre sute Mcfp-ln sută de Spsa de catarge Ncfp-n catarg Care Pw3--r Care lasã Vmip3p lasã malurile Ncfpry mal , , , Câte Rw câte oare Rw oare 10le Pp3fpa--------w el vor Va--3p vrea sparge Vmnp sparge Vânturile Ncfsry Vânturile , , , valurile Ncfpry val ? ? ?

Pentru adnotările structurale se folosesc taguri XML: 8 American Standard Code for Information Interchange 9 http://nl.ijs.si/ME/V3/msd/html/

Page 9: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

9

<doc id = "00001" url = "http://www.ziare.com/E_miel_sau_caineA-298137.html"> <p> <s> Nu Qz nu este Vmip3s fi o I o glumă Ncfsry glumă macabră Afpfsrn macabru care Pw3--r care să Ps3fsrs să testeze Vmsp3 testa reacţia Ncfsry reacţie românilor Ncmpoy român

Formatul textului este cel descris în cadrul IMS Corpus Workbench, la Universitatea din Stuttgart (Christ, 1994)11

1.1.2. Fişierul de configurare

. Corpusul este adnotat atât poziţional, cât şi structural.

Adnotarea poziţională se referă la fiecare simbol („poziţie” în corpus) şi constă în asocierea a două atribute: partea de vorbire (POS) şi lema. Atributele apar pe aceeaşi linie cu simbolul căruia îi sunt ataşate, fiind despărţite de acesta şi între ele printre-un caracter „tab”.

Adnotarea structurală reprezintă marcaje care delimitează blocuri de text: paragrafe, propoziţii, secvenţe de mici dimensiuni cu anumite proprietăţi specifice. Au forma tagurilor din limbajul XML, fiecare structură fiind poziţionată între două taguri cu aceeaşi denumire (închis şi deschis).

Fişierul text care conţine corpusul trebuie să fie însoţit de un fişier de configurare, necesar pentru localizarea acestuia, pentru specificarea unor informaţii privind modul de afişare (codificarea, limba, tipul structurilor şi felul în care sunt gestionate), dar şi pentru unele precizări legate de adnotări şi regulile gramaticale.

Fişierele de configurare sunt fişiere text în format ASCII. Denumirea fişierului este unică, fiind folosită pentru identificarea acestuia în întregul sistem.

Configuraţia constă într-o serie de perechi atribut-valoare, fiecare scrisă pe o linie separată. Primul cuvânt de pe linie reprezintă denumirea unei opţiuni şi e scris cu majuscule. Urmează valoarea asociată opţiunii, încadrată de ghilimele duble. Atunci când valoarea nu conţine nicio majusculă, ghilimelele pot lipsi. 11 http://www.ims.uni-stuttgart.de/projekte/CorpusWorkbench/index.html

Page 10: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

10

Cel mai simplu fişier de configurare are următorul aspect: PATH /corpora/test1 ATTRIBUTE word Acesta corespunde unui corpus care nu conţine decât text, fără niciun fel de adnotare. Singurele specificaţii se referă la calea fizică unde poate fi găsit fişierul pe server (PATH) şi la atributul implicit asociat fiecărui cuvant (ATTRIBUTE).

Opţiunile globale sunt următoarele:

PATH calea completă a directorului în care se află corpusul.

INFO diverse informaţii despre corpus, cum ar fi sursa, dimensiunea etc. Datele asociate acestei opţiuni nu sunt procesate, de aceea pot fi de orice natură. Informaţiile de dimensiuni mai mari pot fi scrise într-un fişier, a cărui cale e specificată sub acest atribut şi e semnalată prin prezenţa unui caracter „@” la început.

NAME

numele corpusului.

ENCODING standardul de codificare (trebuie să fie unul recunoscut de Tool Command Language – Tcl11

11

). Codificarea implicită e „ISO-8859-1”.

VERTICAL calea completă a textului în format vertical. Opţiunea este utilizată doar de programul de encodevert. Dacă valoarea e precedată de caracterul „|”, ceea ce urmează e tratat ca o comandă shell, iar textul vertical va fi preluat de la ieşirea standard a comenzii.

DEFAULTATTR

atributul implicit folosit pentru evaluarea interogărilor. ATTRIBUTE

definirea unui atribut poziţional. Trebuie să existe cel puţin un astfel de atribut. Dacă sunt specificate mai multe, primul din ele e considerat cel implicit (în general, se foloseşte forma cuvântului, iar valoarea atributului este word).

STRUCTURE

definirea unui tag structural.

http://wiki.tcl.tk/

Page 11: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

11

PROCESS

un proces care se referă fie la preprocesarea textului înainea codificării acestuia, fie la postprocesarea corpusului.

ALIGNED

numele unui corpus aliniat. Ambele corpusuri trebuie să conţină o adnotare structurală numită align, cu secvenţele de simboluri delimitate aflate în corespondenţă unul-la-unul.

SHORTREF

atribut al unei structuri considerat implicit în construcţia concordanţelor; dacă nu e specificat, valoarea utilizată este cea a primului atribut din prima structură, iar dacă nu există niciun atribut în vreo structură, se consideră a fi „#” (numărul simbolului).

FULLREF

listă de referinţe, separate prin virgulă, care vor fi afişate ca referinţă completă în Sketch Engine.

HARDCUT

numărul maxim de linii rezultate în urma unei interogări.

MAXCONTEXT numărul maxim de poziţii într-un context.

MAXDETAIL numărul maxim de poziţii în detaliu.

REBUILDUSER

listă de useri, ale căror nume sunt separate prin virgulă, care au permisiunea de a reconstrui (rebuild) corpusul. Valoarea specială „*” indică faptul că oricine poate realiza această operaţiune.

WPOSLIST

listă de perechi formate dintr-un nume intuitiv (user-friendly) pentru o clasă a unui cuvânt şi o expresie regulată ce conţine părţile de vorbire ce sunt instanţe ale respectivului cuvânt. Dacă opţiunea e specificată, numele clasei va fi disponibil şi va putea fi selectat în Sketch Engine dintr-un meniu, atunci când se realizează o căutare după concordanţă. Primul caracter al şirului e un separator utilizat în continuare pentru a despărţi valorile în listă. De exemplu,

WPOSLIST ",adjectiv,A.*,substantiv,N.*,pronume,P.*,verb,V.*"

Page 12: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

12

LPOSLIST listă de perechi formate dintr-un sufix al unei clase de cuvinte şi un nume intuitiv pentru clasa respectivă de cuvinte. Specificarea acestei opţiuni are efect doar dacă există o adnotare la un atribut lempos (lemă cu sufix al clasei de cuvinte). În acest caz, „mare”, ca adjectiv (mare-a), şi „mare”, ca substantiv (mare-n) va duce la generarea de Word Sketches diferite. Primul caracter al şirului este un separator folosit în continuare pentru despărţirea cuvintelor din listă. De exemplu, LPOSLIST ",adjectiv,-a,substantiv,-n,pronume,-p,verb,-v"

TAGSETDOC

un URL pentru o pagină ce conţine un rezumat al setului de valori (tagset) cu care este adnotat corpusul. Linkul va fi disponibil pe formularul de intrare, atunci când se generează concordanţele.

SUBCORPATTRS

Listă de atribute ale documentului folosite pentru crearea de subcorpusuri. Valorile sunt despărţite prin virgulă, dar pentru afişarea atributelor pe acelaşi rând în formularul de creare al unui subcorpus, separatorul utilizat este „|”.

WSATTR nume al unui atribut pentru care sunt calculate concordanţele (implicit, se alege între „lempos”, „lemă”, dacă există unul din aceste atribute, prioritate având „lempos”, sau DEFAULTATTR, dacă textul nu e adnotat cu niciuna din aceste valori).

WSPOSLIST LPOSLIST de părţi de vorbire (POS) prezente în Word Sketches. WSSTRIP

Numărul de caractere suprimate de la sfârşitul unui cuvânt într-o afişare a unei Word Sketch. Implicit, valoarea e 2 dacă WSATTR este lempos şi 0, altfel.

WSBASE o cale către fişierele ce conţin Word Sketches. Ca valoare implicită, se alege între PATH / WSATTR-ws. Pentru dezactivarea opţiunii „Word Sketch” din meniu, se completează cu „none”.

WSTHES

o cale către fişierele ce conţin tezaurul. Implicit, se alege între PATH / WSATTR-thes.

Opţiunile ATTRIBUTE şi STRUCTURE pot fi repetate şi completate cu un bloc adiţional de informaţii, descrise în cele ce urmează:

Page 13: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

13

LOCALE

codul local al unei limbi utilizate (şi regiuni). Valoarea este folosită în evaluarea interogărilor şi în sortarea liniilor concordanţelor. Implicit, opţiunea primeşte valoarea Standard POSIX (`C')12

• 0 – nu există alte argumente;

.

MULTIVALUE specifică dacă atributul conţine valori multiple.

MULTISEP

defineşte un separator pentru valori multiple. Dacă opţiunea e vidă („”), valoarea e despărţită în caractere.

DYNAMIC

dacă opţiunea există, atributul specificat e unul dinamic, iar valoarea opţiunii este numele unei funcţii C care defineşte acest atribut dinamic.

DYNLIB

o librărie dinamică în care se găseşte funcţia precizată.

FUNTYPE tipul funcţiei specificate:

• c – un argument în plus de tip char; • s – un argument în plus de tip const char*; • i – un argument în plus de tip int; • cc – două argumente în plus de tip char; • ii – două argumente în plus de tip int; • ss – două argumente în plus de tip const char*; • ci – două argumente în plus, primul de tip char, al doilea de tip int; • cs, sc, si, is – două argumente în plus, ca la cazul anterior, cu valori de

tipul şi în ordinea specificate.

ARG1 primul parametru opţional fixat.

ARG2

al doilea parametru opţional fixat.

FROMATTR numele atributului pe baza căruia e creat atributul dat.

12 POSIX Locale, http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html

Page 14: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

14

DYNTYPE tipul atributului dinamic; posibile valori sunt: „plain”, „lexicon”, „index” (implicit).

• plain – e activată doar funcţia de afişare. • lexicon – afişarea şi funcţia de numărare (distribuţia de frecvenţă) sunt

activate. • index – toate funcţiile, inclusiv cea de realizare a interogărilor, sunt

activate.

TRANSQUERY indică folosirea funcţiilor de transformare pentru interogări (pentru opţiunea de valori multiple, nu este încă implementată).

În blocurile adiţionale de informaţii ale unei opţiuni STRUCTURE pot fi oricât de multe opţiuni ATTRIBUTE (fiecare, la rândul său, cu posibile blocuri adiţionale). LABEL

etichetă utilizată în referinţe în loc de <STRUCTURE>.<ATTRIBUTE>. DISPLAYTAG

dacă are asociată valoarea „1” (implicită), indică afişarea tagurilor xml (<s>, <p>, ...). Dacă e setată la valoarea „0”, rezultatul nu va conţine taguri, iar modificarea aspectului acestuia se va face prin intermediul uneia din opţiunile DISPLAY.

DISPLAYCLASS

o clasă a textului inclus. DISPLAYBEGIN

permite inserarea unui caracter la începutul unui bloc încadrat de taguri (altel spus, înlocuieşte tagul iniţial); valoarea „_EMPTY_” indică lipsa oricărui caracter adiţional. De exemplu, definirea structurii „g” în modul următor:

STRUCTURE g { DISPLAYTAG 0 DISPLAYBEGIN "_EMPTY_" }

indică faptul că nu vor fi afişate nici tagurile „g”, nici un alt caracter în locul lor.

DISPLAYEND permite inserarea unui caracter la sfârşitul unui bloc încadrat de taguri (altel spus, înlocuieşte tagul final); valoarea „_EMPTY_” indică lipsa oricărui caracter adiţional.

Page 15: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

15

De exemplu, fişierul de configurare folosit în cadrul acestui studiu, într-o anumită fază a desfăşurării acestuia, conţinea următoarele informaţii: ATTRIBUTE word ATTRIBUTE tag ATTRIBUTE lemma STRUCTURE vol { ATTRIBUTE id DISPLAYTAG 0 DISPLAYBEGIN "_EMPTY_" } STRUCTURE s STRUCTURE g { DISPLAYTAG 0 DISPLAYBEGIN "_EMPTY_" } WPOSLIST ",adjectiv,A.*,substantiv,N.*,pronume,P.*,verb,V.*" LPOSLIST ",adjectiv,-a,substantiv,-n,pronume,-p,verb,-v" NAME "Fragmente" WSBASE "/var/ske/cb/src/Monica/romanianWS.m4" PATH "/var/ske/cb/src/Monica/Fragmente" ENCODING "utf-8" STRUCTURE doc { ATTRIBUTE id ATTRIBUTE title }

1.1.3. Gramatica

Generarea de Word Sketches presupune construcţia unei gramatici. O gramatică este o colecţie de definiţii pe baza cărora sistemul poate identifica eventualele relaţii gramaticale ce se stabilesc între termenul căutat şi celelalte cuvinte.

Cuvântul-cheie e indicat de prefixul „1:”, iar cel cu care vrem să îl relaţionăm prin intermediul şablonului e prefixat de „2:”. Atributul „tag” este implicit şi poate fi omis în scrierea unei expresii booleene (exceptând disjuncţiile).

O definiţie poate să aibă asociate mai multe reguli, dacă toate corespund aceleiaşi relaţii gramaticale. Este o situaţie frecvent întâlnită în cazul limbii române, unde topica părţilor de propoziţie nu este foarte strictă în cadrul unei fraze. De exemplu, relaţia verb – complement direct poate fi exprimată în mai multe moduri, două dintre acestea fiind:

Page 16: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

16

*DUAL

restrictiiCD prec_V? 2:[tag = "Vm[ism].[^3].*" & restrictiiCOP] [word = "pe"]? articol? 1:substantiv | 1:[tag = "P[dp].*"]

restrictiiCD prec_V? 2:[tag = "Vm[ism].[^3].*" & restrictiiCOP] articol? 1:[tag = "N...[o-].*" | tag = "R.*"]

Şabloanele restrictiiCD, prec_V, restrictiiCOP, articol, substantiv, articol vor fi înlocuite, în momentul evaluării, cu expresiile corespunzătoare. restrictiiCD elimină cazurile în care propoziţia este introdusă printr-un adverb, ceea ce ar face probabil ca substantivul care urmează verbului să fie subiect, şi nu complement direct. prec_V, care poate să existe sau nu, reprezintă părţile de vorbire auxiliare care pot însoţi un verb.

În primul caz, eticheta 2: marchează verbul determinat de complement, şi care trebuie să fie la un mod corespunzător şi să nu fie verb copulativ. Pot urma sau nu, în ordine, prepoziţia „pe” şi un articol. Substantivul sau pronumele care corespund complementului direct sunt marcate prin eticheta 2.

În cel de-al doilea caz, verbului îi urmează un articol şi un substantiv sau un adverb. Deşi corect gramatical substantivul s-ar afla la modul acuzativ, adnotarea pusă la dispoziţie identifică o mare parte a substantivelor ca fiind la genitiv sau dativ, în situaţii de felul acesta.

Cele două relaţii sunt ilustrate în situaţiile:

cu gândul să mă duc totuşi să-l văd pe bunicul , fiindcă istoria cu vaza îmi

că nu ieşise nimic. Ne distrarăm , văzurăm un film împreună , luarăm masa la restaurant Aceste gramatici, bazate pe şabloane (pattern-matching), sunt imperfecte. Un text în limbaj natural, de mari dimensiuni, va fi întotdeauna mult prea complex pentru ca regulile respective să acopere toate situaţiile care apar. Sketch Engine înlătură această problemă prin selectarea doar a relaţiilor gramaticale prezente de un număr suficient de mare de ori (excepţiile – formulări atipice, eventuale exprimări incorecte – nu afectează rezultatele). În consecinţă, acurateţea definiţiilor poate fi îmbunătăţită până la o anumită limită, după care modificările nu mai sunt vizibile.

Relaţiile pot fi definite prin intermediul expresiilor regulate, iar pentru a facilita citirea şi înţelegerea lor, se folosesc macro-uri scrise în limbajul m413

.

13 Un limbaj de procesare a macro-urilor, a cărui implementare este o unealtă UNIX standard.

Page 17: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

17

1.1.3.1. Macro-uri în limbajul m4

Pe măsură ce gramatica este extinsă pentru a acoperi noi relaţii şi sunt definite noi şabloane pentru fiecare dintre acestea, se va observa, cu siguranţă, repetarea unora din şabloane. Pentru a menţine gramatica simplă şi uşor de întreţinut şi folosit, se pot defini macro-uri în limbajul m4 pentru fiecare element utilizat de mai multe ori.

m4 este un limbaj de procesare a macro-urilor, operaţia sa de bază fiind preluarea unui text de intrare şi copierea acestuia într-un text de ieşire (Kernighan et. al., 1977). Textul de intrare, compus din simboluri alfanumerice, este citit caracter cu caracter, iar în momentul în care şirul de litere obţinut corespunde unui macro, numele macro-ului e înlocuit cu definiţia sa.

De exemplu,

define(exemplu, `Exemplu expresie.’)

asociază macro-ului „exemplu” expresia (numită şi „expandare”) „Exemplu expresie.”. Fiecare apariţie în cadrul textului a cuvântului „exemplu” va fi înlocuită de „Exemplu expresie”.

Cel mai simplu mod de definire a macro-urilor este prin intermediul comenzii define. Odată definit, macro-ul este expandat (este asociat cu expresia corespunzătoare) cu prima ocazie când este întâlnit, şi nu se mai modifică. Pentru a forţa modificarea ulterioară, numele macro-ului trebuie încadrat între caracterele „ ` ” şi „ ’ ”.

Textul de ieşire poate fi redirectat către un flux de ieşire, situaţie în care nu va fi afişat imediat pe ecran. Operaţia se realizează prin comanda divert, care primeşte ca parametru un număr reprezentând identificatorul fluxului. Dacă acest număr este negativ, definiţiile care îl succed nu sunt redirectate către niciun flux de ieşire. De exemplu,

divert(-1) Textul acesta nu este afişat nicăieri. divert

În procesarea textelor, macro-urile sunt frecvent asociate unor expresii regulate. m4 utilizează aceeaşi sintaxă pentru expresii regulate ca şi GNU Emacs 14

14

sau standardul POSIX BRE (Basic Regular Expressions).

Conform GNU Emacs, o expresie regulată este un şablon care corespunde unei mulţimi, posibil infinite, de şiruri de caractere. Sintaxa acestora conţine câteva simboluri speciale (`$', `^', `.', `*', `+', `?', `[', `\' ), restul fiind caractere obişnuite, care corespund unei singure valori (chiar respectivul caracter).

http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexps.html#Regexps

Page 18: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

18

define(`şablon', `A')

asociază macro-ului „şablon” expresia regulată trivială „A”. Pentru a facilita scrierea unor şabloane complexe, s-au definit următoarele caractere speciale:

• . – corespunde oricărui simbol, cu excepţia caracterului „sfârşit de linie” (newline); • * – este un operator postfixat care indică repetarea de un număr oarecare de ori a

expresiei regulate imediat precedente (inclusiv de 0 ori); • + – marchează repetarea expresiei care îl precede de un număr nespecificat de ori,

dar cel puţin o dată; • ? – semnifică fie prezenţa caracterului precedent o singură dată, fie lipsa acestuia; • \{n\} – reprezintă un mod de a specifica numărul exact de apariţii ale unei expresii;

de exemplu, `A\{3\}' se va potrivi doar cu şirul „AAA”; • \{n,m\} – indică repetarea expresie precedente de un număr de ori cuprins între „n”

şi „m”; • […] – permite specificarea construcţiilor peste care se potriveşte expresia, despărţite

prin virgulă; • [^…] – permite excluderea unei mulţimi de construcţii pentru care expresia regulată

un se potriveşte; • ^ - marchează începutul unui rând; • $ - marchează sfârşitul unui rând; • \ - permite căutarea în text a caracterelor speciale; de exemplu, „\^” este un şablon

care corespunde caracterului „^”, şi nu indică nici începutul unui rând, nici excluderea unui caracter.

De exemplu,

define(`substantiv', `"N.*"')

defineşte un macrou pentru un substantiv oarecare. Primul argument reprezintă numele prin care va fi identificat în regulile ulterioare orice cuvânt care are adnotată o parte de vorbire ce începe cu litera „N”, urmată de 0 sau mai multe caractere (pentru adnotare, s-a utilizat codificarea corespunzătoare MULTEXT-East Morphosyntactic, versiunea 3.0). Definiţiile pot fi oricât de complexe. De exemplu, define(`verb_subst', `[tag = "[^SV].*"]{1,5} [word = "că"]? [tag = articol]? 1:[tag = "N.$1$2[r-].*" | tag = "P[dp].$1$2.*"] [(tag = "A..$1$2[r-].*" | tag = "D.$1$2[r-].*" | tag = "P.*" | tag = "M.*") & word != "care"]? prec_V? 2:[tag = "Vm[ism].3$2?1?.*" & lemma != "fi"]')

defineşte un macro utilizat la identificarea subiectului în relaţie cu predicatul. Sunt utilizaţi parametri, marcaţi grafic prin semnul „$”.

O gramatică scrisă utilizând macrouri va fi independentă de setul de taguri utilizat pentru adnotare. Dacă se doreşte înlocuirea acestuia, nu e nevoie decât de modificare

Page 19: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

19

corespunzătoare a definiţiilor de bază, în vreme ce structura de nivel înalt rămâne neschimbată.

Regulile sunt incluse într-un fişier de tip text sau m4 (dacă s-au utilizat macro-uri).

În fişierele Word Sketches, definiţiile macrourilor sunt plasate înaintea relaţiilor şi sunt încadrate de liniile:

divert(-1) ... divert

Programul m4 e rulat apoi pe fişier pentru a obţine o versiune completă a acestuia, utilizabilă în procesul de construcţie a Word Sketches.

1.1.3.2. Fişierele de relaţii

Programul (genws) care generează Word Sketches primeşte ca parametru de intrare un fişier ASCII ce conţine interogări pentru fiecare regulă gramaticală (gramrel). • Comentariile sunt marcate prin prezenţa caracterului „#” la începutul liniei. Liniile

goale sunt ignorate. • Liniile care încep cu caracterul „=” reprezintă denumiri ale regulilor gramaticale.

Acestea pot conţine orice caracter, exceptând „/” pentru regulile duale. Eventualele spaţii albe de la sfârşit sunt eliminate.

• După numele regulii urmează interogările gramaticale, fiecare pe câte o linie separată. • O regulă obişnuită trebuie să conţină două locaţii marcate prin prezenţa a două

etichete: „1:” şi, respectiv, „2:”. Locaţie marcată prin „1” corespunde cuvântului introdus, iar cea notată cu „2” marchează cuvântul căutat (similar conceptului de primire a parametrilor – „1” şi întoarcere a rezultatelor – „2”). În mod normal, o interogare trebuie scrisă pe o singură linie. Dacă dimensiunea sa este mai mare decât permite lungimea unei linii, se utilizază caracterul „\”, aşezat la sfârşit, care indică faptul că interogarea continuă şi pe linia următoare. De exemplu, considerăm regula

1:[tag = “N.f.*”] 2:[tag = "A..f.*"] .

Se testează dacă termenul introdus de utilizator respectă condiţiile impuse de expresia marcată prin eticheta „1:”. Dacă termenul introdus este „om”, adică un substantiv de gen masculin (“N.m.*”), relaţia nu i se va aplica, pntru că “N.f.*” şi “N.m.*” sunt incompatibile. Dacă însă cuvântul este „fată” (“N.f.*”), va fi relaţionat cu toţi termenii imediat următori (pentru că între cele două locaţii nu mai

Page 20: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

20

sunt alte cuvinte) şi al căror tag corespunde expresiei regulate "A..f.*" (un adjectiv de gen feminin).

În sintagma

„fata frumoasă”,

locaţia „1:” este asociată substantivului „fata”, iar „2:”, adjectivului de gen feminin „frumoasă”. Rezultatul captat va fi cel corespunzător etichetei „2:”, adică „frumoasă”.

În sintagma

„fata care este frumoasă”,

substantivului „fata” îi succede adverbul „care”, al cărui tag nu se potriveşte peste expresia "A..f.*". Adjectivul „frumoasă”, deşi corespunde expresiei regulate, nu este situat imediat după substantiv. Astfel, relaţia nu va produce niciun rezultat.

Word Sketch va afişa o listă care conţine toate adjectivele de gen feminin ce urmează după „fată”.

• Caracterul „*” indică prezenţa unor directive de procesare care se referă la liniile ce le

succed:

o *DEFAULTATTR setează atributul implicit folosit la evaluarea interogărilor. Directiva rămâne activă până la sfârşitul fişierului, sau până la următoarea apariţie a acesteia, cu o altă valoare.

o *STRUCTLIMIT limitează rezultatele interogărilor la o anumită structură,

ca de exemplu, o propoziţie. Secvenţa de simboluri obţinută în urma interogării nu poate depăşi limitele impuse de respectiva structură (de exemplu, se caută potrivirea şabloanelor strict în interiorul unei propoziţii). Şi această directivă este activă până la întâlnirea unei alteia cu aceeaşi denumire şi conţinut schimbat, sau, dacă acest lucru nu se întâmplă, până la sfârşitul fişierului.

o *SYMMETRIC forţează dubla evaluare a interogărilor: o dată aşa cum apar

conform regulilor scrise, şi a doua oară, cu locaţiile etichetelor „1:” şi „2:” interschimbate. Directiva rămâne activă până la prima linie ce conţine o relaţie gramaticală (gramrel).

o *DUAL e similară lui *SYMMETRIC, dar afectează regulile gramaticale, şi

nu interogările. Pentru fiecare interogare, defineşte două reguli gramaticale. Denumirile acestora sunt separate printr-un caracter „/”. Se încearcă evaluarea expresiei având ca „parametru” termenul corespunzător locaţiei „1:”, iar rezultatul va fi cuvântul captat prin potrivirea şablonului cu locaţia

Page 21: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

21

„2:”. Apoi se inversează căutarea: se încearcă evaluarea având ca parametru cuvântul care în primă fază avea asociată eticheta „2:”, iar potenţialul rezultat va fi căutat printre cuvintele care se află la vechile locaţii „1:”.

De exemplu, regula

*DUAL =subst_inainte_de_adj/adj_dupa_subst

1:[tag = "N.*"] 2:[tag = "A.*"]

va produce rezultate atât dacă se introduce un substantiv (lista rezultatelor va conţine adjective), cât şi dacă se introduce un adjectiv (rezultatele vor fi substantive).

Sintagma

„fata frumoasă”

se va afla atât Word Sketch-ul termenului „fată”, cât şi în cel al cuvântului „frumoasă”.

cunoştinţă cu această ocazie şi cu o fată frumoasă care să ne cimenteze prietenia

cunoştinţă cu această ocazie şi cu o fată frumoasă care să ne cimenteze prietenia . Ea m

o *TRINARY se utilizează pentru relaţiile gramaticale în care sunt implicaţi trei termeni. Regulile sunt traduse în relaţii binare, cu nume diferite. Denumirea unei reguli TRINARY trebuie să conţină secvenţa de caractere „%s”, iar în respectivele interogări apare o a treia etichetă, „3:”. Valoarea atributului de pe poziţia corespunzătoare acesteia înlocuieşte apoi pe „%s” în denumirea regulii.

o *UNARY indică faptul că relaţia ce urmează este unară. Pentru aceste reguli

se utilizează o singură etichetă în interogări.

1.1.4. Aplicaţia

1.1.4.1. Concordanţe Concordanţa este un dicţionar relativ la unul sau mai multe texte (de obicei ale unui singur autor), format din totalitatea lemelor conţinute în textul dat, ordonate alfabetic şi

Page 22: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

22

însoţite de informaţii precum categoria gramaticală, frecvenţa absolută şi relativă, indicarea contextului fiecărei forme flexionare15

Interogarea se poate realiza şi pentru construcţii mai elaborate, nu doar pentru un cuvânt.

. Sketch Engine dispune de un mecanism complex de generare a concordanţelor, ce oferă rezultate adaptate perfect cerinţelor utilizatorului. O căutare simplă, care întoarce toate rezultatele găsite pentru un anumit termen specificat, necesită simpla introducere a termenului respectiv în căsuţa etichetată cu Query.

Dacă se dispune de un corpus lematizat, interogarea poate fi scrisă pentru lema corespunzătoare cuvântului. De exemplu, pentru cuvântul „mers”, Sketch Engine va genera o concordanţă cuprinzând următoarele:

• mers, merg, merge, meargă, mergeţi, mergând – verbe; • mers, mersul – substantive;

Pentru o căutare mai rafinată, aplicaţia prezintă diverse opţiuni grupate în trei secţiuni: Keyword, Context şi Text Type. Secţiunea Keyword Prezintă opţiuni disponibile pentru corpusuri adnotate la lemă şi partea de vorbire pentru fiecare cuvânt. Căutarea se va realiza după anumite criterii, în funcţie de opţiunile exprimate de utilizator.

15 http://ahds.ac.uk/creating/guides/linguistic-corpora/index.htm

Fig. 1.2. Secţiunea Concordance. Formularul permite scrierea de interogări pentru generarea de concordanţe

Page 23: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

23

Lemma: Se introduce lema asociată cuvântului, iar din meniul alăturat se poate alege şi partea de vorbire corespunzătoare (de exemplu, „scrie – verb”). Este una din opţiunile supuse cel mai mult erorilor de procesare, pentru că este foarte probabil ca un corpus de mari dimensiuni să conţină erori de marcaj. Rezultatele scontate se pot obţine, însă, introducând termenul căutat în căsuţă etichetată cu Phrase.

Phrase: Poate conţine orice expresie formată din mai multe cuvinte, cum ar fi cuvinte compuse, expresii consacrate sau locuţiuni (de exemplu, „pe care”). Expresia e căutată în text aşa cum apare, fără a fi analizată în vreun fel (cum se întâmplă în cazul prezentat anterior).

Word Form: Permite căutarea unei anumite forme a unui cuvânt, ca de exemplu, „mers”. Opţional, se poate specifica şi partea de vorbire căutată („mers” ca substantiv, sau ca verb). Dacă se marchează căsuţa Match Case, căutarea va face distincţie între literele mari şi cele mici (interogările pentru „mergând” şi „Mergând” vor întorce rezultate diferite).

Fig. 1.3. Concordanţe pentru lema „merge”, obţinute printr-o interogare simplă după lemă.

Page 24: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

24

CQL: Câmpul se completează cu interogări scrise în limbajul Corpus Query Language (CQL). Din meniul Default attribute se poate alege modul în care se va realiza interogarea (asupra cuvântului, lemei sau părţii de vorbire corespunzătoare). Tagset Summary este un o legătură către o pagină web care conţine detalii despre setul de taguri folosit pentru adnotarea corpusului.

Secţiunea Context Utilizatorul poate limita căutarea la un anumit context sau tip de text.

Se poate preciza partea stângă şi/sau dreaptă (opţiunea Query Type) a contextului în care se află cuvântul, într-un interval de până la 15 termeni de fiecare parte (valoare specificată prin intermediul Window size).

De exemplu, se doreşte găsirea cuvântului(lemei) „a merge”, urmată de substantivul „munte”. Se introduce verbul în câmpul Query şi substantivul în partea dreaptă în context, selectând din meniu opţiunea corespunzătoare părţii de vorbire şi dimensiunea „15” a ferestrei de căutare. Rezultatele obţinute sunt:

alta . O familie de cinci plănuieşte să meargă împreună la plajă sau în munţi , şi

Vrem să ştim numărul oamenilor care merg în munţi . Când acest experiment este

În continuare, se doreşte găsirea tuturor situaţiilor în care substantivul „familie” precede cele două cuvinte (se află în partea stângă în context). Se introduce substantivul respectiv în câmpul Lemma ataşat Left context, se indică faptul că este un substantiv şi că se doreşte găsirea lui într-un interval de 5 cuvinte la stânga termenului de bază. Rezultatul obţinut este:

alta . O familie de cinci plănuieşte să meargă împreună la plajă sau în munţi , şi

Acest tip de căutare permite şi excluderea unor termeni, dacă se selectează opţiunea None din meniul Query Type. În acest caz, rezultatele vor reda toate situaţiile în care cuvintele excluse (precizate în câmpurile Lemma) nu apar în contextul imediat al termenul de bază.

Secţiunea Text Type

Permite limitarea căutării la o anumită porţiune a corpusului. Opţiunea depinde de compoziţia corpusului şi de informaţiile din antet.

De exemplu, în cadrul corpusului folosit pentru acest studiu sunt delimitate cele trei volume ale romanului, care pot fi incluse sau excluse din căutare prin intermediul unui identificator unic asociat fiecăruia.

Page 25: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

25

Manipularea rezultatelor concordanţelor Odată generată o concordanţă, utilizatorului îi sunt prezentate o serie de statistici legate de aceasta, dar şi un meniu care oferă posibilitatea manipulării rezultatelor.

Căsuţa din dreapta conţine, pe lângă numele corpusului, numărul de linii ale concordanţei (în imagine, interogarea s-a realizat pentru substantivul „om”; s-au găsit 58 de contexte în care apare acesta).

Dacă rezultatele conţin se întind pe mai multe pagini, este posibilă navigarea rapidă de la o pagină la alta, prin introducerea numărului paginii dorite în câmpul Page.

Fig. 1.4. Secţiunea Context. Formularul permite specificarea contextului – la dreapta şi la stânga – pentru termenul pentru care se generează concordanţele. În exemplu, concordanţele vor conţine cuvântul „familie” (sau forme ale acestuia) în stânga verbului „a merge” şi cuvântul „munte” în partea dreaptă.

Fig. 1.5. Meniul activat odată cu generarea concordanţelor.

Page 26: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

26

Fiecare apariţie a cuvântului căutat poate fi vizualizată în contextul în care se găseşte în text, dacă se apasă pe termenul respectiv în lista de rezultate.

Meniul

View Options – permite schimbarea modului de vizualizare din KWIC16

• Attributes – liniile pot conţine, pe lângă textul propriu-zis, şi partea de vorbire, lema, sau orice altă informaţie asociată fiecărui cuvânt. Funcţia este utilă atunci când concordanţele conţin rezultate neaşteptate şi se doreşte aflarea motivului pentru care interogarea a întors liniile respective (în general, o adnotare greşită).

(standard) în afişarea întregii fraze; pe lângă aceasta, mai conţine opţiuni pentru modul de afişare a rezultatelor:

• Structures – permite vizualizarea adnotărilor structurale (taguri ce marchează o structură – propoziţie, paragraf, document etc.).

• References – reprezintă tipul informaţiei afişate în coloana din stânga a paginii care conţine concordanţele. Implicit, este vorba de identificatorul unic al documentului din care este extrasă linia. Se poate alege între oricare informaţie ataşată documentelor ce formează corpusul.

• Page Size – se poate specifica o dimensiune mai mare pentru pagina de afişae a rezultatelor (implicit, aceasta conţine 20 de linii; valoarea maximă care poate fi setată este de 500 de linii).

Sample – se selectează din rezultate un set aleatoriu de propoziţii; este util dacă termenul pentru care se realizează concordanţa e foarte frecvent întâlnit. De exemplu, pentru lema „fi”, se găsesc 289 de fraze, iar utilizatorul poate alege să analizeze doar o parte din aceste, de exemplu, 10 fraze; se va genera o nouă concordanţă, care va conţine doar 10 din cele 289 de fraze.

Filter – permite controlul liniilor care vor fi afişate, printr-o fereastră asemănătoare secţiunii Key Word de pe pagina de generare a concordanţelor.

Sort – conţine un meniu prin intermediul căruia se poate realiza o sortare a frazelor, având drept criteriu locaţia termenului căutat în interiorul frazei găsite (la stânga, în interior, sau la dreapta).

Frequency – oferă două tipuri de informaţie pentru termenul căutat:

• Multilevel frequency distribution – afişează frecvenţa fiecărei forme a unei leme date. Complexitatea rezultatelor poate fi selectată din trei nivele: first, second şi third, permiţând vizualizarea în funcţie de poziţia relativă faţă de un anumit cuvânt (de exemplu, „primul cuvânt de la dreapta termenului căutat”).

16 Acronim pentru „Key Word In Context”, formatul uzual al liniilor unei concordanţe.

Page 27: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

27

• Text type frequency distribution – specifică modul de distribuţie al termenului căutat în cadrul corpusului. De exemplu, pentru termenul „poliţie” se poate remarca faptul că apare mai frecvent în articole de ziar decât în alt tip de texte.

Collocation - generează liste de cuvinte care apar frecvent în preajma cuvântului căutat.

1.1.4.2. Funcţia Word List

Funcţia Word List permite specificarea rapidă a anumitor constrângeri asupra interogării. Rezultatele conţin o listă de perechi valoare – frecvenţă, iar vizualizarea concordanţelor se realizează prin simpla apăsare pe cuvântul respectiv.

Interfaţa intuitivă simplifică mult procesul de scriere a interogărilor, aşa cum este pus la dispoziţie de funcţia Concordance (nu mai puţin utilă, însă cu siguranţă mai complexă).

Căutarea se poate realiza în interiorul unui corpus sau al unui subcorpus al acestuia, care poate fi creat instantaneu, dacă nu exista anterior.

Din meniul Attribute se alege elementul pentru care este scris şablonul (tag, lemma sau valoarea implicită, word).

Fig. 1.6. Formularul asociat opţiunii View din meniul Concordance. Permite schimbarea modului de vizualizare a concordanţelor.

Page 28: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

28

Se poate specifica frecvenţa minimă a elementului în cadrul corpusului, dar şi dimensiunea maximă a listei de concordanţe sau cuvintele-cheie din text.

Căutarea poate să facă sau nu distincţie între literele mari şi mici, prin intermediul căsuţei Ignore Case.

1.1.4.3. Funcţia Word Sketch Word Sketch este principala funcţie SkE, şi motivul care a stat la baza construirii aplicaţiei. Aceasta permite generarea de Word Sketches, descrieri succinte ale comportamentului gramatical şi colocaţional al cuvintelor.

Interfaţa permite introducerea unei leme şi precizarea a diferite opţiuni pe baza cărora vor fi generate rezultatele. Relaţiile pot fi sortate sau nu, se poate seta o frecvenţă sau o valoare minimă a coeficientului salience pentru fiecare cuvânt. Este permisă şi precizarea numărului maxim de elemente care pot intra într-o relaţie gramaticală.

Fig. 1.7. Listă de cuvinte pentru lema „om”. Frecvenţa termenului în cadrul corpusului SemCor este de 302 apariţii.

Fig. 1.8. Formularul Word Sketch. Permite precizarea lemei pentru care se va construi rezumatul şi selectarea a diferite opţiuni pe baza cărora se vor generea rezultatele.

Page 29: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

29

Rezultatele sunt afişate în liste care identifică tipul relaţiei stabilite şi frecvenţa apariţiei fiecărui termen în relaţia respectivă.

De exemplu, în cadrul corpusului au fost identificate sintagmele: „merge înainte”, „merge acasă” etc. (complemente indirecte), „merge fără pauză”, „merge pe jos” (verbe succedate de prepoziţiile respective) etc. 1.1.4.4. Thesaurus Tezaurul este o resursă lingvistică ce grupează cuvinte cu înţelesuri similare (Kilgarriff et. al., 1999). Este asemănător unui dicţionar, însă în loc de definiţii şi pronunţii, conţine sinonime şi antonime.

Sketch Engine facilitează construcţia rapidă a tezaurelor prin intermediul funcţiei Thesaurus.

Fig. 1.9. O parte din rezultatele Word Sketch pentru lema „merge”. Fiecare listă reprezintă o relaţie stabilită între fiecare din cuvintele din interiorul listei şi termenul căutat („merge”).

Fig. 1.10. O parte din rezultatele funcţiei Thesaurus pentru lema „spune”. Lista conţine cuvinte similare celui introdus, indicând, în dreptul fiecăruia, gradul de similaritate.

Page 30: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

30

Evaluarea gradului de similaritate se realizează prin căutarea cuvintelor care au aceiaşi vecini (collocates) ca şi termenul a cărui lemă e analizată şi aplicarea unor funcţii în urma cărora se poate construi un „tezaur de distribuţie”. Din acesta sunt alese cuvintele cu cel mai înaltă valoare a nivelului de similaritate.

Utilizatorul introduce o lemă şi un nivel minim al similarităţii, iar rezultatele sunt furnizate sub forma unei liste de perechi „cuvânt” – „grad de similaritate”. Pot fi vizualizate şi şabloanele care au determinat identificarea cuvântului ca fiind asemănător termenului de bază, prin navigarea rapidă la secţiunea Word Sketch Differences.

1.1.4.5. Word Sketch Differences Sketch Differences oferă un mod de a compara două cuvinte foarte similare: precizează atât şabloanele şi combinaţiile comune celor două cuvinte, cât şi pe cele care le diferenţiază şi particularizează. În secţiunea Common Patterns, fiecare cuvânt are ataşate patru valori. Primele două indică numărul de apariţii ale acestuia cu prima, respectiv, cea de a doua lemă. Celelalte valori semnifică scorul salience al cuvintelor în relaţie cu cei doi termeni. Listele de cuvinte sunt ordonate descrescător, în funcţie de valoarea scorului salience.

Există şi două secţiuni - câte una pentru fiecare din cele două cuvinte - în care sunt prezentate rezultatele care diferă. Rezultatele pot fi diferite în două cazuri: fie există o relaţie în care este implicat doar unul din termeni, fie relaţii sunt definite pentru ambii, dar cuvintele cu care sunt asociaţi în contextele respective diferă.

Fig. 1.11. O parte din rezultatele funcţiei Word Sketch Differences pentru lemele „vorbi” şi „spune”. În imagine sunt prezente şabloane comune celor două cuvinte.

Page 31: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

31

1.2. Corpus Query Language (CQL)

Principala modalitate de realizare a căutărilor în Sketch Engine o reprezintă scrierea de interogări în formatul specificat de Corpus Query Language (CQL). Corpus Query Language e un limbaj de interogare elaborat la începutul anilor ‘90 şi dezvoltat ulterior în cadrul Corpora and Lexicons Group, IMS, de la Universitatea din Stuttgart. O interogare reprezintă o expresie regulată peste expresii-atribut.

Grafic, sunt delimitate de „;”. Operaţiile şi operatorii asociaţi sunt:

• concatenarea (se realizează prin simpla alăturare a termenilor); • disjuncţia(„|”); • iteraţia (steluţa Kleene – „*” - marchează repetarea unei secvenţe de caractere de

un număr neprecizat de ori, inclusiv 0; pentru a se forţa prezenţa cel puţin o dată a secvenţei, există operatorul „+”);

• multiplicarea (operatorul interval - {n, k} - marchează prezenţa unei secvenţe de caractere de un număr de ori între n şi k; dacă parametrul k lipseşte, n reprezintă numărul minim de apariţii ale secvenţei; dacă intervalul este de forma {n}, se aşteaptă repetarea de exact n ori a secvenţei respective).

O expresie-atribut este o expresie booleană delimitată de paranteze pătrate:

[expresie booleană]

O expresie booleană reprezintă un set de teste asupra unui atribut, combinate cu operatorii logici uzuali – conjuncţia (&), disjuncţia (|) şi negaţia (!). Pot apărea şi paranteze, utilizate în stilul clasic al limbajelor de interogare. În Word Sketch Engine, interogările pot fi generate automat prin introducerea de cuvinte în câmpurile destinate acestui lucru. Scrierea propriilor interogări oferă un mai mare control asupra expresiilor căutate şi a rezultatelor aşteptate. Fiecare element al unei interogări este încadrat de paranteze pătrate şi poate conţine o expresie oricât de complexă.

Elementele specifice căutate (de obicei, cuvântul respectiv sau tagul asociat) sunt marcate prin ghilimele. De exemplu, interogarea

[lemma = "copil"][]{0,2}[tag = "V.*"]

Page 32: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

32

va căuta toate sintagmele care conţin cuvântul „copil” (în orice formă a sa) urmat de un verb, între care se interpun maximum două alte cuvinte (poate să nu fie niciunul). Rezultatele obţinute pe corpusul SemCor sunt următoarele:

Se observă că există fraze care apar de două ori, pentru că interogarea nu a specificat tipul verbului căutat. Astfel, predicatele care conţin verbe auxiliare vor determina dubla apariţie a frazelor care le conţin în lista de concordanţe:

... copilul a vrut să facă baloane de spumă ...

... copilul a vrut să facă baloane de spumă ...

Corectitudinea rezultatele depinde în mare măsură de modul în care este adnotat corpusul. Un corpus de mari dimensiuni va conţine inevitabil şi erori, care însă, dacă sunt excepţii, nu influenţează rezultatele decât prin indicarea greşită a unei sintagme ca fiind o concordanţă.

Fig. 1.12. Concordanţe obţinute în urma interogării CQL [lemma = "copil"][]{0,2}[tag = "V.*"]. Se doreşte obţinterea tuturor acţiunilor realizate de „copil”. Pentru că nu se indică faptul că verbul căutat trebuie să fie unul predicativ, rezultatele nu sunt cele aşteptate.

Page 33: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

33

Modul de scriere al interogărilor este factorul principal care determină obţinerea sau nu a rezultatelor aşteptate. Un corpus de mari dimensiuni şi adnotat perfect nu poate fi pus în valoare decât prin realizarea unor interogări cât mai exacte.

În cazul anterior, specificarea tipului verbului (main – principal) duce la obţinerea concordanţelor dorite:

[lemma = "copil"][]{0,2}[tag = "Vm.*"]

1.3. WebBootCaT

World Wide Web-ul este imens, gratuit, disponibil la o apăsare a unui buton. Conţine sute de miliarde de cuvinte ce pot fi folosite adecvat în scopul cercetării lingvistice.

Cea mai simplă funcţie pe care o poate îndeplini este cea de verificare a ortografiei. Cum este corect, „chibrite” sau „chibrituri”? Prima căutare întoarce 32800 de rezultate, iar cea de-a doua, 153 000. Evident, forma corectă este „chibrituri”.

Fig. 1.13. Concordanţe obţinute în urma interogării CQL [lemma = "copil"][]{0,2}[tag = "Vm.*"]. Se doreşte obţinterea tuturor acţiunilor realizate de „copil”, deci se indică faptul că verbul trebuie să fie predicativ (a se vedea şi Fig. 1.12, pag. 32).

Page 34: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

34

În lucrarea „Web as Corpus”, Kilgarriff avansează ideea conform căreia web-ul poate fi privit ca un corpus uriaş. Deşi nu corespunde majorităţii definiţiilor acceptate ale „corpus” - ului, potenţialul său lingvistic nu poate fi ignorat.

Graficul prezină evoluţia numărului estimat de pagini web indexate în ultima lună de către Google, Yahoo, Windows Live (Msn) şi Ask. Estimarea este rezultatul unui proiect dezvoltat în cadrul ILK Research Group17 de la Universitatea din Tilburg, Olanda. Pe baza unui corpus se trimit interogări celor patru motoare de căutare, iar rezultatele sunt prelucrate probabilistic, astfel încât ordinea de folosire a motoarelor de căutare influenţează în mare măsură rezultatele. Chiar şi aşa, se poate determina o limită inferioară a numărului de pagini web indexate, limită care se ridică la 27.73 miliarde de pagini.

În plus, indexarea oferă informaţii privind conţinutul paginii respective. Web-ul poate fi văzut, astfel, ca un cadru oferind toate condiţiile pentru alimentarea unui corpus, nepierzând din vedere caracteristicile acestuia (dimensiuni mari şi o anumită omogenitate a conţinutului).

WebBootCaT încearcă să pună în practică această idee.

17 http://ilk.uvt.nl/

Fig. 1.14. Rezultate estimative ale numărului de pagini web indexate de principalele motoare de căutare. Studiul are la bază un algoritm în care ordinea folosirii motoarelor de căutare influenţează rezultatele obţinute. Iniţialele corespund Google (G), Yahoo (Y), Windows Live Search (W) şi Ask (A), indicând ordinea în care au fost utilizate.

Page 35: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

35

1.3.1. Descrierea aplicaţiei

WebBootCaT este un serviciu web capabil să colecteze rapid corpusuri de mari dimensiuni, folosind resurse web (documente) accesibile public. Utilitatea sa e evidenţiată mai ales în cadrul proiectelor pe termen scurt, cum ar fi realizarea unei traduceri sau pregătirea materialului didactic. Proiectul, finalizat în 2004 (Baroni et. al., 2006), are la bază următoarea idee: se selectează câţiva termeni de căutare (seeds), se trimit interogări cu aceşti termeni către Yahoo! şi se descarcă paginile rezultate în urma căutarii. Se creează, astfel, o primă versiune a corpusului, care poate fi îmbunătăţită prin compararea vocabularului cu unul de referinţă şi extragerea automată a termenilor corespunzători. Procesul poate fi iterat folosind ca termeni de căutare noile cuvinte, obţinându-se astfel un corpus specializat.

Serviciul furnizează rezultate la fel de performante indiferent de limbă sau de nivelul de pregătire al utilizatorului, singura cerinţă fiind completarea unui câmp cu un termen pe baza căruia se colectează corpusul. Fişierul rezultat este disponibil în două variante: ca un text unitar, aşa cum arată pe pagina web de pe care a fost preluat, sau direct în format WPL. Sketch Engine poate prelua direct de pe web corpusul rezultat, nefiind nevoie de descărcarea şi reîncărcarea acestuia.

Una din facilităţile oferite de WebBootCaT este lematizarea şi adnotarea automată a corpusului, pentru limbile pentru care există instrumente de procesare care pot fi integrate (cum ar fi TreeTagger18

18

, pentru engleză, franceză, germană etc.). Interfaţa este intuitivă, paşii parcurşi pentru colectarea unui corpus fiind următorii:

http://www.ims.uni-stuttgart.de/projekte/corplex/TreeTagger/

Fig. 1.15. WebBootCaT. Formularul de introducere a termenilor pe baza cărora se construieşte corpusul.

Page 36: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

36

• Utilizatorul introduce, în primul câmp, termenii pe baza cărora se realizează căutarea (seeds). Aceştia pot fi simpli (un singur cuvânt) sau mai elaboraţi (mai multe cuvinte, încadrate în ghilimele). Există şi posibilitatea încărcării unui fişier text care să conţină toţi termenii pentru care se realizează interogările.

• Se specifică limba în care se doreşte a fi corpusul. Pornind de la această informaţie,

serviciul utilizează facilitatea de identificare a limbii pusă la dispoziţie de Yahoo! pentru a realiza diverse prelucrări dependente de limbă asupra corpusului (cum ar fi lematizarea, identificarea simbolurilor sau a părţilor de vorbire). WebBootCaT poate fi folosit şi pentru limbile pentru care motorul de căutare nu oferă suport: se utilizează ca termeni de căutare cuvinte uzuale aparţinând limbii respective, iar paginile rezultate în urma căutării vor corespunde cerinţelor. Ca o consecinţă a acestui mod de funcţionare, cuvintele introduse ca termeni de căutare nu trebuie să fie cuvinte care apar uzal într-o altă limbă decât cea în care se doreşte construirea corpusului; se recomandă, în special, evitarea cuvintelor în limba engleză.

• Căsuţa Select URL permite excluderea manuală din procesul de căutare a anumitor

pagini web (utilizatorului i se prezintă o listă de URL-uri, din care poate alege să excludă o parte).

• Căsuţa Tag corpus oferă posibiliatea efectuării unor prelucrări încă din această faza

asupra corpusului: lematizare, adnotare la partea de vorbire corespunzătoare. Facilitatea e disponibilă, momentan, pentru limbile suportate de TreeTagger (engleză, franceză, germană, italiană, spaniolă etc.).

Fig. 1.16. WebBootCaT. Formularul permite specificarea unor opţiuni legate de corpusul care urmează să fie colectat. Căsuţa Select URLs, bifată în exemplu, indică faptul că utilizatorul va putea exclude, din rezultatele căutării WebBootCaT, paginile web care nu vor fi utilizate pentru colectarea corpusului.

Page 37: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

37

• Ultimele două câmpuri sunt utilizate pentru a se specifica un nume pentru corpus şi o adresă de e-mail la care se trimite o notificare în momentul finalizării colectării corpusului.

Procesul descris începe odată cu apăsarea butonului Build a corpus!. Utilizatorului i se prezintă o pagină de monitorizare a operaţiilor. Durata procesului variază în funcţie de numărul termenilor specificaţi şi al URL-urilor, în funcţie de conexiunea la Internet şi de site-urile ţintă. În general, timpul necesar e de ordinul minutelor (sub 5 minute de obicei, însă poate urca până la peste 20, atunci când conexiunea la Internet este lentă, când se introduc mulţi termeni de bază sau traficul pe site-urile accesate este ridicat).

1.3.2. Detalii de procesare

Odată introduse datele de către utilizator, se iniţiază un proces care presupune parcurgerea mai multor etape:

• Se realizează permutări ale termenilor de căutare, pentru a fi trimise ulterior către Yahoo!. Un apel standard al serviciului va trimite către motorul de căutare 10 interogări, fiecare conţinând un triplet de termeni de căutare selectaţi aleatoriu.

• Fiecare căutare Yahoo! întoarce până la 100 de contexte în care se găsesc aceşti

termeni. Dintre acestea, sunt alese cele mai relevante 10 contexte.

Fig. 1.17. Rezultatele obţinute cu WebBootCaT pentru termenii „carte” şi „scrie”. Paginile corespunzătoare căsuţelor marcate vor fi utilizate pentru colectarea corpusului.

Page 38: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

38

• Se formează astfel o colecţie de pagini, incluzându-le şi pe cele pentru care nu se primeşte un răspuns în timp util (precizându-se acest lucru).

• Empiric s-a observat că, în cele mai multe cazuri, paginile care sunt fie foarte scurte,

fie foarte lungi, nu conţin text util pentru crearea unui corpus. Prin urmare, acestea sunt eliminate. Sunt considerate a fi „foarte scurte” paginile cu dimensiuni sub 5 kB, iar „foarte lungi”, cele de peste 2 MB.

• Paginile duplicate (sau cele foarte asemănătoare) sunt eliminate. • Paginile rămase sunt prelucrate în scopul eliminării tuturor elementelor inutile (cod

HTML, JavaScript, bare de navigare etc.). • Textul e transformat apoi în flux de caractere reprezentând cuvinte, punctuaţie etc. • Corpusul e lematizat şi adnotat (în cazul în care utilizatorul a optat pentru această

prelucrare, şi dacă limba respectivă e suportată de POS-taggerul disponibil).

Rezultatele procesării pot fi vizualizate imediat, acestea fiind expediate şi via e-mail. Corpusul poate fi descărcat în două variante: textul normal - fără prelucrări, şi textul în format „vertical” – un cuvânt pe linie, la care se adaugă adnotările corespunzătoare opţiunilor utilizatorului (lema, partea de vorbire). Sketch Engine oferă, de asemenea, posibilitatea vizualizării textului.

Fig. 1.18. Informaţii privind corpusul colectat de WebBootCaT.

Page 39: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

39

2. Corpusul românesc

Pe parcursul testării aplicaţiei şi dezvoltării regulilor gramaticale, s-au folosit mai multe corpusuri româneşti, de dimensiuni şi caracteristici diferite.

Primul, din punct de vedere cronologic, a fost construit pe baza traducerii romanului „1984” al lui George Orwell.

Al doilea este derivat din varianta română a corpusului „SemCor” (o colecţie de 352 de texte, creată la Universitatea Princeton). Traducerea s-a realizat la Universitatea „Alexandru Ioan Cuza” din Iaşi.

După prelucrarea celor două corpusuri, dimensiunile acestora nu depăşesc 200 000 de simboluri. Acesta a fost unul din motivele pentru care s-a optat pentru utilizarea unui al treilea corpus, creat pe baza romanului „Cel mai iubit dintre pământeni”, de Marin Preda şi intitulat „Fragmente”. Pe lângă dimensiunea apreciabilă (aproape 500 000 simboluri, adică maximum permis de Sketch Engine), un argument în plus îl reprezintă faptul că, spre deosebire de celelalte texte, romanul nu este o traducere. Limbajul surprinde perfect situaţiile care pot să apară în limba română, atât în comunicarea scrisă, cât şi în cea verbală (prin secvenţe de dialog între personaje).

Iniţial, studiul a urmat colectarea unui corpus cu WebBootCaT, însă ideea a fost abandonată din mai multe motive. Dimensiunile textelor variau mult, în funcţie de termenii introduşi ca seed, însă nu depăşeau 65000 de cuvinte (ca limită inferioară, 2000 de cuvinte). Aceasta ar fi presupus realizarea mai multor căutări, colectarea mai multor corpusuri şi unirea lor. Cuvintele de bază ar fi trebuit să fie, însă, diferite, pentru că aceleaşi cuvinte generează aceleaşi pagini din partea motorului de căutare Yahoo!. Cuvinte de bază diferite înseamnă, deja, o alterare a omogenităţii corpusului. Problema ar fi putut fi rezolvată (introducerea de cuvinte din acelaşi domeniu sau câmp semantic etc.), însă obstacolul peste care nu s-a putut trece l-a reprezentat calitatea textelor găsite. Multe din paginile web de pe care este colectat corpusul sunt bloguri, articole din ziare însoţite de comentarii ale cititorilor, şi chiar forumuri. Condiţiile minime impuse la construirea unui corpus – textul să fie corect din punct de vedere gramatical şi lipsit de cuvinte aparţinând altor limbi – nu ar mai fi fost respectate. S-a ales, astfel, varianta construirii corpusului pe baza romanului „Cel mai iubit dintre pământeni”.

2.1. Colectare. Structură.

Într-o primă formă, atât „1984”, cât şi „SemCor”, erau corpusuri paralele, conţinând text în limbile engleză şi română.

Fişierele XML în care se aflau aveau următoarea structură:

Page 40: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

40

<?xml version = '1.0'?>

<!DOCTYPE >

<text> <body>

<tu> <seg lang = "en">

<s > <w> </w> <w> </w> <c> </c>

</s> </seg> <seg lang = "ro">

<s> <w> </w> <c> </c>

</s> </seg>

</tu> </body>

</text> Fiecare unitate de text (Text Unit) este delimitată de tagurile <tu> </tu> şi conţine două segmente de text; primul este în limba engleză, iar cel de-al doilea reprezintă traducerea conţinutului său în limba română (sunt marcate prin tagurile <seg> </seg>). Tagurile <tu> au ataşat un număr de identificare, reprezentând indicele apariţiei unităţii respective în cadrul textului.

Segmentele conţin un identificator al limbii, specificat ca atribut al tagului <seg>. De exemplu, <seg lang = "ro"> indică un fragment de text în limba română.

În interiorul fiecărui segment de limbă se află tagurile <s> </s>, ce încadrează o frază. Acestea conţin atributul id, un identificator unic al fiecărei fraze. De exemplu, prima frază a corpusului SemCor este precedată de tagul <s id = "br-a01.1.1.en">. Identificatorul oferă şi alte informaţii despre fraza respectivă: localizarea sa în cadrul corpusului, limba în care este scrisă.

Tagurile <w> </w> încadrează fiecare cuvânt şi sunt cele mai complexe din punct de vedere ale meta-informaţiilor furnizate. Corpusul „1984” conţine adnotări la lemă (lemma), analiza morfo-sintactică (ana) şi analiza sintactică (chunk19

19 Cunoscută şi sub denumirea de light parsing, chunking-ul reprezintă o analiză asupra frazei care identifică fiecare constituent, fără a specifica însă structura internă sau rolul pe care îl are în propoziţie. Conceptul este similar celui de „analiză lexicală” întâlnit la limbajele de programare.

). „SemCor” oferă

Page 41: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

41

câteva informaţii în plus: sensuri din WordNet20

20 O bază de date lexicală creată la Universitatea Princeton. Părţile de vorbire sunt grupate în seturi de sinonime cognitive, fiecare exprimând un concept diferit.

(wns) şi legături (head). De exemplu, în fraza

„Întrebarea reală care urmează este cum sunt aceşti patru ani folosiţi şi care este valoarea lor ca pregătire?”

cuvântul „valoarea” are ataşate următoarele informaţii:

<w lemma = "valoare" ana = "1+,Ncfsry" chunk = "Np#3" wns = "ili:ENG20-04872276-n" head = "14">valoarea</w>

Tagurile <c> </c> nu conţin alte atribute şi sunt folosite pentru a marca prezenţa unui semn de punctuaţie.

O unitate de text aparţinând corpusului „1984” arată astfel:

<tu id = "4"> <seg lang = "en">

<s id = "Oen.1.1.2.4"> <w lemma = "Winston" ana = "8+,NNP" chunk = "Np#1">Winston</w> <w lemma = "make" ana = "1+,PAST" chunk = "Vp#1">made</w> <w lemma = "for" ana = "5+,PREP" chunk = "Pp#1">for</w> <w lemma = "the" ana = "2+,DM" chunk = "Pp#1,Np#2">the</w> <w lemma = "stair" ana = "1+,NNS" chunk = "Pp#1,Np#2">stairs</w> <c>.</c>

</s> </seg> <seg lang = "ro">

<s id = "Oro.1.2.3.3"> <w lemma = "Winston" ana = "8+,NP" chunk = "Np#1">Winston</w> <w lemma = "sine" ana = "12+,PXA" chunk = "Vp#1">se</w> <w lemma = "&icirc;ndrepta" ana = "1+,V3" chunk =

"Vp#1">&icirc;ndrept&abreve; </w> <w lemma = "c&abreve;tre" ana = "5+,S" chunk = "Pp#1">c&abreve;tre</w>

<w lemma = "scar&abreve;" ana = "1+,NPN" chunk = "Pp#1,Np#2">sc&abreve;ri</w> <c>.</c>

</s> </seg>

</tu>

http://wordnet.princeton.edu/

Page 42: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

42

„Cel mai iubit dintre pământeni” nu avea iniţial structura unui corpus, fiind un text literar – un roman în trei volume, fiecare volum conţinând mai multe părţi, formate din subcapitole.

2.2. Statistici iniţiale

Înainte de prelucrare, corpusul „1984” cuprindea aproximativ 250 000 de simboluri (tokens) în limba română.

Fişierul XML, în care se aflau atât textul în engleză, cât şi traducerea sa în română, conţinea peste 32 000 linii şi 11,8 milioane caractere.

Dimensiunile „SemCor” erau considerabil mai mari: 800 000 de simboluri pentru limba română, un fişier XML cu peste 41 000 linii şi 25 milioane de caractere.

Simboluri

Linii Caractere

„1984” 250 000 32 087 11 822 413 „SemCor” 800 000 41 411 25 001 339

„Cel mai iubit dintre pământeni” 2 254 2 116 132 Tab 2.1. Caracteristici iniţiale ale celor trei corpusuri

Prelucrările ulterioare au redus considerabil dimensiunile corpusurilor considerate iniţial („1984” şi „SemCor”), astfel încât a fost nevoie de un al treilea corpus, care să conţină un număr suficient de mare de simboluri.

„Cel mai iubit dintre pământeni” avea la început doar ceva mai mult de 2 milioane de caractere şi 2000 de linii. Spre deosebire de celelalte două corpusuri, însă, textul nu conţinea adnotări şi taguri (care, în cazul primelor două corpusuri, au fost eliminate, reducându-le vizibil dimensiunile).

2.3. Prelucrare

Pentru a putea fi analizate cu Sketch Engine, corpusurile trebuie să se afle în fişiere text în format WPL şi să fie adnotate la lemă şi partea de vorbire.

Corpusurile „1984” şi „SemCor” au trecut prin mai multe etape de prelucrare pentru a îndeplini aceste condiţii:

• eliminarea tagurilor şi a adnotărilor poziţionale vechi (prin intermediul expresiilor regulate scrise în Perl);

Page 43: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

43

• împărţirea textului în mai multe fişiere text în format UTF8, de dimensiuni mai mici; • trimiterea acestor fişiere, ca parametru, unui program Java, care să apeleze serviciul

web TTL (care va fi prezentat în capitolul 3.3.1); • adnotarea corpusului la lemă şi partea de vorbire, realizată de către TTL; • preluarea de către aplicaţia Java a rezultatelor furnizate de serviciul web; • refacerea fişierului adnotat corespunzător, pentru a putea fi încărcat în Sketch Engine.

Prima etapă a fost realizată prin intermediul unui script în limbajul Perl. Adnotarea a fost adăugată de către serviciul web TTL, iar pentru comunicarea cu acesta a fost nevoie de o aplicaţie scrisă în Java.

2.3.1. Fişierul Perl

Eliminarea adnotărilor poziţionale şi a tagurilor s-a realizat prin intermediul expresiilor regulate scrise în Perl.

S-a folosit versiunea Perl 5.8.8 instalată pe serverul fenrir.

În cazul corpusurilor „1984” şi „SemCor”, expresiile regulate au avut în vedere: eliminarea tagurilor şi a secvenţelor de text în limba engleză, inserarea unor adnotări structurale care să marcheze prezenţa fiecărei fraze (taguri <s> </s>), inserarea de caractere end-of-line (“\n”) pentru ca textul să conţine câte o frază pe fiecare linie, eliminarea spaţiilor inutile.

Eliminarea tagurilor, de exemplu, s-a realizat prin expresia regulată:

$text =~ s/<(\/)?[^w][^>\/]*>//g;

Variabila $text este un şir de caractere rezultat prin concatenarea tuturor liniilor fişierului formatat. Prezenţa caracterului „s” indică faptul că expresia aflată între primul set de caractere „/../” va fi înlocuită prin expresia încadrată de al doilea set de astfel de caractere. Simbolul „g” de la sfârşit forţează aplicarea expresiei în toate situaţiile posibile (lipsa acestuia ar fi dus la oprirea căutării în momentul găsirii unei construcţii care să se potrivească expresiei regulate). Secvenţa „<(\/)?[^w][^>\/]*>” desemnează toate şirurile de caractere incluse într-un tag (pentru că încep prin caracterul < şi se termină cu >), fie că sunt taguri iniţiale sau finale (conţin sau nu caracterul „/”). Condiţia de limitare la un tag este specificată prin excluderea caracterelor „>” şi „/” din conţinutul şirului (indicată de „^”). De asemenea, au fost excluse din căutare tagurile <w> şi </w>, a căror eliminare necesită inserarea unui spaţiu pentru delimitarea cuvintelor. Caracterul „/” este

Page 44: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

44

simbol rezervat, motiv pentru care prezenţa sa în cadrul unei expresii trebuie precedată de „\”. Nu este specificată nicio expresie care să o înlocuiască pe cea găsită, prin urmare construcţiile care corespund şablonului sunt eliminate (înlocuite printr-o secvenţă care nu conţine niciun caracter).

Fig. 2.1. Fragment din fişierul Perl care conţine scriptul folosit pentru formatarea corespunzătoare a corpusurilor. Conectarea la serverul fenrir – pe care este instalată versiunea Perl 5.8.8 – s-a realizat prin intermediul aplicaţiei PuTTY21

21

.

Corpusul „Cel mai iubit dintre pământeni” a necesitat aceleaşi transformări, exceptând eliminarea tagurilor şi a adnotărilor poziţionale. În plus, marcajul uzual al limbajului direct – linia de dialog – a fost înlocuit de încadrarea construcţiei respective între ghilimele. O altă etapă în plus a reprezentat-o eliminarea numerotărilor corespunzătoare capitolelor şi subcapitolelor.

De exemplu, înlocuirea liniei de dialog prin ghilimele s-a realizat astfel:

$text =~ s/^-(.*)$/"\1"/g;

http://www.chiark.greenend.org.uk/~sgtatham/putty/

Page 45: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

45

S-au căutat toate construcţiile aflate la începutul unui paragraf (după simbolul end-of-line). În această situaţie, „^” indică începutul unei linii, iar caracterul „$”, sfârşitul. Secvenţa delimitată de parantezele rotunde – adică textul din care s-a eliminat linia de dialog – va fi înlocuită printr-o expresie care conţine însăşi textul încadrat de ghilimele ("\1", unde \1 desemnează şirul de caractere dintre paranteze – „.*”).

Inevitabil, au apărut şi probleme la scrierea propriu-zisă a expresiilor regulate. Înainte de a fi aplicate pe fişier, acestea au fost testate pe texte de mici dimeniuni. De multe ori, textele nu conţineau toate situaţiile care puteau să apară, iar aplicarea expresiei pe corpus conducea la rezultate nedorite.

Eliminarea tagurilor a dus la apariţia unor situaţii în care semnele de punctuaţie sunt înconjurate fie de prea multe, fie de prea puţine spaţii libere. La o primă vedere, acestea puteau fi eliminate prin intermediul unor expresii regulate simple (de exemplu, fiecare secvenţă formată din mai multe spaţii consecutive să fie înlocuită de un singur spaţiu). Prezenţa diacriticelor a determinat, însă, apariţia altor probleme ce au dus la necesitatea scrierii unor expresii regulate mai complexe, descrise în cele ce urmează.

În cazul primelor două corpusuri, diacriticele au fost codificate în sistemul hexazecimal utilizat de fişierele în format XML. De exemplu, caracterul „ă” este codificat prin &abreve; , unde abreve ia valoare #x0103. Atunci când apare în interiorul unui cuvânt, adică este urmat de un caracter şi nu de un spaţiu, poate genera confuzii: sc&abreve;ri . Este vorba despre cuvântul „scări”, iar identificarea sa ridică probleme, pentru că sunt două situaţii posibile care conţin caracterul „;”: fie face parte din codificarea unei litere „ă” aflate în interiorul unui cuvânt, fie este un semn de punctuaţie care, în mod eronat, nu a fost despărţit prin spaţiu de cuvântul care urmează. Expresia regulată care a dus la identificarea corectă a caracterului „;” şi adăugarea unui spaţiu, dacă apare în situaţia a doua descrisă anterior, este:

( [^( &.*)]+); , înlocuită prin „\1; ”

unde \1 reprezintă şirul de caractere care s-a potrivit şablonului cuprins între paranteze. Situaţiile-candidat sunt cele în care caracterul „;” apare precedat de cel puţin un simbol, care nu este nici, &, nici un şir de caractere care încep cu &.

Mai dificilă a fost identificarea situaţiilor în care ghilimelele sunt plasate greşit (cu spaţii în plus sau în minus faţă de cum ar trebui aşezate). Pentru eliminarea acestor cazuri, s-au folosit două expresii regulate. Prima din ele găseşte ghilimelele de la sfârşitul unei sintagme care nu sunt despărţite prin spaţiu de cuvântul care le succede.

([^ ])"([^",.;?! ]+)( [^"]+) , înlocuită prin \1" \2\3

A doua expresie tratează cazul în care cuvântul următor începe cu un diacritic.

(&[^ ]*;)"& , înlocuită prin \1" &

Page 46: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

46

Corpusul rămas în urma înlăturării tagurilor conţine doar text încadrat de taguri de tipul <s> </s>, asociate fiecărei fraze.

Textul a fost distribuit apoi în mai multe fişiere de dimensiuni mai mici, pentru a putea fi prelucrate de serviciul web oferit de RACAI, prin intermediul unui program Java. Au rezultat 20 de fişiere pentru corpusul „1984”, 24 pentru „SemCor” şi 27 pentru „Cel mai iubit dintre pământeni”.

Operaţiile cu fişiere – împărţirea textului şi concatenarea fişierelor rezultate de la TTL - s-au realizat manual, pentru a controla dimensiunea fiecărui fişier, pentru a elimina riscul unor erori de citire sau scriere în fişier şi a observa eventualele greşeli de adnotare.

2.3.3. TTL Formatarea corpusului a fost realizată de serviciul web TTL, una din resursele de procesare lingvistică puse la dispoziţie de către RACAI (Research Institute for Artificial Intelligence of the Romanian Academy).

TTL (Ion, 2007) a fost dezvoltat ca un program integrat de segmentare la nivel de propoziţie şi cuvânt şi adnotare morfo-sintactică. Modulul este scris în Perl şi adaptat ca serviciu web prin intermediul SOAP::Lite22 şi POD::WSDL23

Serviciul integrează mai multe procese. Primul dintre acesta este Named Entity Recognition, care localizează şi clasifică elementele atomice ale textului într-o serie de categorii predefinite, cum ar fi date temporale, cantităţi, valori monetare, procentaje etc. Operaţia se realizează prin intermediul expresiilor regulate. Ulterior, textul este împărţit în propoziţii (Sentence Splitting) şi sunt detectate simbolurile (tokenization). Textul este adnotat, apoi, la partea de vorbire, folosind o tehnologie care se bazează pe HMM (Brants, 2000) şi implementează ideea de Tiered Tagging (dezambiguizarea cu două niveluri, bazată pe metoda maximizării entropiei. Tufiş, 1999) . Setul de taguri utilizat este CTAG, un subset al MSD

.

24

Interfaţa permite introducerea unui text sau specificarea unei arhive .zip în care se găseşte acesta. Utilizatorul poate opta pentru realizarea a două operaţii asupra corpusului: verificarea corectitudinii redactării (spell checking) şi adnotarea la lemă.

. Lematizarea este realizată prin căutare lexicală (în general, o formă a unui cuvânt şi partea de vorbire asociată acestuia identifică în mod unic lema respectivă). În final, propoziţiile sunt analizate sintactic şi fiecărui termen îi este asociat un chunk (o adnotare corespunzătoare rezultatului analizei).

TTL este dotat şi cu o interfaţă grafică, prin care textul poate fi prelucrat fără a fi nevoie de invocarea prin intermediul vreunei aplicaţii a serviciului web.

22 http://www.soaplite.com/ 23 http://search.cpan.org/dist/Pod-WSDL/ 24 http://nl.ijs.si/ME/V2/msd/

Page 47: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

47

Rezultatele sunt disponibile instantaneu. Textul este afişat în format WPL, fiecare linie conţinând cuvântul, analiza lexicală şi lema.

În cazul în care lipsesc diacritice, acestea sunt inserate automat. Situaţiile de ambiguitate sunt tratate prin afişarea tuturor variantelor. De exemplu, fraza lipsită de diacritice

„Nu poti spala cu lacrimi un rau profund”

va fi prelucrată astfel:

Nu Qz nu poţi Vmm-2s putea

Fig. 2.3. Rezultatele prelucrării cu TTL a textului introdus. Formatul textului este word-per-line, fiecărui cuvânt fiindu-i asociate analiza lexicală şi lema corespunzătoare (a se vedea şi Fig. 2.2, pag. 47) .

Fig. 2.2. Interfaţa grafică a serviciului web TTL oferit de RACAI. Textul introdus urmează a fi formatat şi adnotat la lemă şi partea de vorbire (a se vedea şi Fig. 2.3, pag. 47).

Page 48: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

48

spăla Vmnp spăla cu Spsa cu lacrimi Ncfp-n lacrimă un Timsr un rau Ncms-n rău|râu profund Afpms-n profund . . .

Adaptarea aplicaţiei ca serviciu web se realizează prin apelul unei interfeţe standard RPC25 (Remote Procedure Call) implementate cu SOAP::Lite. API26-ul serviciului web este descris prin WSDL27

2.3.2. Aplicaţia Java Comunicarea cu TTL se realizează prin intermediul unei aplicaţii scrise în Java. Conţinutul fişierele rezultate în urma prelucrării manuale a corpusului este preluat de aplicaţie şi trimis serviciului web, pentru a fi adnotat corespunzător. Rezultatele întoarse de acesta sunt stocate de către programul Java în fişiere UTF8 care pot fi consultate ulterior. Programul primeşte ca parametru numele unui fişier în care se găsesc denumirile fişierelor care conţin corpusul şi un prefix pentru fişierele în care vor fi depozitate rezultatele.

Aplicaţia utilizează facilităţile puse la dispoziţie de mediul NetBeans pentru lucrul cu serviciile web. Programul, denumit „Corpus” este implementat ca un client pentru serviciul TTL şi conţine metode pentru citirea, scrierea şi procesarea fişierelor.

Numele serviciului web este specificat prin intermediul unui obiect de tip ro.racai.nlp.TextProcessingWebService.

(Web Services Description Language).

Împreună, SOAP şi WSDL fac posibilă integrarea serviciului web în orice aplicaţie, cunoscut fiind URL-ul fişierului WSDL corespunzător.

Marele avantaj al conceptului de serviciu web este că aplicaţia nu rulează pe maşina utilizatorului, ci pe cea care găzduieşte respectivul serviciu. Utilizatorul nu este nevoit să descarce sau să adapteze aplicaţia. Există medii de dezvoltare integrate (cum ar fi, de exemplu, Microsoft Visual Studio, pentru C# sau NetBeans, pentru Java) care sunt capabile să preia, prin intermediul fişierului WSDL, toate datele necesare comunicării cu serviciul web.

25 http://tools.ietf.org/html/rfc1831 26 Application Programming Interface 27 http://www.w3.org/TR/wsdl

Page 49: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

49

Este apelată apoi metoda getTextProcessingWebServiceSoap(), pentru a se obţine portul la care este disponibil serviciu. Rezultatul este stocat într-un obiect de tipul ro.racai.nlp.TextProcessingWebServiceSoap.

ro.racai.nlp.TextProcessingWebService service = new ro.racai.nlp.TextProcessingWebService();

ro.racai.nlp.TextProcessingWebServiceSoap port = service.getTextProcessingWebServiceSoap();

Denumirile fişierele al căror conţinut urmează a fi trimis spre TTL sunt determinate prin intermediul metodei filesToBeProcessed (String fileName), care primeşte ca parametru numele unui fişier şi stochează într-o listă toate denumirile de fişiere găsite în interiorul acestuia.

public static ArrayList filesToBeProcessed(String fileName) { ArrayList files = new ArrayList(); File file = new File(fileName); FileInputStream fis = null; InputStreamReader isr = null; BufferedReader br = null; try { fis = new FileInputStream(file); isr = new InputStreamReader(fis,"UTF8"); br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { files.add(line); } fis.close(); isr.close(); br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return files; } Pentru fiecare fişier din listă, este preluat conţinutul şi trimis serviciilor TTL, prin invocarea metodei process:

java.lang.String result = port.process(text, lemmatize, proofing);

Page 50: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

50

Citirea conţinutului unui fişier se realizează prin apelul metodei readFromFile(String fileName), parametru trimis fiind numele fişierului. Metoda întoarce un obiect de tip String (liniile citite din fişier şi concatenate).

Textul rezultat, stocat în obiectul String result, este scris în fişierul de ieşire corespunzător.

java.lang.String result = port.process(text, lemmatize, proofing); De remarcat este codificarea în format UTF8 atât a fişierelor care vor fi trimise serviciului web, cât şi a fişierelor care vor conţine rezultatele. Aceasta se realizează prin transformarea fluxului de biţi în caractere prin intermediul unor obiecte de tipul InputStreamReader şi OutputStreamReader, care permit specificarea codificării caracterelor.

Timpii de prelucrare (pentru fragmentele aparţinând celor trei volume) oferă un argument suficient pentru împărţirea corpusului în mai multe fişiere:

BUILD SUCCESSFUL (total time: 24 minutes 32 seconds)

BUILD SUCCESSFUL (total time: 22 minutes 14 seconds)

BUILD SUCCESSFUL (total time: 13 minutes 48 seconds)

După obţinerea tuturor fragmentelor de corpus în format şi codificare corespunzătoare, acesta este reconstituit manual pentru a putea fi analizat cu Sketch Engine.

Page 51: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

51

3. Reguli pt limba română

Pentru analiza corpusului românesc, a fost nevoie de construirea unei gramatici care să reflecte relaţiile care se stabilesc între cuvinte.

Spre deosebire de limba engleză, în limba română topica părţilor de propoziţie este mai puţin strictă. Gradul sporit de flexibilitate ridică probleme în procesul de identificare şi captare a automatismelor, fiind nevoie, în general, de mai multe reguli pentru definirea unei relaţii, pentru a acoperi toate situaţiile posibile.

De exemplu, poziţionarea subiectului faţă de predicat este diferită în funcţie de tipul propoziţiei care le conţine. Chiar şi aşa, nu există o regulă generală, un exemplu relevant fiind cel al propoziţiile subordonate. În cadrul acestora, ordinea părţilor de propoziţie depinde şi de elementul introductiv. Situaţia este ilustrată de propoziţiile:

Mi-a spus că drumul se bifurcă la un moment dat.

Ştie unde se află clădirea.

În primul caz, propoziţia subordonată este introdusă prin conjuncţia „că”, iar subiectul („drumul”) se află înaintea predicatului („se bifurcă”). În cea de-a doua situaţie, un adverb relativ (cu funcţia sintactică de complement circumstanţial de loc) introduce propoziţia subordonată „unde se află clădirea”, determinând inversarea locului subiectului şi predicatului (predicatul „se află” este înaintea subiectului „clădirea”).

Lucrarea se axează pe analiza sintactică a substantivului, verbului şi adjectivului. Pentru descrierea situaţiilor în care se pot afla acestea, a fost nevoie şi de definirea şi uneori, de analiza altor părţi de vorbire (adverbul, numeralul, prepoziţia etc.).

Gramatica este compusă din 25 de reguli şi 68 de şabloane. Spre comparaţie, gramatica limbii cehe, cea mai performantă dintre cele construite, conţine 23 de reguli. Avantajul pe care îl are este acela că dispune de un set de etichete (taguri) care permit identificarea exactă a fiecărei categorii gramaticale şi realizarea de comparaţii între valorile acestora.

Primul pas în scrierea gramaticii îl constituie definirea părţilor de vorbire. Aceasta se realizează prin intermediul macro-urilor în limbajul m4. Fiecărei părţi de vorbire i se asociază o expresie regulată, conform specificaţiilor MULTEXT-East Morphosyntactic (MEM), versiunea 3.0. De exemplu, macro-ul

define(`verb', `[tag = "V.*"]')

defineşte un verb ca fiind un cuvânt a cărui etichetă (tag) este un şir de caractere care conţine litera „V” pe prima poziţie, urmată de oricâte alte simboluri alfanumerice.

Page 52: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

52

Definiţia se limitează la a semnala prezenţa unui verb, fără a specifica vreo altă informaţie legată de acesta, utilă din punct de vedere al analizei lexicale (cum ar fi modul, timpul, persoana etc). Pentru descrierea relaţiilor pe care le stabileşte cu alte cuvinte, este nevoie să se cunoască detalii suplimentare. De exemplu, un verb nu poate avea funcţia sintactică de predicat decât dacă este la un mod predicativ. S-au definit, astfel, patru categorii de verbe, corespunzând notaţiilor disponibile în formatul MEM 3.0 (main, auxiliary, modal, copula):

define(`verb_principal', `[tag = "Vm.*"]')

define(`verb_auxiliar', `[tag = "Va.*"]')

define(`verb_modal', `[tag = "Vo.*"]')

define(`verb_copulativ', `[tag = "Vc.*"]')

Au fost definite doar o parte din părţile de vorbire (cele utilizate mai des): substantivul, verbul, adjectivul, pronumele, articolul şi „particula”, o denumire utilizată de MEM pentru a desemna cuvintele auxiliare care intră în alcătuirea unei părţi de propoziţie („nu”, „a”, „să”, „fi”, „o”) . Marcarea lui „fi” ca particulă a generat o serie de probleme în procesul de construcţie a gramaticii, pentru că această etichetarea nu este consistentă în măsura în care ar trebui să fie: „fi” este şi particulă, şi verb auxiliar.

Celelalte părţi de vorbire au fost identificate prin asocierea unui atribut cu o expresie regulată. De exemplu, în relaţia

=grad_de_comparatie_format_prin 2:[tag = "R[gp].*"] 1:adjectiv

adjectivul este specificat prin intermediul unui şablon, iar adverbul, prin specificarea valorii atributului tag: [tag = "R[gp].*"].

Contextul ilustrează o altă situaţie în care nu au putut fi folosite şabloane şi s-a recurs la scriere directă a expresiilor regulate: atunci când trebuie specificate valorile mai multor categorii gramaticale asociate unei părţi de vorbire. În acest caz, adverbul poate să fie unul de tip „general (g)” sau „particulă (p)”. Scrierea unor şabloane care să surprindă toate combinaţiile posibile nu ar fi fost justificată din punct de vedere al raportului cantitate de şabloane / calitate a rezultatelor obţinute.

Au fost definite, ulterior, macro-uri care să ilustreze anumite constrângeri între două sau mai multe părţi de vorbire.

Macro-urile sunt mai complexe decât cele descrise de gramatica limbii engleze, de exemplu, pentru că în limba română un factor important în identificarea unei relaţii între cuvinte îl reprezintă acordul dintre acestea. Acordul se realizează între mai multe

Page 53: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

53

categorii gramaticale ale unei părţi de vorbire, de aceea s-a recurs la scrierea unor şabloane parametrizate, pentru a acoperi toate situaţiile posibile.

Dacă în limba engleză este suficientă o regulă de forma

any_adjective any_noun

pentru a defini un adjectiv care determină un verb, limba română necesită acoperirea mai multor situaţii:

• substantiv, adjectiv – număr singular "N..s.*" – "A...s.*"; • substantiv, adjectiv – număr plural "N..p.*" – "A...p.*"; • substantiv, adjectiv – gen feminin "N.f.*" – "A..f.*"; • substantiv, adjectiv – număr singular, gen feminin "N.fs.*" – "A..fs.*" • ...

Un prim set de şabloane descriu, deci, acordurile dintre substantive şi/sau adjective şi verbe. În mod evident, scrierea tuturor cazurilor posibile ar fi fost extrem de ineficientă. Soluţia găsită a fost utilizarea parametrilor în expresiile regulate care desemnează fiecare parte de vorbire. Astfel, acordul dintre un adjectiv şi un substantiv poate fi rezumat mult mai simplu:

"N.$1$2$3.*" – "A..$1$2$3.*"

Se specifică, astfel, că valoarea de pe poziţia a treia din cadrul primei expresii trebuie să coincidă cu valoarea de pe poziţia a patra din cadrul celei de-a doua expresii etc. Poziţiile indicate de parametri corespund, în ordine, genului, numărului şi cazului. În unele situaţii, valoarea atributului este irelevantă (de exemplu, când valoarea este aceeaşi în toate contextele). Specificaţiile MEM utilizează caracterul „-” pentru etichetarea acestor valori. Astfel, dacă un genul unui substantiv poate să fie feminin, masculin sau neutru, mai trebuie avută în vedere şi situaţia în care valoarea asociată acestuia este „-”.

define(`acord_adj_subst', `[tag = "R.*"]? (1:[tag = "A..$1$2$3.*" | tag = "Dd.$1$2$3.*"] articol? 2:[tag = "N.$1$2$3.*"]) | (articol? 2:[tag = "N.$1$2$3.*"] [tag = "R.*"]? 1:[tag = "A..$1$2$3.*" | tag = "Dd.$1$2$3.*"])') Macro-ul identifică situaţiile în care un adjectiv (sau un pronume adjectival), care poate fi precedat de un adverb, este situat anterior sau posterior unui substantiv precedat, eventual, de un articol.

Similar, au fost definite şabloane pentru identificarea altor situaţii în care este necesară realizarea acordului între substantive, adjective şi verbe.

Cele mai complexe macro-uri sunt cele folosite pentru determinarea relaţiei subiect – predicat verbal. Au fost definite şapte şabloane care să acopere cât mai bine toate cazurile

Page 54: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

54

posibile. Situaţiile tratate au fost cele în care substantivul apare pe primul loc în propoziţie şi este despărţit sau nu de predicat printre-o construcţie cu valoare explicativă, cele în care subiectul nu este pe primul loc, însă nu conţine în imediata sa vecinătat, în partea stângă, prepoziţii sau verbe, precum şi situaţiile în care predicatul se află poziţionat înaintea subiectului (în propoziţiile subordonate introduse prin adverbe).

O altă grupare de şabloane le include pe cele care definesc serii formate din părţi de vorbire de acelaşi tip - enumeraţii. Sunt identificate substantivele, adjectivele şi verbele.

O relaţie importantă pentru construirea de tezaure o reprezintă sintagmele „şi_sau”. Acestea conţin părţi de vorbire care pot fi considerate simetrice, fie pentru că sunt de acelaşi tip, fie pentru că au aceeaşi valoare semantică în cadrul unei fraze - de exemplu, un substantiv şi o propoziţie substantivală.

Oricine utilizează un dicţionar al unei limbi străine, va fi pus în situaţia de a căuta sensul cel mai potrivit al unui cuvânt în funcţie de prepoziţia care îl însoţeşte. Aceasta este, de multe ori, un indiciu esenţial în determinarea corectă a înţelesului cuvântului. În limba română, prepoziţiile pot fi văzute, de multe ori, ca identificatori pentru funcţiile părţilor de vorbire. De exemplu, un complement direct este adesea precedat de prepoziţia „pe”.

Fig. 3.1. Rezultate obţinute cu funcţia Word Sketch pentru lema „vedea”. Relaţia identificată este cea de „verb succedat de prepoziţia pe”.

Page 55: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

55

Relevante, în acest sens, sunt chiar rezultatele obţinute cu ajutorul funcţiei Word Sketch. 36 din cele 48 de contexte conţin un complement direct precedat de prepoziţia „pe”.

Adnotarea pusă la dispoziţie de MEM nu identifică foarte clar tipurile de prepoziţii, singurele informaţii pe care le oferă fiind legate de tip – simple sau compuse - şi de caz. Pentru determinarea complementelor circumstanţiale, au fost definite şabloane care înglobează prepoziţiile specifice fiecărui tip de complement. Cele opt şabloane conţin prepoziţii sau locuţiuni prepoziţionale care, incluse în expresiile ce descriu o frază, fac posibilă identificarea complementelor circumstanţiale din cadrul acesteia.

Au fost definite, de asemenea, macro-uri pentru excluderea unor construcţii din anumite expresii (de exemplu, prepoziţia „la” indică aproape întotdeauna o direcţie, marcând astfel un complement circumstanţial de loc; prepoziţia trebuie exclusă atunci când se doreşte identificarea unui atribut).

Alte şabloane definesc semnele de punctuaţie, particulele care pot preceda un predicat sau seria verbelor copulative. Adnotarea ca verb copulativ este disponibilă în specificaţiile MEM, însă, în mod empiric, s-a constatat că verbele copulative sunt marcate fie ca auxiliare, fie ca principale.

Relaţiile definite sunt următoarele:

• atribut_care_determina_substantivul/ substantiv_determinat_de_atributul_adjectival

• substantiv_determinat_de_atributul_substantival/

atribut_substantival_care_determina; • substantiv_exprima_posesie_insotit_de/ insoteste_substantiv_exprima_posesie • complement_direct_determina_verbul/ verb_determinat_de_complementul_direct • complement_indirect_determina_verbul/ verb_determinat_de_complementul_indirect • complement_circumstantial_marcat_prin • complement_de_agent_marcat_prin • subiect_pentru_predicatul_verbal/ predicat_verbal_pentru_subiectul • subiect_pentru_predicatul_nominal/

Page 56: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

56

predicat_nominal_pentru_subiectul • modificator_pentru / modificat_de • grad_de_comparatie_format_prin • substantiv_cu_lista_de_adjective • simetrie • si_sau • substantiv_precedat_de_%s • verb_precedat_de_%s • substantiv_urmat_de_%s • verb_urmat_de_%s • adjectiv_urmat_de_%s • adjectiv_precedat_de_%s • serie_lunga • predicat_nominal_împreuna_cu/

nume_predicativ_pentru_verbul • predicat_verbal_format_cu • predicat_contine_verb_auxiliar/

verb_auxiliar_pt_predicatul

Regulile care conţin două denumiri despărţite prin caracterul „/” sunt de tip DUAL. Expresia respectivă va fi evaluată de două ori: o dată când se generează rezultate pentru cuvântul etichetat cu „1:”, iar rezultatul va fi cuvântul etichetat cu „2:”, şi a doua oară, în mod similar, când se generează rezultate pentru cuvântul marcat prin „2:”.

Regulile care conţin secvenţa „%s” sunt de tip TRINARY. Secvenţa poate fi văzută ca un parametru pentru determinarea numelui unei relaţii: valoarea acesteia va face parte din denumirea relaţiei. Astfel, numărul relaţiilor de tipul „verb_precedat_de_%s” va fi egal cu numărul de părţi de vorbire care corespund regulilor definite de relaţie.

Page 57: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

57

4. Rezultate obţinute pentru limba română 4.1. Performanţe

Rezultatele obţinute la rularea motorului de căutare cu regulile scrise pentru limba română sunt superioare celor raportate la adaptarea pentru prima oară a SkE pentru alte limbi, cum ar fi spaniola sau italiana.

Performanţele sunt apreciabile, în condiţiile în care dimensiunile corpusului de care se dispune pentru limba română sunt considerabil mai mici decât cele ale corpusurilor utilizate pentru construirea gramaticilor celorlalte limbi. Motivele sunt obiective: licenţa academică oferită de SkE permite stocarea pe server a maximum 500 000 de simboluri (tokens), numărul este net inferior dimensiunilor corpusurilor existente pentru celalte limbi:

Corpus

Limbă Număr de simboluri

ukWaC engleză 2 035 621 120 itWaC italiană 1 909 535 984

Fida PLUS 620m slovenă 738 503 185 Chinese GW, trd chineză 706 428 333

JpWaC japoneză 409 384 405 French web corpus franceză 126 850 281 Spanish web corpus spaniolă 116 900 060

British National Corpus engleză 111 244 375 WBC-Per persană 6 375 735 Fragmente română 438022

Chiar şi în aceste condiţii, s-a reuşit identificarea celor mai importante relaţii care se stabilesc între cuvinte în cadrul unei fraze: relaţia subiect – predicat verbal / nominal, substantiv – atribut adjectival / substantival, verb – complement direct / indirect / circumstanţial, dar şi relaţiile dintre cuvinte şi prepoziţiile care le însoţesc, relaţii de simetrie etc.

Studiul se axează pe analiza sintactică a substantivului, verbului şi adjectivului, însă surprinde şi comportamentul altor părţi de vorbire care sunt relaţionate, în anumite contexte, cu acestea.

Pentru substantivul „om”, care are 725 de apariţii (în toate formele sale) în cadrul textului, relaţiile identificate însumează 956 de contexte, adică fiecare apariţie a fost încadrată, în

Tab. 4.1. Dimensiunile corpusurilor reprezentative puse la dispoziţie de Sketch Engine, comparativ cu „Fragmente”, corpusul românesc realizat pe baza romanului „Cel mai iubit dintre pământeni”şi utilizat în cadrul acestui studiu.

Page 58: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

58

medie, în 1.31 de relaţii. Dintre acestea, 180 corespund unei relaţii de tip TRINARY care marchează prezenţa unei prepoziţii. Rămân, deci, 545 de situaţii descoperite pe baza unor reguli complexe (descriind un raport de 0.75). Spre comparaţie, substantivul „hombre” apare de 79406 în cadrul corpusului în limba spaniolă, însă doar 38158 din contexte pot fi încadrate în vreo regulă (un raport de 0.48). 4.2. Comparaţie cu alte limbi Aprecierea calităţii gramaticii construite pentru limba română s-a realizat pe baza comparaţiei rezultatelor obţinute pentru aceasta cu cele observate în urma efectuării unor teste asupra corpusurilor disponibile pentru alte limbi. Au fost alese limbile italiană şi spaniolă, datorită asemănărilor cu limba română observate la nivel sintactic şi al vocabularului.

Pentru că gramatica asociată limbii spaniole nu identifică relaţiile de precedenţă dintre cuvinte şi prepoziţiile care le însoţesc, au fost luate în calcul doar regulile complexe. Cuvintele testate au fost: „om”, „copil”, „scrie” şi „spune”, cu traducerile corespunzătoare: „hombre”, „niño”, „escribir” şi „decir”, respectiv, „uomo”, „ragazzo”, „scrivere” şi „dire”.

Fig. 4.1. Rezultatele obţinute aplicând funcţia Word Sketch pentru cuvântul „hombre”, în cadrul corpusului spaniol pus la dispoziţie de SkE. S-au identificat 79406 contexte, din care aproape jumătate au fost încadrate într-o relaţie (a se vedea şi fig. 1.1, pag. 5).

Page 59: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

59

Raportul dintre numărul de identificări într-o relaţie şi numărul de apariţii în cadrul corpusului ale unui cuvânt este superior pentru limba română în toate cele patru cazuri. Rezultate mai bune se obţin pentru substantive, atât pentru limba română (0.51 şi 0.75), cât şi pentru celelalte două limbi limbi (0.49 şi 0.48 pentru spaniolă, respectiv, 0.34 şi 0.48 pentru italiană).

Verbele au fost identificate în mai puţine situaţii – un raport de 0.36 pentru verbul „a spune” şi 0.29 pentru „a scrie”, în limba română. Rata mai scăzută de succes se obţine şi pentru limbile italiană (0.23, respectiv 0.38) şi spaniolă (0.33 şi 0.20).

om copil a scrie a spune Română 0.75 0.51 0.29 0.36 Spaniolă 0.48 0.49 0.20 0.33 Italiană 0.48 0.34 0.38 0.23

4.3. Puncte tari vs. puncte slabe Cea mai importantă realizare în cadrul acestui studiu o reprezintă surprinderea celor mai importante relaţii care se stabilesc între cuvinte – subiect / predicat nominal sau verbal, substantiv determinat de atribut adjectival sau substantival, verb determinat de complement direct sau indirect. Regulile identifică aceste relaţii în mod corect (evident, cu anumite erori în situaţiile care conţin excepţii, formulări greşite, fraze neterminate). Principalii factori care influenţează rezultatele obţinute - exceptând lipsa unor reguli clare în ceea ce priveşte ordinea cuvintelor în propoziţie în cadrul gramaticii limbii române - sunt: erorile de adnotare, caracteristicile corpusului şi dimensiunea acestuia, nivelul de generalitate al expresiilor regulate scrise.

În ceea ce priveşte scrierea expresiilor regulate, există situaţii în care relaţia care se doreşte a fi surprinsă se stabileşte între cuvinte care nu sunt alăturate în cadrul frazei. În limba română, marea majoritate a situaţiilor se încadrează în această descriere, într-o mai mică sau mai mare măsură: unele cuvinte sunt despărţie de partea de vorbire cu care sunt relaţionate printr-un articol, printr-o prepoziţie, un pronume sau o particulă. Aceste situaţii sunt mai uşor de reperat şi reflectat în momentul scrierii unei reguli. Când însă este vorba despre definirea relaţiei subiect – predicat, cu subiectul despărţit de predicat printr-o propoziţie subordonată, procesul de construcţie a regulii se complică. Cuvintele care intră în cadrul acestei structuri nu respectă niciun şablon, nu se cunoaşte numărul lor, există chiar posibilitatea ca propoziţia subordonată să nu fie marcată nici grafic, prin semne de punctuaţie (sau să conţină enumeraţii sau alte părţi de propoziţie despărţite de restul prin virgulă – acelaşi semn de punctuaţie care ar trebui să marcheze sfârşitul propoziţiei subordonate). În astfel de situaţii, soluţia (folosită şi în cadrul gramaticilor

Tab. 4.2. Raportul dintre numărul de integrări într-o relaţie complexă şi numărul de apariţii ale unui cuvânt în cadrul unui corpus.

Page 60: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

60

scrise pentru alte limbi) o reprezintă utilizarea de spaţii goale (gaps): părţile de vorbire necunoscute şi irelevante pentru relaţia care trebuie definită sunt specificate prin intermediul unei secvenţe de termeni neidentificaţi (de exemplu, prin expresia regulată [tag = ".*"]{0, 5}), a cărei dimensiune, necunoscută, trebuie estimată într-un fel sau altul. Una din principalele surse de erori o reprezintă utilizarea acestui tip de expresii, pentru că se potrivesc, practic, peste orice secvenţă de text, iar o dimensiune prea mare sau prea mică specificată conduce la rezultate neaşteptate şi nedorite.

Fata, nemulţumită de condiţiile în care trăia colega sa, luă o hotărâre surprinzătoare.

În situaţia aceasta, expresia ar identifica eronat o relaţie subiect – predicat între substantivul „fata” şi „trăia”. Contextul este relevant şi din alt punct de vedere: expresiile consacrate care apar în limba română sunt imposibil de detectat. Ar fi nevoie de un dicţionar uriaş care să stocheze toate combinaţiile de cuvinte care trebuiesc tratate împreună.

Aceste expresii au un grad ridicat de generalitate; în cazul limbii române, definirea relaţiilor în acest mod nu este cea mai bună soluţie, însă, de multe ori, nu poate fi evitată. Rezultatele sunt vizibil mai bune dacă se utilizează expresii particularizate pentru anumite contexte, însă aceasta presupune scrierea unui număr mare de reguli şi identificare, în prealabil, a tuturor situaţiilor care pot să apară.

Soluţia Sketch Engine este selectarea doar a rezultatelor a căror valoare a frecvenţei depăşeşte un anumit prag. Sunt eliminate, astfel, cazurile particulare – care, de altfel, pot să nu exprime o limbă literară sau pot să conţină greşeli gramaticale.

Există situaţii, însă, în care niciun rezultat nu poate fi ignorat, pentru că toate contextele găsite au frecvenţă redusă şi apropiată ca valoare. Caracteristicile corpusului şi dimensiunile acestuia sunt un alt factor important care influenţează performanţa gramaticii. Un text de dimensiuni foarte mari ar fi ideal, însă din moment ce se dispune de unul limitat la 500 000 de simboluri, este de aşteptat ca multe din situaţiile întâlnite să rămână cazuri izolate (sau să apară de un număr mic de ori). În aceste situaţii, este posibil să nu detectăm regulile care le-ar identifica, sau să considerăm cazurile particulare ca pe situaţii generale - regulile scrise şi aplicate în contextul respectiv să pretindă a descrie şi alte situaţii, când de fapt sunt aplicabile doar într-un număr redus de situaţii. O altă problemă a corpusurilor de dimensiuni mici o reprezintă frecvenţa redusă a cuvintelor. Una din principalele calităţi ale Sketch Engine este că permite selectarea rezultatelor în funcţie de frecvenţa acestora, astfel încât excepţiile sau eventualele erori vor fi ignorate. Corpusul „Fragmente” nu poate beneficia de această proprietate, pentru că multe din cuvinte nu apar de mai multe ori într-un conext.

Sursa principală de erori o constituie, însă, greşelile în adnotarea poziţională. În multe cazuri, acestea nu pot fi eliminate, chiar dacă sunt detectate, pentru că expresia care le-a identificat descrie perfect situaţiile dorite. De exemplu, forma verbului „vin” este marcată ca fiind la persoana a III-a, numărul plural, în situaţii în care este, de fapt, la persoana I,

Page 61: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

61

numărul singular, şi invers. Adjectivele articulate care preced un substantiv sunt etichetate ca fiind substantive:

gândeam , cu aceeaşi aură vitală pe frumosul ei chip , fără măcar să-şi ascundă

Situaţia ilustrează relaţia „substantiv precedat de prepoziţia ’pe’ ”.

împins de către oameni ? Tandra nepăsare faţă de lume te poate stăpâni într-adevăr

Descrierea sintactică a prepoziţiei „faţă”, în această situaţie, este următoarea: „Ncfsrn”, adică este văzut ca un substantiv comun la genul feminin, numărul singular, cazul Nominativ sau Acuzativ, nearticulat. Construcţia este greşit identificată ca reflectând relaţia substantiv – atribut substantival („faţă” – „de lume”).

O altă problemă legată de adnotări o reprezintă situaţiile de ambiguitate create prin utilizarea unor etichete diferite pentru aceeaşi parte de vorbire. Este cazul cuvântului „fi”, care este considerat „particulă” în unele cazuri şi verb auxiliar în altele, deşi contextele descriu aceeaşi idee generală. De asemenea, pentru cazul substantivelor există doar trei valori, care grupează Nominativul şi Acuzativul, respectiv, Genitivul şi Dativul. Astfel, apar multe confuzii la identificarea corectă a subiectului şi a complementului direct.

Page 62: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

62

5. Aplicaţii posibil de realizat pe baza SkE românesc Rezultatele obţinute în această primă fază a studiului demonstrează că Sketch Engine poate fi un instrument util şi pentru analiza limbii române.

Încă din acest stadiu de dezvoltare a gramaticii, aplicaţia oferă suport pentru detectarea sensului corect al unui cuvânt într-un anumit context, prin generarea concordanţelor şi a Word Sketches. Beneficiind şi de un corpus de dimensiuni corespunzătoare, facilitatea ar putea fi exploatată pentru construcţia dicţionarelor explicative ale limbii române.

Un alt domeniu în care Sketch Engine ar putea fi utilizat cu succes este cel al traducerilor, pentru că permite selectarea celui mai potrivit sens din mai multe variante. Aspectele mai dificile, când intră în discuţie realizarea unei traduceri, sunt cele legate de acordurile între părţile de vorbire, desinenţe şi cuvinte de legătură. SkE oferă o imagine de ansamblu a contextelor în care se poate afla un cuvânt, astfel încât este posibilă detectarea imediată a situaţiilor similare cu cele pentru care se doreşte realizarea traducerii prin simpla vizualizare a listei de concordanţe şi, ulterior, a analizei realizate prin intermediul funcţiei Word Sketch. De asemenea, funcţia Sketch Differences permite compararea a două cuvinte şi detectarea contextelor comune în care apar, dar şi a acelora care sunt caracteristice numai pentru unul din cei doi termeni.

Fig. 5.1. Rezultatele obţinute aplicând funcţia Sketch Differences pentru cuvintele „frumos” şi „drăguţ”. Figura ilustrează o parte din contextele comune ale celor două adjective.

Page 63: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

63

Exemplul ilustrează utilizarea funcţiei Sketch Differences pentru a evidenţia asemănările şi diferenţele dintre adjectivele „frumos” şi „drăguţ”. Astfel, sintagma „fată frumoasă” este mai des întâlnită decât „fată drăguţă” (şase apariţii faţă de doar una), însă ambele adjective pot fi utilizate pentru a descrie substantivul „fată”. Adverbul „prea” pare însă a însoţi doar adjectivul „frumos”, pentru că este prezent în secţiunea dedicată acestuia, dar nu şi în cea corespunzătoare adjectivului „drăguţ”. O „fată prea frumoasă” este, cu siguranţă, o construcţie corectă, dar nu se poate afirma acelaşi lucru şi despre o „fată prea drăguţă”

Vocabularul limbii române poate fi învăţat mai uşor utilizând facilităţile puse la dispoziţie de Sketch Engine, cum ar fi funcţia Thesaurus. Lista generată va conţine o serie de cuvinte similare celui introdus de utilizator, fie că sunt sinonime, fie că se găsesc în vecinătatea termenului căutat.

Tot pentru învăţarea vocabularului, ar putea fi realizat un proiect asemănător celui demarat la Universitatea Ming Chuan din Taiwan, destinat generării de întrebări de tip fill-in-the-blank. Utilizatorul i s-ar cere să completeze spaţiile libere din propoziţie cu cel mai potrivit cuvânt dintre 3-4 termeni asemănători.

Concordanţele din operele literare ar putea fi evidenţiate şi studiate mai uşor folosind Sketch Engine. Astfel, s-ar putea detecta simbolurile recurente dintr-o poezie sau miturile ilustrate într-un basm popular, pentru că toate se caracterizează prin frecvenţa mare în cadrul operei literare.

Un pas următor în dezvoltarea aplicaţiei l-ar putea reprezenta realizarea unei conexiuni între un corpus şi un dicţionar (Kilgarriff, 2005). Aceasta ar însemnă că fiecare cuvânt din cadrul corpusului ar avea ataşat un pointer către o definiţie din dicţionar, la fel cum fiecare termen din dicţionar ar conţine legături către mai multe contexte din cadrul corpusului în care se găseşte cuvântul respectiv. Conexiunea dintre cele două entităţi – corpus şi dicţionar – se realizează prin intermediul unei baze de date. O înregistrare trebuie să conţină cel puţin trei informaţii: o locaţie din cadrul corpusului (inclusiv analiza gramaticală asociată), un pointer la sensul din dicţionar al termenului corespunzător locaţiei şi un set de indicatori către o mulţime de colocaţii din cadrul corpusului în care cuvântul definit în dicţionar apare sub diverse forme.

În primă instanţă, baza de date este generată pe baza corpusului, deci pointerii la cuvintele din cadrul acestuia sunt imediat disponibili. Un rezumat de tip Word Sketch poate fi un exemplu de astfel de bază de date. Fiecare cuvânt reprezintă o legătură către un URL care conţine o listă de concordanţe asociată termenului respectiv.

Problema o reprezintă inserarea legăturilor către sensurile din dicţionar. Există deja cercetări în această direcţie (Ide, Véronis – 1998, Kilgarriff – 2000, SENSEVAL-3 2004), însă toate rezultatele sunt strict asociate unor cazuri particulare.

Page 64: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

64

Concluzii şi perspective

Contextul indică sensul cuvintelor. Un corpus reprezintă o colecţie de dovezi despre cum sunt utilizate cuvintele de către oameni. Analiza acestuia înseamnă, practic, analiza limbajului uman.

Comunicarea dintre oameni se realizează prin intermediul unor automatisme şi reguli în vorbire şi scriere, iar în lucrarea de faţă a fost descris modul în care aceste automatisme au fost transformate într-o gramatică folosită ulterior la analiza textelor aparţinând limbii române, cu ajutorul motorului de căutare Sketch Engine (SkE) - un serviciu web care oferă o serie de instrumente pentru analiza şi prelucrarea corpusurilor. Disponibil pentru alte limbi, cum ar fi engleză, franceză, germană, spaniolă, cehă şi chiar chineză, serviciul reprezintă un instrument ce poate fi utilizat pentru determinarea sensurilor unui cuvânt, pentru selectarea celei mai potrivite traduceri ale unui termen, pentru învăţarea vocabularului unei limbi străine sau pentru studiul operelor literare.

Ideea care a stat la baza proiectului Sketch Engine este generarea unor „liste de contexte” pentru fiecare cuvânt al unei limbi, pe baza unui corpus. Aceste liste au fost denumite Word Sketches şi conţin, în plus, o succintă analiză a cuvântului, constând în descrierea comportamentului gramatical şi colocaţional al acestuia, realizată prin intermediul unui set de reguli care descriu relaţiile gramaticale specifice limbii respective.

Lucrarea de faţă a prezentat procesul de construcţie a gramaticii asociate limbii române. Spre deosebire de celelalte limbi pentru care a fost adaptat SkE, limba română este mult mai flexibilă, descriind prea puţine reguli generale de poziţionare a cuvintelor în cadrul unei propoziţii. A fost nevoie, astfel, de scrierea mai multor definiţii pentru fiecare relaţie ilustrată. Gramatica rezultată conţine 25 de reguli şi 68 de şabloane realizate în limbajul m4, care au reuşit să surprindă aspectele reprezentative ale automatismelor din limba română.

A fost prezentat modul în care au fost colectate şi adnotate corespunzător corpusurile româneşti utilizate în cadrul acestui studiu (primul, bazat pe romanul „1984”, de George Orwell, cel de-al doilea, varianta în limba română a corpusului „SemCor”, iar cel final, creat pe baza romanului „Cel mai iubit dintre pământeni”, de Marin Preda, şi intitulat „Fragmente”). Au fost descrise metodele de prelucrare şi aplicaţiile scrise în Perl şi Java care au realizat aceste operaţiuni, precum şi procesul de configurare a fişierelor în care au fost stocate gramatica şi corpusul, în vederea integrării cu Sketch Engine.

Un studiu al rezultatele obţinute a indicat faptul că acestea au fost superioare celor raportate la adaptarea SkE pentru o altă limbă. De exemplu, pentru substantivul „om”, care are 725 de apariţii (în toate formele sale) în cadrul textului, relaţiile identificate au însumat 956 de contexte, adică fiecare apariţie a fost încadrată, în medie, în 1.31 de relaţii. Spre comparaţie, pentru limba italiană, raportul dintre numărul de relaţii identificate şi numărul de apariţii ale substantivului „uomo” a fost de 0.62.

Page 65: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

65

Rezultatele obţinute în această primă fază a studiului au demonstrat că Sketch Engine poate fi un instrument util pentru analiza limbii române.

Un pas următor în dezvoltarea aplicaţiei l-ar putea reprezenta realizarea unei conexiuni între un corpus şi un dicţionar (Kilgarriff, 2005). Aceasta ar însemnă că fiecare cuvânt din cadrul corpusului ar avea ataşat un pointer către o definiţie din dicţionar, la fel cum fiecare termen din dicţionar ar conţine legături către mai multe contexte din cadrul corpusului în care se găseşte cuvântul respectiv. Conexiunea dintre cele două entităţi – corpus şi dicţionar – s-ar putea realiza prin intermediul unei baze de date. O înregistrare ar trebui să conţină cel puţin trei informaţii: o locaţie din cadrul corpusului (inclusiv analiza gramaticală asociată), un pointer la sensul din dicţionar al termenului corespunzător locaţiei şi un set de indicatori către o mulţime de colocaţii din cadrul corpusului în care cuvântul definit în dicţionar apare sub diverse forme.

În primă instanţă, baza de date ar fi generată pe baza corpusului, deci pointerii la cuvintele din cadrul acestuia ar fi imediat disponibili. Un rezumat de tip Word Sketch poate fi un exemplu de astfel de bază de date, pentru că fiecare cuvânt reprezintă o legătură către un URL care conţine o listă de concordanţe asociată termenului respectiv.

Problema o reprezintă inserarea legăturilor către sensurile din dicţionar. Există deja cercetări în această direcţie (Ide, Véronis – 1998, Kilgarriff – 2000, SENSEVAL-3 2004), însă toate rezultatele sunt strict asociate unor cazuri particulare.

Page 66: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

66

Referinţe bibliografice

Marco Baroni, Adam Kilgarriff, Jan Pomikálek, Pavel Rychlý (2006). WebBootCaT: Instant Domain-Specific Corpora to Support Human Translators. Proceedings of EAMT 2006 - 11th Annual Conference of the European Association for Machine Translation. Oslo. ISBN 82-7368-294-3, pp. 247-252.

Brants, T. (2000). TnT – A Statistical Part-Of-Speech Tagger. Proceedings of the 6th Applied NLP Conference ANLP-2000. Seattle, WA, pp 224--231.

Oli Christ (1994) A Modular and Flexible Architecture for an Integrated Corpus Query System. COMPLEX'94, Budapesta.

Radu Ion (2007). Metode de dezambiguizare semantică automată. Aplicaţii pentru limbile engleză şi română. Teză de doctorat. Academia Romana, Bucureşti.

Brian W. Kernighan, Dennis M. Ritchie (1977). The M4 Macro Processor. Technical report. Bell Laboratories, Murray Hill, New Jersey, SUA.

Adam Kilgarriff, Pavel Rychly, Pavel Smrz, David Tugwell (2004). The Sketch Engine. Proceedings of Euralex, Lorient, Franţa.

Adam Kilgarriff, David Tugwell (2001). Word Sketch: Extraction and Display of Significant Collocations for Lexicography. Proceedings of Collocations Workshop, ACL 2001. Toulouse, Franţa, pp 32-38.

Adam Kilgarriff, Marco Baroni (2006). Web as Corpus. Proceedings of The 11th Conference of the European Chapter of the Association for Computational Linguistics. Trento, Italia.

Adam Kilgarriff, Colin Yallop (1999). What’s in a Thesaurus? În cadrul Macquarie University Research Grant Visiting Fellowship. Sydney, Australia.

Ştefania Popescu (1997). Gramatica practică a limbii române. Ediţia a VI-a revăzută. Editura Lider, Bucureşti.

Giuseppe Savoca (1984). Concordanza di tutte le poesie di Guido Gozzano. Testo, Concordanza, Lista di frequenza, Indici. Olschki Firenze, Roma.

Simon Smith, Scott Sommers, Adam Kilgarriff (2008). Automatic Cloze Generation: Getting Sentences and Distractors from Corpora. 8th Teaching and Language Corpora Conference, Lisabona.

Tufiş, Dan. (1999). Tiered Tagging and Combined Classifiers. F. Jelinek, E. Nth (Eds.), Text, Speech and Dialogue, Lecture Notes in Artificial Intelligence. Springer, pp. 28--33.

Page 67: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

67

Kenneth J. Turner (1994). Exploiting the m4 Macro Language. Technical Report CSM-126. Department of Computing Science and Mathematics, University of Stirling, Scoţia.

Gramatica limbii române (1963). Editura Academiei Republice Populare Române, Bucureşti.

Referinţe Web: • Sketch Engine, http://www.sketchengine.co.uk/ • EAGLES recommendations on corpus typology (EAGLES,

1996e), http://www.ilc.cnr.it/EAGLES/corpintr/node13.html • IMS Corpus Workbench, http://www.ims.uni-stuttgart.de/projekte/CorpusWorkbench/index.html • Specificaţiile POSIX

Locale, http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html

• Developing Linguistic Corpora: a Guide to Good Practice, http://ahds.ac.uk/creating/guides/linguistic-corpora/index.htm • Oxford Dictionaries. The Corpus and the Dictionary Entry,

http://www.askoxford.com/oec/mainpage/oec04/?view=uk

• GNU M4 1.4.11 Macro Processor Manual, http://www.gnu.org/software/m4/manual/m4.html.gz

• ILK Research Group, http://ilk.uvt.nl/ • TreeTagger, http://www.ims.uni-stuttgart.de/projekte/corplex/TreeTagger/ • WordNet, http://wordnet.princeton.edu/ • Specificaţiile Remote Procedure Call (v.2) – RFC 1831,

http://tools.ietf.org/html/rfc1831

• Recomandări SOAP (v. 1.2), http://www.w3.org/TR/soap/

Page 68: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

68

• Web Service Description Language (WSDL),

http://www.w3.org/TR/wsdl

• SOAP::Lite, http://www.soaplite.com/

• POD-WSDL, http://search.cpan.org/dist/Pod-WSDL/ • MSD Tagset, http://nl.ijs.si/ME/V2/msd/ • PuTTY, http://www.chiark.greenend.org.uk/~sgtatham/putty/

Page 69: Absolvent: Monica Macoveiciuccorinfor/SketchEngine-Monica.pdf · 2008-11-04 · Facultatea de Informatică Teză de licenţă Analiză de corpus românesc folosind Sketch Engine Absolvent:

Analiză de corpus românesc folosind Sketch Engine

69

Anexe

Listă de abrevieri

API Application Programming Interface ASCII American Standard Code for Information Interchange BRE Basic Regular Expressions CQL Corpus Query Language KWIC Key Word In Context MEM MULTEXT-East Morphosyntactic POS Part of Speech RACAI Research Institute for Artificial Intelligence of the Romanian Academy RPC Remote Procedure Call SkE Sketch Engine SOAP Simple Object Access Protocol UTF-8 (8-bit UCS/Unicode Transformation Format) WPL Word-Per-Line WSDL Web Services Description Language