Interfață de interogare în limba română a corpusului CoRoLa

Radu Ion

Institutul de Cercetări pentru Inteligență Artificială „Mihai Drăgănescu”, Academia Română

radu@racai.ro


1. Introducere

Această interfață a fost proiectată pentru a asista utilizatorul începător în căutarea cuvintelor sau secvențelor de cuvinte într-un corpus indexat într-un motor de căutare. Motorul de căutare folosit aici este CWB, iar limbajul formal de interogare este CQP. Pentru a ușura învățarea limbajului de interogare, această interfață permite formularea parametrilor de interogare în limba română, cu niște constrângeri care vor fi precizate mai jos, constrângeri care permit algoritmului să traducă mai bine în CQP.

Prin „secvență de cuvinte” înțelegem orice șir arbitrar de cuvinte, așa cum apare el în text, care poate fi parametrizat cu următoarele proprietăți morfosintactice:

  1. forma ocurentă: cuvântul așa cum apare în text, de ex. „mașinii”;
  2. lema: forma standard de dicționar a cuvântului, de ex. „mașină”;
  3. eticheta morfosintactică: partea de vorbire împreună cu atributele ei morfosintactice, de ex. substantiv comun, genul feminin, numărul plural, cazul nominativ, nearticulat. Interfața noastră folosește etichetele morfosintactice definite în proiectul MULTEXT-East;
  4. incluziunea într-un grup sintactic nominal, verbal, prepozițional sau adverbial/adjectival: de exemplu, cuvântul „mașină” este inclus în grupul nominal „o mașină de cusut”.

Notă: toate textele au fost procesate automat cu TTL, astfel încât o rată a erorii de adnotare cu etichete morfosintactice de aproximativ 2% este de așteptat. De asemenea, algoritmul care detectează forma standard de dicționar pentru cuvintele necunoscute (cele care nu se află în lexiconul TTL-ului) emite erori cu o rată de aproximativ 17%.

2. Formularea interogării în limba română

Utilizatorul are opțiunea de a folosi limbajul CQP direct în caseta de căutare a interfeței. Atributele indexate în CWB corespunzătoare fiecărei proprietăți morfosintactice sunt:

  1. forma ocurentă: [word = "mașinii"]
  2. lema: [lemma = "mașină"]
  3. eticheta morfosintactică: [pos = "Ncfsrn"] sau, de ex., dacă se doresc numai substantive la feminin, singular [pos = "N.fs.*"]
  4. incluziunea într-un grup sintactic: nominal <np> ... </np>, verbal <vp> ... </vp>, prepozițional <pp> ... </pp> sau adverbial/adjectival <ap> ... </ap>

Dacă folosirea limbajului CQP pare dificilă, utilizatorul are de asemnea opțiunea de a căuta în limba română prin introducerea în caseta de căutare:

Descrierea în limba română a interogării trebuie să conțină două părți: prima în care se precizează contexul în care se plasează cuvântul/șirul de cuvinte căutat, e.g. 100 de fraze în care ..., 10 exemple/secvențe de 10 cuvinte în care ... sau 10 exemple cu 5 cuvinte la stânga și 10 cuvinte la dreapta în care ... și a doua în care se descrie căutarea. În această a doua parte, utilizatorul trebuie să-și amintească să folosească cel puțin un verb predicativ și să folosească ghilimele când specifică valoarea unui cuvânt sau unei leme căutate.

3. Exemple de interogare

Limba română CQP
mașină set Context s; [word = "mașină"] cut 100;
"mașină de cusut" set Context s; [word = "mașină"] [word = "de"] [word = "cusut"] cut 100;
100 de fraze în care apare lema "mașină" set Context s; [lemma = "mașină"] cut 100;
100 de fraze în care lema "mașină" este urmată imediat de un grup prepozițional set Context s; [lemma = "mașină"] <pp> cut 100;
100 de fraze în care lema "mașină" apare într-un grup nominal set Context s; <np> []* [lemma = "mașină"] []* </np> cut 100;
100 de fraze în care prepoziția "de" este urmată imediat de un verb la participiu set Context s; [(pos = "S.*") & (word = "de")] [pos = "V.p.*"] cut 100;
100 de fraze în care un substantiv urmează imediat după un verb predicativ set Context s; [pos = "Vm.*"] [pos = "N.*"] cut 100;
100 de fraze în care cuvântul "loc" urmează imediat după un verb predicativ set Context s; [pos = "Vm.*"] [word = "loc"] cut 100;
100 de fraze în care cuvântul "loc" apare la cel mult 3 cuvinte după un verb predicativ set Context s; [pos = "Vm.*"] [pos != "[A-Z][A-Z]+"]{0,3} [word = "loc"] cut 100;