german AForm and verb endings

This commit is contained in:
aarne
2006-01-16 09:24:38 +00:00
parent bc8bfdea4d
commit de492a866a
5 changed files with 59 additions and 25 deletions

View File

@@ -42,6 +42,24 @@ oper
_ => variants {hund ; hund + "e"} _ => variants {hund ; hund + "e"}
} ; } ;
-- Duden, p. 119
verbT : Str -> Str = \v -> case v of {
_ + ("t" | "d") => v + "et" ; -- gründen, reden, betten
_ + ("ch" | "k" | "p" | "t" | "g" | "b" | "d" | "f" | "s") +
("m" | "n") => v + "et" ; -- atmen, widmen, öffnen, rechnen
_ => v + "t" -- lernen, lärmen, qualmen etc
} ;
verbST : Str -> Str = \v -> case v of {
_ + ("s" | "ss" | "ß" | "sch" | "x" | "z") => v + "t" ;
_ => v + "st"
} ;
stemVerb : Str -> Str = \v -> case v of {
_ + ("rn" | "ln") => init v ;
_ => Predef.tk 2 v
} ;
} ; } ;

View File

@@ -289,12 +289,13 @@ oper
mkV geben gibt gib gab gaebe gegeben = mkV geben gibt gib gab gaebe gegeben =
let let
gebe = init geben ; ---- geb = stemVerb geben ;
gibst = init gibt + "st" ; ---- gebe = geb + "e" ;
gebt = init gebe ; ---- gibst = verbST (init gibt) ;
gabst = gab + "st" ; ---- gebt = verbT geb ;
gabst = verbST gab ;
gaben = pluralN gab ; gaben = pluralN gab ;
gabt = gab + "t" ---- gabt = verbT gab
in in
MorphoGer.mkV MorphoGer.mkV
geben gebe gibst gibt gebt gib gab gabst gaben gabt gaebe gegeben geben gebe gibst gibt gebt gib gab gabst gaben gabt gaebe gegeben
@@ -302,16 +303,16 @@ oper
regV fragen = regV fragen =
let let
frag = Predef.tk 2 fragen ; ---- frag = stemVerb fragen ;
fragt = frag + "t" ; ---- fragt = verbT frag ;
fragte = fragt + "e" ; fragte = fragt + "e" ;
gefragt = "ge" + fragt ; gefragt = "ge" + fragt ;
in in
mkV fragen fragt frag fragte fragte gefragt ; mkV fragen fragt (frag + "e") fragte fragte gefragt ;
irregV singen singt sang saenge gesungen = irregV singen singt sang saenge gesungen =
let let
sing = Predef.tk 2 singen ; ---- sing = stemVerb singen ;
in in
mkV singen singt sing sang saenge gesungen ; mkV singen singt sing sang saenge gesungen ;

View File

@@ -35,7 +35,7 @@ resource ParamGer = ParamX ** {
-- The predicative form of adjectives is not inflected further. -- The predicative form of adjectives is not inflected further.
param AForm = APred | AMod Adjf GenNum Case ; param AForm = APred | AMod GenNum Case ;
--2 For $Verb$ --2 For $Verb$
@@ -93,8 +93,23 @@ resource ParamGer = ParamX ** {
GPl => Pl GPl => Pl
} ; } ;
-- Used in $NounGer$.
agrAdj : Gender -> Adjf -> Number -> Case -> AForm = \g,a,n,c -> agrAdj : Gender -> Adjf -> Number -> Case -> AForm = \g,a,n,c ->
AMod a (gennum g n) c ; let
gn = gennum g n ;
e = AMod (GSg Fem) Nom ;
en = AMod (GSg Masc) Acc ;
in
case a of {
Strong => AMod gn c ;
_ => case <gn,c> of {
<GSg _, Nom> => e ;
<GSg Masc,Acc> => en ;
<GSg _, Acc> => e ;
_ => en
}
} ;
-- This is used twice in NounGer. -- This is used twice in NounGer.

View File

@@ -164,7 +164,7 @@ resource ResGer = ParamGer ** open Prelude in {
appAdj : Adjective -> Number => Gender => Case => Str = \adj -> appAdj : Adjective -> Number => Gender => Case => Str = \adj ->
let let
ad : GenNum -> Case -> Str = \gn,c -> ad : GenNum -> Case -> Str = \gn,c ->
adj.s ! Posit ! AMod Strong gn c adj.s ! Posit ! AMod gn c
in in
\\n,g,c => case n of { \\n,g,c => case n of {
Sg => ad (GSg g) c ; Sg => ad (GSg g) c ;
@@ -176,20 +176,14 @@ resource ResGer = ParamGer ** open Prelude in {
adjForms : (x1,x2 : Str) -> AForm => Str = \teuer,teur -> adjForms : (x1,x2 : Str) -> AForm => Str = \teuer,teur ->
table { table {
APred => teuer ; APred => teuer ;
AMod Strong (GSg Masc) c => AMod (GSg Masc) c =>
caselist (teur+"er") (teur+"en") (teur+"em") (teur+"es") ! c ; caselist (teur+"er") (teur+"en") (teur+"em") (teur+"es") ! c ;
AMod Strong (GSg Fem) c => AMod (GSg Fem) c =>
caselist (teur+"e") (teur+"e") (teur+"er") (teur+"er") ! c ; caselist (teur+"e") (teur+"e") (teur+"er") (teur+"er") ! c ;
AMod Strong (GSg Neut) c => AMod (GSg Neut) c =>
caselist (teur+"es") (teur+"es") (teur+"em") (teur+"es") ! c ; caselist (teur+"es") (teur+"es") (teur+"em") (teur+"es") ! c ;
AMod Strong GPl c => AMod GPl c =>
caselist (teur+"e") (teur+"e") (teur+"en") (teur+"er") ! c ; caselist (teur+"e") (teur+"e") (teur+"en") (teur+"er") ! c
AMod Weak (GSg g) c => case <g,c> of {
<_,Nom> => teur+"e" ;
<Masc,Acc> => teur+"en" ;
<_,Acc> => teur+"e" ;
_ => teur+"en" } ;
AMod Weak GPl c => teur+"en"
} ; } ;
-- For $Verb$. -- For $Verb$.

View File

@@ -190,10 +190,16 @@ Ca. 4h more work was needed, so we have spent 16h now.
-------------------- --------------------
14/1 15/1 (3h)
TensedGer: just uncomment, except S TensedGer: just uncomment, except S
StructuralGer: almost complete with some determiner forms to revisit StructuralGer: almost complete with some determiner forms to revisit
ParadigmsGer: almost complete with verb form variations to revisit ParadigmsGer: almost complete with verb form variations to revisit
MorphoGer: very few functions in this module MorphoGer: very few functions in this module
16/1
ParamGer: removed Strong/Weak from AForm to save lexicon storage. Done in agrAdj instead.
Only affects NounGer and QuestionGer. Notice that making case analysis on <a,gn,c> is
much less storage-efficient.