German sentence formation; development log

This commit is contained in:
aarne
2006-01-05 13:40:34 +00:00
parent d006a6a016
commit 252d24642f
7 changed files with 123 additions and 32 deletions

View File

@@ -1,4 +1,4 @@
concrete CatEng of Cat = open ResEng, Prelude, (R = ParamX) in {
concrete CatEng of Cat = open ResEng, Prelude in {
lincat
Text, Phr, Utt = {s : Str} ;

View File

@@ -1,11 +1,13 @@
concrete CatGer of Cat = open ResGer, Prelude, (R = ParamX) in {
concrete CatGer of Cat = open ResGer, Prelude in {
flags optimize=all_subs ;
lincat
-- Text, Phr, Utt = {s : Str} ;
--
-- Imp = {s : Polarity => Number => Str} ;
--
-- S = {s : Str} ;
S = {s : Order => Str} ;
-- QS = {s : QForm => Str} ;
-- RS = {s : Agr => Str} ;
@@ -16,12 +18,12 @@ concrete CatGer of Cat = open ResGer, Prelude, (R = ParamX) in {
-- RCl = {s : Tense => Anteriority => Polarity => Agr => Str} ;
VP = ResGer.VP ;
V, VS, VQ, VA = Verb ; -- = {s : VForm => Str} ;
V, VS, VQ, VA = ResGer.Verb ; -- = {s : VForm => Str} ;
V2, VV, V2A = Verb ** {c2 : Preposition} ;
V3 = Verb ** {c2, c3 : Preposition} ;
AP = {s : AForm => Str ; isPre : Bool} ;
Comp = {s : Str} ;
Comp = {s : Agr => Str} ;
--
-- SC = {s : Str} ;
--

View File

@@ -1,5 +1,7 @@
concrete LexGer of Lex = CatGer ** open ResGer, Prelude in {
flags optimize = values ;
lin
walk_V = mkV "gehen" "geht" "geh" "ging" "ginge" "gegangen" VSein ;
help_V2 = mkV "helfen" "hilft" "hilf" "half" "hälfe" "geholfen" VHaben **

View File

@@ -97,10 +97,7 @@ resource ResGer = ParamGer ** open Prelude in {
let
ifSibilant : Str -> Str -> Str -> Str = \u,b1,b2 ->
case u of {
"s" => b1 ;
"x" => b1 ;
"z" => b1 ;
"ß" => b1 ;
"s" | "x" | "z" | "ß" => b1 ;
_ => b2
} ;
en = Predef.dp 2 geben ;
@@ -171,6 +168,11 @@ resource ResGer = ParamGer ** open Prelude in {
Preposition : Type = {s : Str ; c : Case} ;
-- To apply a preposition to a complement.
appPrep : Preposition -> (Case => Str) -> Str = \prep,arg ->
prep.s ++ arg ! prep.c ;
-- Pronouns and articles
-- Here we define personal and relative pronouns.
-- All personal pronouns, except "ihr", conform to the simple
@@ -368,6 +370,23 @@ resource ResGer = ParamGer ** open Prelude in {
Neg => "nicht"
} ;
-- Extending a verb phrase with new constituents.
insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> {
s = vp.s ;
a1 = vp.a1 ;
n2 = \\a => vp.n2 ! a ++ obj ! a ;
a2 = vp.a2 ;
ext = vp.ext
} ;
insertAdv : Str -> VP -> VP = \adv,vp -> {
s = vp.s ;
a1 = vp.a1 ;
n2 = vp.n2 ;
a2 = vp.a2 ++ adv ;
ext = vp.ext
} ;
-- For $Sentence$.
@@ -380,12 +399,13 @@ resource ResGer = ParamGer ** open Prelude in {
let
verb = vp.s ! agr ! VPFinite t a ;
neg = vp.a1 ! b ;
compl = vp.n2 ! agr ++ vp.a2 ++ vp.ext
obj = vp.n2 ! agr ++ vp.a2 ++ vp.ext ;
compl = neg ++ obj ++ verb.inf ;
in
case o of {
Main => subj ++ verb.fin ++ neg ++ verb.inf ++ compl ;
Inv => verb.fin ++ subj ++ neg ++ verb.inf ++ compl ;
Sub => subj ++ neg ++ compl ++ verb.inf ++ verb.fin
Main => subj ++ verb.fin ++ compl ;
Inv => verb.fin ++ subj ++ compl ;
Sub => subj ++ compl ++ verb.fin
}
} ;

View File

@@ -1,11 +1,11 @@
concrete UntensedGer of Untensed = CatGer ** open ResGer in {
--
-- flags optimize=all_subs ;
--
-- lin
-- PosCl cl = {s = cl.s ! Pres ! Simul ! Pos ! ODir} ;
-- NegCl cl = {s = cl.s ! Pres ! Simul ! Neg ! ODir} ;
--
flags optimize=all_subs ;
lin
PosCl cl = {s = cl.s ! Pres ! Simul ! Pos} ;
NegCl cl = {s = cl.s ! Pres ! Simul ! Neg} ;
-- PosQCl cl = {s = cl.s ! Pres ! Simul ! Pos} ;
-- NegQCl cl = {s = cl.s ! Pres ! Simul ! Neg} ;
--

View File

@@ -4,11 +4,11 @@ concrete VerbGer of Verb = CatGer ** open ResGer in {
lin
UseV = predV ;
ComplV2 v np =
insertObj (\\_ => appPrep v.c2 np.s) (predV v) ;
ComplV3 v np np2 =
insertObj (\\_ => appPrep v.c2 np.s ++ appPrep v.c3 np2.s) (predV v) ;
-- ComplV2 v np = insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v) ;
-- ComplV3 v np np2 =
-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ;
--
-- ComplVV v vp = insertObj (\\a => v.c2 ++ infVP vp a) (predV v) ;
-- ComplVS v s = insertObj (\\_ => conjThat ++ s.s) (predV v) ;
-- ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;
@@ -17,8 +17,13 @@ concrete VerbGer of Verb = CatGer ** open ResGer in {
-- ComplV2A v np ap =
-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ ap.s ! np.a) (predV v) ;
--
-- UseComp comp = insertObj comp.s (predAux auxBe) ;
--
UseComp comp = insertObj comp.s (predV sein_V) ;
CompAP ap = {s = \\_ => ap.s ! APred} ;
CompNP np = {s = \\_ => np.s ! Nom} ;
CompAdv a = {s = \\_ => a.s} ;
-- AdvVP vp adv = insertObj (\\_ => adv.s) vp ;
------ AdVVP adv vp = insertAdV adv.s vp ;
--
@@ -27,11 +32,7 @@ concrete VerbGer of Verb = CatGer ** open ResGer in {
-- PassV2 v = {s = \\_ => v.s ! VPPart} ;
--
-- UseVV, UseVS, UseVQ = \vv -> {s = vv.s ; c2 = []} ; -- no "to"
--
-- CompAP ap = ap ;
-- CompNP np = {s = \\_ => np.s ! Acc} ;
-- CompAdv a = {s = \\_ => a.s} ;
--
-- EmbedS s = {s = conjThat ++ s.s} ;
-- EmbedQS qs = {s = qs.s ! QIndir} ;
-- EmbedVP vp = {s = infVP vp (agrP3 Sg)} ; --- agr

View File

@@ -0,0 +1,66 @@
Steps of building the German implementation.
4/1/2006
ParamGer: Case, Gender, Adjf
CatGer: N, CN
ResGer: mkNoun, mkN2, mkN4
> cc mkN2 "Stube" "Stuben" Fem
ResGer: mkA, mkV, regA, regV
> cc regV "machen"
CatGer: V*, A*
LexGer: N*, A*, V*
> l -table walk_V
NounGer: determiner rules, UseN
ParamGer: gennum, adjAgr
ResGer: pronForms
> p -cat=NP "der Hund" | l -table
5/1
LexGer: Pron, Det
> p "mein Hund"
AdjectiveGer: PositA, ComparA, AdAP
> p -cat=NP "ein warmer Hund" | l -table
> p -cat=NP -lexer=literals "alle meine 3 sehr warmen Hünde"
ResGer: predV, mkClause, aux verbs
VerbGer: UseV
SentenceGer: PredVP
> l -table PredVP (UsePron i_Pron) (UseV walk_V)
("ich nicht gegangen hatte" etc)
ParamGer: VAux
ResGer: added aux : VAux to Verb and mkV
LexGer: mkV updates
> l -table PredVP (UsePron i_Pron) (UseV walk_V)
("ich nicht gegangen war" etc, now correct)
ResGer: appPrep, insertObj, insertAdv
VerbGer: ComplV2, ComplV3
SentenceGer: PosCl, NegCl
> p -cat=S -mcfg "ich zeige ihn meinem warmen Hund"
wc *.gfc
122385 total
70667 CatGer.gfc (largest)
add flags optimize=all_subs to this module:
5781 CatGer.gfc
57499 total
VerbGer: UseComp, Comp*
> p -cat=Cl -mcfg "ich bin ein Hund" | l -table
vg
(see complex figure)
i english/TestEng.gf
vg
(see complex symmetric figure)