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) ResGer: wollen_V, auxVV, insertExtrapos VerbGer: ComplVS > p -cat=Cl -mcfg "ich behaupte daß wir gehen" | l -table (gets OK with proper extrapos) VerbGer: ComplVV = insertObj (\\a => v.part ++ (vp.s ! a ! VPInfinit Simul).inf) (predV v) ; > p -cat=Cl "ich will gehen" | l -table Pres Anter Pos Main : ich habe gehen gewollen Pres Anter Pos Inv : habe ich gehen gewollen Pres Anter Pos Sub : ich gehen gewollen habe (Thus "double infinitives" don't get right.) Added routine stuff to AdverbGer and AdjectiveGer. Noticed failure with comparison ("schneller als ein Zug" pro "mehr schnell als ein Zug") 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" wc german/*.gfc 69407 total NounGer: ComplN2, ComplN3, SentCN, QuestCN LexGer: N2, N3 > p -cat=NP "der Sohn von dem Hund" > p -cat=CN -mcfg "Hund ob er geht" SentenceGer: Slash rules > p -cat=QS -mcfg "wem hilft er" CatGer: RP, RS, RCl ParamGer: RAgr RelativeGer: all (copied from Scand; tweaking betw GenNum, Agr also in CatGer) UntensedGer: PosRCl, NegRCl NounGer: RelCN > p -cat=RCl -mcfg "der geht" | l -table > p -cat=NP -mcfg "der Hund dem wir helfen wollen" | l -table NounGer: Num and Ord related rules CatGer: Ord has parametric AForm; Num has no params ParamGer: CardOrd LexGer: Numeral > p -cat=NP "meine vierzig warmen Hünde" > p -cat=NP "mein vierzigter Hund" CatGer: Conj, DConj ConjunctionGer: all (mostly from Scand) LexGer: Conj, DConj > p -cat=NP "ich und der Hund" | l -table > p -cat=S -mcfg "ich und der Hund sind entweder warm oder warm" > pm -printer=missing TestGer AdVVP AdvSC ComplV2A ComplVA EmbedQS EmbedS EmbedVP PassV2 ReflA2 ReflV2 UttVP one_Numeral wc german/*.gfc 1231 4116 98878 total Now we have finished most of TestGer in two days, 4 + 8 hours. But we had the old morphology and other files, and the Scandinavian v 1.0 as help. -------------------- 13/1 CatGer: add prefix to V*, isAux to VV - the latter mostly to deal with double infinitives ResGer: generalize predV to predVGen LexGer: experiment with gehen --> ausgehen > l -table PredVP (UsePron he_Pron) (ComplVV want_VV (UseV walk_V)) --- the auxiliary is still in wrong place in subordinate double infinitives ResGer: reflPron VerbGer: ReflV2 AdjectiveGer: ReflA2 --- with missing person agreement > p -cat=Cl -mcfg "ich helfe mir" PredVP (UsePron i_Pron) (ComplV2 help_V2 (UsePron i_Pron)) PredVP (UsePron i_Pron) (ReflV2 help_V2) > p -cat=Cl -mcfg "er hilft sich" PredVP (UsePron he_Pron) (ReflV2 help_V2) > pm -printer=missing AdVVP AdvSC OrdInt UttVP A round of filling these completes the implementation of TestGer. ResGer: insertAdV > p -cat=Cl -mcfg "er hilft immer seinem Hund" PredVP (UsePron he_Pron) (AdVVP always_AdV (ComplV2 help_V2 (DetCN (DetSg (PossSg he_Pron) NoOrd) (UseN dog_N)))) wc german/*.gfc 63 203 4768 german/AdjectiveGer.gfc 63 198 1649 german/AdverbGer.gfc 55 184 7490 german/CatGer.gfc 76 260 4489 german/ConjunctionGer.gfc 94 315 13968 german/LexGer.gfc 121 445 2736 german/MorphoGer.gfc 86 306 6637 german/NounGer.gfc 41 160 1419 german/ParamGer.gfc 81 245 2256 german/PhraseGer.gfc 63 219 3333 german/QuestionGer.gfc 63 219 3800 german/RelativeGer.gfc 87 343 2081 german/ResGer.gfc 112 393 20890 german/SentenceGer.gfc 230 696 4752 german/TestGer.gfc 61 185 1483 german/UntensedGer.gfc 110 366 41629 german/VerbGer.gfc 1406 4737 123380 total Ca. 4h more work was needed, so we have spent 16h now. -------------------- 15/1 (3h) TensedGer: just uncomment, except S StructuralGer: almost complete with some determiner forms to revisit ParadigmsGer: almost complete with verb form variations to revisit MorphoGer: very few functions in this module 16/1 (4h) 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 is much less storage-efficient. ParadigmsGer: completed ParamGer: VType ResGer, ParadigmsGer: the consequences of this BasicGer; started. Strategy: fill all you know without consulting dictionary; mark ---- before what you dont know, and after what you are uncertain about. Insight: to write a *resource* grammar you need not be a fluent speaker, but just to understand what grammar books say. It is when writing application grammars that you need to make stylistic judgements to do the right choices from the resource. 17/1 (4h) MorphoGer: for numerals NumeralGer: all > make stat 66123 german/NumeralGer.gfc added flags optimize=all_subs ; 17046 german/NumeralGer.gfc BasicGer: completed. Idea: work in pairs, one consulting the dictionary (or giving native speaker advice) ParadigmsGer: remove second arg from mkA ; add heuristics for el/er/en masculines in regN wc german/*.gfc 63 203 3360 german/AdjectiveGer.gfc 63 198 1649 german/AdverbGer.gfc 276 1159 89069 german/BasicGer.gfc 55 182 7704 german/CatGer.gfc 76 260 4489 german/ConjunctionGer.gfc 523 1575 11728 german/LangGer.gfc 94 315 10783 german/LexGer.gfc 128 469 2892 german/MorphoGer.gfc 99 375 12394 german/NounGer.gfc 100 321 17046 german/NumeralGer.gfc 0 5 83 german/ParadigmsGer.gfc 42 162 1446 german/ParamGer.gfc 81 245 2256 german/PhraseGer.gfc 68 244 4372 german/QuestionGer.gfc 63 219 3800 german/RelativeGer.gfc 90 355 2155 german/ResGer.gfc 123 423 22590 german/SentenceGer.gfc 151 451 14559 german/StructuralGer.gfc 69 224 1715 german/TensedGer.gfc 230 696 4752 german/TestGer.gfc 61 185 1483 german/UntensedGer.gfc 121 406 45746 german/VerbGer.gfc 2576 8672 266071 total Known bugs: double infinitives in subordinate clauses. Known uncertainties: marked with ----, mostly in Structural and Basic. Work: ca 27h for whole German (but with support in 0.6 esp. morphology, Swedish). 22/1 Fixed double infinitives with a new field (isAux : Bool) in VP. Used in mkClause. 31/1 Fine-tuned the place of negation by changing in ResGerman.mkClause and VerbGerman.UseCompl. Want to say "ich bin nicht alt" and "ich liebe sie nicht". 31/5 Added inherent Case to RS, RCl and Gender to Agr in order to handle it clefts properly. (In the meantime, the module IdiomGer had required some incremental work.) 26/6 The German resource implementation is considered complete, and it is released in the resource grammar version 1.0. -------------- 13/12 When adding polite imperatives, have to change the lincat of Imp: ImpForm instead of Number. But the required inflections exist already. -------------- 20/3/2007 Spent half a day adding prefix gluing to the morphology and also making conjunctive forms accessible as top-level tenses. These facilities were requested by Nadine Perera writing a paper with me.