Prints to facilitate all form checks; Participles - first draft

This commit is contained in:
Roman Suzi
2020-09-06 09:31:44 +03:00
parent 6b874440db
commit e679629d70
7 changed files with 94 additions and 2 deletions

View File

@@ -1153,6 +1153,7 @@ lin
dostatq_V = mkV perfective transitive "достать" "достану" "достанет" "15a" ;
dostatqsja_V = mkV perfective intransitive "достаться" "достанусь" "достанется" "15a" ;
dostigatq_V = mkV imperfective transitive "достигать" "достигаю" "достигает" "1a" ;
dostigatqsja_V = mkV imperfective transitive "достигаться" "достигаюсь" "достигается" "1a" ;
dostignutq_V = mkV perfective transitive "достигнуть" "достигну" "достигнет" ;
dohoditq_V = mkV imperfective transitive "доходить" "дохожу" "доходит" "4c" ;
drozhatq_V = mkV imperfective transitive "дрожать" "дрожу" "дрожит" "5b" ;
@@ -1607,6 +1608,7 @@ lin
polagatq_V = mkV imperfective transitive "полагать" "полагаю" "полагает" "1a" ;
polagatq_VS = mkVS polagatq_V ;
polagatqsja_V = mkV imperfective intransitive "полагаться" "полагаюсь" "полагается" "1a" ;
polzti_V = mkV imperfective intransitive "ползти" "ползу" "ползёт" "7b/b" ;
poleztq_V = mkV perfective transitive "полезть" "полезу" "полезет" "7a" ;
poleztq_VV = mkVV poleztq_V ;
poletetq_V = mkV perfective transitive "полететь" "полечу" "полетит" "5b" ;
@@ -4137,4 +4139,6 @@ lin
skoree_Adv = mkAdv skoryj_A.comp ;
skoraja_N = mkN skoryj_A feminine inanimate ;
uvidennyi_A = mkA (uvidetq_V ** {pppss="увиден"}) Pass Past ;
uvidevshyi_A = mkA (uvidetq_V ** {pppss="увиден"}) Act Past ;
}

View File

@@ -1138,6 +1138,7 @@ fun
dostatq_V : V;
dostatqsja_V : V;
dostigatq_V : V;
dostigatqsja_V : V;
dostignutq_V : V;
dohoditq_V : V;
drozhatq_V : V;
@@ -1592,6 +1593,7 @@ fun
polagatq_V : V;
polagatq_VS : VS;
polagatqsja_V : V;
polzti_V : V;
poleztq_V : V;
poleztq_VV : VV;
poletetq_V : V;
@@ -4121,4 +4123,7 @@ fun
skoree_Adv : Adv ;
skoraja_N : N ;
uvidennyi_A : A ;
uvidevshyi_A : A ;
}

View File

@@ -22,6 +22,13 @@ lin
wherefrom_IAdv = ss "откуда" ;
whereto_IAdv = ss "куда" ;
-- : IQuant ;
what_kind_of_IQuant = (adjFormsAdjective (makeAdjectiveForms "какой" "" "3b" PreferFull)) ** {
preferShort=PreferFull ;
g=Neut ;
c=Nom
} ;
-- near deixis
presently_Adv = P.mkAdv "теперь" ;
therefore_Adv = P.mkAdv "поэтому" ;

View File

@@ -25,6 +25,8 @@ fun
wherefrom_IAdv : IAdv ;
whereto_IAdv : IAdv ;
what_kind_of_IQuant : IQuant ;
presently_Adv : Adv ;
therefore_Adv : Adv ;
fromhere_Adv : Adv ;

View File

@@ -86,7 +86,7 @@ oper
non_reflexive : Reflexivity
= NonReflexive ;
-- Voice (not yet used)
-- Voice
active : Voice
= Act ;
passive : Voice
@@ -131,7 +131,8 @@ oper
mkA : Str -> ZAIndex -> A ;
mkA : Str -> Str -> ZAIndex -> A ;
mkA : Str -> Str -> ZAIndex -> ShortFormPreference -> A ;
mkA : A -> Str -> A -> A -- Compound adjective like социально-экономический
mkA : A -> Str -> A -> A ; -- Compound adjective like социально-экономический
mkA : V -> Voice -> Tense -> A ; -- make participles
} ;
ShortenA : A -> A ;
@@ -301,6 +302,25 @@ oper
= \pf -> pronToAdj pf ;
mkA : A -> Str -> A -> A
= \a1,link,a2 -> lin A (mkCompoundA a1 link a2) ;
mkA : V -> Voice -> Tense -> A
= \v,voice,t -> case <voice,t> of {
<Pass,Past|Cond> => lin A (guessAdjectiveForms (v.pppss + "ный")) ;
<Pass,Pres> => lin A ( -- overgenerated
let s : Str = case v.prpl1 of {
f + #consonant + "ём" => (Predef.tk 2 v.prpl1) + "омый" ;
_ => v.prpl1 + "ый"
} in
makeAdjectiveFormsUseIndex s "" (Z.ZA 1 Z.No Z.A_ Z.NoC) PreferFull) ;
<Act,Pres> => lin A (
makeAdjectiveFormsUseIndex (Z.addRefl ((Predef.tk 1 v.prpl3) + "щий")) "" (Z.ZA 4 Z.No Z.A_ Z.NoC) PreferFull) ;
<Act,Past|Cond> => lin A (
let s : Str = case v.inf of {
_ + ("сти"|"зти") => (Predef.tk 1 v.prsg1) + "ший" ; -- TODO: check if not all of these cases are ok
_ => (Predef.tk 1 v.psgm) + "вший"
} in
makeAdjectiveFormsUseIndex (Z.addRefl s) "" (Z.ZA 4 Z.No Z.A_ Z.NoC) PreferFull) ;
_ => Predef.error "Error: participle for this voice and tense does not exist"
} -- TODO: suppress comp and short for all but Pass Pres; take sya into account
} ;
ShortenA : A -> A

View File

@@ -1563,4 +1563,54 @@ oper
applyIPronPrep : ComplementCase -> IPronounForms -> Str
= \prep,ip -> prep.s ++ selectIPronCase ip prep.c ;
printNounInflections : NounForms -> Str = \nf ->
nf.snom ++ "-"
++ nf.snom ++ "," ++ nf.pnom ++ ","
++ nf.sgen ++ "," ++ nf.pgen ++ ","
++ nf.sdat ++ "," ++ nf.pdat ++ ","
++ nf.sacc ++ "," ++ nf.pacc ++ ","
++ nf.sins ++ "," ++ nf.pins ++ ","
++ nf.sprep ++ "," ++ nf.pprep ++ ","
++ nf.sloc ++ "," ++ nf.sptv ;
printAdjectiveInflections : AdjForms -> Str = \af ->
let mf = makeNFFromAF af Masc Inanimate in
let ff = makeNFFromAF af Fem Inanimate in
let nf = makeNFFromAF af Neut Inanimate in
let mfa = makeNFFromAF af Masc Animate in
let ffa = makeNFFromAF af Fem Animate in
let nfa = makeNFFromAF af Neut Animate in
af.msnom ++ "-"
++ mf.snom ++ "," ++ ff.snom ++ "," ++ nf.snom ++ "," ++ mf.pnom ++ ","
++ mf.sgen ++ "," ++ ff.sgen ++ "," ++ nf.sgen ++ "," ++ mf.pgen ++ ","
++ mf.sdat ++ "," ++ ff.sdat ++ "," ++ nf.sdat ++ "," ++ mf.pdat ++ ","
++ mf.sacc ++ "," ++ ff.sacc ++ "," ++ nf.sacc ++ "," ++ mf.pacc ++ ","
++ mfa.sacc ++ "," ++ ffa.sacc ++ "," ++ nfa.sacc ++ "," ++ mfa.pacc ++ ","
++ mf.sins ++ "," ++ ff.sins ++ "," ++ nf.sins ++ "," ++ mf.pins ++ ","
++ mf.sprep ++ "," ++ ff.sprep ++ "," ++ nf.sprep ++ "," ++ mf.pprep ++ ","
++ af.sm ++ "," ++ af.sf ++ "," ++ af.sn ++ "," ++ af.sp ++ ","
++ af.comp
;
printVerbInflections : VerbForms -> Str = \v ->
let fut : Agr=>Str = \\a => verbFutAgree v a in
let pres : Agr=>Str = \\a => verbPresAgree v a in
let past : Agr=>Str = \\a => verbPastAgree v a "" in
let imp : Agr=>Str = \\a => ((verbImperativeAgree v a).p1 ++ (verbImperativeAgree v a).p2) in
let ppp : GenNum=>Str = \\gn => shortPastPassPart v gn in
let inf = verbInf v in
inf ++ "-"
++ inf ++ ","
++ pres ! Ag (GSg Masc) P1 ++ "," ++ pres ! Ag GPl P1 ++ ","
++ pres ! Ag (GSg Masc) P2 ++ "," ++ pres ! Ag GPl P2 ++ ","
++ pres ! Ag (GSg Masc) P3 ++ "," ++ pres ! Ag GPl P3 ++ ","
++ v.prtr ++ verbRefl v ++ ","
++ past ! Ag (GSg Masc) P1 ++ "," ++ past ! Ag (GSg Fem) P1 ++ "," ++ past ! Ag (GSg Neut) P1 ++ "," ++ past ! Ag GPl P1 ++ ","
++ imp ! Ag (GSg Masc) P2 ++ "," ++ imp ! Ag GPl P2 ++ ","
++ v.ptr ++ verbRefl v
++ case v.tran of {
Transitive => "," ++ ppp ! (GSg Masc) ++ "," ++ ppp ! (GSg Fem) ++ "," ++ ppp ! (GSg Neut) ++ "," ++ ppp ! GPl ;
_ => ""
} ;
}

View File

@@ -241,6 +241,8 @@ gt UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (CountNP (DetQuant DefArt oba_N
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) ? (PredVP (UsePN paris_PN) (UseComp (CompNomNP (MassNP (PartNP (UseN stolica_N) (MassNP (UseN country_N))))))))) NoVoc) TEmpty | l -treebank
gt ImpVP (AdvVP (AdVVP (PositAdVAdj dull_A) (SelfAdvVP hungry_VP)) (weekdayNextAdv friday_Weekday)) |l -treebank
gt UseCl (TTAnt TPres ASimul) PPos (PredSCVP (EmbedQS (UseQCl (TTAnt TPres ASimul) PPos (QuestIAdv how_IAdv (PredVP (UsePron theyFem_Pron) (ComplVV can_VV (UseV dostigatqsja_V)))))) (UseComp (CompAP (UseComparA ehffektivnyj_A)))) | l -treebank
gt UseCl (TTAnt TPres ASimul) PPos (PredSCVP (EmbedQS (UseQCl (TTAnt TPres AAnter) PPos (QuestIComp (CompIQuant what_kind_of_IQuant) (MassNP (UseN apple_N))))) (UseV fall_V)) | l -treebank
gt UseCl (TTAnt ? ASimul) ? (PredVP (MassNP (UseN apple_N)) (UseComp (CompBareCN (PartNP (UseN cvet_N) (MassNP (UseN haki_N)))))) | l -treebank
gt UseCl (TTAnt TFut ASimul) PPos (PredVP (MassNP (UseN apple_N)) (AdvVP UseCopula (PrepCN obj_neg_Prep (AdjCN (PositA green_A) (UseN cvet_N))))) | l -treebank
@@ -333,6 +335,8 @@ gt UseCl (TTAnt TPast ASimul) PPos (PredVP (AdvNP (DetCN (DetQuant DefArt NumPl)
gt UttS (ExtAdvS naprimer_Adv (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron youPlFem_Pron) (AdvVP (UseV narisovatq_V) (PrepCN nom_Prep (AdvCN (UseN person_N) (PrepNP in_Prep (DetCN (DetQuant DefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3)))))))) (UseN sluchaj_N))))))))) | l -treebank
gt UttS (AdvS (PrepNP nom_Prep (UsePron he_Pron)) (UseCl (TTAnt TPres AAnter) PPos (ImpersCl (ComplSlashPartLast (VPSlashPrep (ComplSlashPartLast (VPSlashPrep (UseV prinositq_V) nom_Prep) (DetCN (DetQuant IndefArt NumPl) (UseN apple_N))) to_dat_Prep) (UsePron youPol_Pron))))) | l -treebank
gt AdvS (PrepNP ins_Prep (DetCN (DetQuant DefArt NumPl) (UseN issledovanie_N))) (UseCl (TTAnt TPast AAnter) PPos (ImpersCl (PassVPSlash (VPSlashPrep (UseV ustanovitq_V) to_dat_Prep)))) | l -treebank
gt UttAccNP (DetCN (DetQuant (PossPron youPlFem_Pron) NumSg) (SentCN (AdvCN (UseN nebo_N) (PrepNP for_Prep (UsePron we_Pron))) (EmbedQS (UseQCl (TTAnt TPres ASimul) PPos (QuestIComp (CompIAdv how_IAdv) (MassNP (UseN zerkalo_N))))))) |l -treebank
gt UseCl (TTAnt TPres ASimul) PPos (PredVP (MassNP (AdjCN (PositA rovnyj_A) (AdjCN (PositA (CompoundA white_A blue_A)) (UseN svet_N)))) (AdvVP (UseV pronizyvatq_V) (PrepNP obj_neg_Prep (AdvNP (UsePron she_Pron) iznutri_Adv)))) | l -treebank