From e903f85a9054c318e0c87b2ff492817b31eb1979 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 29 Nov 2013 08:05:55 +0000 Subject: [PATCH] some missing forms in Fin (agent participle, Inf3 instructives); now also in stemmed version. --- lib/src/finnish/MorphoFin.gf | 13 ++-- lib/src/finnish/ResFin.gf | 17 +++-- lib/src/finnish/stemmed/StemFin.gf | 110 +++++++++++++++++++++++++---- 3 files changed, 117 insertions(+), 23 deletions(-) diff --git a/lib/src/finnish/MorphoFin.gf b/lib/src/finnish/MorphoFin.gf index 69e905f1c..29507812c 100644 --- a/lib/src/finnish/MorphoFin.gf +++ b/lib/src/finnish/MorphoFin.gf @@ -750,6 +750,7 @@ resource MorphoFin = ResFin ** open Prelude in { tulta = tult + a ; tulevaP = (noun2adj (nhn (sKukko tuleva (tuleva + "n") (init tuleva + "ia")))).s ; tultavaP = (noun2adj (nhn (sKukko (tulta + "v" + a) (tulta + "v" + a + "n") (tulta + "vi" + a)))).s ; + tulemaP = (noun2adj (nhn (sKukko tulema (tulema + "n") (init tulema + "ia")))).s ; in {s = table { @@ -757,13 +758,14 @@ resource MorphoFin = ResFin ** open Prelude in { Inf Inf1Long => tulla + "kse" ; Inf Inf2Iness => tull + "ess" + a ; Inf Inf2Instr => tull + "en" ; - Inf Inf2InessPass => tult + a + "ess" + "a" ; - Inf Inf2InstrPass => tult + a + "en" ; + Inf Inf2InessPass => tult + a + "ess" + a ; Inf Inf3Iness => tulema + "ss" + a ; Inf Inf3Elat => tulema + "st" + a ; Inf Inf3Illat => tulema + a + "n" ; Inf Inf3Adess => tulema + "ll" + a ; Inf Inf3Abess => tulema + "tt" + a ; + Inf Inf3Instr => tulema + "n" ; + Inf Inf3InstrPass => tult + a + "m" + a + "n" ; Inf Inf4Nom => tule__ + "minen" ; Inf Inf4Part => tule__ + "mist" + a ; Inf Inf5 => tulema + "isill" + a ; @@ -806,8 +808,8 @@ resource MorphoFin = ResFin ** open Prelude in { PassImpf False => tultu ; --# notpresent PassCondit True => tult + a + "isiin" ; --# notpresent PassCondit False => tult + a + "isi" ; --# notpresent - PassPotent True => liene + "t" + a + a + "n" ; --# notpresent - PassPotent False => liene + "t" + a ; --# notpresent + PassPotent True => tult + a + "neen" ; --# notpresent + PassPotent False => tult + a + "ne" ; --# notpresent PassImper True => tult + a + "k" + o + o + "n" ; PassImper False => tult + a + "k" + o ; @@ -816,7 +818,8 @@ resource MorphoFin = ResFin ** open Prelude in { PastPartAct (AN n) => tulleen ! n ; PastPartAct AAdv => tullee + "sti" ; PastPartPass (AN n) => tullun ! n ; - PastPartPass AAdv => tullu + "sti" + PastPartPass AAdv => tullu + "sti" ; + AgentPart a => tulemaP ! a } ; sc = NPCase Nom ; qp = pbool2bool (Predef.eqStr (last tulko) "o") ; diff --git a/lib/src/finnish/ResFin.gf b/lib/src/finnish/ResFin.gf index b6d6e46be..c04595269 100644 --- a/lib/src/finnish/ResFin.gf +++ b/lib/src/finnish/ResFin.gf @@ -118,6 +118,7 @@ param | PastPartPass AForm | PresPartAct AForm | PresPartPass AForm + | AgentPart AForm ; InfForm = @@ -125,13 +126,14 @@ param | Inf1Long -- puhuakseni | Inf2Iness -- puhuessa | Inf2Instr -- puhuen - | Inf2InessPass -- puhuettaessa - | Inf2InstrPass -- puhuttaen + | Inf2InessPass -- puhuttaessa | Inf3Iness -- puhumassa | Inf3Elat -- puhumasta | Inf3Illat -- puhumaan | Inf3Adess -- puhumalla | Inf3Abess -- puhumatta + | Inf3Instr -- puhuman + | Inf3InstrPass -- puhuttaman | Inf4Nom -- puhuminen | Inf4Part -- puhumista | Inf5 -- puhumaisillani @@ -474,6 +476,7 @@ oper oltu = (noun2adj (nhn (sKukko "oltu" "ollun" "oltuja"))).s ; oleva = (noun2adj (nhn (sKukko "oleva" "olevan" "olevia"))).s ; oltava = (noun2adj (nhn (sKukko "oltava" "oltavan" "oltavia"))).s ; + olema = (noun2adj (nhn (sKukko "olema" "oleman" "olemia"))).s ; in {s = table { Inf Inf1 => "olla" ; @@ -481,12 +484,13 @@ oper Inf Inf2Iness => "ollessa" ; Inf Inf2Instr => "ollen" ; Inf Inf2InessPass => "oltaessa" ; - Inf Inf2InstrPass => "oltaen" ; Inf Inf3Iness => "olemassa" ; Inf Inf3Elat => "olemasta" ; Inf Inf3Illat => "olemaan" ; Inf Inf3Adess => "olemalla" ; Inf Inf3Abess => "olematta" ; + Inf Inf3Instr => "oleman" ; + Inf Inf3InstrPass => "oltaman" ; Inf Inf4Nom => "oleminen" ; Inf Inf4Part => "olemista" ; Inf Inf5 => "olemaisilla" ; @@ -529,14 +533,15 @@ oper PassImpf False => "oltu" ; --# notpresent PassCondit True => "oltaisiin" ; --# notpresent PassCondit False => "oltaisi" ; --# notpresent - PassPotent True => "lienetään" ; --# notpresent - PassPotent False => "lienetä" ; --# notpresent + PassPotent True => "oltaneen" ; --# notpresent + PassPotent False => "oltane" ; --# notpresent PassImper True => "oltakoon" ; PassImper False => "oltako" ; PastPartAct n => ollut ! n ; PastPartPass n => oltu ! n ; PresPartAct n => oleva ! n ; - PresPartPass n => oltava ! n + PresPartPass n => oltava ! n ; + AgentPart n => olema ! n } } ; diff --git a/lib/src/finnish/stemmed/StemFin.gf b/lib/src/finnish/stemmed/StemFin.gf index 32cba9088..4cc27bda6 100644 --- a/lib/src/finnish/stemmed/StemFin.gf +++ b/lib/src/finnish/stemmed/StemFin.gf @@ -184,7 +184,7 @@ oper vforms2sverb : VForms -> SVerb = \vf -> { s = table { - 0 => (vf ! 0) ; -- tulla + 0 => Predef.tk 1 (vf ! 0) ; -- tull(a) 1 => Predef.tk 1 (vf ! 1) ; -- tule(n) 2 => (vf ! 2) ; -- tulee 3 => Predef.tk 3 (vf ! 3) ; -- tule(vat) @@ -207,7 +207,7 @@ oper plus = plusIf b ; vh = sverb.s ; - tulla = vh ! 0 ; + tull = vh ! 0 ; -- tull(a) tule_ = vh ! 1 ; -- tule(n) tulee = vh ! 2 ; tule__ = vh ! 3 ; -- tule(vat) @@ -226,6 +226,7 @@ oper o = harmonyV "o" "ö" sverb.h ; u = harmonyV "u" "y" sverb.h ; + tulla = plus tull a ; tulko = plus tulk_ o ; tulkoo = plus tulko o ; tullee = plus tull_ "ee" ; @@ -235,7 +236,12 @@ oper tullun = plus tullu_ "n" ; tultu = plus tult_ u ; - tuleva = plus tule___ ("v" + a) ; + tulev = plus tule___ "v" ; + tuleva = plus tule___ ("v" + a) ; + tulem = plus tule___ "m" ; + tulema = plus tule___ ("m" + a) ; + tultav = plus tult_ (a + "v") ; + tultava = plus tult_ (a + "v" + a) ; tullutN : Noun = snoun2noun b { s = table SNForm [ @@ -271,12 +277,79 @@ oper h = sverb.h } ; + tulevaN : Noun = snoun2noun b { + s = table SNForm [ + tuleva ; + tuleva ; + plus tuleva a ; + plus tuleva ("n" + a) ; + plus tuleva a ; + plus tulev "ie" ; + plus tulev ("i" + a) ; + plus tulev "i" ; + plus tulev "i" ; + plus tulev "ii" ; + tuleva + ] ; + h = sverb.h + } ; + + tultavaN : Noun = snoun2noun b { + s = table SNForm [ + tultava ; + tultava ; + plus tultava a ; + plus tultava ("n" + a) ; + plus tultava a ; + plus tultav "ie" ; + plus tultav ("i" + a) ; + plus tultav "i" ; + plus tultav "i" ; + plus tultav "ii" ; + tuleva + ] ; + h = sverb.h + } ; + + tulemaN : Noun = snoun2noun b { + s = table SNForm [ + tulema ; + tulema ; + plus tulema a ; + plus tulema ("n" + a) ; + plus tulema a ; + plus tulem "ie" ; + plus tulem ("i" + a) ; + plus tulem "i" ; + plus tulem "i" ; + plus tulem "ii" ; + tulema + ] ; + h = sverb.h + } ; + - tulema = plus tule___ ("m" + a) ; vat = "v" + a + "t" in {s = table { Inf Inf1 => tulla ; + Inf Inf1Long => plus tulla "kse" ; + Inf Inf2Iness => plus tull ("ess" + a) ; + Inf Inf2Instr => plus tull "en" ; + Inf Inf2InessPass => plus tult_ (a + "ess" + a) ; + Inf Inf3Iness => plus tulema ("ss" + a) ; + Inf Inf3Elat => plus tulema ("st" + a) ; + Inf Inf3Illat => plus tulema (a + "n") ; + Inf Inf3Adess => plus tulema ("ll" + a) ; + Inf Inf3Abess => plus tulema ("tt" + a) ; + Inf Inf3Instr => plus tulema "n" ; + Inf Inf3InstrPass => plus tult_ (a + "m" + a + "n") ; + Inf Inf4Nom => plus tule__ "minen" ; + Inf Inf4Part => plus tule__ ("mist" + a) ; + Inf Inf5 => plus tulema ("isill" + a) ; + Inf InfPresPart => plus tuleva "n" ; + Inf InfPresPartAgr => tuleva ; + Presn Sg P1 => plus tule_ "n" ; Presn Sg P2 => plus tule_ "t" ; Presn Sg P3 => tulee ; @@ -295,6 +368,13 @@ oper Condit Pl P1 => plus tulisi "mme" ; --# notpresent Condit Pl P2 => plus tulisi "tte" ; --# notpresent Condit Pl P3 => plus tulisi vat ; --# notpresent + Potent Sg P1 => plus tulle_ "n" ; --# notpresent + Potent Sg P2 => plus tulle_ "t" ; --# notpresent + Potent Sg P3 => plus tulle_ "e" ; --# notpresent + Potent Pl P1 => plus tulle_ "mme" ; --# notpresent + Potent Pl P2 => plus tulle_ "tte" ; --# notpresent + Potent Pl P3 => plus tulle_ vat ; --# notpresent + PotentNeg => tulle_ ; --# notpresent Imper Sg => tule_ ; Imper Pl => plus tulk_ (a + a) ; ImperP3 Sg => plus tulkoo "n" ; @@ -307,18 +387,24 @@ oper PassImpf False => tultu ; --# notpresent PassCondit True => plus tult_ (a + "isiin") ; --# notpresent PassCondit False => plus tult_ (a + "isi") ; --# notpresent + PassPotent True => plus tult_ (a + "neen") ; --# notpresent + PassPotent False => plus tult_ (a + "ne") ; --# notpresent + PassImper True => plus tult_ (a + "k" + o + o + "n") ; + PassImper False => plus tult_ (a + "k" + o) ; + + PresPartAct (AN n) => tulevaN.s ! n ; + PresPartAct AAdv => plus tuleva "sti" ; + PresPartPass (AN n) => tultavaN.s ! n ; + PresPartPass AAdv => plus tultava "sti" ; + PastPartAct (AN n) => tullutN.s ! n ; PastPartAct AAdv => plus tullee "sti" ; PastPartPass (AN n) => tultuN.s ! n ; PastPartPass AAdv => plus tullu__ "sti" ; - Inf Inf3Iness => plus tulema ("ss" + a) ; - Inf Inf3Elat => plus tulema ("st" + a) ; - Inf Inf3Illat => plus tulema (a + "n") ; - Inf Inf3Adess => plus tulema ("ll" + a) ; - Inf Inf3Abess => plus tulema ("tt" + a) ; - Inf InfPresPart => plus tuleva "n" ; - Inf InfPresPartAgr => tuleva ; - _ => plus "TODO" tulla ---- + + AgentPart (AN n) => tulemaN.s ! n ; + AgentPart AAdv => plus tulema "sti" + } ; sc = NPCase Nom ; lock_V = <>