24. märts
Lõpetame eelmisel korral tehtud grammatika,
mis analüüsib lauseid the dog barks. the dog chased the cat.
Saadke oma my_language.tdl ja lexicon.tdl kaili.muurisep ät ut.ee
Lingo Grammar Matrix
Tehniline sissejuhatus
- Laadige alla uus grammatika versioon
(autor Emily Bender Washingtoni ülikoolist) ja pakkige lahti.
- Muudke ära my_language.tdl failinimi ja muudke scriptfaili.
- Pange LKB käima ja laadige grammatika (script). Eelmise
korra juhend.
Testandmed
Kirjutage laused, mida teie grammatika peaks tundma, ja laused, mida mitte.
Salvestage need faili test1.items.
scriptfaili lõpus on laused, mis on süsteemi vaikimisi analüüsitavad laused
(the dog barks), muudke need ära.
Soovitavalt üks sihiline, üks sihitu verbiga ja kattuva sõnavaraga.
Esialgne grammatika
Tehke eelmises praktikumis loodud inglise keele grammatikale analoogne
eesti keele jaoks.
Hiljem lisame ühildumise ja sõnajärje.
Leksikaalsed tüübid
1. nimisõna
; nimisõna
noun-lex := basic-noun-lex & basic-one-arg &
[SYNSEM.LOCAL [ CAT [ VAL [ SPR <#spr&[LOCAl.CAT.HEAD det] >,
COMPS < >,
SUBJ < >,
SPEC < >]]],
ARG-ST <#spr> ].
(nimisõnal on siiski subkategorisatsioon determinatiivile, et saaks hiljem
edasi tegutseda, ilma determinatiivita nimisõna jaoks kirjutame reegli).
2. intransitiivne verb
intr-verb-lex := basic-verb-lex & intransitive-lex-item & ...
3. transitiivne verb
tr-verb-lex := basic-verb-lex & transitive-lex-item &
Leksikoni täiendamine
Lisage leksikoni vähemalt 2 testlause jagu sõnu: nimisõnad, sihiline
ja sihitu verb.
poiss := noun-lex & [STEM <"poiss">].
Fraasistruktuurireeglite lisamine
- Vaba sõnajärjega reeglite jaoks on lähte tüübid juba loodud. matrix/modules
alamkataloogis on fail free-order.tdl. Kopeerige selle sisu oma reeglite
faili.
- Samas kohas on fail free-order-rules.tdl. Kopeerige selle sisu oma
rules.tdl faili.
- Tehke reegel määratleja ja põhja fraasistruktuuri kohta. head-spec-phrase
:= basic-head-spec-phrase & head-final-head-nexus & ...
- Lisage head-spec-phrase rules.tdl faili.
- Lisage ka määratleja tüüp
det-lex := basic-determiner-lex &
[ SYNSEM.LOCAL [CAT [HEAD det,
VAL [ SPR < >,
COMPS < >,
SUBJ < >]]]].
- Ja pange leksikoni nt see.
- Lisage ilma määratlejata np tüüp. bare-np-phrase := basic-bare-np-phrase
ja pange see ka rules.tdl-i.
- Kontrollige, kas parser analüüsib nii määratlejaga kui määratlejata
lauseid.
Morfoloogia
Originaaljuhend
Täiendame grammatikat nii, et me ei peaks kõiki verbivorme leksikoni kirjutama.
Kuna verbi pööramine ei muuda kuidagi SYNSEMi infot, siis kirjutage, reegel,
mis pärib omadused infl-ltol-rule reeglist.
3sg_verb-lex-rule := infl-ltow-rule &
[ DTR.SYNSEM.LOCAL.CAT.HEAD verb ].
Tulevikus lisame sellele reeglile ühildumisinfo (subj peab olema 3sg)
Nüüd lisame irules.tdl-i morfoloogilise töötluse reeglid.
%(letter-set (!v aeiouõäöü))
defineerb vokaalid
reegel
ind_impf_3sg_verb :=
%suffix (!v !vs)
3sg_verb-lex-rule.
ütleb, et kui tüvi lõpeb vokaaliga, lisa lihtsalt s lõppu.
Muudame leksikoni, lisades sinna verbidele tunnuse [INFLECTED -].
Testimise hetk!
Tehke reeglid ka oleviku 3sg, ning lihtmineviku ja oleviku 3pl jaoks.
Ühildumine
Arvu ja isiku ühildumiseks lisame uue tunnuse, mis paikneb SYNSEM.LOCAL.CONT.HOOK.INDEXis:
png :+ [PER person,
NUM number ].
person := *top*.
first := person.
second := person.
third := person.
number := *top*.
sg := number.
non-sg := number.
pl := non-sg.
Ja defineerime uue leksikoninimisõnatüübi :
common-noun-lex := noun-lex &
[ SYNSEM.LOCAL.CONT.HOOK.INDEX.PNG [ PER third ] ].
pronoun-lex := noun-lex.
(tegelikult on neil tüüpidel erinev semantika, aga kuna meie sest ei hooli,
siis jäägu nii)
Lisame leksikoni asesõnu:
näiteks
meie := pronoun-lex &
[ STEM <"meie">,
SYNSEM.LOCAL.CONT.HOOK.INDEX.PNG [ PER first,
NUM pl ] ].
Muudke ka nimisõnade tüübid leksikonis ära.
Muudke verbireegleid (3sg_verb_lex_rule jt), et nad ühilduks õiges arvus
alusega.
Testigem!
Kääne
Lisame käändeinformatsiooni.
noun :+ [CASE case ].
Defineerige käändeinformatioon analoogiliselt arvu ja isikuga (piisab kolmsest
käändest).
Lisage trans ja intrans-verb-lex tüüpidele nõue, et alus peab olema nimetavas
Lisage ase- ja nimisõnadele leksikonis käändeinformatsioon:
meie := pronoun-lex &
[ STEM <"meie">,
SYNSEM.LOCAL[ CAT.HEAD.CASE nom,
CONT.HOOK.INDEX.PNG [ PER first,
NUM pl ] ] ] .
Testigem!
Adjektiivide lisamine
Lisame uued reeglid, mis head-adj-int-phrase ja adj-head-int-phrase.
See põhjustab uusi mitmeseid analüüse. Nende vältimiseks lisame reeglitele
kitsenduse, et HEAD.MOD < >)
Lisame tüübi adjective-lex.