1
0
forked from GitHub/gf-core

fixes to estonian

This commit is contained in:
inari
2013-10-22 12:23:52 +00:00
parent 098619ceee
commit 34d15b505d
3 changed files with 244 additions and 282 deletions

View File

@@ -23,8 +23,6 @@ resource HjkEst = open ResEst, Prelude, Predef in {
oper oper
NFS = {s : NForm => Str} ;
foreign : pattern Str = #("z" | "ž" | "š") ; foreign : pattern Str = #("z" | "ž" | "š") ;
-- Foreign vowel endings -- Foreign vowel endings
foreign_v : pattern Str = #("ko" | "po" | "to" | "fo" | "ka" | "pa" | "ta" | "fa" | "ku" | "pu" | "tu" | "fu") ; foreign_v : pattern Str = #("ko" | "po" | "to" | "fo" | "ka" | "pa" | "ta" | "fa" | "ku" | "pu" | "tu" | "fu") ;
@@ -50,13 +48,14 @@ resource HjkEst = open ResEst, Prelude, Predef in {
hjk_type_VI_meeskond, hjk_type_VI_meeskond,
hjk_type_VI_seminar, hjk_type_VI_seminar,
hjk_type_VII_touge : Str -> NForms ; hjk_type_VII_touge : Str -> NForms ;
-- hjk_type_VII_touge : Str -> NFS ;
-- IVa additionally needs the stem vowel. -- IVa additionally needs the stem vowel.
hjk_type_IVb_audit, hjk_type_IVb_audit,
hjk_type_IVb_audit1 : Str -> Str -> NForms ; --NFS hjk_type_IVb_audit1 : Str -> Str -> NForms ;
hjk_type_VI_tukk : Str -> Str -> NForms ; hjk_type_VI_link2 : Str -> Str -> NForms ;
hjk_type2 : Str -> Str -> NForms ;
-- Definition of the mapping rules. -- Definition of the mapping rules.
@@ -147,24 +146,19 @@ resource HjkEst = open ResEst, Prelude, Predef in {
in in
nForms6 x (x_n+"i") (x+"i") (x+"i") (x+"ide") (x+"e") ; nForms6 x (x_n+"i") (x+"i") (x+"i") (x+"ide") (x+"e") ;
-- same as hjk_type_VI_link but additionally takes the genitive ending
--like link but hjk_type_VI_link2 x i =
-- gen form given (takes care of vowel and consonant gradation)
-- -sid for pl.part (todo: generate short forms depending on vowel?)
hjk_type_VI_tukk x x_gen =
let let
v_g : Str = last x_gen ; x_n : Str = weaker_noun x ;
-- TODO: think about it
{- pl_part : Str = e : Str = case i of {
case v_g of { "a" => "asid" ; -- pikk/pika -> pikkasid
"i" => "e" ; _ => "e"
_ => v_g + "sid" } ; }
-}
in in
nForms6 x x_gen (x+v_g) (x+v_g) (x+v_g+"de") (x+v_g+"sid") ; nForms6 x (x_n+i) (x+i) (x+i) (x+i+"de") (x+e) ;
hjk_type_VI_imelik x = hjk_type_VI_imelik x =
let let
x_t : Str = stronger_noun x x_t : Str = stronger_noun x
@@ -312,103 +306,105 @@ resource HjkEst = open ResEst, Prelude, Predef in {
-- - comparative and superlative adjective forms (workaround: use mkA instead) -- - comparative and superlative adjective forms (workaround: use mkA instead)
-- - type VII (t6uge -> t6uke), as one needs to detect derivation from verb -- - type VII (t6uge -> t6uke), as one needs to detect derivation from verb
-- - last syllable superlong (rostbiif) -- - last syllable superlong (rostbiif)
hjk_type x = hjk_type x = hjk_type2 x "i" ;
case <(syl_type x), x> of {
<S3, _ + "ke"> hjk_type2 x i =
case <(syl_type x), x, i> of {
<S3, _ + "ke", _>
=> hjk_type_Vb_oluline x ; => hjk_type_Vb_oluline x ;
<_, _ + "kond"> <_, _ + "kond", _>
=> hjk_type_VI_meeskond x ; => hjk_type_VI_meeskond x ;
-- Some S2 -ik words (voolik), we only cover words with double vowel -- Some S2 -ik words (voolik), we only cover words with double vowel
<_, _ + #vv + ("lik"|"nik"|"stik")> <_, _ + #vv + ("lik"|"nik"|"stik"), _>
=> hjk_type_IVb_audit x "u" ; => hjk_type_IVb_audit x "u" ;
-- Other -ik words as in HJKEKS, -- Other -ik words as in HJKEKS,
-- but added 'ndik' which fixes fractions ('kaheksandik') -- but added 'ndik' which fixes fractions ('kaheksandik')
-- and is wrong only for 'kandik'. -- and is wrong only for 'kandik'.
<_, _ + ("lik"|"nik"|"stik"|"ndik")> <_, _ + ("lik"|"nik"|"stik"|"ndik"), _>
=> hjk_type_VI_imelik x ; => hjk_type_VI_imelik x ;
-- Remaining -k words (but need to be S2) -- Remaining -k words (but need to be S2)
-- but not 'konjak' -- but not 'konjak'
<S2, _ + ("a"|"e"|"i") + ("ng"|"k")> <S2, _ + ("a"|"e"|"i") + ("ng"|"k"), _>
=> hjk_type_IVb_audit x "u" ; => hjk_type_IVb_audit x "u" ;
-- Other -ik words (not in HJKEKS) -- Other -ik words (not in HJKEKS)
-- including also: alevik, asemik, lobudik, hämarik, sarapik, põletik -- including also: alevik, asemik, lobudik, hämarik, sarapik, põletik
<_, _ + ("vik"|"mik"|"dik"|"rik"|"pik"|"tik")> <_, _ + ("vik"|"mik"|"dik"|"rik"|"pik"|"tik"), _>
=> hjk_type_VI_imelik x ; => hjk_type_VI_imelik x ;
-- kikas -- kikas
<_, ? + #v + #c + #v + "s"> <_, ? + #v + #c + #v + "s", _>
=> hjk_type_Va_otsene x ; => hjk_type_Va_otsene x ;
<_, _ + ("ngas"|"kas"|"jas"|"nud"|"tud")> <_, _ + ("ngas"|"kas"|"jas"|"nud"|"tud"), _>
=> hjk_type_IVb_maakas x ; => hjk_type_IVb_maakas x ;
<S1, _ + #v + #v> <S1, _ + #v + #v, _>
=> hjk_type_I_koi x ; => hjk_type_I_koi x ;
-- 'statiiv' (not like 'karjuv') -- 'statiiv' (not like 'karjuv')
<S1, _ + #vv + #c> <S1, _ + #vv + #c, i>
=> hjk_type_VI_link x ; => hjk_type_VI_link2 x i ;
<S3, _ + #c + #v + #lmnr> <S3, _ + #c + #v + #lmnr, _>
=> hjk_type_VI_seminar x ; => hjk_type_VI_seminar x ;
<S1, _ + #v + #v + #c> <S1, _ + #v + #v + #c, i>
=> hjk_type_VI_link x ; => hjk_type_VI_link2 x i ;
<_, _ + ("us"|"is")> <_, _ + ("us"|"is"), _>
=> hjk_type_Vb_oluline x ; => hjk_type_Vb_oluline x ;
<S3, _ + #v + #v + #c> <S3, _ + #v + #v + #c, i>
=> hjk_type_VI_link x ; => hjk_type_VI_link2 x i ;
<(S1|S3), _ + #v + #c + #c> <(S1|S3), _ + #v + #c + #c, i>
=> hjk_type_VI_link x ; => hjk_type_VI_link2 x i ;
<(S1|S3), _ + #v + #c + #c + #c> <(S1|S3), _ + #v + #c + #c + #c, i>
=> hjk_type_VI_link x ; => hjk_type_VI_link2 x i ;
<_, _ + "nna"> <_, _ + "nna", _>
=> hjk_type_III_ratsu x ; => hjk_type_III_ratsu x ;
<-(S21|S22), _ + ("nu"|"tu")> <-(S21|S22), _ + ("nu"|"tu"), _>
=> hjk_type_IVa_aasta x ; => hjk_type_IVa_aasta x ;
-- TODO: improve foreign detection -- TODO: improve foreign detection
<S2, _ + #foreign + _ + "in"> <S2, _ + #foreign + _ + "in", i>
=> hjk_type_IVb_audit x "i" ; => hjk_type_IVb_audit x i ;
-- TODO: this is not in HJKEKS -- TODO: this is not in HJKEKS
-- 'absurd' vs 'ebard' -- 'absurd' vs 'ebard'
<S2, _ + #v + #lmnr + "d"> <S2, _ + #v + #lmnr + "d", i>
=> hjk_type_IVb_audit x "i" ; => hjk_type_IVb_audit x i ;
-- sometimes 'a' (laurits) TODO: this is not in HJKEKS -- sometimes 'a' (laurits) TODO: this is not in HJKEKS
<S2, _ + #v + #kpt + "s"> <S2, _ + #v + #kpt + "s", i>
=> hjk_type_IVb_audit x "i" ; => hjk_type_IVb_audit x i ;
-- TODO: next 3 rules: last syllable must be long -- TODO: next 3 rules: last syllable must be long
-- portfell, TODO: not 'karask' -- portfell, TODO: not 'karask'
<S2, _ + #v + #c + #c> <S2, _ + #v + #c + #c, i>
=> hjk_type_VI_link x ; => hjk_type_VI_link2 x i ;
-- rostbiif, not viiul -- rostbiif, not viiul
<S2, _ + #c + #v + #v + #c> <S2, _ + #c + #v + #v + #c, i>
=> hjk_type_VI_link x ; => hjk_type_VI_link2 x i ;
-- impulss -- impulss
<S2, _ + #v + #c + #c + #c> <S2, _ + #v + #c + #c + #c, i>
=> hjk_type_VI_link x ; => hjk_type_VI_link2 x i ;
-- TODO: sometimes masked by 'maakas' -- TODO: sometimes masked by 'maakas'
<_, _ + #v + "s"> <_, _ + #v + "s", _>
=> hjk_type_Va_otsene x ; => hjk_type_Va_otsene x ;
<_, _ + ("v"|"tav")> <_, _ + ("v"|"tav"), _>
=> hjk_type_IVb_audit x "a" ; => hjk_type_IVb_audit x "a" ;
-- The choice between Va (pl part: -seid) and Vb (pl part: -si) -- The choice between Va (pl part: -seid) and Vb (pl part: -si)
@@ -416,38 +412,38 @@ resource HjkEst = open ResEst, Prelude, Predef in {
-- We just check the ending of the word and require at least 2 letters -- We just check the ending of the word and require at least 2 letters
-- to precede the ending. -- to precede the ending.
-- We added also -tine and -ldane (which occur with adjectives). -- We added also -tine and -ldane (which occur with adjectives).
<_, _ + ? + ? + ("line"|"lane"|"mine"|"kene"|"tine"|"ldane")> <_, _ + ? + ? + ("line"|"lane"|"mine"|"kene"|"tine"|"ldane"), _>
=> hjk_type_Vb_oluline x ; => hjk_type_Vb_oluline x ;
-- k6ne -- k6ne
<S21, _ + "e"> <S21, _ + "e", _>
=> hjk_type_III_ratsu x ; => hjk_type_III_ratsu x ;
-- Many adjectives end with "ne" (40% in WordNet) -- Many adjectives end with "ne" (40% in WordNet)
-- We require them to be at least 5 letters long (excluding 'öine'), -- We require them to be at least 5 letters long (excluding 'öine'),
-- to give a chance to VII_touge (next rule). -- to give a chance to VII_touge (next rule).
<_, _ + ? + ? + ? + "ne"> <_, _ + ? + ? + ? + "ne", _>
=> hjk_type_Va_otsene x ; => hjk_type_Va_otsene x ;
-- Note: this rule does not actually check the derivation from verb. -- Note: this rule does not actually check the derivation from verb.
-- verb + e, TODO: masked by S21/e -- verb + e, TODO: masked by S21/e
<(S2|S22), _ + "e"> <(S2|S22), _ + "e", _>
=> hjk_type_VII_touge x ; => hjk_type_VII_touge x ;
-- ufo, pita, lito -- ufo, pita, lito
<S21, _ + #foreign_v> <S21, _ + #foreign_v, _>
=> hjk_type_III_ratsu x ; => hjk_type_III_ratsu x ;
<S21, _ + #v> <S21, _ + #v, _>
=> hjk_type_II_ema x ; => hjk_type_II_ema x ;
<S22, _ + #v> <S22, _ + #v, _>
=> hjk_type_III_ratsu x ; => hjk_type_III_ratsu x ;
<S23, _ + #v> <S23, _ + #v, _>
=> hjk_type_IVa_aasta x ; => hjk_type_IVa_aasta x ;
<S2, _ + "in"> <S2, _ + "in", _>
=> hjk_type_IVb_audit x "a" ; => hjk_type_IVb_audit x "a" ;
-- 'e' deletion -- 'e' deletion
@@ -456,54 +452,54 @@ resource HjkEst = open ResEst, Prelude, Predef in {
-- spikker -> spikri (TODO: not: pokker -> pokkeri) -- spikker -> spikri (TODO: not: pokker -> pokkeri)
-- Note: pintsel -> pintsli, but not pitser -> pitsri -- Note: pintsel -> pintsli, but not pitser -> pitsri
-- Note: 'redel' and 'paber' do not lose the 'e'. -- Note: 'redel' and 'paber' do not lose the 'e'.
<S2, y + kk@("kk"|"pp"|"tt"|"hh") + "e" + l@("l"|"r")> <S2, y + kk@("kk"|"pp"|"tt"|"hh") + "e" + l@("l"|"r"), _>
=> hjk_type_IVb_audit1 x (y + (init kk) + l) ; => hjk_type_IVb_audit1 x (y + (init kk) + l) ;
-- aaker -> aakri, teater -> teatri -- aaker -> aakri, teater -> teatri
<S2, y + vvkpt@(#v + #v + #kpt) + "e" + l@("l"|"r")> <S2, y + vvkpt@(#v + #v + #kpt) + "e" + l@("l"|"r"), _>
=> hjk_type_IVb_audit1 x (y+vvkpt+l) ; => hjk_type_IVb_audit1 x (y+vvkpt+l) ;
<S2, y + vv@(#vv) + gbd@(#gbd) + "e" + l@("l"|"r")> <S2, y + vv@(#vv) + gbd@(#gbd) + "e" + l@("l"|"r"), _>
=> hjk_type_IVb_audit1 x (y+vv+gbd+l) ; => hjk_type_IVb_audit1 x (y+vv+gbd+l) ;
-- Disabled, 50-50 correctness -- Disabled, 50-50 correctness
--<S2, y + vv@(#vv) + lmnr@(#lmnr) + "e" + l@("l"|"r")> --<S2, y + vv@(#vv) + lmnr@(#lmnr) + "e" + l@("l"|"r"), _>
-- => hjk_type_IVb_audit1 x (y+vv+lmnr+l) ; -- 50-50 -- => hjk_type_IVb_audit1 x (y+vv+lmnr+l) ; -- 50-50
<S2, y + vv@(#vv) + s@("s"|"v") + "e" + l@("l"|"r")> <S2, y + vv@(#vv) + s@("s"|"v") + "e" + l@("l"|"r"), _>
=> hjk_type_IVb_audit1 x (y+vv+s+l) ; => hjk_type_IVb_audit1 x (y+vv+s+l) ;
<S2, y + n@("ht"|"hk"|"hv"|"nts"|"ld"|"lv"|"lb"|"ng"|"nd"|"mb"|"mp"|"nt"|"ps"|"ks"|"sk"|"st") + "e" + l@("l"|"r")> <S2, y + n@("ht"|"hk"|"hv"|"nts"|"ld"|"lv"|"lb"|"ng"|"nd"|"mb"|"mp"|"nt"|"ps"|"ks"|"sk"|"st") + "e" + l@("l"|"r"), _>
=> hjk_type_IVb_audit1 x (y+n+l) ; => hjk_type_IVb_audit1 x (y+n+l) ;
<S2, y + "e" + l@("l"|"r")> <S2, y + "e" + l@("l"|"r"), i>
=> hjk_type_IVb_audit x "i" ; => hjk_type_IVb_audit x i ;
-- TODO: sometimes masked by 'link' -- TODO: sometimes masked by 'link'
<S2, _ + #c> <S2, _ + #c, i>
=> hjk_type_IVb_audit x "i" ; => hjk_type_IVb_audit x i ;
<S3, _ + #v> <S3, _ + #v, _>
=> hjk_type_IVa_aasta x ; => hjk_type_IVa_aasta x ;
-- verb + 'e' -- verb + 'e'
<_, _ + "e"> <_, _ + "e", _>
=> hjk_type_VII_touge x ; => hjk_type_VII_touge x ;
-- catch all that end with consonant -- catch all that end with consonant
<_, _ + #c> <_, _ + #c, i>
=> hjk_type_IVb_audit x "i" ; => hjk_type_IVb_audit x i ;
-- TODO: not in HJKEKS -- TODO: not in HJKEKS
<_, _ + ("ia"|"ja")> --kündja, not gerilja <_, _ + ("ia"|"ja"), _> --kündja, not gerilja
=> hjk_type_IVa_aasta x ; => hjk_type_IVa_aasta x ;
--added by Inari 07.10. --added by Inari 07.10.
<S23, _ + #c + ("la")> --haigla, not gorilla <S23, _ + #c + ("la"), _> --haigla, not gorilla
=> hjk_type_IVa_aasta x ; => hjk_type_IVa_aasta x ;
-- catch all -- catch all
<_, _> <_, _, _>
=> hjk_type_III_ratsu x => hjk_type_III_ratsu x
} ; } ;

View File

@@ -9,27 +9,27 @@ lin
alas_Interj = ss "paraku" ; alas_Interj = ss "paraku" ;
answer_V2S = mkV2 (mkV "vastama" "vastata") callative ; answer_V2S = mkV2 (mkV "vastama" "vastata") callative ;
apartment_N = mkN "korter" ; apartment_N = mkN "korter" ;
apple_N = mkN "õun" ; apple_N = mkN "õun" "õuna" "õuna";
art_N = mkN "kunst" ; art_N = mkN "kunst" ;
ask_V2Q = mkV2 (mkV "küsima") (casePrep ablative) ; ask_V2Q = mkV2 (mkV "küsima") (casePrep ablative) ;
baby_N = mkN "beebi" ; baby_N = mkN "beebi" ;
bad_A = mkA (mkN "halb" "halva" "halba" "halba" "halbade" "halbu") "halvem" "halvim" ; bad_A = mkA (mkN "halb" "halva" "halba" "halba" "halbade" "halbu") "halvem" "halvim" ;
bank_N = mkN "pank" ; bank_N = mkN "pank" "panga" "panka";
beautiful_A = mkA (mkN "kaunis" "kauni" "kaunist" "kaunisse" "kaunite" "kauneid") ; beautiful_A = mkA (mkN "kaunis" "kauni" "kaunist" "kaunisse" "kaunite" "kauneid") ;
become_VA = mkVA (mkV "saama") ctranslative ; -- tema saab vanaks become_VA = mkVA (mkV "saama") ctranslative ; -- tema saab vanaks
beer_N = mkN "õlu" ; beer_N = mkN "õlu" ;
beg_V2V = mkV2V (mkV "paluma") cpartitive ; beg_V2V = mkV2V (mkV "paluma") cpartitive ;
big_A = mkA (mkN "suur" "suure" "suurt" "suurde" "suurte" "suuri"); big_A = mkA (mkN "suur" "suure" "suurt" "suurde" "suurte" "suuri");
bike_N = mkN "ratas" ; bike_N = mkN "ratas" "ratta" "ratast" ;
bird_N = mkN "lind" ; bird_N = mkN "lind" "linnu" "lindu" ;
black_A = mkA (mkN "must" "musta" "musta") ; black_A = mkA (mkN "must" "musta" "musta") ;
blue_A = mkA "sinine" ; blue_A = mkA "sinine" ;
boat_N = mkN "paat" ; boat_N = mkN "paat" ;
book_N = mkN "raamat" "raamatu" "raamatut" "raamatusse" "raamatute" "raamatuid" ; book_N = mkN "raamat" "raamatu" "raamatut" "raamatusse" "raamatute" "raamatuid" ;
boot_N = mkN "saabas" ; boot_N = mkN "saabas" "saapa" "saabast" ;
boss_N = mkN "boss" ; boss_N = mkN "boss" ;
boy_N = mkN "poiss" ; boy_N = mkN "poiss" ;
bread_N = mkN "leib" ; bread_N = mkN "leib" "leiva" "leiba" ;
break_V2 = mkV2 (mkV "katki" (mkV "tegema" "teha")) ; break_V2 = mkV2 (mkV "katki" (mkV "tegema" "teha")) ;
broad_A = mkA (mkN "lai" "laia" "laia" "laia" "laiade" "laiu") "laiem" "TODO" ; broad_A = mkA (mkN "lai" "laia" "laia" "laia" "laiade" "laiu") "laiem" "TODO" ;
brother_N2 = mkN2 (mkN "vend" "venna" "venda" "venda" "vendade" "vendi") ; brother_N2 = mkN2 (mkN "vend" "venna" "venda" "venda" "vendade" "vendi") ;
@@ -39,24 +39,24 @@ lin
camera_N = mkN "kaamera" ; camera_N = mkN "kaamera" ;
cap_N = mkN "müts" ; cap_N = mkN "müts" ;
car_N = mkN "auto" ; car_N = mkN "auto" ;
carpet_N = mkN "vaip" ; carpet_N = mkN "vaip" "vaiba" "vaipa" ;
cat_N = mkN "kass" ; cat_N = mkN "kass" ;
ceiling_N = mkN "lagi" ; ceiling_N = mkN "lagi" "lae" "lage" "lakke" "lagede" "lagesid" ;
chair_N = mkN "tool" ; chair_N = mkN "tool" ;
cheese_N = mkN "juust" ; cheese_N = mkN "juust" "juustu" "juustu" ;
child_N = mkN "laps" "lapse" "last" "lapsesse" "laste" "lapsi" ; child_N = mkN "laps" "lapse" "last" "lapsesse" "laste" "lapsi" ;
church_N = mkN "kirik" ; church_N = mkN "kirik" ;
city_N = mkN "linn" "linna" "linna" "linna" "linnade" "linnu" ; city_N = mkN "linn" "linna" "linna" "linna" "linnade" "linnu" ;
clean_A = mkA (mkN "puhas" "puhta" "puhast" "puhtasse" "puhaste" "puhtaid"); clean_A = mkA (mkN "puhas" "puhta" "puhast" "puhtasse" "puhaste" "puhtaid");
clever_A = mkA "tark" ; clever_A = mkA (mkN "tark" "targa" "tarka") ;
close_V2 = mkV2 (mkV "sulgema") ; close_V2 = mkV2 (mkV "sulgema") ;
coat_N = mkN "mantel" ; coat_N = mkN "mantel" ;
cold_A = mkA "külm" ; cold_A = mkA (mkN "külm" "külma" "külma") ;
come_V = mkV "tulema" ; come_V = mkV "tulema" ;
computer_N = mkN "arvuti" ; computer_N = mkN "arvuti" ;
country_N = mkN "maa" ; country_N = mkN "maa" ;
cousin_N = mkN "nõbu" ; cousin_N = mkN "nõbu" ;
cow_N = mkN "lehm" ; cow_N = mkN "lehm" "lehma" "lehma" ;
die_V = mkV "surema" ; die_V = mkV "surema" ;
dirty_A = mkA "räpane" ; dirty_A = mkA "räpane" ;
-- Using 'terminative' for the destination works better with nouns. -- Using 'terminative' for the destination works better with nouns.
@@ -65,71 +65,70 @@ lin
-- Unfortunately, we cannot use a similar trick for the source (*Põltsamaast vs Põltsamaalt). -- Unfortunately, we cannot use a similar trick for the source (*Põltsamaast vs Põltsamaalt).
distance_N3 = mkN3 (mkN "kaugus") celative (casePrep terminative) ; distance_N3 = mkN3 (mkN "kaugus") celative (casePrep terminative) ;
doctor_N = mkN "arst" ; doctor_N = mkN "arst" ;
dog_N = mkN "koer" ; dog_N = mkN "koer" "koera" "koera" ;
door_N = mkN "uks" ; door_N = mkN "uks" "ukse" "ust" ;
drink_V2 = mkV2 (mkV "jooma") cpartitive ; drink_V2 = mkV2 (mkV "jooma") cpartitive ;
easy_A2V = mkA2 (mkA (mkN "lihtne")) callative ; easy_A2V = mkA2 (mkA (mkN "lihtne" "lihtsa" "lihtsat")) callative ;
eat_V2 = mkV2 (mkV "sööma") cpartitive ; eat_V2 = mkV2 (mkV "sööma") cpartitive ;
empty_A = mkA "tühi" ; empty_A = mkA (mkN "tühi" "tühja" "tühja" "tühja" "tühjade" "tühje") ;
enemy_N = mkN "vaenlane" ; enemy_N = mkN "vaenlane" ;
factory_N = mkN "tehas" ; factory_N = mkN "tehas" ;
father_N2 = mkN2 (mkN "isa") ; father_N2 = mkN2 (mkN "isa") ;
fear_VS = mkVS (mk2V "kartma" "karta") ; fear_VS = mkVS (mk2V "kartma" "karta") ;
find_V2 = mkV2 (mk2V "leidma" "leida") ; find_V2 = mkV2 (mk2V "leidma" "leida") ;
fish_N = mkN "kala" ; fish_N = mkN "kala" ;
floor_N = mkN "põrand" ; floor_N = mkN "põrand" "põranda" "põrandat" ;
forget_V2 = mkV2 (mkV "unustama") ; forget_V2 = mkV2 (mkV "unustama") ;
fridge_N = mkN "külm" (mkN "kapp") ; fridge_N = mkN "külm" (mkN "kapp") ;
friend_N = mkN "sõber" ; friend_N = mkN "sõber" "sõbra" "sõpra" "sõpra" "sõprade" "sõpru" ;
fruit_N = mkN "puu" (mkN "vili") ; fruit_N = mkN "puu" (mkN "vili" "vilja" "vilja") ;
fun_AV = mkAV (mkA (mkN "lõbus")) ; fun_AV = mkAV (mkA (mkN "lõbus" "lõbusa" "lõbusat")) ;
garden_N = mkN "aed" ; garden_N = mkN "aed" "aia" "aeda";
girl_N = mkN "tüdruk" ; girl_N = mkN "tüdruk" "tüdruku" "tüdrukut" ;
glove_N = mkN "kinnas" ; glove_N = mkN "kinnas" "kinda" "kinnast" ;
gold_N = mkN "kuld" ; gold_N = mkN "kuld" "kulla" "kulda" ;
good_A = mkA (mkN "hea") "parem" "parim" ; good_A = mkA (mkN "hea") "parem" "parim" ;
go_V = mkV "minema" "minna" "läheb" "minnakse" go_V = vMinema ; -- irregular
"minge" "läks" "läinud" "mindud" ;
green_A = mkA "roheline" ; green_A = mkA "roheline" ;
harbour_N = mkN "sadam" ; harbour_N = mkN "sadam" "sadama" "sadamat" ;
hate_V2 = mkV2 (mkV "vihkama") cpartitive ; hate_V2 = mkV2 (mkV "vihkama" "vihata") cpartitive ;
hat_N = mkN "müts" ; hat_N = mkN "müts" ;
hear_V2 = mkV2 (mkV "kuulma") ; hear_V2 = mkV2 (mkV "kuulma") ;
hill_N = mkN "küngas" "künka" "küngast" "künkasse" "küngaste" "künkaid" ; hill_N = mkN "küngas" "künka" "küngast" "künkasse" "küngaste" "künkaid" ;
hope_VS = mkVS (mkV "lootma") ; hope_VS = mkVS (mkV "lootma") ;
horse_N = mkN "hobune" ; horse_N = mkN "hobune" ;
hot_A = mkA "kuum" ; hot_A = mkA (mkN "kuum" "kuuma" "kuuma") ;
house_N = mkN "maja" ; house_N = mkN "maja" ;
important_A = mkA "tähtis" ; important_A = mkA (mkN "tähtis" "tähtsa" "tähtsat") ;
industry_N = mkN "tööstus" ; industry_N = mkN "tööstus" ;
iron_N = mkN "raud" ; iron_N = mkN "raud" "raua" "rauda" ;
king_N = mkN "kuningas" ; king_N = mkN "kuningas" ;
know_VS = mkVS know_V ; know_VS = mkVS know_V ;
know_VQ = mkVQ know_V ; know_VQ = mkVQ know_V ;
know_V2 = mkV2 (mkV "tundma") ; know_V2 = mkV2 (mkV "tundma") ;
lake_N = mkN "järv" ; lake_N = mkN "järv" "järve" "järve" ;
lamp_N = mkN "lamp" ; lamp_N = mkN "lamp" ;
learn_V2 = mkV2 (mkV "õppima") ; learn_V2 = mkV2 (mkV "õppima") ;
leather_N = mkN "nahk" ; leather_N = skin_N ;
leave_V2 = mkV2 (mkV "jätma") ; leave_V2 = mkV2 (mkV "jätma") ;
like_V2 = mkV2 (mkV "lugu" (mkV "pidama" "pidada" "peab" "peetakse")) celative ; like_V2 = mkV2 (mkV "lugu" (mkV "pidama" "pidada" "peab" "peetakse")) celative ;
listen_V2 = mkV2 (mkV "kuulama") partitive ; listen_V2 = mkV2 (mkV "kuulama" "kuulata") partitive ;
live_V = mkV "elama" ; live_V = mkV "elama" ;
long_A = mkA "pikk" ; long_A = mkA (mkN "pikk" "pika" "pikka") ;
lose_V2 = mkV2 (mkV "kaotama") ; lose_V2 = mkV2 (mkV "kaotama") ;
love_N = mkN "armastus" ; love_N = mkN "armastus" ;
love_V2 = mkV2 (mkV "armastama") partitive ; love_V2 = mkV2 (mkV "armastama") partitive ;
man_N = mkN "mees" "mehe" "meest" "mehesse" "meeste" "mehi" ; man_N = mkN "mees" "mehe" "meest" "mehesse" "meeste" "mehi" ;
married_A2 = mkA2 (mkA "abielus") (casePrep comitative) ; married_A2 = mkA2 (mkA "abielus") (casePrep comitative) ;
meat_N = mkN "liha" ; meat_N = mkN "liha" ;
milk_N = mkN "piim" ; milk_N = mkN "piim" "piima" "piima" ;
moon_N = mkN "kuu" ; moon_N = mkN "kuu" ;
mother_N2 = mkN2 (mkN "ema") ; mother_N2 = mkN2 (mkN "ema") ;
mountain_N = mkN "mägi" "mäe" "mäge" "mäkke" "mägede" "mägesid" ; mountain_N = mkN "mägi" "mäe" "mäge" "mäkke" "mägede" "mägesid" ;
music_N = mkN "muusika" ; music_N = mkN "muusika" ;
narrow_A = mkA "kitsas" ; narrow_A = mkA "kitsas" ;
new_A = mkA (mkN "uus" "uue" "uut" "uude" "uute" "uusi") "uuem" "uusim" ; new_A = mkA (mkN "uus" "uue" "uut" "uude" "uute" "uusi") "uuem" "uusim" ;
newspaper_N = mkN "aja" (mkN "leht") ; newspaper_N = mkN "aja" (mkN "leht" "lehe" "lehte") ;
oil_N = mkN "õli" ; oil_N = mkN "õli" ;
old_A = mkA (mkN "vana" "vana" "vana" "vanasse" "vanade" "vanasid") "vanem" "vanim" ; old_A = mkA (mkN "vana" "vana" "vana" "vanasse" "vanade" "vanasid") "vanem" "vanim" ;
open_V2 = mkV2 (mkV "avama") ; open_V2 = mkV2 (mkV "avama") ;
@@ -149,9 +148,9 @@ lin
rain_V0 = mkV0 (mkV "sadama" "sadada" "sajab") ; rain_V0 = mkV0 (mkV "sadama" "sadada" "sajab") ;
read_V2 = mkV2 (mkV "lugema" "lugeda" "loeb") ; read_V2 = mkV2 (mkV "lugema" "lugeda" "loeb") ;
red_A = mkA "punane" ; red_A = mkA "punane" ;
religion_N = mkN "usk" ; religion_N = mkN "usk" "usu" "usku" ;
restaurant_N = mkN "restoran" ; restaurant_N = mkN "restoran" ;
river_N = mkN "jõgi" ; river_N = mkN "jõgi" "jõe" "jõge" ;
rock_N = mkN "kalju" ; rock_N = mkN "kalju" ;
roof_N = mkN "katus" ; roof_N = mkN "katus" ;
rubber_N = mkN "kumm" ; rubber_N = mkN "kumm" ;
@@ -159,55 +158,55 @@ lin
say_VS = mkVS (mkV "ütlema") ; say_VS = mkVS (mkV "ütlema") ;
school_N = mkN "kool" ; school_N = mkN "kool" ;
science_N = mkN "teadus" ; science_N = mkN "teadus" ;
sea_N = mkN "meri" ; sea_N = mkN "meri" "mere" "merd" ;
seek_V2 = mkV2 (mkV "otsima") cpartitive ; seek_V2 = mkV2 (mkV "otsima") cpartitive ;
see_V2 = mkV2 (mkV "nägema" "näha") ; see_V2 = mkV2 (mkV "nägema" "näha") ;
sell_V3 = mkV3 (mkV "müüma") accPrep callative ; sell_V3 = mkV3 (mkV "müüma") accPrep callative ;
send_V3 = mkV3 (mkV "saatma") accPrep callative ; send_V3 = mkV3 (mkV "saatma") accPrep callative ;
sheep_N = mkN "lammas" ; sheep_N = mkN "lammas" "lamba" "lammast" ;
ship_N = mkN "laev" ; ship_N = mkN "laev" "laeva" "laeva" ;
shirt_N = mkN "särk" ; shirt_N = mkN "särk" ;
shoe_N = mkN "king" ; shoe_N = mkN "king" "kinga" "kinga" ;
shop_N = mkN "kauplus" ; shop_N = mkN "kauplus" ;
short_A = mkA "lühike" ; short_A = mkA "lühike" ;
silver_N = mkN "hõbe" ; silver_N = mkN "hõbe" "hõbeda" "hõbedat" ;
sister_N = mkN "õde" "õe" "õde" "õesse" "õdede" "õdesid" ; sister_N = mkN "õde" "õe" "õde" "õesse" "õdede" "õdesid" ;
sleep_V = mkV "magama" ; sleep_V = mkV "magama" ;
small_A = mkA (mkN "väike" "väikse" "väikest" "väiksesse" "väikeste" "väikseid") ; small_A = mkA (mkN "väike" "väikse" "väikest" "väiksesse" "väikeste" "väikseid") ;
snake_N = mkN "uss" ; snake_N = mkN "uss" ;
sock_N = mkN "sukk" ; sock_N = mkN "sukk" "suka" "sukka" ;
speak_V2 = mkV2 talk_V cpartitive ; speak_V2 = mkV2 talk_V cpartitive ;
star_N = mkN "täht" ; star_N = mkN "täht" "tähe" "tähte" ;
steel_N = mkN "teras" ; steel_N = mkN "teras" ;
stone_N = mkN "kivi" ; stone_N = mkN "kivi" ;
stove_N = mkN "ahi" ; stove_N = mkN "ahi" "ahju" "ahju" ;
student_N = mkN "tudeng" ; student_N = mkN "tudeng" ;
stupid_A = mkA "loll" ; stupid_A = mkA "loll" ;
sun_N = mkN "päike" ; sun_N = mkN "päike" "päikse" "päikest" ;
switch8off_V2 = mkV2 (mkV "välja" (mkV "lülitama")) ; switch8off_V2 = mkV2 (mkV "välja" (mkV "lülitama")) ;
switch8on_V2 = mkV2 (mkV "sisse" (mkV "lülitama")) ; switch8on_V2 = mkV2 (mkV "sisse" (mkV "lülitama")) ;
table_N = mkN "laud" ; table_N = mkN "laud" "laua" "lauda" ;
talk_V3 = mkV3 talk_V callative celative ; talk_V3 = mkV3 talk_V callative celative ;
teacher_N = mkN "õpetaja" ; teacher_N = mkN "õpetaja" ;
teach_V2 = mkV2 (mkV "õpetama") ; teach_V2 = mkV2 (mkV "õpetama") ;
television_N = mkN "televisioon" ; television_N = mkN "televisioon" ;
thick_A = mkA "paks" ; thick_A = mkA (mkN "paks" "paksu" "paksu") ;
thin_A = mkA "õhuke" ; thin_A = mkA "õhuke" ;
train_N = mkN "rong" ; train_N = mkN "rong" ;
travel_V = mkV "reisima" ; travel_V = mkV "reisima" ;
tree_N = mkN "puu" ; tree_N = mkN "puu" ;
ugly_A = mkA "kole" ; ugly_A = mkA (mkN "kole" "koleda" "koledat") ;
understand_V2 = mkV2 (mkV "aru" (mkV "saama")) celative ; understand_V2 = mkV2 (mkV "aru" (mkV "saama")) celative ;
university_N = mkN "ülikool" ; university_N = mkN "ülikool" ;
village_N = mkN "küla" ; village_N = mkN "küla" ;
wait_V2 = mkV2 (mkV "ootama") partitive ; wait_V2 = mkV2 (mkV "ootama" "oodata") partitive ;
walk_V = mkV "kõndima" ; walk_V = mkV "kõndima" ;
warm_A = mkA (mkN "soe" "sooja" "sooja" "sooja" "soojade" "soojasid") "soojem" "soojim" ; warm_A = mkA (mkN "soe" "sooja" "sooja" "sooja" "soojade" "soojasid") "soojem" "soojim" ;
war_N = mkN "sõda" ; war_N = mkN "sõda" "sõja" "sõda" ;
watch_V2 = mkV2 (mkV "vaatama") cpartitive ; watch_V2 = mkV2 (mkV "vaatama" "vaadata") cpartitive ;
water_N = mkN "vesi" ; water_N = mkN "vesi" "vee" "vett" ;
white_A = mkA "valge" ; white_A = mkA "valge" ;
window_N = mkN "aken" ; window_N = mkN "aken" "akna" "akent" ;
wine_N = mkN "vein" ; wine_N = mkN "vein" ;
win_V2 = mkV2 (mkV "võitma") ; win_V2 = mkV2 (mkV "võitma") ;
woman_N = mkN "naine" "naise" "naist" "naisesse" "naiste" "naisi" ; woman_N = mkN "naine" "naise" "naist" "naisesse" "naiste" "naisi" ;
@@ -215,95 +214,95 @@ lin
wood_N = mkN "puu" ; wood_N = mkN "puu" ;
write_V2 = mkV2 (mkV "kirjutama") ; write_V2 = mkV2 (mkV "kirjutama") ;
yellow_A = mkA "kollane" ; yellow_A = mkA "kollane" ;
young_A = mkA "noor" ; young_A = mkA (mkN "noor" "noore" "noort") ;
do_V2 = mkV2 (mkV "tegema" "teha") ; do_V2 = mkV2 (mkV "tegema" "teha") ;
now_Adv = mkAdv "nüüd" ; now_Adv = mkAdv "nüüd" ;
already_Adv = mkAdv "juba" ; already_Adv = mkAdv "juba" ;
song_N = mkN "laul" ; song_N = mkN "laul" "laulu" "laulu" ;
add_V3 = mkV3 (mkV "lisama") accPrep callative ; add_V3 = mkV3 (mkV "lisama") accPrep callative ;
number_N = mkN "number" ; number_N = mkN "number" ;
put_V2 = mkV2 (mkV "panema") ; put_V2 = mkV2 (mkV "panema") ;
stop_V = mkV "peatuma" ; stop_V = mkV "peatuma" ;
jump_V = mkV "hüppama" ; jump_V = mkV "hüppama" "hüpata" ;
left_Ord = mkOrd1 (mkN "vasak") ; left_Ord = mkOrd1 (mkN "vasak") ;
right_Ord = mkOrd1 (mkN "parem") ; right_Ord = mkOrd1 (mkN "parem" "parema" "paremat") ;
far_Adv = mkAdv "kaugel" ; far_Adv = mkAdv "kaugel" ;
correct_A = mkA "õige" ; correct_A = mkA (mkN "õige" "õige" "õiget" "õigesse" "õigete" "õigeid") ;
dry_A = mkA "kuiv" ; dry_A = mkA (mkN "kuiv" "kuiva" "kuiva") ;
dull_A = mkA "igav" ; dull_A = mkA "igav" ;
full_A = mkA (mkN "täis") "täiem" "täiim" Invariable ; -- 'täis' is one of the non-inflecting adjectives full_A = mkA (mkN "täis" "täie" "täit") "täiem" "täiim" Invariable ; -- 'täis' is one of the non-inflecting adjectives
heavy_A = mkA "raske" ; heavy_A = mkA "raske" ;
near_A = mkA "lähedane" ; near_A = mkA "lähedane" ;
rotten_A = mkA "mäda" ; rotten_A = mkA "mäda" ;
round_A = mkA "ümmargune" ; round_A = mkA "ümmargune" ;
sharp_A = mkA "terav" ; sharp_A = mkA "terav" ;
smooth_A = mkA "sile" ; smooth_A = mkA (mkN "sile" "sileda" "siledat" "siledasse" "siledate" "siledaid") ;
straight_A = mkA "sirge" ; straight_A = mkA "sirge" ;
wet_A = mkA "märg" ; wet_A = mkA (mkN "märg" "märja" "märga") ;
wide_A = mkA "lai" ; wide_A = mkA (mkN "lai" "laia" "laia") ;
animal_N = mkN "loom" ; animal_N = mkN "loom" "looma" "looma" ;
ashes_N = mkN "tuhk" ; ashes_N = mkN "tuhk" "tuha" "tuhka" ;
back_N = mkN "selg" ; back_N = mkN "selg" "selja" "selga" ;
bark_N = mkN "koor" ; bark_N = mkN "koor" "koore" "koort" ;
belly_N = mkN "kõht" ; belly_N = mkN "kõht" "kõhu" "kõhtu" ;
blood_N = mkN "veri" ; blood_N = mkN "veri" "vere" "verd" "verre" "verede" "veresid" ;
bone_N = mkN "luu" ; bone_N = mkN "luu" ;
breast_N = mkN "rind" ; breast_N = mkN "rind" "rinna" "rinda" ;
cloud_N = mkN "pilv" ; cloud_N = mkN "pilv" "pilve" "pilve" ;
day_N = mkN "päev" ; day_N = mkN "päev" "päeva" "päeva" ;
dust_N = mkN "tolm" ; dust_N = mkN "tolm" "tolmu" "tolmu" ;
ear_N = mkN "kõrv" ; ear_N = mkN "kõrv" "kõrva" "kõrva" ;
earth_N = mkN "maa" ; earth_N = mkN "maa" ;
egg_N = mkN "muna" ; egg_N = mkN "muna" ;
eye_N = mkN "silm" ; eye_N = mkN "silm" "silma" "silma" ;
fat_N = mkN "rasv" ; fat_N = mkN "rasv" "rasva" "rasva" ;
feather_N = mkN "sulg" ; feather_N = mkN "sulg" "sule" "sulge" ;
fingernail_N = mkN "küüs" ; fingernail_N = mkN "küüs" "küüne" "küünt" ;
fire_N = mkN "tuli" ; fire_N = mkN "tuli" "tule" "tuld" "tulle" "tulede" "tulesid" ;
flower_N = mkN "lill" ; flower_N = mkN "lill" "lille" "lille" ;
fog_N = mkN "udu" ; fog_N = mkN "udu" ;
foot_N = mkN "jalg" ; foot_N = mkN "jalg" "jala" "jalga" ;
forest_N = mkN "mets" ; forest_N = mkN "mets" "metsa" "metsa" ;
grass_N = mkN "rohi" ; grass_N = mkN "rohi" "rohu" "rohtu" ;
guts_N = mkN "soolestik" ; guts_N = mkN "soolestik" ;
hair_N = mkN "juuksed" ; -- TODO: plural hair_N = mkN "juuksed" "juuste" "juukseid" "juustesse" "juuste" "juukseid" ; -- TODO: plural
hand_N = mkN "käsi" ; hand_N = mkN "käsi" "käe" "kätt" ;
head_N = mkN "pea" ; head_N = mkN "pea" ;
heart_N = mkN "süda" ; heart_N = mkN "süda" "südame" "südant" ;
horn_N = mkN "sarv" ; horn_N = mkN "sarv" "sarve" "sarve" ;
husband_N = man_N ; husband_N = man_N ;
ice_N = mkN "jää" ; ice_N = mkN "jää" ;
knee_N = mkN "põlv" ; knee_N = mkN "põlv" "põlve" "põlve" ;
leaf_N = mkN "leht" ; leaf_N = mkN "leht" "lehe" "lehte" ;
leg_N = mkN "jalg" ; leg_N = mkN "jalg" "jala" "jalga" ;
liver_N = mkN "maks" ; liver_N = mkN "maks" "maksa" "maksa" ;
louse_N = mkN "täi" ; louse_N = mkN "täi" ;
mouth_N = mkN "suu" ; mouth_N = mkN "suu" ;
name_N = mkN "nimi" ; name_N = mkN "nimi" "nime" "nime" ;
neck_N = mkN "kael" ; neck_N = mkN "kael" "kaela" "kaela" ;
night_N = mkN "öö" ; night_N = mkN "öö" ;
nose_N = mkN "nina" ; nose_N = mkN "nina" ;
person_N = mkN "inimene" ; person_N = mkN "inimene" ;
rain_N = mkN "vihm" ; rain_N = mkN "vihm" "vihma" "vihma" ;
road_N = mkN "tee" ; road_N = mkN "tee" ;
root_N = mkN "juur" ; root_N = mkN "juur" "juure" "juurt" ;
rope_N = mkN "köis" ; rope_N = mkN "köis" "köie" "köit" ;
salt_N = mkN "sool" ; salt_N = mkN "sool" "soola" "soola" ;
sand_N = mkN "liiv" ; sand_N = mkN "liiv" "liiva" "liiva" ;
seed_N = mkN "seeme" ; seed_N = mkN "seeme" "seemne" "seemet" ;
skin_N = mkN "nahk" ; skin_N = mkN "nahk" "naha" "nahka" ;
sky_N = mkN "taevas" ; sky_N = mkN "taevas" "taeva" "taevast" ;
smoke_N = mkN "suits" ; smoke_N = mkN "suits" "suitsu" "suitsu" ;
snow_N = mkN "lumi" ; snow_N = mkN "lumi" "lume" "lund" ;
stick_N = mkN "kepp" ; stick_N = mkN "kepp" ;
tail_N = mkN "saba" ; tail_N = mkN "saba" ;
tongue_N = mkN "keel" ; tongue_N = mkN "keel" "keele" "keelt" ;
tooth_N = mkN "hammas" ; tooth_N = mkN "hammas" "hamba" "hammast" ;
wife_N = mkN "naine" ; wife_N = mkN "naine" ;
wind_N = mkN "tuul" ; wind_N = mkN "tuul" "tuule" "tuult" ;
wing_N = mkN "tiib" ; wing_N = mkN "tiib" "tiiva" "tiiba" ;
worm_N = mkN "uss" ; worm_N = mkN "uss" ;
year_N = mkN "aasta" ; year_N = mkN "aasta" ;
bite_V2 = mkV2 (mkV "purema") ; bite_V2 = mkV2 (mkV "purema") ;
@@ -311,13 +310,13 @@ lin
burn_V = mkV "põlema" ; burn_V = mkV "põlema" ;
count_V2 = mkV2 (mkV "loendama") ; count_V2 = mkV2 (mkV "loendama") ;
cut_V2 = mkV2 (mk2V "lõikama" "lõigata") ; cut_V2 = mkV2 (mk2V "lõikama" "lõigata") ;
dig_V = mkV "kaevama" ; dig_V = mkV "kaevama" "kaevata" ;
fall_V = mkV "kukkuma" ; fall_V = mkV "kukkuma" ;
fear_V2 = mkV2 (mkV "kartma") cpartitive ; fear_V2 = mkV2 (mkV "kartma") cpartitive ;
fight_V2 = mkV2 (mkV "võitlema") (postPrep partitive "vastu") ; fight_V2 = mkV2 (mkV "võitlema") (postPrep partitive "vastu") ;
float_V = mkV "liuglema" ; float_V = mkV "liuglema" ;
flow_V = mkV "voolama" ; flow_V = mkV "voolama" "voolata" ;
fly_V = mkV "lendama" ; fly_V = mkV "lendama" "lennata" ;
freeze_V = mkV "jäätuma" ; freeze_V = mkV "jäätuma" ;
give_V3 = mkV3 (mkV "andma") accPrep callative ; give_V3 = mkV3 (mkV "andma") accPrep callative ;
hit_V2 = mkV2 (mkV "lööma") cpartitive ; hit_V2 = mkV2 (mkV "lööma") cpartitive ;
@@ -327,11 +326,11 @@ lin
laugh_V = mkV "naerma" ; laugh_V = mkV "naerma" ;
lie_V = mkV "lamama" ; -- TODO: maybe: valetama lie_V = mkV "lamama" ; -- TODO: maybe: valetama
play_V = mkV "mängima" ; play_V = mkV "mängima" ;
pull_V2 = mkV2 (mkV "tõmbama") ; pull_V2 = mkV2 (mkV "tõmbama" "tõmmata") ;
push_V2 = mkV2 (mkV "suruma") ; push_V2 = mkV2 (mkV "suruma") ;
rub_V2 = mkV2 (mkV "hõõruma") cpartitive ; rub_V2 = mkV2 (mkV "hõõruma") cpartitive ;
scratch_V2 = mkV2 (mkV "kraapima") cpartitive ; scratch_V2 = mkV2 (mkV "kraapima") cpartitive ;
sew_V = mkV "külvama" ; sew_V = mkV "külvama" "külvata" ;
sing_V = mkV "laulma" "laulda" "laulab" "lauldakse" ; sing_V = mkV "laulma" "laulda" "laulab" "lauldakse" ;
sit_V = mkV "istuma" ; sit_V = mkV "istuma" ;
smell_V = mk2V "haistma" "haista"; smell_V = mk2V "haistma" "haista";
@@ -344,9 +343,9 @@ lin
swell_V = mkV "paistetama" ; -- TODO: üles paistetama swell_V = mkV "paistetama" ; -- TODO: üles paistetama
swim_V = mkV "ujuma" ; swim_V = mkV "ujuma" ;
think_V = mkV "mõtlema" "mõtelda" "mõtleb" "mõeldakse"; think_V = mkV "mõtlema" "mõtelda" "mõtleb" "mõeldakse";
throw_V2 = mkV2 (mkV "viskama") ; throw_V2 = mkV2 (mkV "viskama" "visata") ;
tie_V2 = mkV2 (mkV "siduma" "siduda" "seob") ; tie_V2 = mkV2 (mkV "siduma" "siduda" "seob") ;
turn_V = mkV "pöörama" ; turn_V = mkV "pöörama" "pöörata" ;
vomit_V = mkV "oksendama" ; vomit_V = mkV "oksendama" ;
wash_V2 = mkV2 (mkV "pesema") ; wash_V2 = mkV2 (mkV "pesema") ;
wipe_V2 = mkV2 (mkV "pühkima") ; wipe_V2 = mkV2 (mkV "pühkima") ;
@@ -354,7 +353,7 @@ lin
breathe_V = mkV "hingama" ; breathe_V = mkV "hingama" ;
grammar_N = mkN "grammatika" ; grammar_N = mkN "grammatika" ;
language_N = mkN "keel" ; language_N = tongue_N ;
rule_N = mkN "reegel" ; rule_N = mkN "reegel" ;
john_PN = mkPN "Juhan" ; john_PN = mkPN "Juhan" ;
@@ -362,7 +361,7 @@ lin
ready_A = mkA (mkN "valmis" "valmi" "valmit" "valmisse" "valmite" "valmeid") "valmim" "valmeim" Invariable ; -- 'valmis' is one of the non-inflecting adjectives ready_A = mkA (mkN "valmis" "valmi" "valmit" "valmisse" "valmite" "valmeid") "valmim" "valmeim" Invariable ; -- 'valmis' is one of the non-inflecting adjectives
reason_N = mkN "põhjus" ; reason_N = mkN "põhjus" ;
today_Adv = mkAdv "täna" ; today_Adv = mkAdv "täna" ;
uncertain_A = mkA "ebakindel" ; uncertain_A = mkA (mkN "ebakindel" "ebakindla" "ebakindlat") ;
oper oper

View File

@@ -16,8 +16,12 @@
-- --
-- The structure of functions for each word class $C$ is the following: -- The structure of functions for each word class $C$ is the following:
-- there is a polymorphic constructor $mkC$, which takes one or -- there is a polymorphic constructor $mkC$, which takes one or
-- a few arguments. In Estonian, one argument is enough in ??? % of -- a few arguments. In Estonian, one argument is enough in 90% of
-- cases in average. -- cases in average.
--
-- @author Inari Listenmaa
-- @author Kaarel Kaljurand
-- @version 2013-10-21
resource ParadigmsEst = open resource ParadigmsEst = open
(Predef=Predef), (Predef=Predef),
@@ -59,7 +63,7 @@ oper
comitative : Case ; -- e.g. "karbiga" comitative : Case ; -- e.g. "karbiga"
infDa : InfForm ; -- e.g. "lugeda" infDa : InfForm ; -- e.g. "lugeda"
infDes : InfForm ; infDes : InfForm ; -- e.g. "lugedes"
infMa : InfForm ; -- e.g. "lugema" infMa : InfForm ; -- e.g. "lugema"
infMas : InfForm ; -- e.g. "lugemas" infMas : InfForm ; -- e.g. "lugemas"
infMaks : InfForm ; -- e.g. "lugemaks" infMaks : InfForm ; -- e.g. "lugemaks"
@@ -70,49 +74,30 @@ oper
-- of many-place verbs and adjective. A complement can be defined by -- of many-place verbs and adjective. A complement can be defined by
-- just a case, or a pre/postposition and a case. -- just a case, or a pre/postposition and a case.
prePrep : Case -> Str -> Prep ; -- preposition, e.g. comitative "koos" prePrep : Case -> Str -> Prep ; -- preposition, e.g. abessive "ilma"
postPrep : Case -> Str -> Prep ; -- postposition, e.g. genitive "taga" postPrep : Case -> Str -> Prep ; -- postposition, e.g. genitive "taga"
postGenPrep : Str -> Prep ; -- genitive postposition, e.g. "taga" postGenPrep : Str -> Prep ; -- genitive postposition, e.g. "taga"
casePrep : Case -> Prep ; -- just case, e.g. adessive casePrep : Case -> Prep ; -- just case, e.g. adessive
-- TODO build the dict
NW : Type ; -- Noun from DictEst (WordNet)
AW : Type ; -- Adjective from DictEst (WordNet)
VW : Type ; -- Verb from DictEst (WordNet)
AdvW : Type ; -- Adverb from DictEst (WordNet)
--2 Nouns --2 Nouns
-- The worst case gives six forms.
-- In practice just a couple of forms are needed to define the different
-- stems, vowel alternation, and vowel harmony.
oper oper
-- The regular noun heuristic takes just one form (singular -- The regular noun heuristic takes just one form (singular
-- nominative) and analyses it to pick the correct paradigm. -- nominative) and analyses it to pick the correct paradigm.
-- It does automatic grade alternation, and is hence not usable -- If the 1-argument paradigm does not give the correct result,
-- for words like "auto" (whose genitive would become "audon"). -- one can try and give 2, 3, 4, or 6 forms.
--
-- If the one-argument paradigm does not give the correct result, one can try and give
-- two or three forms. Most notably, the two-argument variant is used
-- for nouns like "kivi - kiviä", which would otherwise become like
-- "rivi - rivejä". Three arguments are used e.g. for
-- "auto - auton - autoja", which would otherwise become
-- "auto - audon".
mkN : overload { mkN : overload {
mkN : (kukko : Str) -> N ; -- predictable nouns, covers 82% mkN : (ema : Str) -> N ; -- predictable nouns, covers 90%
mkN : (savi,savia : Str) -> N ; -- different pl.part mkN : (tukk,tuku : Str) -> N ; -- sg nom,gen: unpredictable stem vowel
mkN : (vesi,veden,vesia : Str) -> N ; -- also different sg.gen mkN : (tukk,tuku,tukku : Str) -> N ; -- sg nom,gen,part
mkN : (pank,panga,panka,panku : Str) -> N ; -- sg nom,gen,part, pl.part mkN : (pank,panga,panka,panku : Str) -> N ; -- sg nom,gen,part, pl.part
-- mkN : (olo,n,a,na,oon,jen,ja,ina,issa,ihin : Str) -> N ; -- worst case, 10 forms
mkN : (oun,ouna,ouna,ounasse,ounte,ounu : Str) -> N ; -- worst case, 6 forms mkN : (oun,ouna,ouna,ounasse,ounte,ounu : Str) -> N ; -- worst case, 6 forms
mkN : (oun,ouna,ouna,ounasse,ounte,ounu,ountesse : Str) -> N ; -- worst case, 7 forms -- mkN : (pika : Str) -> (juna : N) -> N ; -- compound with invariable prefix
mkN : (pika : Str) -> (juna : N) -> N ; -- compound with invariable prefix -- mkN : (oma : N) -> (tunto : N) -> N ; -- compound with inflecting prefix
mkN : (oma : N) -> (tunto : N) -> N ; -- compound with inflecting prefix
mkN : NW -> N ; -- noun from DictEst (WordNet)
} ; } ;
-- Nouns used as functions need a case, of which the default is -- Nouns used as functions need a case, of which the default is
@@ -141,22 +126,20 @@ oper
-- The comparative and the superlative -- The comparative and the superlative
-- are always inflected in the same way, so the nominative of them is actually -- are always inflected in the same way, so the nominative of them is actually
-- enough (TODO: confirm). -- enough (TODO: confirm).
-- TODO: update these types to include the new boolean non-inflection marker
mkA : overload { mkA : overload {
mkA : Str -> A ; -- regular noun made into adjective mkA : Str -> A ; -- regular noun made into adjective
mkA : N -> A ; -- any noun made into adjective mkA : N -> A ; -- any noun made into adjective
mkA : N -> (infl : Bool) -> A ; -- noun made into adjective, agreement type specified mkA : N -> (infl : Infl) -> A ; -- noun made into adjective, agreement type specified
mkA : N -> (parem, parim : Str) -> A ; -- deviating comparison forms mkA : N -> (parem, parim : Str) -> A ; -- deviating comparison forms
mkA : AW -> A ; -- adjective from DictEst (WordNet)
} ; } ;
-- Two-place adjectives need a case for the second argument. -- Two-place adjectives need a case for the second argument.
mkA2 : A -> Prep -> A2 -- e.g. "jaollinen" casePrep adessive mkA2 : A -> Prep -> A2 -- e.g. "vihane" (postGenPrep "peale")
= \a,p -> a ** {c2 = p ; lock_A2 = <>}; = \a,p -> a ** {c2 = p ; lock_A2 = <>};
genAttrA : Str -> A ; -- genitive attributes ; no agreement to head, no comparison forms. invA : Str -> A ; -- invariable adjectives, such as genitive attributes ; no agreement to head, no comparison forms.
--2 Verbs --2 Verbs
-- --
@@ -166,19 +149,18 @@ oper
-- The worst case needs eight forms, as shown in the following. -- The worst case needs eight forms, as shown in the following.
mkV : overload { mkV : overload {
mkV : (lugema : Str) -> V ; -- predictable verbs, covers n % mkV : (lugema : Str) -> V ; -- predictable verbs, covers 90 %
mkV : (lugema,lugeda : Str) -> V ; -- deviating past 3sg mkV : (lugema,lugeda : Str) -> V ; -- ma infinitive, da infinitive
mkV : (lugema,loeb,lugeda : Str) -> V ; -- also deviating pres. 1sg mkV : (lugema,lugeda,loeb : Str) -> V ; -- ma, da, present sg 3
mkV : (lugema,lugeda,loeb,loetakse : Str) -> V ; mkV : (lugema,lugeda,loeb,loetakse : Str) -> V ; --ma, da, pres sg 3, pres passive
mkV : (tegema,teha,teeb,tehakse,tehke,tegi,teinud,tehtud : Str) -> V ; -- worst-case verb mkV : (tegema,teha,teeb,tehakse,tehke,tegi,teinud,tehtud : Str) -> V ; -- worst-case verb, 8 forms
mkV : (saama : V) -> (aru : Str) -> V ; -- püsiühendid TODO mkV : (saama : V) -> (aru : Str) -> V ; -- multi-word verbs
mkV : VW -> V ; -- verb from DictEst (WordNet)
} ; } ;
-- All the patterns above have $nominative$ as subject case. -- All the patterns above have $nominative$ as subject case.
-- If another case is wanted, use the following. -- If another case is wanted, use the following.
caseV : Case -> V -> V ; -- deviating subj. case, e.g. genitive "täytyä" caseV : Case -> V -> V ; -- deviating subj. case, e.g. allative "meeldima"
-- The verbs "be" and "go" are special. -- The verbs "be" and "go" are special.
@@ -206,9 +188,9 @@ oper
-- Three-place (ditransitive) verbs need two prepositions, of which -- Three-place (ditransitive) verbs need two prepositions, of which
-- the first one or both can be absent. -- the first one or both can be absent.
mkV3 : V -> Prep -> Prep -> V3 ; -- e.g. puhua, allative, elative mkV3 : V -> Prep -> Prep -> V3 ; -- e.g. rääkima, allative, elative
dirV3 : V -> Case -> V3 ; -- siirtää, (accusative), illative dirV3 : V -> Case -> V3 ; -- liigutama, (accusative), illative
dirdirV3 : V -> V3 ; -- antaa, (accusative), (allative) dirdirV3 : V -> V3 ; -- andma, (accusative), (allative)
--3 Other complement patterns --3 Other complement patterns
@@ -218,15 +200,15 @@ oper
mkV0 : V -> V0 ; --% mkV0 : V -> V0 ; --%
mkVS : V -> VS ; mkVS : V -> VS ;
mkV2S : V -> Prep -> V2S ; -- e.g. "sanoa" allative mkV2S : V -> Prep -> V2S ; -- e.g. "ütlema" allative
mkVV : V -> VV ; -- e.g. "alkaa" mkVV : V -> VV ; -- e.g. "hakkama"
mkVVf : V -> InfForm -> VV ; -- e.g. "hakkama" infMa mkVVf : V -> InfForm -> VV ; -- e.g. "hakkama" infMa
mkV2V : V -> Prep -> V2V ; -- e.g. "käskeä" genitive mkV2V : V -> Prep -> V2V ; -- e.g. "käskima" adessive
mkV2Vf : V -> Prep -> InfForm -> V2V ; -- e.g. "kieltää" partitive infMast mkV2Vf : V -> Prep -> InfForm -> V2V ; -- e.g. "keelama" partitive infMast
mkVA : V -> Prep -> VA ; -- e.g. "maistua" ablative mkVA : V -> Prep -> VA ; -- e.g. "muutuma" translative
mkV2A : V -> Prep -> Prep -> V2A ; -- e.g. "maalata" accusative translative mkV2A : V -> Prep -> Prep -> V2A ; -- e.g. "värvima" genitive translative
mkVQ : V -> VQ ; mkVQ : V -> VQ ;
mkV2Q : V -> Prep -> V2Q ; -- e.g. "kysyä" ablative mkV2Q : V -> Prep -> V2Q ; -- e.g. "küsima" ablative
mkAS : A -> AS ; --% mkAS : A -> AS ; --%
mkA2S : A -> Prep -> A2S ; --% mkA2S : A -> Prep -> A2S ; --%
@@ -279,22 +261,16 @@ oper
\c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ; \c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ;
accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ; accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ;
NW = {s : NForms ; lock_NW : {}} ;
AW = {s : NForms ; lock_AW : {}} ;
VW = {s : VForms ; lock_VW : {}} ;
AdvW = {s : Str ; lock_AdvW : {}} ;
mkN = overload { mkN = overload {
mkN : (nisu : Str) -> N = mk1N ; mkN : (nisu : Str) -> N = mk1N ;
mkN : (link,lingi : Str) -> N = mk2N ; mkN : (link,lingi : Str) -> N = mk2N ;
mkN : (tukk,tuku,tukku : Str) -> N = mk3N ; mkN : (tukk,tuku,tukku : Str) -> N = mk3N ;
mkN : (paat,paadi,paati,paatide : Str) -> N = mk4N ; mkN : (paat,paadi,paati,paate : Str) -> N = mk4N ;
mkN : (oun,ouna,ouna,ounasse,ounte,ounu : Str) -> N = mk6N ; mkN : (oun,ouna,ouna,ounasse,ounte,ounu : Str) -> N = mk6N ;
mkN : (sora : Str) -> (tie : N) -> N = mkStrN ; mkN : (sora : Str) -> (tie : N) -> N = mkStrN ;
mkN : (oma,tunto : N) -> N = mkNN ; mkN : (oma,tunto : N) -> N = mkNN ;
mkN : (sana : NW) -> N = \w -> nForms2N w.s ;
} ; } ;
-- Adjective forms (incl. comp and sup) are derived from noun forms -- Adjective forms (incl. comp and sup) are derived from noun forms
@@ -309,6 +285,8 @@ oper
mk1N : (link : Str) -> N = \s -> nForms2N (hjk_type s) ** {lock_N = <> } ; mk1N : (link : Str) -> N = \s -> nForms2N (hjk_type s) ** {lock_N = <> } ;
-- mk2N, mk3N, mk4N make sure that the user specified forms end up in the paradigm,
-- even though the rest is wrong
mk2N : (link,lingi : Str) -> N = \link,lingi -> mk2N : (link,lingi : Str) -> N = \link,lingi ->
let nfs : NForms = (nForms2 link lingi) ; let nfs : NForms = (nForms2 link lingi) ;
nfs_fixed : NForms = table { nfs_fixed : NForms = table {
@@ -334,24 +312,16 @@ oper
} ; } ;
in nForms2N nfs_fixed ** {lock_N = <> } ; in nForms2N nfs_fixed ** {lock_N = <> } ;
{- mk1N : (link : Str) -> N = \s -> nForms2N (hjk_type s) ** {lock_N = <> } ;
mk2N : (link,lingi : Str) -> N = \s,t -> nForms2N (nForms2 s t) ** {lock_N = <>} ;
mk3N : (tukk,tuku,tukku : Str) -> N = \s,t,u -> nForms2N (nForms3 s t u) ** {lock_N = <>} ;
--regular mk4N
mk4N : (paat,paadi,paati,paate : Str) -> N = \s,t,u,v -> nForms2N (nForms4 s t u v) ** {lock_N = <>} ;
-}
--experimental: make sure that the user specified forms end up in the paradigm, even though the rest is wrong mk4N : (paat,paadi,paati,paate : Str) -> N = \paat,paadi,paati,paate ->
--this is using pl part let nfs : NForms = (nForms4 paat paadi paati paate) ;
mk4N : (paat,paadi,paati,paatide : Str) -> N = \paat,paadi,paati,paate ->
let nfs : NForms = (nForms4 paat paadi paati paate) ;
nfs_fixed : NForms = table { nfs_fixed : NForms = table {
0 => paat ; 0 => paat ;
1 => paadi ; 1 => paadi ;
2 => paati ; 2 => paati ;
3 => nfs ! 3 ; 3 => nfs ! 3 ;
4 => nfs ! 4 ; 4 => nfs ! 4 ;
5 => paate 5 => paate
} ; } ;
in nForms2N nfs_fixed ** {lock_N = <> } ; in nForms2N nfs_fixed ** {lock_N = <> } ;
@@ -403,7 +373,7 @@ oper
--heuristics to catch palk:palga but not maakas:maaka (for longer words, same with more ?s) --heuristics to catch palk:palga but not maakas:maaka (for longer words, same with more ?s)
--didn't work, don't try this --didn't work, don't try this
--<? + ? + #c, ? + ? + #c + #v> => hjk_type_IVb_audit link i ; --<? + ? + #c, ? + ? + #c + #v> => hjk_type_IVb_audit link i ;
_ => hjk_type link _ => hjk_type2 link i
} ; } ;
nForms3 : (_,_,_ : Str) -> NForms = \tukk,tuku,tukku -> nForms3 : (_,_,_ : Str) -> NForms = \tukk,tuku,tukku ->
@@ -422,13 +392,12 @@ oper
<_ + "ik", _ + "iku", _ + "ikku"> => hjk_type_VI_imelik tukk ; --imelik:_:imelikku caught here <_ + "ik", _ + "iku", _ + "ikku"> => hjk_type_VI_imelik tukk ; --imelik:_:imelikku caught here
<_ + #c, _ + #v, _ + #v> => hjk_type_VI_tukk tukk tuku ;
<_ + "ud", _ + "u", _ + "ut"> => nForms2 tukk tuku ; -- -nud/-tud participles are not like 'voolik' <_ + "ud", _ + "u", _ + "ut"> => nForms2 tukk tuku ; -- -nud/-tud participles are not like 'voolik'
<_ + #c, _ + #v, _ + #v + "t"> => hjk_type_IVb_audit tukk u ; --voolik:_:voolikut caught here <_ + #c, _ + #v, _ + #v + "t"> => hjk_type_IVb_audit tukk u ; --voolik:_:voolikut caught here
_ => nForms2 tukk tuku _ => nForms2 tukk tuku
} ; } ;
nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paate -> nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paate ->
case <paat,paadi,paati,paate> of { case <paat,paadi,paati,paate> of {
-- distinguish between joonis and segadus -- distinguish between joonis and segadus
<_ +("ne"|"s"), _+"se", _+"st", _+"seid"> => hjk_type_Va_otsene paat ; <_ +("ne"|"s"), _+"se", _+"st", _+"seid"> => hjk_type_Va_otsene paat ;
@@ -442,6 +411,7 @@ oper
_ => nForms3 paat paadi paati _ => nForms3 paat paadi paati
} ; } ;
{- {-
--Version that uses pl gen instead of pl part --Version that uses pl gen instead of pl part
nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paatide -> nForms4 : (_,_,_,_ : Str) -> NForms = \paat,paadi,paati,paatide ->
@@ -468,7 +438,7 @@ oper
mmkN2 : N -> Prep -> N2 = \n,c -> n ** {c2 = c ; isPre = mkIsPre c ; lock_N2 = <>} ; mmkN2 : N -> Prep -> N2 = \n,c -> n ** {c2 = c ; isPre = mkIsPre c ; lock_N2 = <>} ;
mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ;
isPre = mkIsPre c ; -- matka Lontoosta Pariisiin isPre = mkIsPre c ; -- matka Londonist Pariisi
isPre2 = mkIsPre e ; -- Suomen voitto Ruotsista isPre2 = mkIsPre e ; -- Suomen voitto Ruotsista
lock_N3 = <> lock_N3 = <>
} ; } ;
@@ -495,10 +465,9 @@ oper
-- TODO: temporary usage of regAdjective1 -- TODO: temporary usage of regAdjective1
mkA : N -> (valmim,valmeim : Str) -> (infl : Infl) -> A = mkA : N -> (valmim,valmeim : Str) -> (infl : Infl) -> A =
\n,c,s,infl -> (regAdjective1 n c s) ** {infl = infl ; lock_A = <>} ; \n,c,s,infl -> (regAdjective1 n c s) ** {infl = infl ; lock_A = <>} ;
mkA : (sana : AW) -> A = \w -> noun2adjDeg (nForms2N w.s) ** {infl = Regular} ;
} ; } ;
genAttrA balti = {s = \\_,_ => balti ; infl = Invariable ; lock_A = <>} ; invA balti = {s = \\_,_ => balti ; infl = Invariable ; lock_A = <>} ;
mkA_1 : Str -> A = \x -> noun2adjDeg (mk1N x) ** {infl = Regular ; lock_A = <>} ; mkA_1 : Str -> A = \x -> noun2adjDeg (mk1N x) ** {infl = Regular ; lock_A = <>} ;
@@ -550,7 +519,6 @@ oper
mkV : (lugema,lugeda,loeb,loetakse : Str) -> V = mk4V ; mkV : (lugema,lugeda,loeb,loetakse : Str) -> V = mk4V ;
mkV : (tegema,teha,teeb,tehakse,tehke,tegi,teinud,tehtud : Str) -> V = mk8V ; mkV : (tegema,teha,teeb,tehakse,tehke,tegi,teinud,tehtud : Str) -> V = mk8V ;
mkV : (aru : Str) -> (saama : V) -> V = mkPV ; -- particle verbs mkV : (aru : Str) -> (saama : V) -> V = mkPV ; -- particle verbs
mkV : (sana : VW) -> V = \w -> vforms2V w.s ** {sc = NPCase Nom ; lock_V = <>} ;
} ; } ;
mk1V : Str -> V = \s -> mk1V : Str -> V = \s ->
@@ -742,7 +710,6 @@ oper
mkAdv = overload { mkAdv = overload {
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ; mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
mkAdv : AdvW -> Adv = \s -> {s = s.s ; lock_Adv = <>} ;
} ; } ;
mkV2 = overload { mkV2 = overload {