diff --git a/lib/src/finnish/ResFin.gf b/lib/src/finnish/ResFin.gf index 57f14867d..2314d800d 100644 --- a/lib/src/finnish/ResFin.gf +++ b/lib/src/finnish/ResFin.gf @@ -243,7 +243,8 @@ oper => vf (olla ! p) part ; --# notpresent => vf ei (ole ++ part) ; --# notpresent => vf ei neg - } + } ; + passPol = case b of {Pos => True ; Neg => False} ; in case vi of { VIFin Past => mkvf (Impf agr.n agr.p) ; --# notpresent @@ -251,7 +252,7 @@ oper VIFin Fut => mkvf (Presn agr.n agr.p) ; --# notpresent VIFin Pres => mkvf (Presn agr.n agr.p) ; VIImper => mkvf (Imper agr.n) ; - VIPass => mkvf (Pass True) ; + VIPass => mkvf (Pass passPol) ; VIInf i => mkvf (Inf i) } ; diff --git a/lib/src/finnish/stemmed/NounFin.gf b/lib/src/finnish/stemmed/NounFin.gf index 6d1b05b1d..a1c4b9055 100644 --- a/lib/src/finnish/stemmed/NounFin.gf +++ b/lib/src/finnish/stemmed/NounFin.gf @@ -89,7 +89,7 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in DetQuantOrd quant num ord = { s1 = \\c => quant.s1 ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; - sp = \\c => quant.sp ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; + sp = \\c => quant.s1 ! num.n ! c ++ num.s ! Sg ! c ++ ord.s ! NCase num.n c ; s2 = quant.s2 ; n = num.n ; isNum = num.isNum ; @@ -100,7 +100,10 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in DetQuant quant num = { s1 = \\c => quant.s1 ! num.n ! c ++ num.s ! Sg ! c ; - sp = \\c => quant.sp ! num.n ! c ++ num.s ! Sg ! c ; + sp = \\c => case num.isNum of { + True => quant.s1 ! num.n ! c ++ num.s ! Sg ! c ; -- 0 kolme with Indef + False => quant.sp ! num.n ! c ++ num.s ! Sg ! c -- yksi 0 + } ; s2 = quant.s2 ; n = num.n ; isNum = num.isNum ; -- case num.n of {Sg => False ; _ => True} ; diff --git a/lib/src/finnish/stemmed/ParseFin.gf b/lib/src/finnish/stemmed/ParseFin.gf index fdcdaac18..b6868a830 100644 --- a/lib/src/finnish/stemmed/ParseFin.gf +++ b/lib/src/finnish/stemmed/ParseFin.gf @@ -58,7 +58,10 @@ lin oper passVPSlash : VPSlash -> ResFin.VP = \vp -> lin VP { - s = \\_ => vp.s ! VIPass ; + s = \\vif,ant,pol,agr => case pol of { + Pos => vp.s ! VIPass ! ant ! pol ! agr ; + Neg => vp.s ! VIPass ! ant ! pol ! agr + } ; s2 = vp.s2 ; adv = vp.adv ; ext = vp.ext ; @@ -143,8 +146,8 @@ lin -- [CompVP] -- [EmptyRelSlash] -- [GenRP] -[GerundAP] -[GerundN] +-- [GerundAP] +-- [GerundN] -- [OrdCompar] -- [PositAdVAdj] -- [PredVPovs] diff --git a/lib/src/finnish/stemmed/log.txt b/lib/src/finnish/stemmed/log.txt index 3550346f4..18cd425a3 100644 --- a/lib/src/finnish/stemmed/log.txt +++ b/lib/src/finnish/stemmed/log.txt @@ -97,4 +97,7 @@ Also changed the default genitive of symbol (+n) to +in, to be uniform with the in a consonant: Inteln -> Intelin. But a proper morphological analysis with dynamic lex extension is what would really be needed. +Fixed NounFin.IndefArt, which erroneously added "yksi" to the substantival form of numeral determiners. This changed 125 +linearizations - but there are some mistaken parses of numbers in the treebank, in particular years. +