From b0d4f0316516502d582dfb4c3ca4b2fbb9674095 Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 5 Jan 2006 18:03:34 +0000 Subject: [PATCH] German questions --- lib/resource-1.0/german/CatGer.gf | 4 +- lib/resource-1.0/german/LexGer.gf | 50 +++++------ lib/resource-1.0/german/QuestionGer.gf | 119 ++++++++++++++----------- lib/resource-1.0/german/UntensedGer.gf | 6 +- lib/resource-1.0/german/VerbGer.gf | 4 +- lib/resource-1.0/german/log.txt | 15 ++++ 6 files changed, 114 insertions(+), 84 deletions(-) diff --git a/lib/resource-1.0/german/CatGer.gf b/lib/resource-1.0/german/CatGer.gf index 0fc6fdfa1..fbcea6cac 100644 --- a/lib/resource-1.0/german/CatGer.gf +++ b/lib/resource-1.0/german/CatGer.gf @@ -12,8 +12,8 @@ concrete CatGer of Cat = open ResGer, Prelude in { -- RS = {s : Agr => Str} ; Cl = {s : Tense => Anteriority => Polarity => Order => Str} ; --- Slash = {s : Tense => Anteriority => Polarity => Order => Str} ** {c2 : Str} ; --- + Slash = {s : Tense => Anteriority => Polarity => Order => Str} ** {c2 : Preposition} ; + QCl = {s : Tense => Anteriority => Polarity => QForm => Str} ; RCl = {s : Tense => Anteriority => Polarity => Agr => Str} ; diff --git a/lib/resource-1.0/german/LexGer.gf b/lib/resource-1.0/german/LexGer.gf index a69ee016b..d72e61a87 100644 --- a/lib/resource-1.0/german/LexGer.gf +++ b/lib/resource-1.0/german/LexGer.gf @@ -32,33 +32,33 @@ concrete LexGer of Lex = CatGer ** open ResGer, Prelude in { he_Pron = mkPronPers "er" "ihn" "ihm" "seiner" "sein" Sg P3 ; we_Pron = mkPronPers "wir" "uns" "uns" "unser" "unser" Pl P1 ; --- whoSg_IP = mkIP "who" "whom" "whose" Sg ; --- whoPl_IP = mkIP "who" "whom" "whose" Pl ; --- --- when_IAdv = {s = "when"} ; --- where_IAdv = {s = "where"} ; --- why_IAdv = {s = "why"} ; --- --- whichSg_IDet = {s = "which" ; n = Sg} ; --- whichPl_IDet = {s = "which" ; n = Pl} ; --- + whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ; + whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Pl} ; + + when_IAdv = {s = "wann"} ; + where_IAdv = {s = "wo"} ; + why_IAdv = {s = "warum"} ; + + whichSg_IDet = {s = appAdj (regA "welch") ! Sg ; n = Sg} ; + whichPl_IDet = {s = appAdj (regA "welch") ! Sg ; n = Pl} ; + -- one_Numeral = {s = table {NCard => "one" ; NOrd => "first"} ; n = Sg} ; -- forty_Numeral = {s = table {NCard => "forty" ; NOrd => "fortieth"} ; n = Pl} ; --- --- in_Prep = {s = "in"} ; --- of_Prep = {s = "of"} ; --- + + in_Prep = {s = "in" ; c = Dat} ; + of_Prep = {s = "von" ; c = Dat} ; + -- and_Conj = {s = "and" ; n = Pl} ; -- either7or_DConj = {s1 = "either" ; s2 = "or" ; n = Sg} ; --- --- if_Subj = ss "if" ; --- because_Subj = ss "because" ; --- --- but_PConj = {s = "but"} ; --- --- please_Voc = {s = "," ++ "please"} ; --- --- more_CAdv = ss "more" ; --- less_CAdv = ss "less" ; --- + + if_Subj = ss "wenn" ; + because_Subj = ss "weil" ; + + but_PConj = {s = "aber"} ; + + please_Voc = {s = "," ++ "bitte"} ; + + more_CAdv = ss "mehr" ; + less_CAdv = ss "weniger" ; + } diff --git a/lib/resource-1.0/german/QuestionGer.gf b/lib/resource-1.0/german/QuestionGer.gf index 6e541eeae..24a017839 100644 --- a/lib/resource-1.0/german/QuestionGer.gf +++ b/lib/resource-1.0/german/QuestionGer.gf @@ -1,54 +1,69 @@ concrete QuestionGer of Question = CatGer ** open ResGer in { --- --- flags optimize=all_subs ; --- --- lin --- --- QuestCl cl = { --- s = \\t,a,p => --- let cls = cl.s ! t ! a ! p --- in table { --- QDir => cls ! OQuest ; --- QIndir => "if" ++ cls ! ODir --- } ---- "whether" in ExtGer --- } ; --- --- QuestVP qp vp = --- let cl = mkClause (qp.s ! Nom) {n = qp.n ; p = P3} vp --- in {s = \\t,a,b,_ => cl.s ! t ! a ! b ! ODir} ; --- --- QuestSlash ip slash = { --- s = \\t,a,p => --- let --- cls = slash.s ! t ! a ! p ; --- who = slash.c2 ++ ip.s ! Acc --- stranding in ExtGer --- in table { --- QDir => who ++ cls ! OQuest ; --- QIndir => who ++ cls ! ODir --- } --- } ; --- --- QuestIAdv iadv cl = { --- s = \\t,a,p => --- let --- cls = cl.s ! t ! a ! p ; --- why = iadv.s --- in table { --- QDir => why ++ cls ! OQuest ; --- QIndir => why ++ cls ! ODir --- } --- } ; --- --- PrepIP p ip = {s = p.s ++ ip.s ! Nom} ; --- --- AdvIP ip adv = { --- s = \\c => ip.s ! c ++ adv.s ; --- n = ip.n --- } ; --- --- IDetCN idet num ord cn = { --- s = \\c => idet.s ++ num.s ++ ord.s ++ cn.s ! idet.n ! c ; --- n = idet.n --- } ; --- + + flags optimize=all_subs ; + + lin + + QuestCl cl = { + s = \\t,a,p => + let cls = cl.s ! t ! a ! p + in table { + QDir => cls ! Inv ; + QIndir => "ob" ++ cls ! Sub + } + } ; + + QuestVP qp vp = { + s = \\t,a,b,q => + let + cl = (mkClause (qp.s ! Nom) (agrP3 qp.n) vp).s ! t ! a ! b + in + case q of { + QIndir => cl ! Sub ; + _ => cl ! Main + } + } ; + + QuestSlash ip slash = { + s = \\t,a,p => + let + cls = slash.s ! t ! a ! p ; + who = appPrep slash.c2 ip.s + in table { + QDir => who ++ cls ! Inv ; + QIndir => who ++ cls ! Sub + } + } ; + + QuestIAdv iadv cl = { + s = \\t,a,p => + let + cls = cl.s ! t ! a ! p ; + why = iadv.s + in table { + QDir => why ++ cls ! Inv ; + QIndir => why ++ cls ! Sub + } + } ; + + PrepIP p ip = { + s = appPrep p ip.s + } ; + + AdvIP ip adv = { + s = \\c => ip.s ! c ++ adv.s ; + n = ip.n + } ; + + IDetCN idet num ord cn = + let + g = cn.g ; + n = idet.n + in { + s = \\c => + idet.s ! g ! c ++ num.s ! g ! c ++ ord.s ! Weak ! g ! c ++ cn.s ! Weak ! n ! c ; + n = n + } ; + } + diff --git a/lib/resource-1.0/german/UntensedGer.gf b/lib/resource-1.0/german/UntensedGer.gf index ee3d77295..db8f6b7c5 100644 --- a/lib/resource-1.0/german/UntensedGer.gf +++ b/lib/resource-1.0/german/UntensedGer.gf @@ -6,9 +6,9 @@ concrete UntensedGer of Untensed = CatGer ** open ResGer in { 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} ; --- + PosQCl cl = {s = cl.s ! Pres ! Simul ! Pos} ; + NegQCl cl = {s = cl.s ! Pres ! Simul ! Neg} ; + -- PosRCl cl = {s = cl.s ! Pres ! Simul ! Pos} ; -- NegRCl cl = {s = cl.s ! Pres ! Simul ! Neg} ; -- diff --git a/lib/resource-1.0/german/VerbGer.gf b/lib/resource-1.0/german/VerbGer.gf index c3002e54f..8612b9715 100644 --- a/lib/resource-1.0/german/VerbGer.gf +++ b/lib/resource-1.0/german/VerbGer.gf @@ -13,9 +13,9 @@ concrete VerbGer of Verb = CatGer ** open ResGer in { insertObj (\\a => v.part ++ (vp.s ! a ! VPInfinit Simul).inf) (predV v) ; ComplVS v s = insertExtrapos (conjThat ++ s.s ! Sub) (predV v) ; + ComplVQ v q = + insertExtrapos (q.s ! QIndir) (predV v) ; --- ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ; --- -- ComplVA v ap = insertObj (ap.s) (predV v) ; -- ComplV2A v np ap = -- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ ap.s ! np.a) (predV v) ; diff --git a/lib/resource-1.0/german/log.txt b/lib/resource-1.0/german/log.txt index 9828a1c11..302230fe7 100644 --- a/lib/resource-1.0/german/log.txt +++ b/lib/resource-1.0/german/log.txt @@ -83,3 +83,18 @@ SentenceGer: ImpVP PhraseGer: almost all (actually copied from PhraseScand) > p -cat=Imp -mcfg "geh hier" ImpVP (AdvVP (UseV walk_V) here_Adv) + +QuestionGer: almost all (copied from Scand) +UntensedGer: PosQCl, NegQCl +> p -cat=QS -mcfg "gehen wir nicht" | l -table + QDir : gehen wir nicht + QIndir : ob wir nicht gehen + +VerbGer: ComplVQ +> p -cat=S -mcfg "ich frage ob wir warm sind" + +LexGer: *IDet, *IP, *Prep +QuestionGer: IDetCN (using NounGer.MkDet) +> p -cat=QS -mcfg "welcher Hund geht" +> p -cat=QS -mcfg "in welchem Hund geht er" +