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.
hjk_type_IVb_audit,
hjk_type_IVb_audit1 : Str -> Str -> NForms ;
hjk_type_VI_link2 : 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") ;
-- TODO: clean this up
-- 2nd argument is sg gen without the final vowel
hjk_type_IVb_audit1 x y =
nForms6 x (y + "i") (y+"it") (y+"isse") (y+"ite") (y+"eid") ;
@@ -140,6 +141,10 @@ resource HjkEst = open ResEst, Prelude, Predef in {
in
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 =
let
x_n : Str = weaker_noun x
@@ -153,6 +158,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
-- TODO: think about it
e : Str = case i of {
"a" => "asid" ; -- pikk/pika -> pikkasid
"e" => "i" ; -- sulg/sule -> sulgi
_ => "e"
}
in
@@ -180,11 +186,11 @@ resource HjkEst = open ResEst, Prelude, Predef in {
in
nForms6 x x_t (x+"t") (x_t+"sse") (x+"te") (x_t+"id") ;
--Identical to the above, just taking 2 arguments (nom + gen)
--There are 67 nouns in test cases where stronger_noun gets it wrong
--handles liige:liikme as well
--Identical to the above, just taking 2 arguments (nom + gen)
--There are 67 nouns in test cases where stronger_noun gets it wrong
--handles liige:liikme as well
hjk_type_VII_touge2 : (_,_ : Str) -> NForms ;
hjk_type_VII_touge2 touge touke =
hjk_type_VII_touge2 touge touke =
let
liikme : Str = case touke of {
_ + "me" => touke ;
@@ -404,6 +410,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
<_, _ + #v + "s", _>
=> hjk_type_Va_otsene x ;
-- TODO: only for adjectives?
<_, _ + ("v"|"tav"), _>
=> hjk_type_IVb_audit x "a" ;
@@ -532,7 +539,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
#c + #v + #c + #v => S21 ;
#c + #v + #v + #v => S22 ; -- muie, neiu, riie
? + ? + ? + ? => S1 ;
-- all 5-letters
-- at least 5-letters
_ + #c + "ia" => S2 ; -- aaria, minia, orgia, kirurgia, nostalgia
#v + #c + #c + #v + #v => S1 ; -- armee
#c + #v + #c + #v + #v => S1 ; -- depoo
@@ -559,7 +566,7 @@ resource HjkEst = open ResEst, Prelude, Predef in {
_ + ? + #v + #vv + #c => S1 ; -- -ioos, kruiis
#c + #c + #v + #v + #v + #c => S2 ; -- flaier
_ + ? + #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 + #c + #c => S2 ; -- astang, ellips
#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
#c + #v + #c + #v + #c + #c => S2 ;
#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 + #v + #v + #c => S2 ; -- paleus
#c + #v + #v + #c + #v + #c => S2 ; -- meeter, reegel
#v + #v + #c + #c + #v + #c => S2 ; -- aastak
#v + #c + #c + #c + #v + #c => S2 ; -- andmik
#v + #c + #c + #v + #c + #v => S3 ;
_ + #v + #v + #v + #c + #v + #v => S1 ; -- meierei
_ + #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 + #v + #v + #c + #c + #v + #c => S2 ; -- jooksik
#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
_ + #c + #c + #v + #c + #c + #v + #c + #c => S3 ; -- ampersand
_ + #c + #v + #c + #v + #c + #c => S1 ; -- dividend
_ + #v + #vv => S1 ; -- buržuaa
_ + #v + #c + #c + #c + #v + #v => S1 ; -- displei
_ + #c + #v + #c + #c + #v + #v => S1 ; -- politsei
_ + #c + #v + #c + #v + #v => S1 ; -- defilee, kompanii

View File

@@ -9,7 +9,7 @@ lin
alas_Interj = ss "paraku" ;
answer_V2S = mkV2 (mkV "vastama" "vastata") callative ;
apartment_N = mkN "korter" ;
apple_N = mkN "õun" "õuna" "õuna";
apple_N = mkN "õun" "õuna" "õuna" "õunu" ;
art_N = mkN "kunst" ;
ask_V2Q = mkV2 (mkV "küsima") (casePrep ablative) ;
baby_N = mkN "beebi" ;
@@ -22,7 +22,7 @@ lin
big_A = mkA (mkN "suur" "suure" "suurt" "suurde" "suurte" "suuri");
bike_N = mkN "ratas" "ratta" "ratast" ;
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" ;
boat_N = mkN "paat" ;
book_N = mkN "raamat" "raamatu" "raamatut" "raamatusse" "raamatute" "raamatuid" ;
@@ -48,10 +48,10 @@ lin
church_N = mkN "kirik" ;
city_N = mkN "linn" "linna" "linna" "linna" "linnade" "linnu" ;
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") ;
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" ;
computer_N = mkN "arvuti" ;
country_N = mkN "maa" ;
@@ -66,11 +66,11 @@ lin
distance_N3 = mkN3 (mkN "kaugus") celative (casePrep terminative) ;
doctor_N = mkN "arst" ;
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 ;
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 ;
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" ;
factory_N = mkN "tehas" ;
father_N2 = mkN2 (mkN "isa") ;
@@ -81,13 +81,13 @@ lin
forget_V2 = mkV2 (mkV "unustama") ;
fridge_N = mkN "külm" (mkN "kapp") ;
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")) ;
garden_N = mkN "aed" "aia" "aeda";
girl_N = mkN "tüdruk" "tüdruku" "tüdrukut" ;
glove_N = mkN "kinnas" "kinda" "kinnast" ;
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
green_A = mkA "roheline" ;
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" ;
hope_VS = mkVS (mkV "lootma") ;
horse_N = mkN "hobune" ;
hot_A = mkA (mkN "kuum" "kuuma" "kuuma") ;
hot_A = mkA (mkN "kuum" "kuuma" "kuuma") "kuumem" "kuumim" ;
house_N = mkN "maja" ;
important_A = mkA (mkN "tähtis" "tähtsa" "tähtsat") ;
industry_N = mkN "tööstus" ;
iron_N = mkN "raud" "raua" "rauda" ;
king_N = mkN "kuningas" ;
know_VS = mkVS know_V ;
know_VQ = mkVQ know_V ;
know_VS = mkVS teadma ;
know_VQ = mkVQ teadma ;
know_V2 = mkV2 (mkV "tundma") ;
lake_N = mkN "järv" "järve" "järve" ;
lamp_N = mkN "lamp" ;
learn_V2 = mkV2 (mkV "õppima") ;
leather_N = skin_N ;
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 ;
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") ;
love_N = mkN "armastus" ;
love_V2 = mkV2 (mkV "armastama") partitive ;
@@ -126,7 +126,7 @@ lin
mother_N2 = mkN2 (mkN "ema") ;
mountain_N = mkN "mägi" "mäe" "mäge" "mäkke" "mägede" "mägesid" ;
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" ;
newspaper_N = mkN "aja" (mkN "leht" "lehe" "lehte") ;
oil_N = mkN "õli" ;
@@ -150,7 +150,7 @@ lin
red_A = mkA "punane" ;
religion_N = mkN "usk" "usu" "usku" ;
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" ;
roof_N = mkN "katus" ;
rubber_N = mkN "kumm" ;
@@ -158,10 +158,10 @@ lin
say_VS = mkVS (mkV "ütlema") ;
school_N = mkN "kool" ;
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 ;
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 ;
sheep_N = mkN "lammas" "lamba" "lammast" ;
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") ;
snake_N = mkN "uss" ;
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" ;
steel_N = mkN "teras" ;
stone_N = mkN "kivi" ;
stove_N = mkN "ahi" "ahju" "ahju" ;
student_N = mkN "tudeng" ;
stove_N = mkN "ahi" "ahju" "ahju" "ahju" "ahjude" "ahje" ;
student_N = mkN "tudeng" "tudengi" "tudengit" "tudengisse" "tudengite" "tudengeid" ;
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")) ;
switch8on_V2 = mkV2 (mkV "sisse" (mkV "lülitama")) ;
table_N = mkN "laud" "laua" "lauda" ;
talk_V3 = mkV3 talk_V callative celative ;
talk_V3 = mkV3 raakima callative celative ;
teacher_N = mkN "õpetaja" ;
teach_V2 = mkV2 (mkV "õpetama") ;
television_N = mkN "televisioon" ;
thick_A = mkA (mkN "paks" "paksu" "paksu") ;
thick_A = mkA (mkN "paks" "paksu" "paksu") "paksem" "pakseim" ;
thin_A = mkA "õhuke" ;
train_N = mkN "rong" ;
travel_V = mkV "reisima" ;
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 ;
university_N = mkN "ülikool" ;
village_N = mkN "küla" ;
@@ -204,16 +204,16 @@ lin
warm_A = mkA (mkN "soe" "sooja" "sooja" "sooja" "soojade" "soojasid") "soojem" "soojim" ;
war_N = mkN "sõda" "sõja" "sõda" ;
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" ;
window_N = mkN "aken" "akna" "akent" ;
window_N = mkN "aken" "akna" "akent" "aknasse" "akende" "aknaid" ;
wine_N = mkN "vein" ;
win_V2 = mkV2 (mkV "võitma") ;
woman_N = mkN "naine" "naise" "naist" "naisesse" "naiste" "naisi" ;
wonder_VQ = mkVQ (mkV "arutlema" "arutleda") ; -- TODO
wood_N = mkN "puu" ;
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") ;
do_V2 = mkV2 (mkV "tegema" "teha") ;
@@ -230,47 +230,47 @@ lin
right_Ord = mkOrd1 (mkN "parem" "parema" "paremat") ;
far_Adv = mkAdv "kaugel" ;
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" ;
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" ;
near_A = mkA "lähedane" ;
rotten_A = mkA "mäda" ;
round_A = mkA "ümmargune" ;
sharp_A = mkA "terav" ;
smooth_A = mkA (mkN "sile" "sileda" "siledat" "siledasse" "siledate" "siledaid") ;
smooth_A = mkA (mkN "sile" "sileda") ;
straight_A = mkA "sirge" ;
wet_A = mkA (mkN "märg" "märja" "märga") ;
wide_A = mkA (mkN "lai" "laia" "laia") ;
animal_N = mkN "loom" "looma" "looma" ;
wet_A = mkA (mkN "märg" "märja" "märga") "märjem" "märjeim" ;
wide_A = mkA (mkN "lai" "laia" "laia" "laia" "laiade" "laiu") "laiem" "laieim" ;
animal_N = mkN "loom" "looma" "looma" "loomi" ;
ashes_N = mkN "tuhk" "tuha" "tuhka" ;
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" ;
blood_N = mkN "veri" "vere" "verd" "verre" "verede" "veresid" ;
bone_N = mkN "luu" ;
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" ;
dust_N = mkN "tolm" "tolmu" "tolmu" ;
ear_N = mkN "kõrv" "kõrva" "kõrva" ;
earth_N = mkN "maa" ;
earth_N = mkN "maa" "maa" "maad" "maid" ;
egg_N = mkN "muna" ;
eye_N = mkN "silm" "silma" "silma" ;
eye_N = mkN "silm" "silma" "silma" "silmi" ;
fat_N = mkN "rasv" "rasva" "rasva" ;
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" ;
flower_N = mkN "lill" "lille" "lille" ;
fog_N = mkN "udu" ;
foot_N = mkN "jalg" "jala" "jalga" ;
foot_N = mkN "jalg" "jala" "jalga" "jalgu" ;
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" ;
hair_N = mkN "juuksed" "juuste" "juukseid" "juustesse" "juuste" "juukseid" ; -- TODO: plural
hand_N = mkN "käsi" "käe" "kätt" ;
head_N = mkN "pea" ;
heart_N = mkN "süda" "südame" "südant" ;
hand_N = mkN "käsi" "käe" "kätt" "kätte" "käte" "käsi" ;
head_N = mkN "pea" "pea" "pead" "päid" ;
heart_N = mkN "süda" "südame" "südant" "südamesse" "südamete" "südameid" ;
horn_N = mkN "sarv" "sarve" "sarve" ;
husband_N = man_N ;
ice_N = mkN "jää" ;
@@ -278,30 +278,30 @@ lin
leaf_N = mkN "leht" "lehe" "lehte" ;
leg_N = mkN "jalg" "jala" "jalga" ;
liver_N = mkN "maks" "maksa" "maksa" ;
louse_N = mkN "täi" ;
mouth_N = mkN "suu" ;
name_N = mkN "nimi" "nime" "nime" ;
louse_N = mkN "täi" "täi" "täid" ;
mouth_N = mkN "suu" "suu" "suud" "suhu" "suude" "suusid" ;
name_N = mkN "nimi" "nime" "nime" "nimesse" "nimede" "nimesid" ;
neck_N = mkN "kael" "kaela" "kaela" ;
night_N = mkN "öö" ;
nose_N = mkN "nina" ;
person_N = mkN "inimene" ;
person_N = mkN "inimene" "inimese" "inimest" "inimesse" "inimeste" "inimesi" ;
rain_N = mkN "vihm" "vihma" "vihma" ;
road_N = mkN "tee" ;
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" ;
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" ;
sky_N = mkN "taevas" "taeva" "taevast" ;
smoke_N = mkN "suits" "suitsu" "suitsu" ;
snow_N = mkN "lumi" "lume" "lund" ;
smoke_N = mkN "suits" "suitsu" "suitsu" "suitsu" "suitsude" "suitse" ;
snow_N = mkN "lumi" "lume" "lund" "lumme" "lumede" "lumesid" ;
stick_N = mkN "kepp" ;
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" ;
wife_N = mkN "naine" ;
wind_N = mkN "tuul" "tuule" "tuult" ;
wife_N = mkN "naine" "naise" "naist" "naisesse" "naiste" "naisi" ;
wind_N = mkN "tuul" "tuule" "tuult" "tuulde" "tuulte" "tuuli" ;
wing_N = mkN "tiib" "tiiva" "tiiba" ;
worm_N = mkN "uss" ;
year_N = mkN "aasta" ;
@@ -321,7 +321,7 @@ lin
give_V3 = mkV3 (mkV "andma") accPrep callative ;
hit_V2 = mkV2 (mkV "lööma") 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") ;
laugh_V = mkV "naerma" ;
lie_V = mkV "lamama" ; -- TODO: maybe: valetama
@@ -329,7 +329,7 @@ lin
pull_V2 = mkV2 (mkV "tõmbama" "tõmmata") ;
push_V2 = mkV2 (mkV "suruma") ;
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" ;
sing_V = mkV "laulma" "laulda" "laulab" "lauldakse" ;
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
reason_N = mkN "põhjus" ;
today_Adv = mkAdv "täna" ;
uncertain_A = mkA (mkN "ebakindel" "ebakindla" "ebakindlat") ;
uncertain_A = mkA (mkN "ebakindel" "ebakindla" "ebakindlat" "ebakindlasse" "ebakindlate" "ebakindlaid") ;
oper
@@ -371,7 +371,8 @@ lin
ctranslative = casePrep translative ;
celative = casePrep elative ;
callative = casePrep allative ;
know_V = (mkV "teadma" "teada" "teab") ;
talk_V = mkV "rääkima" "rääkida" "räägib" ;
teadma = mkV "teadma" "teada" "teab" ;
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 = <>
} ; ---- 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
i = last lingi ;
reegl = init lingi ;
in
case <link,lingi> of {
<_ + "el", _ + #c + "li"> => hjk_type_IVb_audit1 link reegl ;
<_ + "er", _ + #c + "ri"> => hjk_type_IVb_audit1 link reegl ;
case <link,lingi> of {
-- e-deletion
<_ + #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 + "er", _ + #c + "eri"> => hjk_type_IVb_audit link i ;
<_ + "be", _ + "pe"> => hjk_type_VII_touge2 link lingi ;
<_ + "de", _ + "te"> => hjk_type_VII_touge2 link lingi ;
<_ + "ge", _ + "ke"> => hjk_type_VII_touge2 link lingi ;
<_ + "pe", _ + "ppe"> => hjk_type_VII_touge2 link lingi ;
<_ + "te", _ + "tte"> => hjk_type_VII_touge2 link lingi ;
<_ + "ke", _ + "kke"> => hjk_type_VII_touge2 link lingi ;
<_ + "nne", _ + "nde"> => hjk_type_VII_touge2 link lingi ;
-- This applies only to adjectives.
-- If genitive just adds 'da' to the nominative, then construct
-- the paradigm using IVa_aasta, giving it the genitive as the argument.
-- We assume here that the the nominative is overriten by the calling rule.
-- Example: vahe, vaheda, vahedaT, vahedaSSE, vahedaTE, vahedaID
<_ + "e", _ + "eda"> => hjk_type_IVa_aasta lingi ;
--below 3 don't add much, could just delete
--t6uge recognition is easy, because that doesn't introduce lot of other errors
--but probably pointless to fill this with all cases
<_ + "e", _ + #c + "me"> => hjk_type_VII_touge2 link lingi ;
<_ + "se", _ + "ske"> => 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
-- More specific VII rules (which work reliably)
-- These cannot be easily integrated into 'stronger'.
<_ + "e", _ + #c + "me"> => hjk_type_VII_touge2 link lingi ;
<_ + "se", _ + "ske"> => 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
--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 ;
--heuristics to catch palk:palga but not maakas:maaka (for longer words, same with more ?s)
--didn't work, don't try this
--<? + ? + #c, ? + ? + #c + #v> => hjk_type_IVb_audit link i ;
-- Selecting the correct vowel for IVa_audit.
-- visin/visina, pidžin/pidžini
-- 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
} ;
nForms3 : (_,_,_ : Str) -> NForms = \tukk,tuku,tukku ->
let u = last tuku ;
in case <tukk,tuku,tukku> of {
--cases handled reliabl(ish) by 1- and 2-arg opers
<_+"nd",_,_> => hjk_type tukk ;
<_+"el",_,_> => nForms2 tukk tuku ;
<_+"er",_,_> => nForms2 tukk tuku ;
-- koi/koi/koid
<_ + #v + #v, _ + #v + #v, _ + #v + #v + "d"> => hjk_type_I_koi tukk ;
-- ema/ema/ema
<_ + #v, _ + #v, _ + #v> => hjk_type_II_ema tukk ;
--distinguish between hammas and maakas
<_+"as",_+"a",_+"ast"> => dHammas tukk tuku ;
@@ -393,7 +432,23 @@ oper
<_ + "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'
<_ + #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
} ;