From c0026af3a7b223fdaad09710bc94a3c82238931b Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 1 Jul 2005 08:33:34 +0000 Subject: [PATCH] adjustments in Swadesh inflection --- lib/resource/finnish/BasicFin.gf | 2 +- lib/resource/finnish/MorphoFin.gf | 48 +++++++++++++++++++++------ lib/resource/finnish/ParadigmsFin.gf | 22 ++++++++++-- lib/resource/finnish/SwadeshLexFin.gf | 16 ++++----- lib/resource/spanish/BasicSpa.gf | 8 ++--- lib/resource/spanish/SwadeshLexSpa.gf | 4 +-- 6 files changed, 73 insertions(+), 27 deletions(-) diff --git a/lib/resource/finnish/BasicFin.gf b/lib/resource/finnish/BasicFin.gf index b3bd56db1..8ec732742 100644 --- a/lib/resource/finnish/BasicFin.gf +++ b/lib/resource/finnish/BasicFin.gf @@ -159,7 +159,7 @@ lin say_VS = mkVS (regV "sanoa") ; school_N = regN "koulu" ; science_N = regN "tiede" ; - sea_N = reg2N "meri" "meriä" ; ---- *merea + sea_N = nMeri "meri" ; seek_V2 = dirV2 (regV "etsiä") ; see_V2 = dirV2 ( mkV "nähdä" "näkee" "näen" "näkevät" "nähkää" "nähdään" diff --git a/lib/resource/finnish/MorphoFin.gf b/lib/resource/finnish/MorphoFin.gf index c1f4663e4..2e78152ea 100644 --- a/lib/resource/finnish/MorphoFin.gf +++ b/lib/resource/finnish/MorphoFin.gf @@ -409,13 +409,15 @@ oper (naurei + ("t" + a)) (naurei + "siin") ; --- Words of the form "siitin", "avain". +-- Words of the form "siitin", "avain", "höyhen" (w or wo grade alternation). - sLiitin : Str -> CommonNoun = \liitin -> + sLiitin : Str -> Str -> CommonNoun = \liitin,liittimen -> let - liitti = strongGrade (init liitin) ; - liittime = liitti + "me" ; - a = if_then_Str (pbool2bool (Predef.occurs "aou" liitin)) "a" "ä" + liittime = init liittimen ; + liitti = Predef.tk 2 liittime ; + m = last (init liittime) ; + liittimi = liitti + m + "i" ; + a = vowelHarmony liitin ; in mkSubst a liitin @@ -423,11 +425,11 @@ oper liittime (liitin + "t" + a) (liittime + "en") - (liitti + "mi") - (liitti + "mi") - (liitti + "mien") - (liitti + "mi" + a) - (liitti + "miin") ; + (liittimi) + (liittimi) + (liittimi + "en") + (liittimi + a) + (liittimi + "in") ; -- The following covers adjectives like "kapea", "leveä". @@ -504,6 +506,10 @@ getHarmony : Str -> Str = \u -> case u of { _ => "ä" } ; +-- This function inspects the whole word. + +vowelHarmony : Str -> Str = \liitin -> + if_then_Str (pbool2bool (Predef.occurs "aou" liitin)) "a" "ä" ; -- The following function defines how grade alternation works if it is active. -- In general, *whether there is* grade alternation must be given in the lexicon @@ -1002,6 +1008,28 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn -> (palka + "tt" + u) (palka + "t" + u + "n") ; + vPudota : Str -> Str -> Verb = \pudota, putosi -> + let + a = Predef.dp 1 pudota ; + pudo = Predef.tk 2 pudota ; + puto = Predef.tk 2 putosi ; + putoa = puto + a ; + u = case a of {"a" => "u" ; _ => "y"} + in + mkVerb + pudota + (putoa + a) + (putoa + "n") + (putoa + "v" + a + "t") + (pudo + "tk" + a + a) + (pudota + a + "n") + (puto + "si") + (puto + "sin") + (puto + a + "isi") + (pudo + "nn" + u + "t") + (pudo + "tt" + u) + (pudo + "t" + u + "n") ; + vHarkita : Str -> Verb = \harkita -> let a = Predef.dp 1 harkita ; diff --git a/lib/resource/finnish/ParadigmsFin.gf b/lib/resource/finnish/ParadigmsFin.gf index 28b3853fa..24b974d64 100644 --- a/lib/resource/finnish/ParadigmsFin.gf +++ b/lib/resource/finnish/ParadigmsFin.gf @@ -163,6 +163,11 @@ oper nNauris : (naurista : Str) -> N ; +-- Some nouns have an unexpected singular partitive, e.g. "meri", "juuri". + + sgpartN : N -> Str -> N ; + nMeri : Str -> N ; + -- Separately-written compound nouns, like "sambal oelek", "Urho Kekkonen", -- have only their last part inflected. @@ -354,7 +359,7 @@ regN = \vesi -> "as" | "äs" => sRae vesi (strongGrade ves + (a + "n" + a)) ; "ar" | "är" => sRae vesi (strongGrade ves + ("ren" + a)) ; _ => case i of { - "n" => sLiitin vesi ; + "n" => sLiitin vesi (strongGrade (init vesi) + "men") ; "s" => sTilaus vesi (ves + ("ksen" + a)) ; "i" => sBaari (vesi + a) ; "e" => sRae vesi (strongGrade (ves + "e") + "en" + a) ; @@ -396,8 +401,10 @@ reg3N = \vesi,veden,vesi ifTok CommonNoun (Predef.dp 3 veden) "den" (sRakkaus vesi) (sTilaus vesi (veden + a)) ; + "as" | "äs" => sRae vesi (veden + a) ; "li" | "ni" | "ri" => sSusi vesi veden (Predef.tk 1 vesi + ("en" + a)) ; "si" => sSusi vesi veden (Predef.tk 2 vesi + ("ten" + a)) ; + "in" | "en" | "än" => sLiitin vesi veden ; _ => case i of { "a" | "o" | "u" | "y" | "ä" | "ö" => sKukko vesi veden vesiä ; "i" => sKorpi vesi veden (init veden + "n" + a) ; @@ -424,7 +431,17 @@ reg3N = \vesi,veden,vesi nKulaus = \a -> nTilaus a (init a + "ksen" + getHarmony (last (init a))) ; nNauris = \a -> sNauris a ** {g = nonhuman ; lock_N = <>} ; - + sgpartN noun part = { + s = table { + NCase Sg Part => part ; + c => noun.s ! c + } ; + g = noun.g ; + lock_N = noun.lock_N + } ; + nMeri meri = + let a = vowelHarmony meri in + sgpartN (reg2N meri (meri + a)) (init meri + "ta") ; nComp = \s,n -> {s = \\c => s ++ n.s ! c ; g = n.g ; lock_N = <>} ; mkN2 = \n,c -> n2n n ** {c = NPCase c ; lock_N2 = <>} ; @@ -509,6 +526,7 @@ reg3V soutaa soudan souti = soudat = reg2V soutaa souti ; in case ta of { "ll" => vJuosta soutaa soudan (juo + o+u+"t") (juo + "t"+u) ; + "ot" | "öt" => vPudota soutaa souti ; _ => case aa of { "aa" | "ää" => vHuoltaa soutaa soudan souti soudin ; "da" | "dä" => vJuoda soutaa souti ; diff --git a/lib/resource/finnish/SwadeshLexFin.gf b/lib/resource/finnish/SwadeshLexFin.gf index 293563a85..ca56fd045 100644 --- a/lib/resource/finnish/SwadeshLexFin.gf +++ b/lib/resource/finnish/SwadeshLexFin.gf @@ -99,13 +99,13 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin -- Nouns - animal_N = regN "eläin" ; ---- *eläkimet + animal_N = reg3N "eläin" "eläimen" "eläimiä" ; ashes_N = regN "tuhka" ; back_N = regN "selkä" ; bark_N = regN "kaarna" ; belly_N = regN "vatsa" ; bird_N = bird_N; - blood_N = reg2N "veri" "veriä" ; + blood_N = nMeri "veri" ; bone_N = regN "luu" ; breast_N = regN "rinta" ; child_N = child_N ; @@ -119,7 +119,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin eye_N = regN "silmä" ; fat_N = regN "rasva" ; father_N = regN "isä" ; - feather_N = regN "höyhen" ; ---- *höyhemen + feather_N = reg3N "höyhen" "höyhenen" "höyheniä" ; fingernail_N = reg3N "kynsi" "kynnen" "kynsiä" ; fire_N = reg2N "tuli" "tulia" ; fish_N = fish_N ; @@ -133,7 +133,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin hair_N = regN "hius" ; hand_N = reg3N "käsi" "käden" "käsiä" ; head_N = regN "pää" ; - heart_N = regN "sydän" ; --- *sytämen + heart_N = reg3N "sydän" "sydämen" "sydämiä" ; horn_N = reg2N "sarvi" "sarvia" ; husband_N = man_N ; --- aviomies ice_N = regN "jää" ; @@ -157,17 +157,17 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin rain_N = regN "sade" ; river_N = river_N ; road_N = regN "tie" ; - root_N = reg3N "juuri" "juuren" "juuria" ; --- juurta *juurea + root_N = reg3N "juuri" "juuren" "juuria" ; rope_N = reg3N "köysi" "köyden" "köysiä" ; salt_N = regN "suola" ; sand_N = regN "hiekka" ; sea_N = sea_N ; seed_N = regN "siemen" ; skin_N = regN "nahka" ; - sky_N = regN "taivas" ; --- taivaan *taipaan + sky_N = reg3N "taivas" "taivaan" "taivaita" ; smoke_N = regN "savu" ; snake_N = snake_N ; - snow_N = reg3N "lumi" "lumen" "lumia" ; --- lunta *lumea + snow_N = sgpartN (nMeri "lumi") "lunta" ; star_N = star_N ; stick_N = regN "keppi" ; stone_N = stone_N ; @@ -197,7 +197,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin dig_V = regV "kaivaa" ; drink_V = UseV2 drink_V2 ; eat_V = UseV2 eat_V2 ; - fall_V = reg3V "pudota" "putoan" "putosi" ; ---- *pudoa + fall_V = reg3V "pudota" "putoan" "putosi" ; fear_V = reg3V "pelätä" "pelkään" "pelkäsi" ; fight_V = regV "taistella" ; float_V = regV "kellua" ; diff --git a/lib/resource/spanish/BasicSpa.gf b/lib/resource/spanish/BasicSpa.gf index f30c9acc8..1bee7d8bc 100644 --- a/lib/resource/spanish/BasicSpa.gf +++ b/lib/resource/spanish/BasicSpa.gf @@ -37,7 +37,7 @@ lin break_V2 = dirV2 (special_ppV (regV "romper") "roto") ; broad_ADeg = regADeg "ancho" ; brother_N2 = deN2 (regN "hermano") ; - brown_ADeg = regADeg "marrón" ; + brown_ADeg = regADeg "marrón" ; --- * butter_N = regN "manteca" ; buy_V2 = dirV2 (regV "comprar") ; camera_N = regN "cámara" ; -- ["máquina fotográfica"] @@ -146,7 +146,7 @@ lin rain_V0 = mkV0 (verboV (llover_89 "llover")) ; read_V2 = dirV2 (verboV (creer_26 "leer")) ; red_ADeg = regADeg "rojo" ; - religion_N = femN (regN "religión") ; + religion_N = mkN "religión" "religiones" feminine ; restaurant_N = regN "restaurante" ; -- restorán, restaurán, masc river_N = regN "río" ; rock_N = regN "roca" ; @@ -187,7 +187,7 @@ lin talk_V3 = mkV3 (regV "hablar") dative genitive ; teacher_N = regN "maestro" ; -- maestra teach_V2 = dirV2 (regV "enseñar") ; - television_N = femN (regN "televisión") ; -- fem, televisor masc + television_N = mkN "televisión" "televisiones" feminine ; -- televisor masc thick_ADeg = regADeg "grueso" ; thin_ADeg = regADeg "fino" ; -- delgado train_N = regN "tren" ; @@ -218,7 +218,7 @@ lin do_V2 = dirV2 (verboV (hacer_44 "hacer")) ; now_Adv = mkAdv "ahora" ; already_Adv = mkAdv "ya" ; - song_N = femN (regN "canción") ; + song_N = mkN "canción" "canciones" feminine ; add_V3 = dirV3 (regV "sumar") dative ; number_N = regN "número" ; put_V2 = dirV2 (verboV (poner_60 "poner")) ; diff --git a/lib/resource/spanish/SwadeshLexSpa.gf b/lib/resource/spanish/SwadeshLexSpa.gf index e00aca7cf..e0770ff3a 100644 --- a/lib/resource/spanish/SwadeshLexSpa.gf +++ b/lib/resource/spanish/SwadeshLexSpa.gf @@ -136,7 +136,7 @@ concrete SwadeshLexSpa of SwadeshLex = CategoriesSpa hair_N = regN "cabello" ; -- pelo hand_N = femN (regN "mano") ; head_N = regN "cabeza" ; - heart_N = regN "corazón" ; + heart_N = mkN "corazón" "corazones" masculine ; horn_N = regN "cuerno" ; husband_N = regN "marido" ; -- esposo ice_N = regN "hielo" ; @@ -172,7 +172,7 @@ concrete SwadeshLexSpa of SwadeshLex = CategoriesSpa snake_N = snake_N ; snow_N = femN (regN "nieve") ; -- fem star_N = star_N ; - stick_N = regN "bastón" ; -- palo + stick_N = mkN "bastón" "bastones" masculine ; -- palo stone_N = stone_N ; sun_N = sun_N ; tail_N = regN "cola" ;