diff --git a/src/russian/DictRus.gf b/src/russian/DictRus.gf index fd4271a7..37981bd9 100644 --- a/src/russian/DictRus.gf +++ b/src/russian/DictRus.gf @@ -4133,7 +4133,6 @@ lin hi_hi_Interj = mkInterj "хи-хи" ; hmmm_Interj = mkInterj "хм" ; shshsh_Interj = mkInterj "ш-ш-ш" ; - shshsh_Interj = mkInterj "ш-ш-ш" ; uh_Interj = mkInterj "ух" ; skoree_Adv = mkAdv skoryj_A.comp ; @@ -4141,4 +4140,16 @@ lin uvidennyi_A = mkA (uvidetq_V ** {pppss="увиден"}) Pass Past ; uvidevshyi_A = mkA (uvidetq_V ** {pppss="увиден"}) Act Past ; + + vedshij_A = mkA vesti_V Act Past ; + vedomyj_A = mkA vesti_V Pass Pres ; + vedyonnyj_A = mkA vesti_V Pass Past ; + + pevshij_A = mkA petq_V Act Past ; + pojuszij_A = mkA petq_V Act Pres ; + petyj_A = mkA petq_V Pass Past ; + + napravivshij_A = mkA napravitq_V Act Past ; + napravlennyj_A = mkA napravitq_V Pass Past ; + } \ No newline at end of file diff --git a/src/russian/DictRusAbs.gf b/src/russian/DictRusAbs.gf index 598ea7a3..fa01638b 100644 --- a/src/russian/DictRusAbs.gf +++ b/src/russian/DictRusAbs.gf @@ -4118,7 +4118,6 @@ fun hi_hi_Interj : Interj; hmmm_Interj : Interj; shshsh_Interj : Interj; - shshsh_Interj : Interj; uh_Interj : Interj; skoree_Adv : Adv ; @@ -4126,4 +4125,13 @@ fun uvidennyi_A : A ; uvidevshyi_A : A ; + veduszij_A : A ; + vedshij_A : A ; + vedomyj_A : A ; + vedyonnyj_A : A ; + pevshij_A : A ; + pojuszij_A : A ; + petyj_A : A ; + napravivshij_A : A ; + napravlennyj_A : A ; } \ No newline at end of file diff --git a/src/russian/InflectionRus.gf b/src/russian/InflectionRus.gf index 43d2c34d..cdef3947 100644 --- a/src/russian/InflectionRus.gf +++ b/src/russian/InflectionRus.gf @@ -539,6 +539,10 @@ oper msnom=<"","">;fsnom=<"","">;nsnom=<"","">;pnom=<"","">;msgen=<"","">;fsgen=<"","">;pgen=<"","">;msdat=<"","">;fsacc=<"","">;msins=<"","">;fsins=<"","">;pins=<"","">;msprep=<"","">;sm=<"","">;sf=<"","">;sn=<"","">;sp=<"","">;comp=<"","">; } ; + onlyParticipleForms : AdjForms -> AdjForms + -- To prevent shadowing homonymic forms while parsing or empty, here asterisk has been to incorect forms + = \af -> af ** {sm=af.sm+"*"; sf=af.sf+"*"; sn=af.sn+"*"; sp=af.sp+"*"; comp=af.comp+"*"} ; + immutableAdjectiveCases : Str -> AdjForms = \s -> { msnom=s;fsnom=s;nsnom=s;pnom=s;msgen=s;fsgen=s;pgen=s;msdat=s;fsacc=s;msins=s;fsins=s;pins=s;msprep=s;sm=s;sf=s;sn=s;sp=s;comp=[]; diff --git a/src/russian/ParadigmsRus.gf b/src/russian/ParadigmsRus.gf index b541e910..5ba9f3bb 100644 --- a/src/russian/ParadigmsRus.gf +++ b/src/russian/ParadigmsRus.gf @@ -306,7 +306,14 @@ oper = \v,voice,t -> let refl = case v.refl of {Reflexive => "ся" ; _ => ""} in case of { - => lin A (guessAdjectiveForms (v.pppss + "ный")) ; + => lin A ( -- TODO: very rough. Cover more cases + guessAdjectiveForms (v.pppss + "ный") ** { + sm=v.pppss ; + sf=v.pppss + "а"; + sn=v.pppss + "о"; + sp=v.pppss + "ы" + } + ) ; => lin A ( -- overgenerated let s : Str = case v.prpl1 of { f + #consonant + "ём" => (Predef.tk 2 v.prpl1) + "омый" ; @@ -314,13 +321,14 @@ oper } in makeAdjectiveFormsUseIndex s "" (Z.ZA 1 Z.No Z.A_ Z.NoC) PreferFull) ; => lin A ( - makeAdjectiveFormsUseIndex (((Predef.tk 1 v.prpl3) + "щий") + refl) "" (Z.ZA 4 Z.No Z.A_ Z.NoC) PreferFull) ; + Z.onlyParticipleForms ( + makeAdjectiveFormsUseIndex (((Predef.tk 1 v.prpl3) + "щий") + refl) "" (Z.ZA 4 Z.No Z.A_ Z.NoC) PreferFull)) ; => 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 (s + refl) "" (Z.ZA 4 Z.No Z.A_ Z.NoC) PreferFull) ; + Z.onlyParticipleForms (makeAdjectiveFormsUseIndex (s + refl) "" (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 } ; diff --git a/src/russian/test_result.treebank b/src/russian/test_result.treebank index 2d3b2de4..077bf0fe 100644 --- a/src/russian/test_result.treebank +++ b/src/russian/test_result.treebank @@ -1425,6 +1425,9 @@ AllRus: третье яблоко AllRusAbs: CAdvAP less_CAdv (PositA full_A) (MassNP (UseN2 brother_N2)) AllRus: менее полный , чем брат +AllRusAbs: CAdvAP less_CAdv (PositA vedomyj_A) (MassNP (UseN2 brother_N2)) +AllRus: менее ведомый , чем брат + AllRusAbs: TFullStop (PhrUtt NoPConj (UttAP (SentAP (CAdvAP less_CAdv (PositA full_A) (MassNP (UseN2 brother_N2))) (EmbedQS (UseQCl (TTAnt TPast ASimul) PPos (QuestCl (PredVP (UsePron (ProDrop (ProDrop (ProDrop (ProDrop he_Pron))))) (AdvVP (UseV sit_V) (PrepNP on_Prep (MassNP (UseN table_N)))))))))) NoVoc) TEmpty AllRus: менее полный , чем брат , он сидел на столе . AllRusAbs: TFullStop (PhrUtt NoPConj (UttAP (SentAP (CAdvAP less_CAdv (PositA full_A) (MassNP (UseN2 brother_N2))) (EmbedQS (UseQCl (TTAnt TPast ASimul) PPos (QuestCl (PredVP (UsePron (ProDrop (ProDrop (ProDrop (ProDrop iFem_Pron))))) (AdvVP (UseV sit_V) (PrepNP on_Prep (MassNP (UseN table_N)))))))))) NoVoc) TEmpty @@ -2502,6 +2505,9 @@ AllRus: пусть женщина рисует молодой себя AllRusAbs: ImpPl1 (ReflVP (SlashV2A paint_V2A (PositA young_A))) AllRus: давайте рисовать молодыми себя +AllRusAbs: ImpPl1 (ReflVP (SlashV2A paint_V2A (PositA napravivshij_A))) +AllRus: давайте рисовать направившими себя + AllRusAbs: UseCl (TTAnt TCond AAnter) PNeg (PredVP (MassNP (UseN heart_N)) (PassV2 squeeze_V2)) AllRus: сердце не сжима &+ ло &+ сь бы AllRusAbs: UseCl (TTAnt TCond AAnter) PPos (PredVP (MassNP (UseN heart_N)) (PassV2 squeeze_V2)) @@ -2679,6 +2685,9 @@ AllRus: пятая самая большая машина AllRusAbs: TFullStop (PhrUtt NoPConj (UttImpSg PPos (ImpVP (ComplSlash (SlashV2a do_V2) (MassNP (AdjCN (AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))) big_A)) (UseN tree_N)))))) NoVoc) TEmpty AllRus: делай пятое самое большое дерево . +AllRusAbs: MassNP (AdjCN (AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))) napravlennyj_A)) (UseN car_N)) +AllRus: пятая самая направленная машина + UttS (UseCl (TTAnt TCond AAnter) PNeg (PredVP (MassNP (UseN worm_N)) (ComplSlash (VPSlashPrep (UseV sit_V) in_Prep) (MassNP (PossNP (AdjCN (PositA red_A) (UseN apple_N)) (DetNP (DetQuant (PossPron he_Pron) NumSg))))))) UttS (UseCl (TTAnt TCond AAnter) PNeg (PredVP (MassNP (UseN worm_N)) (ComplSlash (VPSlashPrep (UseV sit_V) in_Prep) (MassNP (PossNP (AdjCN (CAdvAP less_CAdv (PositA full_A) (MassNP (UseN2 brother_N2))) (UseN apple_N)) (DetNP (DetQuant (PossPron he_Pron) NumSg))))))) @@ -2746,6 +2755,15 @@ AllRus: ты падаешь и поёшь на окне . AllRusAbs: TFullStop (PhrUtt NoPConj (UttCN (AdjCN (PositA red_A) (UseN apple_N))) NoVoc) TEmpty AllRus: красное яблоко . +AllRusAbs: UttCN (AdjCN (PositA pojuszij_A) (UseN heart_N)) +AllRus: поющее сердце + +AllRusAbs: UttCN (AdjCN (PositA pevshij_A) (UseN bird_N)) +AllRus: певшая птица + +AllRusAbs: DetNPMasc (ConjDet and_Conj (BaseDAP (AdjDAP (DetDAP (DetQuant IndefArt NumPl)) (PositA veduszij_A)) (AdjDAP (DetDAP (DetQuant IndefArt NumPl)) (PositA vedomyj_A)))) +AllRus: ведущий и ведомый + AllRusAbs: TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (RelNP (MassNP (UseN apple_N)) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a eat_V2))))) (UseComp (CompAP (PositA young_A)))))) NoVoc) TEmpty AllRus: яблоко , которое Иван кушает , является молодым . @@ -3764,6 +3782,9 @@ AllRus: третий самый голубой дом AllRusAbs: AdjCN (AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))) blue_A)) (UseN house_N) AllRus: третий самый голубой дом +AllRusAbs: AdjCN (PositA uvidennyi_A) (AdjCN (PositA big_A) (UseN house_N)) +AllRus: увиденный большой дом + AllRusAbs: UttAP (AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))) small_A)) AllRus: пятый самый маленький @@ -4247,6 +4268,12 @@ AllRus: Париж — столица страны . AllRusAbs: ImpVP (AdvVP (AdVVP (PositAdVAdj dull_A) (SelfAdvVP hungry_VP)) (weekdayNextAdv friday_Weekday)) AllRus: будь скучно голоден сам в следующую пятницу +AllRusAbs: 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)))) +AllRus: как они могут достигаться эффективнее + +AllRusAbs: 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)) +AllRus: какое яблоко падает + AllRusAbs: UseCl (TTAnt TCond ASimul) PNeg (PredVP (MassNP (UseN apple_N)) (UseComp (CompBareCN (PartNP (UseN cvet_N) (MassNP (UseN haki_N)))))) AllRus: яблоко не бы &+ ло бы цветом хаки AllRusAbs: UseCl (TTAnt TCond ASimul) PPos (PredVP (MassNP (UseN apple_N)) (UseComp (CompBareCN (PartNP (UseN cvet_N) (MassNP (UseN haki_N)))))) @@ -4920,6 +4947,9 @@ AllRus: например , вы нарисова &+ ли лицо в трёх с AllRusAbs: 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))))) AllRus: он приносит вам яблоки +AllRusAbs: 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)))) +AllRus: исследованиями бы &+ ло установлен &+ о + AllRusAbs: 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))))))) AllRus: ваше небо для нас как зеркало diff --git a/src/russian/test_rus_grammar.gfs b/src/russian/test_rus_grammar.gfs index b7a384bd..16534101 100644 --- a/src/russian/test_rus_grammar.gfs +++ b/src/russian/test_rus_grammar.gfs @@ -29,6 +29,7 @@ gt ImpPl1 (UseV fly_V) | l -treebank gt UttImpImm ? ( ImpVP (UseV fly_V )) |l -treebank gt AdjCN (AdjOrd (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))) )) (UseN apple_N) | l -treebank gt CAdvAP less_CAdv (PositA full_A) (MassNP (UseN2 brother_N2)) | l -treebank +gt CAdvAP less_CAdv (PositA vedomyj_A) (MassNP (UseN2 brother_N2)) | l -treebank gt TFullStop (PhrUtt NoPConj (UttAP (SentAP (CAdvAP less_CAdv (PositA full_A) (MassNP (UseN2 brother_N2))) (EmbedQS (UseQCl (TTAnt TPast ASimul) PPos (QuestCl (PredVP (UsePron ?) (AdvVP (UseV sit_V) (PrepNP on_Prep (MassNP (UseN table_N)))))))))) NoVoc) TEmpty | l -treebank gt EmbedQS (UseQCl (TTAnt ? ASimul) PNeg (ExistIP whatSg_IP)) | l -treebank gt timeunitRange (NumDigits (IDig ?)) (NumDigits (IDig ?)) second_Timeunit | l -treebank @@ -73,6 +74,7 @@ gt RelS (UseCl (TTAnt TPres ASimul) PNeg (GenericCl scared_VP)) (UseRCl (TTAnt T gt UseCl (TTAnt ? ASimul) ? (GenericCl (ReflVP (SlashV2A paint_V2A (PositA young_A)))) | l -treebank gt ImpP3 (MassNP (UseN woman_N)) (ReflVP (SlashV2A paint_V2A (PositA young_A))) | l -treebank gt ImpPl1 (ReflVP (SlashV2A paint_V2A (PositA young_A))) | l -treebank +gt ImpPl1 (ReflVP (SlashV2A paint_V2A (PositA napravivshij_A))) | l -treebank gt UseCl (TTAnt TCond AAnter) ? (PredVP (MassNP (UseN heart_N)) (PassV2 squeeze_V2) ) | l -treebank gt UseCl (TTAnt TCond AAnter) ? (PredVP (MassNP (UseN heart_N)) ( ComplVV can_VV (PassV2 squeeze_V2) ) ) | l -treebank @@ -106,6 +108,8 @@ gt MassNP (AdjCN (AdjOrd (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))) gt MassNP (AdjCN ( AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))) big_A) ) (UseN car_N)) |l -treebank gt TFullStop (PhrUtt NoPConj (UttImpSg PPos (ImpVP (ComplSlash (SlashV2a do_V2) (MassNP (AdjCN (AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))) big_A)) (UseN tree_N)))))) NoVoc) TEmpty |l -treebank +gt MassNP (AdjCN ( AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))) napravlennyj_A) ) (UseN car_N)) |l -treebank + gt UttS (UseCl (TTAnt TCond AAnter) PNeg (PredVP (MassNP (UseN worm_N)) (ComplSlash (VPSlashPrep (UseV sit_V) in_Prep) (MassNP (PossNP (AdjCN (PositA red_A) (UseN apple_N)) (DetNP (DetQuant (PossPron he_Pron) NumSg))))))) gt UttS (UseCl (TTAnt TCond AAnter) PNeg (PredVP (MassNP (UseN worm_N)) (ComplSlash (VPSlashPrep (UseV sit_V) in_Prep) (MassNP (PossNP (AdjCN (CAdvAP less_CAdv (PositA full_A) (MassNP (UseN2 brother_N2))) (UseN apple_N)) (DetNP (DetQuant (PossPron he_Pron) NumSg))))))) @@ -125,6 +129,9 @@ gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (Pre gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PNeg (PredVP (DetCN (DetQuant IndefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01))))))) (UseN bird_N)) (ComplSlash (SlashV2a love_V2) (UsePN john_PN))))) NoVoc) TEmpty | l -treebank gt TFullStop (PhrUtt NoPConj (UttS (ConjS and_Conj (BaseS (UseCl (TTAnt TPres AAnter) PPos (PredVP (UsePron youSg_Pron) (UseV fall_V))) (UseCl (TTAnt TPres AAnter) PPos (GenericCl (ComplSlash (VPSlashPrep (UseV sing_V) on_Prep) (MassNP (UseN window_N)))))))) NoVoc) TEmpty | l -treebank gt TFullStop (PhrUtt NoPConj (UttCN (AdjCN (PositA red_A) (UseN apple_N))) NoVoc) TEmpty | l -treebank +gt (UttCN (AdjCN (PositA pojuszij_A) (UseN heart_N))) | l -treebank +gt (UttCN (AdjCN (PositA pevshij_A) (UseN bird_N))) | l -treebank +gt DetNPMasc (ConjDet and_Conj (BaseDAP (AdjDAP (DetDAP (DetQuant IndefArt NumPl)) (PositA veduszij_A)) (AdjDAP (DetDAP (DetQuant IndefArt NumPl)) (PositA vedomyj_A)))) | l -treebank gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (RelNP (MassNP (UseN apple_N)) (UseRCl (TTAnt TPres AAnter) PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a eat_V2))))) (UseComp (CompAP (PositA young_A)))))) NoVoc) TEmpty | l -treebank gt TFullStop (PhrUtt NoPConj (UttNP (MassNP (AdvCN (RelCN (UseN apple_N) (UseRCl (TTAnt TPast AAnter) PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a eat_V2))))) here_Adv))) NoVoc) TEmpty | l -treebank gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPast AAnter) PPos (PredVP (RelNP (MassNP (UseN apple_N)) (UseRCl (TTAnt TPast AAnter) PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a eat_V2))))) (AdvVP (UseV fall_V) here_Adv)))) NoVoc) TEmpty |l -treebank @@ -160,6 +167,8 @@ gt AdjCN (PositA blue_A) (AdjCN (PositA big_A) (UseN house_N)) | l -treebank gt AdjCN (AdjOrd (OrdNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))))) (AdjCN (AdjOrd (OrdSuperl blue_A)) (UseN house_N)) | l -treebank gt AdjCN (AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n3))))) blue_A)) (UseN house_N)| l -treebank +gt AdjCN (PositA uvidennyi_A) (AdjCN (PositA big_A) (UseN house_N)) | l -treebank + gt UttAP (AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))) small_A)) | l -treebank gt RelNP (MassNP (UseN woman_N)) (UseRCl (TTAnt ? ASimul) ? (RelCl (PredVP ( MassNP (AdjCN (AdjOrd (OrdNumeralSuperl (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2))))) big_A)) (UseN tree_N)) ) (ComplSlashPartLast (SlashV2a love_V2) (UsePron she_Pron))))) | l -treebank