mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-15 15:59:32 -06:00
preliminary implementation of GerundN and GerundAP in ParseFin. More coverage, but some strange translations.
This commit is contained in:
@@ -117,6 +117,7 @@ oper
|
||||
mkN : (pika : Str) -> (juna : N) -> N ; -- compound with invariable prefix
|
||||
mkN : (oma : N) -> (tunto : N) -> N ; -- compound with inflecting prefix
|
||||
mkN : NK -> N ; -- noun from DictFin (Kotus)
|
||||
mkN : V -> N ; -- verbal noun: "tekeminen"
|
||||
} ;
|
||||
|
||||
-- Some nouns are regular except for the singular nominative (e.g. "mies").
|
||||
@@ -344,6 +345,7 @@ mkVS = overload {
|
||||
mkN : (sora : Str) -> (tie : N) -> N = mkStrN ;
|
||||
mkN : (oma,tunto : N) -> N = mkNN ;
|
||||
mkN : (sana : NK) -> N = \w -> nforms2snoun w.s ;
|
||||
mkN : V -> N = \w -> sverb2snoun w ;
|
||||
} ;
|
||||
|
||||
exceptNomN : N -> Str -> N = \noun,nom -> lin N {
|
||||
|
||||
@@ -86,18 +86,9 @@ lin
|
||||
isPron = np1.isPron ; isNeg = np1.isNeg
|
||||
} ;
|
||||
|
||||
|
||||
{-
|
||||
GerundN v = { -- parsing -- GerundN : V -> N ; peseminen
|
||||
s = \\n,c => v.s ! VPresPart ;
|
||||
g = Neutr
|
||||
} ;
|
||||
GerundN v = mkN (lin V v) ;
|
||||
|
||||
GerundAP v = { -- beckoning -- V -> AP houkutteleva
|
||||
s = \\agr => v.s ! VPresPart ;
|
||||
isPre = True
|
||||
} ;
|
||||
-}
|
||||
GerundAP v = {s = \\_ => (snoun2nounSep (sverb2nounPresPartAct v)).s} ;
|
||||
|
||||
OrdCompar a = snoun2nounSep {s = \\nc => a.s ! Compar ! SAN nc ; h = a.h} ;
|
||||
|
||||
|
||||
@@ -271,6 +271,51 @@ oper
|
||||
-- (Verb ** {sc : NPForm ; qp : Bool ; p : Str}) -> VP = \verb -> {
|
||||
|
||||
|
||||
-- word formation functions
|
||||
|
||||
sverb2snoun : SVerb1 -> SNoun = \v -> -- syöminen
|
||||
let teke = v.s ! 3 in {
|
||||
s = table {
|
||||
0 => partPlus teke "minen" ;
|
||||
1 => partPlus teke "mise" ;
|
||||
2 => partPlus teke "mista" ; ---- vh
|
||||
3 => partPlus teke "misena" ; ---- vh
|
||||
4 => partPlus teke "misee" ;
|
||||
5 => partPlus teke "miste" ;
|
||||
6 => partPlus teke "misia" ; ---- vh
|
||||
7 => partPlus teke "misi" ;
|
||||
8 => partPlus teke "misi" ;
|
||||
9 => partPlus teke "misii"
|
||||
} ;
|
||||
h = v.h
|
||||
} ;
|
||||
|
||||
sverb2nounPresPartAct : SVerb1 -> SNoun = \v -> -- syövä
|
||||
let teke = v.s ! 3 in {
|
||||
s = table {
|
||||
0 => partPlus teke "va" ;
|
||||
1 => partPlus teke "va" ;
|
||||
2 => partPlus teke "vaa" ; ---- vh
|
||||
3 => partPlus teke "vana" ; ---- vh
|
||||
4 => partPlus teke "vaa" ;
|
||||
5 => partPlus teke "vie" ;
|
||||
6 => partPlus teke "via" ; ---- vh
|
||||
7 => partPlus teke "vi" ;
|
||||
8 => partPlus teke "vi" ;
|
||||
9 => partPlus teke "vii"
|
||||
} ;
|
||||
h = v.h
|
||||
} ;
|
||||
|
||||
sverb2nounPresPartPass : SVerb1 -> SNoun = \v -> -- syötävä
|
||||
let a = harmonyA v.h in
|
||||
nforms2snoun (dLava (partPlus (v.s ! 3) (partPlus "t" (partPlus a (partPlus "v" a))))) ;
|
||||
|
||||
dLava : Str -> NForms = \s -> dUkko s (s + "n") ;
|
||||
|
||||
--- to use these at run time in ParseFin
|
||||
partPlus = glue ;
|
||||
|
||||
-- auxiliary
|
||||
|
||||
plusIf : Bool -> Str -> Str -> Str = \b,x,y -> case b of {
|
||||
|
||||
@@ -22,4 +22,9 @@ are completely translated (but mostly not so well...)
|
||||
317 no lin
|
||||
182 lin with unknowns
|
||||
|
||||
After implementing GerundN and GerundNP, only 40 lin with unknowns. But the implementations are bad:
|
||||
- applying to run-time V prevents correct vowel harmony
|
||||
- composite forms with "minen" should be "mis", e.g. hinnoitteleminendetaljit
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user