Merge Estonian v1.0.0-alpha from Kaarel Kaljurand

This commit is contained in:
hallgren
2014-06-16 13:58:04 +00:00
parent 3eb6e99e33
commit 767a0768fe
5 changed files with 98163 additions and 40594 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -52,7 +52,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
-- 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 ; hjk_type_IVb_audit1 : Str -> Str -> NForms ;
hjk_type_VI_link2 : Str -> Str -> NForms ; hjk_type_VI_link2 : Str -> Str -> NForms ;
hjk_type2 : Str -> Str -> NForms ; hjk_type2 : Str -> Str -> NForms ;
@@ -85,6 +85,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
nForms6 x (x+v_g) (x+v_g+"t") (x+v_g+"sse") (x+v_g+"te") (x+v_pl+"id") ; nForms6 x (x+v_g) (x+v_g+"t") (x+v_g+"sse") (x+v_g+"te") (x+v_pl+"id") ;
-- TODO: clean this up -- TODO: clean this up
-- 2nd argument is sg gen without the final vowel
hjk_type_IVb_audit1 x y = hjk_type_IVb_audit1 x y =
nForms6 x (y + "i") (y+"it") (y+"isse") (y+"ite") (y+"eid") ; nForms6 x (y + "i") (y+"it") (y+"isse") (y+"ite") (y+"eid") ;
@@ -140,6 +141,10 @@ resource HjkEst = open ResEst, Prelude, Predef in {
in in
nForms6 x (f+"e") (f+"t") (f+"esse") (f+"te") (f+"i") ; nForms6 x (f+"e") (f+"t") (f+"esse") (f+"te") (f+"i") ;
-- Examples:
-- siid, link, president, romanss, tendents
-- rostbiif, portfell, seersant, impulss
-- TODO: remove: never called
hjk_type_VI_link x = hjk_type_VI_link x =
let let
x_n : Str = weaker_noun x x_n : Str = weaker_noun x
@@ -153,6 +158,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
-- TODO: think about it -- TODO: think about it
e : Str = case i of { e : Str = case i of {
"a" => "asid" ; -- pikk/pika -> pikkasid "a" => "asid" ; -- pikk/pika -> pikkasid
"e" => "i" ; -- sulg/sule -> sulgi
_ => "e" _ => "e"
} }
in in
@@ -180,11 +186,11 @@ resource HjkEst = open ResEst, Prelude, Predef in {
in in
nForms6 x x_t (x+"t") (x_t+"sse") (x+"te") (x_t+"id") ; nForms6 x x_t (x+"t") (x_t+"sse") (x+"te") (x_t+"id") ;
--Identical to the above, just taking 2 arguments (nom + gen) --Identical to the above, just taking 2 arguments (nom + gen)
--There are 67 nouns in test cases where stronger_noun gets it wrong --There are 67 nouns in test cases where stronger_noun gets it wrong
--handles liige:liikme as well --handles liige:liikme as well
hjk_type_VII_touge2 : (_,_ : Str) -> NForms ; hjk_type_VII_touge2 : (_,_ : Str) -> NForms ;
hjk_type_VII_touge2 touge touke = hjk_type_VII_touge2 touge touke =
let let
liikme : Str = case touke of { liikme : Str = case touke of {
_ + "me" => touke ; _ + "me" => touke ;
@@ -404,6 +410,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
<_, _ + #v + "s", _> <_, _ + #v + "s", _>
=> hjk_type_Va_otsene x ; => hjk_type_Va_otsene x ;
-- TODO: only for adjectives?
<_, _ + ("v"|"tav"), _> <_, _ + ("v"|"tav"), _>
=> hjk_type_IVb_audit x "a" ; => hjk_type_IVb_audit x "a" ;
@@ -532,7 +539,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
#c + #v + #c + #v => S21 ; #c + #v + #c + #v => S21 ;
#c + #v + #v + #v => S22 ; -- muie, neiu, riie #c + #v + #v + #v => S22 ; -- muie, neiu, riie
? + ? + ? + ? => S1 ; ? + ? + ? + ? => S1 ;
-- all 5-letters -- at least 5-letters
_ + #c + "ia" => S2 ; -- aaria, minia, orgia, kirurgia, nostalgia _ + #c + "ia" => S2 ; -- aaria, minia, orgia, kirurgia, nostalgia
#v + #c + #c + #v + #v => S1 ; -- armee #v + #c + #c + #v + #v => S1 ; -- armee
#c + #v + #c + #v + #v => S1 ; -- depoo #c + #v + #c + #v + #v => S1 ; -- depoo
@@ -559,7 +566,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
_ + ? + #v + #vv + #c => S1 ; -- -ioos, kruiis _ + ? + #v + #vv + #c => S1 ; -- -ioos, kruiis
#c + #c + #v + #v + #v + #c => S2 ; -- flaier #c + #c + #v + #v + #v + #c => S2 ; -- flaier
_ + ? + #c + #v + #c + #v => S3 ; -- oluline _ + ? + #c + #v + #c + #v => S3 ; -- oluline
-- all 6-letters -- at least 6-letters
#v + #c + #c + #v + #v + #c => S1 ; -- aplaus #v + #c + #c + #v + #v + #c => S1 ; -- aplaus
#v + #c + #c + #v + #c + #c => S2 ; -- astang, ellips #v + #c + #c + #v + #c + #c => S2 ; -- astang, ellips
#c + #vv + #c + #v + #v => S23 ; -- muumia, raadio, TODO: exclude 'vaarao' #c + #vv + #c + #v + #v => S23 ; -- muumia, raadio, TODO: exclude 'vaarao'
@@ -570,15 +577,18 @@ resource HjkEst = open ResEst, Prelude, Predef in {
#v + #c + #v + #c + #v + #v => S1 ; -- agoraa #v + #c + #v + #c + #v + #v => S1 ; -- agoraa
#c + #v + #c + #v + #c + #c => S2 ; #c + #v + #c + #v + #c + #c => S2 ;
#c + #v + #c + #v + #c + #v => S3 ; #c + #v + #c + #v + #c + #v => S3 ;
#v + #c + #v + #c + #c + #v => S3 ; -- yheksa _ + #c + #v + #vv + #c + #v => S2 ; -- koaala
_ + #c + #v + #v + #v + #c + #v => S3 ; -- saiake
#v + #c + #v + #c + #c + #v => S3 ; -- üheksa
#c + #v + #c + #c + #v + #c => S2 ; -- rektor #c + #v + #c + #c + #v + #c => S2 ; -- rektor
#c + #v + #c + #v + #v + #c => S2 ; -- paleus #c + #v + #c + #v + #v + #c => S2 ; -- paleus
#c + #v + #v + #c + #v + #c => S2 ; -- meeter, reegel #c + #v + #v + #c + #v + #c => S2 ; -- meeter, reegel
#v + #v + #c + #c + #v + #c => S2 ; -- aastak #v + #v + #c + #c + #v + #c => S2 ; -- aastak
#v + #c + #c + #c + #v + #c => S2 ; -- andmik #v + #c + #c + #c + #v + #c => S2 ; -- andmik
#v + #c + #c + #v + #c + #v => S3 ; #v + #c + #c + #v + #c + #v => S3 ;
_ + #v + #v + #v + #c + #v + #v => S1 ; -- meierei
_ + #v + #c + #v + #c + #v + #c => S3 ; -- alevik, elanik _ + #v + #c + #v + #c + #v + #c => S3 ; -- alevik, elanik
-- all 7-letters -- at least 7-letters
_ + ? + ? + #c + #vv + #c => S1 ; -- double vowel in the last syllable: bensiin, benseen, bensool _ + ? + ? + #c + #vv + #c => S1 ; -- double vowel in the last syllable: bensiin, benseen, bensool
#c + #v + #v + #c + #c + #v + #c => S2 ; -- jooksik #c + #v + #v + #c + #c + #v + #c => S2 ; -- jooksik
#c + #v + #c + #c + #c + #v + #c => S2 ; -- hurtsik #c + #v + #c + #c + #c + #v + #c => S2 ; -- hurtsik
@@ -605,6 +615,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
_ + #v + #v + #c + #v + #c + #c + #v + #c => S3 ; -- ainestik _ + #v + #v + #c + #v + #c + #c + #v + #c => S3 ; -- ainestik
_ + #c + #c + #v + #c + #c + #v + #c + #c => S3 ; -- ampersand _ + #c + #c + #v + #c + #c + #v + #c + #c => S3 ; -- ampersand
_ + #c + #v + #c + #v + #c + #c => S1 ; -- dividend _ + #c + #v + #c + #v + #c + #c => S1 ; -- dividend
_ + #v + #vv => S1 ; -- buržuaa
_ + #v + #c + #c + #c + #v + #v => S1 ; -- displei _ + #v + #c + #c + #c + #v + #v => S1 ; -- displei
_ + #c + #v + #c + #c + #v + #v => S1 ; -- politsei _ + #c + #v + #c + #c + #v + #v => S1 ; -- politsei
_ + #c + #v + #c + #v + #v => S1 ; -- defilee, kompanii _ + #c + #v + #c + #v + #v => S1 ; -- defilee, kompanii

View File

@@ -9,7 +9,7 @@ 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" "õuna" "õuna"; apple_N = mkN "õun" "õuna" "õuna" "õunu" ;
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" ;
@@ -22,7 +22,7 @@ lin
big_A = mkA (mkN "suur" "suure" "suurt" "suurde" "suurte" "suuri"); big_A = mkA (mkN "suur" "suure" "suurt" "suurde" "suurte" "suuri");
bike_N = mkN "ratas" "ratta" "ratast" ; bike_N = mkN "ratas" "ratta" "ratast" ;
bird_N = mkN "lind" "linnu" "lindu" ; bird_N = mkN "lind" "linnu" "lindu" ;
black_A = mkA (mkN "must" "musta" "musta") ; black_A = mkA (mkN "must" "musta" "musta") "mustem" "musteim" ;
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" ;
@@ -48,10 +48,10 @@ lin
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 (mkN "tark" "targa" "tarka") ; clever_A = mkA (mkN "tark" "targa" "tarka") "targem" "targeim" ;
close_V2 = mkV2 (mkV "sulgema") ; close_V2 = mkV2 (mkV "sulgema") ;
coat_N = mkN "mantel" ; coat_N = mkN "mantel" ;
cold_A = mkA (mkN "külm" "külma" "külma") ; cold_A = mkA (mkN "külm" "külma" "külma") "külmem" "külmim" ;
come_V = mkV "tulema" ; come_V = mkV "tulema" ;
computer_N = mkN "arvuti" ; computer_N = mkN "arvuti" ;
country_N = mkN "maa" ; country_N = mkN "maa" ;
@@ -66,11 +66,11 @@ lin
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" "koera" "koera" ; dog_N = mkN "koer" "koera" "koera" ;
door_N = mkN "uks" "ukse" "ust" ; door_N = mkN "uks" "ukse" "ust" "uksesse" "uste" "uksi" ;
drink_V2 = mkV2 (mkV "jooma") cpartitive ; drink_V2 = mkV2 (mkV "jooma") cpartitive ;
easy_A2V = mkA2 (mkA (mkN "lihtne" "lihtsa" "lihtsat")) callative ; easy_A2V = mkA2 (mkA (mkN "lihtne" "lihtsa" "lihtsat" "lihtsasse" "lihtsate" "lihtsaid")) callative ;
eat_V2 = mkV2 (mkV "sööma") cpartitive ; eat_V2 = mkV2 (mkV "sööma") cpartitive ;
empty_A = mkA (mkN "tühi" "tühja" "tühja" "tühja" "tühjade" "tühje") ; empty_A = mkA (mkN "tühi" "tühja" "tühja" "tühja" "tühjade" "tühje") "tühjem" "tühjeim" ;
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") ;
@@ -81,13 +81,13 @@ lin
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" "sõbra" "sõpra" "sõpra" "sõprade" "sõpru" ; friend_N = mkN "sõber" "sõbra" "sõpra" "sõpra" "sõprade" "sõpru" ;
fruit_N = mkN "puu" (mkN "vili" "vilja" "vilja") ; fruit_N = mkN "puu" (mkN "vili" "vilja" "vilja" "vilja" "viljade" "vilju") ;
fun_AV = mkAV (mkA (mkN "lõbus" "lõbusa" "lõbusat")) ; fun_AV = mkAV (mkA (mkN "lõbus" "lõbusa" "lõbusat")) ;
garden_N = mkN "aed" "aia" "aeda"; garden_N = mkN "aed" "aia" "aeda";
girl_N = mkN "tüdruk" "tüdruku" "tüdrukut" ; girl_N = mkN "tüdruk" "tüdruku" "tüdrukut" ;
glove_N = mkN "kinnas" "kinda" "kinnast" ; glove_N = mkN "kinnas" "kinda" "kinnast" ;
gold_N = mkN "kuld" "kulla" "kulda" ; gold_N = mkN "kuld" "kulla" "kulda" ;
good_A = mkA (mkN "hea") "parem" "parim" ; good_A = mkA (mkN "hea" "hea" "head" "häid") "parem" "parim" ;
go_V = vMinema ; -- irregular go_V = vMinema ; -- irregular
green_A = mkA "roheline" ; green_A = mkA "roheline" ;
harbour_N = mkN "sadam" "sadama" "sadamat" ; harbour_N = mkN "sadam" "sadama" "sadamat" ;
@@ -97,24 +97,24 @@ lin
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 (mkN "kuum" "kuuma" "kuuma") ; hot_A = mkA (mkN "kuum" "kuuma" "kuuma") "kuumem" "kuumim" ;
house_N = mkN "maja" ; house_N = mkN "maja" ;
important_A = mkA (mkN "tähtis" "tähtsa" "tähtsat") ; important_A = mkA (mkN "tähtis" "tähtsa" "tähtsat") ;
industry_N = mkN "tööstus" ; industry_N = mkN "tööstus" ;
iron_N = mkN "raud" "raua" "rauda" ; iron_N = mkN "raud" "raua" "rauda" ;
king_N = mkN "kuningas" ; king_N = mkN "kuningas" ;
know_VS = mkVS know_V ; know_VS = mkVS teadma ;
know_VQ = mkVQ know_V ; know_VQ = mkVQ teadma ;
know_V2 = mkV2 (mkV "tundma") ; know_V2 = mkV2 (mkV "tundma") ;
lake_N = mkN "järv" "järve" "järve" ; 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 = skin_N ; 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" pidama) celative ;
listen_V2 = mkV2 (mkV "kuulama" "kuulata") partitive ; listen_V2 = mkV2 (mkV "kuulama" "kuulata") partitive ;
live_V = mkV "elama" ; live_V = mkV "elama" ;
long_A = mkA (mkN "pikk" "pika" "pikka") ; long_A = mkA (mkN "pikk" "pika" "pikka") "pikem" "pikim" ;
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 ;
@@ -126,7 +126,7 @@ lin
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 (mkN "kitsas" "kitsa" "kitsast" "kitsasse" "kitsaste" "kitsaid") ;
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" "lehe" "lehte") ; newspaper_N = mkN "aja" (mkN "leht" "lehe" "lehte") ;
oil_N = mkN "õli" ; oil_N = mkN "õli" ;
@@ -150,7 +150,7 @@ lin
red_A = mkA "punane" ; red_A = mkA "punane" ;
religion_N = mkN "usk" "usu" "usku" ; religion_N = mkN "usk" "usu" "usku" ;
restaurant_N = mkN "restoran" ; restaurant_N = mkN "restoran" ;
river_N = mkN "jõgi" "jõe" "jõge" ; river_N = mkN "jõgi" "jõe" "jõge" "jõkke" "jõgede" "jõgesid" ;
rock_N = mkN "kalju" ; rock_N = mkN "kalju" ;
roof_N = mkN "katus" ; roof_N = mkN "katus" ;
rubber_N = mkN "kumm" ; rubber_N = mkN "kumm" ;
@@ -158,10 +158,10 @@ 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" "mere" "merd" ; sea_N = mkN "meri" "mere" "merd" "merre" "merede" "meresid" ;
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" "müüa" "müüb" "müüakse" "müüge" "müüs" "müünud" "müüdud") accPrep callative ;
send_V3 = mkV3 (mkV "saatma") accPrep callative ; send_V3 = mkV3 (mkV "saatma") accPrep callative ;
sheep_N = mkN "lammas" "lamba" "lammast" ; sheep_N = mkN "lammas" "lamba" "lammast" ;
ship_N = mkN "laev" "laeva" "laeva" ; ship_N = mkN "laev" "laeva" "laeva" ;
@@ -175,27 +175,27 @@ lin
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" "suka" "sukka" ; sock_N = mkN "sukk" "suka" "sukka" ;
speak_V2 = mkV2 talk_V cpartitive ; speak_V2 = mkV2 raakima cpartitive ;
star_N = mkN "täht" "tähe" "tähte" ; 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" "ahju" "ahju" ; stove_N = mkN "ahi" "ahju" "ahju" "ahju" "ahjude" "ahje" ;
student_N = mkN "tudeng" ; student_N = mkN "tudeng" "tudengi" "tudengit" "tudengisse" "tudengite" "tudengeid" ;
stupid_A = mkA "loll" ; stupid_A = mkA "loll" ;
sun_N = mkN "päike" "päikse" "päikest" ; sun_N = mkN "päike" "päikse" "päikest" "päiksesse" "päikeste" "päikseid" ;
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" "laua" "lauda" ; table_N = mkN "laud" "laua" "lauda" ;
talk_V3 = mkV3 talk_V callative celative ; talk_V3 = mkV3 raakima 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 (mkN "paks" "paksu" "paksu") ; thick_A = mkA (mkN "paks" "paksu" "paksu") "paksem" "pakseim" ;
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 (mkN "kole" "koleda" "koledat") ; ugly_A = mkA (mkN "kole" "koleda") ;
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" ;
@@ -204,16 +204,16 @@ lin
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" "sõja" "sõda" ; war_N = mkN "sõda" "sõja" "sõda" ;
watch_V2 = mkV2 (mkV "vaatama" "vaadata") cpartitive ; watch_V2 = mkV2 (mkV "vaatama" "vaadata") cpartitive ;
water_N = mkN "vesi" "vee" "vett" ; water_N = mkN "vesi" "vee" "vett" "vette" "vete" "vesi" ;
white_A = mkA "valge" ; white_A = mkA "valge" ;
window_N = mkN "aken" "akna" "akent" ; window_N = mkN "aken" "akna" "akent" "aknasse" "akende" "aknaid" ;
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" ;
wonder_VQ = mkVQ (mkV "arutlema" "arutleda") ; -- TODO wonder_VQ = mkVQ (mkV "arutlema" "arutleda") ; -- TODO
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 (mkN "kollane" "kollase" "kollast" "kollasesse" "kollaste" "kollaseid") ;
young_A = mkA (mkN "noor" "noore" "noort") ; young_A = mkA (mkN "noor" "noore" "noort") ;
do_V2 = mkV2 (mkV "tegema" "teha") ; do_V2 = mkV2 (mkV "tegema" "teha") ;
@@ -230,47 +230,47 @@ lin
right_Ord = mkOrd1 (mkN "parem" "parema" "paremat") ; right_Ord = mkOrd1 (mkN "parem" "parema" "paremat") ;
far_Adv = mkAdv "kaugel" ; far_Adv = mkAdv "kaugel" ;
correct_A = mkA (mkN "õige" "õige" "õiget" "õigesse" "õigete" "õigeid") ; correct_A = mkA (mkN "õige" "õige" "õiget" "õigesse" "õigete" "õigeid") ;
dry_A = mkA (mkN "kuiv" "kuiva" "kuiva") ; dry_A = mkA (mkN "kuiv" "kuiva" "kuiva") "kuivem" "kuiveim" ;
dull_A = mkA "igav" ; dull_A = mkA "igav" ;
full_A = mkA (mkN "täis" "täie" "täit") "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äide" "täied" "täite") "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 (mkN "sile" "sileda" "siledat" "siledasse" "siledate" "siledaid") ; smooth_A = mkA (mkN "sile" "sileda") ;
straight_A = mkA "sirge" ; straight_A = mkA "sirge" ;
wet_A = mkA (mkN "märg" "märja" "märga") ; wet_A = mkA (mkN "märg" "märja" "märga") "märjem" "märjeim" ;
wide_A = mkA (mkN "lai" "laia" "laia") ; wide_A = mkA (mkN "lai" "laia" "laia" "laia" "laiade" "laiu") "laiem" "laieim" ;
animal_N = mkN "loom" "looma" "looma" ; animal_N = mkN "loom" "looma" "looma" "loomi" ;
ashes_N = mkN "tuhk" "tuha" "tuhka" ; ashes_N = mkN "tuhk" "tuha" "tuhka" ;
back_N = mkN "selg" "selja" "selga" ; back_N = mkN "selg" "selja" "selga" ;
bark_N = mkN "koor" "koore" "koort" ; bark_N = mkN "koor" "koore" "koort" "koorde" "koorte" "koori" ;
belly_N = mkN "kõht" "kõhu" "kõhtu" ; belly_N = mkN "kõht" "kõhu" "kõhtu" ;
blood_N = mkN "veri" "vere" "verd" "verre" "verede" "veresid" ; blood_N = mkN "veri" "vere" "verd" "verre" "verede" "veresid" ;
bone_N = mkN "luu" ; bone_N = mkN "luu" ;
breast_N = mkN "rind" "rinna" "rinda" ; breast_N = mkN "rind" "rinna" "rinda" ;
cloud_N = mkN "pilv" "pilve" "pilve" ; cloud_N = mkN "pilv" "pilve" "pilve" "pilvi" ;
day_N = mkN "päev" "päeva" "päeva" ; day_N = mkN "päev" "päeva" "päeva" ;
dust_N = mkN "tolm" "tolmu" "tolmu" ; dust_N = mkN "tolm" "tolmu" "tolmu" ;
ear_N = mkN "kõrv" "kõrva" "kõrva" ; ear_N = mkN "kõrv" "kõrva" "kõrva" ;
earth_N = mkN "maa" ; earth_N = mkN "maa" "maa" "maad" "maid" ;
egg_N = mkN "muna" ; egg_N = mkN "muna" ;
eye_N = mkN "silm" "silma" "silma" ; eye_N = mkN "silm" "silma" "silma" "silmi" ;
fat_N = mkN "rasv" "rasva" "rasva" ; fat_N = mkN "rasv" "rasva" "rasva" ;
feather_N = mkN "sulg" "sule" "sulge" ; feather_N = mkN "sulg" "sule" "sulge" ;
fingernail_N = mkN "küüs" "küüne" "küünt" ; fingernail_N = mkN "küüs" "küüne" "küünt" "küünde" "küünte" "küüsi" ;
fire_N = mkN "tuli" "tule" "tuld" "tulle" "tulede" "tulesid" ; fire_N = mkN "tuli" "tule" "tuld" "tulle" "tulede" "tulesid" ;
flower_N = mkN "lill" "lille" "lille" ; flower_N = mkN "lill" "lille" "lille" ;
fog_N = mkN "udu" ; fog_N = mkN "udu" ;
foot_N = mkN "jalg" "jala" "jalga" ; foot_N = mkN "jalg" "jala" "jalga" "jalgu" ;
forest_N = mkN "mets" "metsa" "metsa" ; forest_N = mkN "mets" "metsa" "metsa" ;
grass_N = mkN "rohi" "rohu" "rohtu" ; grass_N = mkN "rohi" "rohu" "rohtu" "rohtu" "rohtude" "rohtusid" ;
guts_N = mkN "soolestik" ; guts_N = mkN "soolestik" ;
hair_N = mkN "juuksed" "juuste" "juukseid" "juustesse" "juuste" "juukseid" ; -- TODO: plural hair_N = mkN "juuksed" "juuste" "juukseid" "juustesse" "juuste" "juukseid" ; -- TODO: plural
hand_N = mkN "käsi" "käe" "kätt" ; hand_N = mkN "käsi" "käe" "kätt" "kätte" "käte" "käsi" ;
head_N = mkN "pea" ; head_N = mkN "pea" "pea" "pead" "päid" ;
heart_N = mkN "süda" "südame" "südant" ; heart_N = mkN "süda" "südame" "südant" "südamesse" "südamete" "südameid" ;
horn_N = mkN "sarv" "sarve" "sarve" ; horn_N = mkN "sarv" "sarve" "sarve" ;
husband_N = man_N ; husband_N = man_N ;
ice_N = mkN "jää" ; ice_N = mkN "jää" ;
@@ -278,30 +278,30 @@ lin
leaf_N = mkN "leht" "lehe" "lehte" ; leaf_N = mkN "leht" "lehe" "lehte" ;
leg_N = mkN "jalg" "jala" "jalga" ; leg_N = mkN "jalg" "jala" "jalga" ;
liver_N = mkN "maks" "maksa" "maksa" ; liver_N = mkN "maks" "maksa" "maksa" ;
louse_N = mkN "täi" ; louse_N = mkN "täi" "täi" "täid" ;
mouth_N = mkN "suu" ; mouth_N = mkN "suu" "suu" "suud" "suhu" "suude" "suusid" ;
name_N = mkN "nimi" "nime" "nime" ; name_N = mkN "nimi" "nime" "nime" "nimesse" "nimede" "nimesid" ;
neck_N = mkN "kael" "kaela" "kaela" ; 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" "inimese" "inimest" "inimesse" "inimeste" "inimesi" ;
rain_N = mkN "vihm" "vihma" "vihma" ; rain_N = mkN "vihm" "vihma" "vihma" ;
road_N = mkN "tee" ; road_N = mkN "tee" ;
root_N = mkN "juur" "juure" "juurt" ; root_N = mkN "juur" "juure" "juurt" ;
rope_N = mkN "köis" "köie" "köit" ; rope_N = mkN "köis" "köie" "köit" "köiesse" "köite" "köisi" ;
salt_N = mkN "sool" "soola" "soola" ; salt_N = mkN "sool" "soola" "soola" ;
sand_N = mkN "liiv" "liiva" "liiva" ; sand_N = mkN "liiv" "liiva" "liiva" ;
seed_N = mkN "seeme" "seemne" "seemet" ; seed_N = mkN "seeme" "seemne" "seemet" "seemnesse" "seemnete" "seemneid" ;
skin_N = mkN "nahk" "naha" "nahka" ; skin_N = mkN "nahk" "naha" "nahka" ;
sky_N = mkN "taevas" "taeva" "taevast" ; sky_N = mkN "taevas" "taeva" "taevast" ;
smoke_N = mkN "suits" "suitsu" "suitsu" ; smoke_N = mkN "suits" "suitsu" "suitsu" "suitsu" "suitsude" "suitse" ;
snow_N = mkN "lumi" "lume" "lund" ; snow_N = mkN "lumi" "lume" "lund" "lumme" "lumede" "lumesid" ;
stick_N = mkN "kepp" ; stick_N = mkN "kepp" ;
tail_N = mkN "saba" ; tail_N = mkN "saba" ;
tongue_N = mkN "keel" "keele" "keelt" ; tongue_N = mkN "keel" "keele" "keelt" "keelde" "keelte" "keeli" ;
tooth_N = mkN "hammas" "hamba" "hammast" ; tooth_N = mkN "hammas" "hamba" "hammast" ;
wife_N = mkN "naine" ; wife_N = mkN "naine" "naise" "naist" "naisesse" "naiste" "naisi" ;
wind_N = mkN "tuul" "tuule" "tuult" ; wind_N = mkN "tuul" "tuule" "tuult" "tuulde" "tuulte" "tuuli" ;
wing_N = mkN "tiib" "tiiva" "tiiba" ; wing_N = mkN "tiib" "tiiva" "tiiba" ;
worm_N = mkN "uss" ; worm_N = mkN "uss" ;
year_N = mkN "aasta" ; year_N = mkN "aasta" ;
@@ -321,7 +321,7 @@ lin
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 ;
hold_V2 = mkV2 (mkV "hoidma") cpartitive ; hold_V2 = mkV2 (mkV "hoidma") cpartitive ;
hunt_V2 = mkV2 (mkV "jahti" (mkV "pidama")) cpartitive ; hunt_V2 = mkV2 (mkV "jahti" pidama) cpartitive ;
kill_V2 = mkV2 (mkV "tapma") ; kill_V2 = mkV2 (mkV "tapma") ;
laugh_V = mkV "naerma" ; laugh_V = mkV "naerma" ;
lie_V = mkV "lamama" ; -- TODO: maybe: valetama lie_V = mkV "lamama" ; -- TODO: maybe: valetama
@@ -329,7 +329,7 @@ lin
pull_V2 = mkV2 (mkV "tõmbama" "tõmmata") ; 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" "kraapida" "kraabib") cpartitive ;
sew_V = mkV "külvama" "külvata" ; 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" ;
@@ -361,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 (mkN "ebakindel" "ebakindla" "ebakindlat") ; uncertain_A = mkA (mkN "ebakindel" "ebakindla" "ebakindlat" "ebakindlasse" "ebakindlate" "ebakindlaid") ;
oper oper
@@ -371,7 +371,8 @@ lin
ctranslative = casePrep translative ; ctranslative = casePrep translative ;
celative = casePrep elative ; celative = casePrep elative ;
callative = casePrep allative ; callative = casePrep allative ;
know_V = (mkV "teadma" "teada" "teab") ; teadma = mkV "teadma" "teada" "teab" ;
talk_V = mkV "rääkima" "rääkida" "räägib" ; raakima = mkV "rääkima" "rääkida" "räägib" ;
pidama = mkV "pidama" "pidada" "peab" "peetakse" ;
} ; } ;

View File

@@ -336,53 +336,92 @@ oper
s = \\c => oma.s ! c + tunto.s ! c ; lock_N = <> s = \\c => oma.s ! c + tunto.s ! c ; lock_N = <>
} ; ---- TODO: oma in possessive suffix forms } ; ---- TODO: oma in possessive suffix forms
nForms2 : (_,_ : Str) -> NForms = \link,lingi ->
-- This rule uses the additional information that can be derived from the
-- singular genitive:
-- - stem vowel (the sg gen always ends with a vowel)
-- - e-deletion (laager/laagri vs paber/paberi)
-- - adjectives with different genitive ending compared to nouns
-- vahe/vaheda -> vahedat
-- - type VII (tõuge)
nForms2 : (_,_ : Str) -> NForms = \link,lingi ->
let let
i = last lingi ; i = last lingi ;
reegl = init lingi ; reegl = init lingi ;
in in
case <link,lingi> of { case <link,lingi> of {
<_ + "el", _ + #c + "li"> => hjk_type_IVb_audit1 link reegl ; -- e-deletion
<_ + "er", _ + #c + "ri"> => hjk_type_IVb_audit1 link reegl ; <_ + #c + "el", _ + #c + "li"> => hjk_type_IVb_audit1 link reegl ;
<_ + #c + "er", _ + #c + "ri"> => hjk_type_IVb_audit1 link reegl ;
<_ + #c + "el", _ + #c + "eli"> => hjk_type_IVb_audit link i ; <_ + #c + "el", _ + #c + "eli"> => hjk_type_IVb_audit link i ;
<_ + #c + "er", _ + #c + "eri"> => hjk_type_IVb_audit link i ; <_ + #c + "er", _ + #c + "eri"> => hjk_type_IVb_audit link i ;
<_ + "be", _ + "pe"> => hjk_type_VII_touge2 link lingi ; -- This applies only to adjectives.
<_ + "de", _ + "te"> => hjk_type_VII_touge2 link lingi ; -- If genitive just adds 'da' to the nominative, then construct
<_ + "ge", _ + "ke"> => hjk_type_VII_touge2 link lingi ; -- the paradigm using IVa_aasta, giving it the genitive as the argument.
<_ + "pe", _ + "ppe"> => hjk_type_VII_touge2 link lingi ; -- We assume here that the the nominative is overriten by the calling rule.
<_ + "te", _ + "tte"> => hjk_type_VII_touge2 link lingi ; -- Example: vahe, vaheda, vahedaT, vahedaSSE, vahedaTE, vahedaID
<_ + "ke", _ + "kke"> => hjk_type_VII_touge2 link lingi ; <_ + "e", _ + "eda"> => hjk_type_IVa_aasta lingi ;
<_ + "nne", _ + "nde"> => hjk_type_VII_touge2 link lingi ;
--below 3 don't add much, could just delete -- More specific VII rules (which work reliably)
--t6uge recognition is easy, because that doesn't introduce lot of other errors -- These cannot be easily integrated into 'stronger'.
--but probably pointless to fill this with all cases <_ + "e", _ + #c + "me"> => hjk_type_VII_touge2 link lingi ;
<_ + "e", _ + #c + "me"> => hjk_type_VII_touge2 link lingi ; <_ + "se", _ + "ske"> => hjk_type_VII_touge2 link lingi ;
<_ + "se", _ + "ske"> => hjk_type_VII_touge2 link lingi ; <_ + "re", _ + "rde"> => hjk_type_VII_touge2 link lingi ;
<_ + "re", _ + "rde"> => hjk_type_VII_touge2 link lingi ; <_ + #v + "e", _ + "de"> => hjk_type_VII_touge2 link lingi ;--riie:riide
<_ + #v + "e", _+"de"> => hjk_type_VII_touge2 link lingi ; --riie:riide
--improved total count a little, but introduced new errors
--not recommended, not stable and productive word class
--<_ + "i", _ + "e"> => dMeri link lingi ;
--introduced a couple of errors, "aine" recognized as "kõne" -- This is not allowed in GF (not linear)
--<stronger + "e", stronger + "e"> => hjk_type2 link i ;
--<_ + "e", stronger + "e"> => hjk_type_VII_touge2 link lingi ;
-- General VII rule
-- If both forms end with 'e' then we check if the stronger
-- form of nominative equals the given genitive. In this case
-- there is reason to believe that type VII applies.
-- We additionally require that both forms are different.
-- TODO: this is not always ortographically visible: makse -> `makse
<_ + "e", _ + "e"> =>
let
stronger = stronger_noun (init link) ;
noChange = pbool2bool (Predef.eqStr link lingi) ;
equal = pbool2bool (Predef.eqStr stronger reegl)
in case <noChange, equal> of {
<False, True> => hjk_type_VII_touge2 link lingi ;
_ => hjk_type2 link i
} ;
-- Some commented out experiments follow
--improved total count a little, but introduced new errors
--not recommended, not stable and productive word class
--<_ + "i", _ + "e"> => dMeri link lingi ;
--introduced a couple of errors, "aine" recognized as "kõne"
--<_ + "ne", _ + "ne"> => hjk_type_III_ratsu link ; --<_ + "ne", _ + "ne"> => hjk_type_III_ratsu link ;
--heuristics to catch palk:palga but not maakas:maaka (for longer words, same with more ?s) -- Selecting the correct vowel for IVa_audit.
--didn't work, don't try this -- visin/visina, pidžin/pidžini
--<? + ? + #c, ? + ? + #c + #v> => hjk_type_IVb_audit link i ; -- TODO: we could cover more cases here, e.g. tudeng/tudengi
<_ + #c + "in", _ + #c + "in" + #v> =>
case (syl_type link) of {
S2 => hjk_type_IVb_audit link i ;
_ => hjk_type2 link i
} ;
-- catch all calls hjk_type with the correct stem vowel
_ => hjk_type2 link i _ => hjk_type2 link i
} ; } ;
nForms3 : (_,_,_ : Str) -> NForms = \tukk,tuku,tukku -> nForms3 : (_,_,_ : Str) -> NForms = \tukk,tuku,tukku ->
let u = last tuku ; let u = last tuku ;
in case <tukk,tuku,tukku> of { in case <tukk,tuku,tukku> of {
--cases handled reliabl(ish) by 1- and 2-arg opers
<_+"nd",_,_> => hjk_type tukk ; -- koi/koi/koid
<_+"el",_,_> => nForms2 tukk tuku ; <_ + #v + #v, _ + #v + #v, _ + #v + #v + "d"> => hjk_type_I_koi tukk ;
<_+"er",_,_> => nForms2 tukk tuku ;
-- ema/ema/ema
<_ + #v, _ + #v, _ + #v> => hjk_type_II_ema tukk ;
--distinguish between hammas and maakas --distinguish between hammas and maakas
<_+"as",_+"a",_+"ast"> => dHammas tukk tuku ; <_+"as",_+"a",_+"ast"> => dHammas tukk tuku ;
@@ -393,7 +432,23 @@ 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
<_ + "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
-- cases handled reliabl(ish) by 1- and 2-arg opers
<_ + ("nd"|"el"|"er"), _, _> => nForms2 tukk tuku ;
-- Type VI (sg gen and sg part end with a vowel)
-- Note that we use the sg part as the argument for the constructor
-- because it's more informative than sg nom, compare:
-- link/lingi/linki
-- kabinet/kabineti/kabinetti
-- TODO: check that the genitive is actually weaker
-- TODO: distinguish between the subtypes of VI
-- TODO: do this also in nForms2
<_ + #c, _ + #v, _ + #v> => hjk_type_VI_link2 (init tukku) u ;
-- voolik/vooliku/voolikut
<_ + #c, _ + #v, _ + #v + "t"> => hjk_type_IVb_audit tukk u ;
_ => nForms2 tukk tuku _ => nForms2 tukk tuku
} ; } ;