Jednostki wielowyrazowe w starym kodzie¶
Obecnie (JOSKIPI w C++ i kod opakowujący w XML-e) jednostki wielowyrazowe są obsługiwane "na około". Mamy plik XML z osadzonymi wyrażeniami JOSKIPI. Składa się on z dwóch części: makr, które definiują ogólne ograniczenia dla zbioru jednostek wielowyrazowych i konkretnych realizacji. Przykładowe makro:
<m> <name>SubstAdjPlFix</name> <var>$A,$S</var> <con> and( equal(base[1],{$A}), equal(flex[1],{adj}), equal(base[0],$S), equal(nmb[0], {pl}), in(flex[0],{subst,ger,depr}), agrpp(0,1,{nmb,gnd,cas},3) ) </con>
Pod zmienne $A
, $S
zostają podstawione konkretne słowa z jednostki. Definicja przykładowej jednostki dla tego makra:
<LU> <LUbase>inwalida wojenny</LUbase> <t>fix</t> <pat>#SubstAdjPlFix("inwalida","wojenny")</pat> <h>in(flex[$H],{subst,ger,depr})</h> <f>subst</f> </LU>
Oznacza ono to, że mamy jednostkę o formie hasłowej "inwalida wojenny", który używa makra SubstAdjPlFix. Typ jednostki to "fix" (stały szyk elementów w jednostce, może być też fleks: dowolny szyk). Głowa jednostki jest znajdowana poprzez operator w ramach tagu h. Cała jednostka jest substem (tag f).
Problemy¶
- generowanie takich plików (trzeba je ręcznie stworzyć lub przetłumaczyć z innego formalizmu)
- obsługa (trzeba np. samemu zdanie przerobić tak, żeby usunąć elementy poza głową, a głowę zmodyfikować tak, żeby miała nową formę hasłową)
- samo JOSKIPI jest nieświadome jednostek wielowyrazowych, dlatego operatory muszą być odpalane na zdaniu po transformacji, która nie jest trywialna w zrobieniu
- problem jest gdy np. mamy dwie jednostki zawierające się w sobie, np. "transporter opancerzony" i "gąsienicowy transporter opancerzony"
- każdy program używający jednostek wielowyrazowych musi zadbać o to, by je porządnie obsłużyć (a brak dokumentacji powoduje, że nie jest to trywialne zadanie)
- brak dokumentacji: problem w przyjętych założeniach, konwencjach, itp.
Wymagania¶
Wymagania opisane w głównym dokumencie.