Agr = AgSgP1 | AgSgP2 | AgSgP3 Gender | AgSgP3Gen | AgPl Person | AgPlPol ;
with AgSgP3Gen resp. AgPlPol used for reflexive,possessive forms of "man", "Sie".
Compiles AllGer from src in 162sec with 15M VerbGer.gfo vs. 380sec with 17M VerbGer.gfo
are edited to allow for glued Prep+DefArt, using new categories NP',Det',Quant',
Predet',DAP'.
The previous NP.s : Case => Str*Str allows parsing
"in dem Meer" = in_Prep ++ (np.s ! Case).p1
"im Meer" = in_Prep ++ (np.s ! Case).p2,
but since only one of the strings of (np.s!Case) is used, the tree
contains a metavariable like ?2 (the grammar is "erasing"). (Similarly, if we used
NP.s : Case => Str and NP.s2 : Case => Str.)
To get rid of the metavariables, we have to choose BY A PARAMETER, say
NP.s : droppedDefArt? => Case => Str
Using np.a = Ag g n p, the preposition can select between preposition
alone or preposition with definite article (glued or not), via
Prep = {s : GenNum => Str ; s2 :Str ; c : Case ; isPrep : PrepType }
The combination is done in appPrepNP' and appPrep'. This is
independent of the number of glued Prep+DefArt. But LangGer compiles
now in 200s using 30% memory (without SlashV2VNP). Can AppPrepNP' (and
insertObjNP') be simplified?
their primed versions
2. implemented all linearizations to use the primed categories
This allows linearization with prep+defart's, but parsing gives metavariables
in parses (DetQuant ? NumSg) and (DetQuantOrd ? NumSg ord) for prep+defart.
Todo: make Quant.s and NP. depend on PronType = isCat | isPron | isPronDefArt.
Without SlashV2VNP', compiles in 84 sec and gives 3,6M VerbGer.gfo, 2,3M SentenceGer.gfo.
Uses |Prep'|=12 instead of |Prep|=18, |NP'|=72 instead of |NP|=54
ParadigmsGer had two constructions of verbs v:V3 with dat- and acc-object nps,
(1) mkV3 : V -> V3 = \v -> mkV3 v accPrep datPrep ;
(2) accdatV3 : V -> V3 = \v -> mkV3 v datPrep accPrep ; -- (no prepositions)
In a previous patch, I had replaced (accdatV3 v) to (mkV3 v accPrep datPrep), as the
name suggested. (This actually was the meaning of accdatV3 in gf-3.2, which had only
a non-overloaded mkV3 : V -> Prep -> Prep -> V3.)
The reason for having two constructions for dat+acc-verbs in Ger seems to be *Eng*:
for English, ditransitive V3-verbs are defined by
(2') mkV3 : V -> V3 = \v -> mkV3 v noPrep noPrep ;
like "to give sb sth", where the indirect argument comes first (c2=indir), the direct
second (c3=dir), corresponding to c2=datPrep, c3=accPrep in Ger; apparently, this was
meant by the comment (no prepositions) in (2). Other V3-verbs in Eng are defined by
(1') mkV3 : V -> Prep -> V3 = \v,p -> mkV3 v noPrep p ;
like "to give sth to sb", so that (c2=dir), (c3=indir-with preposition),
corresponding to c2=acc,c3=dat in Ger, i.e. (1).
In order to get trees with equal meaning in Ger and Eng, the direct and indirect
arguments of corresponding verbs must match. Therefore, some V3-verbs in Ger have to
be defined using (1), others using (2), although they syntactically behave similar.
This patch therefore reinstalls (1) and (2), and changes the V3 in LexiconGer to:
give_V3 = accdatV3 Irreg.geben_V ; -- c2=datPrep, c3=accPrep, to fit
-- to Eng ditransitive: give sb(indir) sth(dir) (no preposition)
sell_V3 = mkV3 (no_geV (regV "verkaufen")) ; -- Eng: mkV3 v noPrep toPrep
send_V3 = mkV3 (regV "schicken") ; -- Ger mkV3 v = Ger: mkV3 v accPrep datPrep