forked from GitHub/gf-rgl
Improvements to Number; started doc
This commit is contained in:
@@ -14,11 +14,11 @@ lin
|
||||
AdAP ada ap = ap ** {s=\\gn,a,c => ada.s ++ ap.s ! gn ! a ! c } ;
|
||||
-- : CAdv -> AP -> NP -> AP ; -- as cool as John
|
||||
CAdvAP cadv ap np = ap ** {
|
||||
s = \\gn,a,c => cadv.s ++ ap.s ! gn ! a ! c ++ comma ++ cadv.p ++ np.s ! Nom -- TODO: embedInCommas ?
|
||||
s = \\gn,a,c => cadv.s ++ ap.s ! gn ! a ! c ++ embedInCommas (cadv.p ++ np.s ! Nom)
|
||||
} ;
|
||||
|
||||
-- : AP -> SC -> AP ; -- good that she is here
|
||||
SentAP ap sc = ap ** {s = \\gn,a,c => ap.s ! gn ! a ! c ++ [", "] ++ sc.s ; isPost = True} ;
|
||||
SentAP ap sc = ap ** {s = \\gn,a,c => ap.s ! gn ! a ! c ++ sc.s ; isPost = True} ;
|
||||
|
||||
-- : A -> NP -> AP ; -- warmer than I - теплее меня
|
||||
ComparA a np = {
|
||||
|
||||
@@ -26,6 +26,7 @@ concrete ConjunctionRus of Conjunction =
|
||||
} ;
|
||||
[CN] = {s1,s2 : Number => Case => Str ;
|
||||
g : Gender ;
|
||||
mayben : MaybeNumber ;
|
||||
anim : Animacy
|
||||
} ;
|
||||
[S] = {s1,s2 : Mood => Str} ;
|
||||
@@ -125,12 +126,14 @@ concrete ConjunctionRus of Conjunction =
|
||||
s1 = x.s ;
|
||||
s2 = y.s ;
|
||||
g = y.g ;
|
||||
mayben = JustPl ;
|
||||
anim = conjAnim x.anim y.anim
|
||||
} ;
|
||||
|
||||
-- : CN -> ListCN -> ListCN ; -- man, woman, child
|
||||
ConsCN x xs = consrTable2 Number Case comma x xs ** {
|
||||
g = conjGender x.g xs.g ;
|
||||
mayben = JustPl ;
|
||||
anim = conjAnim x.anim xs.anim
|
||||
} ;
|
||||
|
||||
@@ -138,6 +141,7 @@ concrete ConjunctionRus of Conjunction =
|
||||
ConjCN conj xs = {
|
||||
s = \\n,cas => conj.s1 ++ xs.s1 ! n ! cas ++ conj.s2 ++ xs.s2 ! n ! cas ;
|
||||
g = xs.g ;
|
||||
mayben = JustPl ;
|
||||
anim = xs.anim
|
||||
} ;
|
||||
|
||||
|
||||
@@ -1,49 +1,6 @@
|
||||
concrete DocumentationRus of Documentation = CatRus ** open ResRus, HTML in {
|
||||
flags coding=utf8 ;
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2,s3 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
-- documentation of Russian in Russian: the default introduced in LangRus
|
||||
|
||||
lin
|
||||
InflectionN = \n -> {
|
||||
t = "сущ" ;
|
||||
s1= heading1 (
|
||||
"Существительное" ++
|
||||
case n.g of {
|
||||
Masc => "(м.р.)" ;
|
||||
Fem => "(ж.р.)" ;
|
||||
Neut => "(ср.р.)"
|
||||
} ++
|
||||
|
||||
case n.anim of {
|
||||
Animate => "Одушевлённое" ;
|
||||
Inanimate => "Неодушевлённое"
|
||||
}
|
||||
) ;
|
||||
s2= frameTable (
|
||||
tr (th "Падеж" ++ th "ед. ч." ++ th "мн. ч.") ++
|
||||
tr (th "Им." ++ td (n.snom) ++ td (n.pnom)) ++
|
||||
tr (th "Р." ++ td (n.sgen) ++ td (n.pgen)) ++
|
||||
tr (th "Д." ++ td (n.sdat) ++ td (n.pdat)) ++
|
||||
tr (th "В." ++ td (n.sacc) ++ td (n.pacc)) ++
|
||||
tr (th "Тв." ++ td (n.sins) ++ td (n.pins)) ++
|
||||
tr (th "Пр." ++ td (n.sprep) ++ td (n.pprep)) ++
|
||||
tr (th "Мест.(П2)" ++ td (n.sloc) ++ td "") ++
|
||||
tr (th "Разд.(Р2)" ++ td (n.sptv) ++ td "") ++
|
||||
tr (th "Зват." ++ td (n.svoc) ++ td "")
|
||||
) ;
|
||||
s3= ""
|
||||
} ;
|
||||
|
||||
|
||||
lin
|
||||
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
|
||||
MkTag i = {s = i.t} ;
|
||||
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Определение:</b>" ++ t.s ++ d.s ++ "</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Определение:</b>" ++ t.s ++ d.s ++ "</p><p><b>Пример:</b>" ++ e.s ++ "</p>"};
|
||||
}
|
||||
concrete DocumentationRus of Documentation = CatRus **
|
||||
DocumentationRusFunctor with (Terminology = TerminologyRus) ;
|
||||
|
||||
6
src/russian/DocumentationRusEng.gf
Normal file
6
src/russian/DocumentationRusEng.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
-- documentation of Russion in English
|
||||
|
||||
concrete DocumentationRusEng of Documentation = CatRus **
|
||||
DocumentationRusFunctor with (Terminology = TerminologyEng) ;
|
||||
304
src/russian/DocumentationRusFunctor.gf
Normal file
304
src/russian/DocumentationRusFunctor.gf
Normal file
@@ -0,0 +1,304 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
incomplete concrete DocumentationRusFunctor of Documentation = CatRus ** open
|
||||
Terminology, -- the interface
|
||||
ResRus,
|
||||
ParadigmsRus,
|
||||
(G = GrammarRus),
|
||||
(S = SyntaxRus),
|
||||
(L = LexiconRus),
|
||||
Prelude,
|
||||
HTML
|
||||
in {
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
{-
|
||||
-} --# notpresent
|
||||
|
||||
oper
|
||||
heading : N -> Str = \n -> (nounHeading n).s ;
|
||||
|
||||
lin
|
||||
InflectionN, InflectionN2, InflectionN3 = \noun -> {
|
||||
t = "s" ;
|
||||
s1 = heading1 (heading noun_Category) ;
|
||||
s2 = inflNoun (\nf -> (snoun2nounSep noun).s ! nf)
|
||||
} ;
|
||||
|
||||
InflectionA, InflectionA2 = \adj -> {
|
||||
t = "a" ;
|
||||
s1 = heading1 (heading adjective_Category) ;
|
||||
s2 = inflNoun (\nf -> (snoun2nounSep {s = \\f => adj.s ! Posit ! sAN f ; h = adj.h}).s ! nf) ++
|
||||
heading2 (heading comparative_Parameter) ++
|
||||
inflNoun (\nf -> (snoun2nounSep {s = \\f => adj.s ! Compar ! sAN f ; h = adj.h}).s ! nf) ++
|
||||
heading2 (heading superlative_Parameter) ++
|
||||
inflNoun (\nf -> (snoun2nounSep {s = \\f => adj.s ! Superl ! sAN f ; h = adj.h}).s ! nf)
|
||||
} ;
|
||||
|
||||
InflectionAdv adv = {
|
||||
t = "adv" ;
|
||||
s1 = heading1 (heading adverb_Category) ;
|
||||
s2 = paragraph adv.s
|
||||
} ;
|
||||
|
||||
InflectionPrep p = {
|
||||
t = "prep" ;
|
||||
s1 = heading1 (heading preposition_Category) ;
|
||||
s2 = paragraph ((S.mkAdv (lin Prep p) S.it_NP).s ++ ";" ++ (S.mkAdv (lin Prep p) S.we_NP).s)
|
||||
} ;
|
||||
|
||||
InflectionV v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v)) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2 v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v S.something_NP)) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV3 v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v S.something_NP S.something_NP)) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2V v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (S.mkVP (L.sleep_V)))) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2S v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin S (ss "...")))) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2Q v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v S.we_NP (lin QS (ss "...")))) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2A v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v S.we_NP L.beautiful_A)) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVV v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v (S.mkVP (L.sleep_V)))) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVS v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v (lin S (ss "...")))) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVQ v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v (lin QS (ss "...")))) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVA v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 (heading verb_Category) ++
|
||||
paragraph (verbExample (S.mkCl S.she_NP v L.beautiful_A)) ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
oper
|
||||
verbExample : CatRus.Cl -> Str = \cl -> (S.mkUtt cl).s ;
|
||||
{-
|
||||
-} --# notpresent
|
||||
inflVerb : CatRus.V -> Str = \verb0 ->
|
||||
let
|
||||
verb = sverb2verbSep verb0 ;
|
||||
vfin : ResRus.VForm -> Str = \f ->
|
||||
verb.s ! f ;
|
||||
|
||||
nounNounHeading : Parameter -> Parameter -> Str = \n1,n2 ->
|
||||
(S.mkUtt (G.PossNP (S.mkCN n1) (S.mkNP (snoun2nounSep n2)))).s ;
|
||||
in
|
||||
heading3 (nounNounHeading present_Parameter indicative_Parameter) ++
|
||||
frameTable (
|
||||
tr (th "" ++
|
||||
th (heading singular_Parameter) ++
|
||||
th (heading plural_Parameter)
|
||||
++ th (heading passive_Parameter) --# notpresent
|
||||
) ++
|
||||
tr (th "1.p" ++ td (vfin (Presn Sg P1)) ++ td (vfin (Presn Pl P1))
|
||||
++ intagAttr "td" "rowspan=3" (vfin (PassPresn True)) --# notpresent
|
||||
) ++
|
||||
tr (th "2.p" ++ td (vfin (Presn Sg P2)) ++ td (vfin (Presn Pl P2))) ++
|
||||
tr (th "3.p" ++ td (vfin (Presn Sg P3)) ++ td (vfin (Presn Pl P3))) ++
|
||||
tr (th (heading negative_Parameter) ++
|
||||
intagAttr "td" "colspan=2 align=center" (vfin (Imper Sg)) ++ td (vfin (PassPresn False)))
|
||||
) ++
|
||||
heading3 (nounNounHeading past_Parameter indicative_Parameter) ++
|
||||
frameTable (
|
||||
tr (th "" ++
|
||||
th (heading singular_Parameter) ++
|
||||
th (heading plural_Parameter)
|
||||
++ th (heading passive_Parameter) --# notpresent
|
||||
) ++
|
||||
tr (th "1.p" ++ td (vfin (Impf Sg P1)) ++ td (vfin (Impf Pl P1))
|
||||
++ intagAttr "td" "rowspan=3" (vfin (PassImpf True))) ++
|
||||
tr (th "2.p" ++ td (vfin (Impf Sg P2)) ++ td (vfin (Impf Pl P2))) ++
|
||||
tr (th "3.p" ++ td (vfin (Impf Sg P3)) ++ td (vfin (Impf Pl P3))) ++
|
||||
tr (th (heading negative_Parameter) ++
|
||||
td (vfin (PastPartAct (AN (NCase Sg Nom)))) ++
|
||||
td (vfin (PastPartAct (AN (NCase Pl Nom)))) ++
|
||||
td (vfin (PassImpf False)))
|
||||
) ++
|
||||
heading3 (nounNounHeading present_Parameter conditional_Parameter) ++
|
||||
frameTable (
|
||||
tr (th "" ++
|
||||
th (heading singular_Parameter) ++
|
||||
th (heading plural_Parameter)
|
||||
++ th (heading passive_Parameter) --# notpresent
|
||||
) ++
|
||||
tr (th "1.p" ++ td (vfin (Condit Sg P1)) ++ td (vfin (Condit Pl P1))
|
||||
++ intagAttr "td" "rowspan=3" (vfin (PassCondit True)) --# notpresent
|
||||
) ++
|
||||
tr (th "2.p" ++ td (vfin (Condit Sg P2)) ++ td (vfin (Condit Pl P2))) ++
|
||||
tr (th "3.p" ++ td (vfin (Condit Sg P3)) ++ td (vfin (Condit Pl P3))) ++
|
||||
tr (th (heading negative_Parameter) ++
|
||||
intagAttr "td" "colspan=2 align=center" (vfin (Condit Sg P3)) ++ td (vfin (PassCondit False)))
|
||||
) ++
|
||||
heading3 (nounNounHeading present_Parameter potential_Parameter) ++
|
||||
frameTable (
|
||||
tr (th "" ++
|
||||
th (heading singular_Parameter) ++
|
||||
th (heading plural_Parameter)
|
||||
++ th (heading passive_Parameter) --# notpresent
|
||||
) ++
|
||||
tr (th "1.p" ++ td (vfin (Potent Sg P1)) ++ td (vfin (Potent Pl P1))
|
||||
++ intagAttr "td" "rowspan=3" (vfin (PassPotent True)) --# notpresent
|
||||
) ++
|
||||
tr (th "2.p" ++ td (vfin (Potent Sg P2)) ++ td (vfin (Potent Pl P2))) ++
|
||||
tr (th "3.p" ++ td (vfin (Potent Sg P3)) ++ td (vfin (Potent Pl P3))) ++
|
||||
tr (th (heading negative_Parameter) ++
|
||||
intagAttr "td" "colspan=2 align=center" (vfin PotentNeg) ++ td (vfin (PassPotent False)))
|
||||
) ++
|
||||
heading3 (nounNounHeading present_Parameter imperative_Parameter) ++
|
||||
frameTable (
|
||||
tr (th "" ++
|
||||
th (heading singular_Parameter) ++
|
||||
th (heading plural_Parameter)
|
||||
++ th (heading passive_Parameter) --# notpresent
|
||||
) ++
|
||||
tr (th "1.p" ++ td "" ++ td (vfin ImperP1Pl)
|
||||
++ intagAttr "td" "rowspan=3" (vfin (PassImper True))) ++
|
||||
tr (th "2.p" ++ td (vfin (Imper Sg)) ++ td (vfin (Imper Pl))) ++
|
||||
tr (th "3.p" ++ td (vfin (ImperP3 Sg)) ++ td (vfin (ImperP3 Pl))) ++
|
||||
tr (th (heading negative_Parameter) ++
|
||||
td (vfin (Imper Sg)) ++
|
||||
td (vfin ImpNegPl) ++
|
||||
td (vfin (PassImper False)))
|
||||
) ++
|
||||
heading2 (nounPluralHeading nominal_form_ParameterType).s ++
|
||||
heading3 (heading infinitive_Parameter) ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=2" "1" ++
|
||||
th (heading short_Parameter) ++ ---
|
||||
td (vfin (Inf Inf1))) ++
|
||||
tr (th (heading long_Parameter) ++ ---
|
||||
td (vfin (Inf Inf1Long) ++ BIND ++ "(ni)")) ++
|
||||
tr (intagAttr "th" "rowspan=2" ("2." ++ heading active_Parameter) ++
|
||||
th (heading inessive_Parameter) ++
|
||||
td (vfin (Inf Inf2Iness))) ++
|
||||
tr (th (heading instructive_Parameter) ++
|
||||
td (vfin (Inf Inf2Instr))) ++
|
||||
tr (th ("2." ++ heading passive_Parameter) ++
|
||||
th (heading inessive_Parameter) ++
|
||||
td (vfin (Inf Inf2InessPass))) ++
|
||||
|
||||
tr (intagAttr "th" "rowspan=7" "3." ++
|
||||
th (heading inessive_Parameter) ++ td (vfin (Inf Inf3Iness))) ++
|
||||
tr (th (heading elative_Parameter) ++ td (vfin (Inf Inf3Elat))) ++
|
||||
tr (th (heading illative_Parameter) ++ td (vfin (Inf Inf3Illat))) ++
|
||||
tr (th (heading adessive_Parameter) ++ td (vfin (Inf Inf3Adess))) ++
|
||||
tr (th (heading abessive_Parameter) ++ td (vfin (Inf Inf3Abess))) ++
|
||||
tr (th (heading instructive_Parameter) ++ td (vfin (Inf Inf3Instr))) ++
|
||||
tr (th (heading instructive_Parameter ++ "pass.") ++ td (vfin (Inf Inf3InstrPass))) ++
|
||||
|
||||
tr (intagAttr "th" "rowspan=2" "4." ++
|
||||
th (heading nominative_Parameter) ++ td (vfin (Inf Inf4Nom))) ++
|
||||
tr (th (heading partitive_Parameter) ++ td (vfin (Inf Inf4Part))) ++
|
||||
|
||||
tr (intagAttr "th" "colspan=2" "5." ++ td (vfin (Inf Inf5) ++ BIND ++ "(ni)"))
|
||||
) ++
|
||||
heading3 (heading participle_Parameter) ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=2" (heading present_Parameter) ++
|
||||
th (heading active_Parameter) ++
|
||||
td (vfin (PresPartAct (AN (NCase Sg Nom))))) ++
|
||||
tr (th (heading passive_Parameter) ++
|
||||
td (vfin (PresPartPass (AN (NCase Sg Nom))))) ++
|
||||
|
||||
tr (intagAttr "th" "rowspan=2" (heading perfect_Parameter) ++
|
||||
th (heading active_Parameter) ++
|
||||
td (vfin (PastPartAct (AN (NCase Sg Nom))))) ++
|
||||
|
||||
tr (th (heading passive_Parameter) ++
|
||||
td (vfin (PastPartPass (AN (NCase Sg Nom))))) ++
|
||||
|
||||
tr (intagAttr "th" "colspan=2" (heading agent_Parameter) ++
|
||||
td (vfin (AgentPart (AN (NCase Sg Nom)))))
|
||||
) ;
|
||||
|
||||
inflNoun : (NForm -> Str) -> Str = \nouns ->
|
||||
frameTable (
|
||||
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter) ) ++
|
||||
tr (th (heading nominative_Parameter) ++ td (nouns (NCase Sg Nom)) ++ td (nouns (NCase Pl Nom))) ++
|
||||
tr (th (heading genitive_Parameter) ++ td (nouns (NCase Sg Gen)) ++ td (nouns (NCase Pl Gen))) ++
|
||||
tr (th (heading partitive_Parameter) ++ td (nouns (NCase Sg Part)) ++ td (nouns (NCase Pl Part))) ++
|
||||
tr (th (heading translative_Parameter) ++ td (nouns (NCase Sg Transl)) ++ td (nouns (NCase Pl Transl))) ++
|
||||
tr (th (heading essive_Parameter) ++ td (nouns (NCase Sg Ess)) ++ td (nouns (NCase Pl Ess))) ++
|
||||
tr (th (heading inessive_Parameter) ++ td (nouns (NCase Sg Iness)) ++ td (nouns (NCase Pl Iness))) ++
|
||||
tr (th (heading elative_Parameter) ++ td (nouns (NCase Sg Elat)) ++ td (nouns (NCase Pl Elat))) ++
|
||||
tr (th (heading illative_Parameter) ++ td (nouns (NCase Sg Illat)) ++ td (nouns (NCase Pl Illat))) ++
|
||||
tr (th (heading adessive_Parameter) ++ td (nouns (NCase Sg Adess)) ++ td (nouns (NCase Pl Adess))) ++
|
||||
tr (th (heading ablative_Parameter) ++ td (nouns (NCase Sg Ablat)) ++ td (nouns (NCase Pl Ablat))) ++
|
||||
tr (th (heading allative_Parameter) ++ td (nouns (NCase Sg Allat)) ++ td (nouns (NCase Pl Allat))) ++
|
||||
tr (th (heading abessive_Parameter) ++ td (nouns (NCase Sg Abess)) ++ td (nouns (NCase Pl Abess))) ++
|
||||
tr (th (heading comitative_Parameter) ++ td "" ++ td (nouns (NComit))) ++
|
||||
tr (th (heading instructive_Parameter) ++ td "" ++ td (nouns (NInstruct)))
|
||||
) ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Определение:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Определение:</b>"++t.s++d.s++"</p><p><b>Пример:</b>"++e.s++"</p>"};
|
||||
|
||||
lin
|
||||
MkDocument d i e = ss (i.s1 ++ d.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
|
||||
MkTag i = ss (i.t) ;
|
||||
|
||||
{- --# notpresent
|
||||
-}
|
||||
|
||||
}
|
||||
@@ -3,8 +3,8 @@
|
||||
concrete LangRus of Lang =
|
||||
GrammarRus,
|
||||
LexiconRus,
|
||||
ConstructionRus,
|
||||
DocumentationRus
|
||||
ConstructionRus --,
|
||||
--DocumentationRus
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;
|
||||
|
||||
@@ -13,13 +13,13 @@ lin
|
||||
apartment_N = mkN "квартира" ;
|
||||
apple_N = mkN "яблоко" neuter inanimate "3a(1)" ;
|
||||
art_N = mkN "искусство" ;
|
||||
ashes_N = mkN "пепел" masculine inanimate "1*a" ;
|
||||
ashes_N = mkN "пепел" masculine inanimate "1*a" only_singular;
|
||||
ask_V2Q = dirV2 (mkV perfective "спросить" "спрошу" "спросит") ;
|
||||
baby_N = mkN "малыш" masculine animate "4b" ;
|
||||
back_N = mkN "спина" ;
|
||||
bad_A = mkA "плохой" "хуже" "3b/c'";
|
||||
bank_N = mkN "банк" ;
|
||||
bark_N = mkN "кора";
|
||||
bark_N = (mkNplus (mkN "кора")) ** {mayben=only_singular} ;
|
||||
beautiful_A = mkA "красивый" ;
|
||||
become_VA = mkV imperfective intransitive "становиться" "становлюсь" "становится";
|
||||
beer_N = mkN "пиво" neuter inanimate ;
|
||||
@@ -101,7 +101,7 @@ lin
|
||||
fat_N = mkN "жир" ;
|
||||
father_N2 = mkN2 (mkN "отец" masculine inanimate "5*b");
|
||||
fear_V2 = mkV2 (mkV imperfective intransitive "бояться" "боюсь" "боится") Gen ;
|
||||
fear_VS = mkV imperfective "бояться" "боюсь" "боится"; --intran
|
||||
fear_VS = mkVS (mkV imperfective "бояться" "боюсь" "боится" ) ; --intran
|
||||
feather_N = (mkNplus (mkN "перо" neuter inanimate "1d")) ** {pnom="перья";pgen="перьев";pdat="перьям";pacc="перья";pins="перьями";pprep="перьях"};
|
||||
fight_V2 = mkV2 (mkV imperfective intransitive "бороться" "борюсь" "борется") with_Prep ;
|
||||
find_V2 = mkV2 (mkV imperfective "находить" "нахожу" "находит");
|
||||
@@ -128,7 +128,7 @@ lin
|
||||
give_V3 = tvDirDir (mkV imperfective "давать" "даю" "даёт") ;
|
||||
glove_N = mkN "перчатка" feminine inanimate "3*a";
|
||||
go_V = mkV imperfective intransitive "ходить" "хожу" "ходит";
|
||||
gold_N = mkN "золото" ;
|
||||
gold_N = (mkNplus (mkN "золото")) ** {mayben=only_singular} ;
|
||||
good_A = mkA "хороший" "лучше" ;
|
||||
grammar_N = mkN "грамматика";
|
||||
grass_N = mkN "трава";
|
||||
@@ -144,27 +144,27 @@ lin
|
||||
heart_N = mkN "сердце" neuter inanimate "5*c" ;
|
||||
heavy_A = (mkAltShort (mkA "тяжёлый" "тяжелее") (mkA "тяжелый")) ** {sm="тяжёл"} ; -- TODO: same
|
||||
hill_N = mkN "холм" ;
|
||||
hit_V2 = mkV2 (mkV imperfective "ударять" "ударяю" "ударяет");
|
||||
hold_V2 = mkV2 (mkV imperfective "держать" "держу" "держит");
|
||||
hope_VS= mkV imperfective "надеяться" "надеюсь" ;
|
||||
hit_V2 = mkV2 (mkV imperfective "ударять" "ударяю" "ударяет") ;
|
||||
hold_V2 = mkV2 (mkV imperfective "держать" "держу" "держит") ;
|
||||
hope_VS = mkVS (mkV imperfective "надеяться" "надеюсь") ;
|
||||
horn_N = mkN "рог" masculine inanimate "3c(1)" ;
|
||||
horse_N = mkN "лошадь" feminine animate "8e" ;
|
||||
hot_A = mkA "горячий" "" "4a/b";
|
||||
house_N = mkN "дом" masculine inanimate "1c(1)" ;
|
||||
hunt_V2 = mkV2 (mkV imperfective intransitive "охотиться" "охочусь" "охотится") (lin Prep {s="на" ; c=Acc ; hasPrep=True}) ;
|
||||
husband_N = (mkNplus (mkN "муж" masculine animate "4c")) ** {pnom="мужья";pgen="мужей";pdat="мужьям";pacc="мужей";pins="мужьями";pprep="мужьях"};
|
||||
ice_N = (mkNplus (mkN "лёд" masculine animate "1b")) ** {sloc="льду";sptv="льду"} ;
|
||||
ice_N = (mkNplus (mkN "лёд" masculine animate "1*b")) ** {sloc="льду";sptv="льду"} ;
|
||||
important_A = mkA "важный" ;
|
||||
industry_N = mkN "промышленность" ;
|
||||
iron_N = mkN "железо" ;
|
||||
iron_N = (mkNplus (mkN "железо")) ** {mayben=only_singular};
|
||||
john_PN = mkPN "Иван" masculine animate ;
|
||||
jump_V = mkV imperfective intransitive "прыгать" "прыгаю" "прыгает";
|
||||
kill_V2 = mkV2 (mkV imperfective "убивать" "убиваю");
|
||||
king_N = mkN "король" masculine animate "2b";
|
||||
knee_N = (mkNplus (mkN "колено" neuter inanimate "1a")) ** {pnom="колени";pgen="коленей";pdat="коленям";pacc="колени";pins="коленями";pprep="коленях"} ;
|
||||
know_V2 = mkV2 (mkV imperfective "знать" "знаю");
|
||||
know_VQ = mkV imperfective "знать" "знаю";
|
||||
know_VS= mkV imperfective "знать" "знаю" ;
|
||||
know_V2 = mkV2 (mkV imperfective "знать" "знаю") ;
|
||||
know_VQ = mkVQ (mkV imperfective "знать" "знаю") ;
|
||||
know_VS = mkVS (mkV imperfective "знать" "знаю") ;
|
||||
lake_N = (mkNplus (mkN "озеро" neuter inanimate "1a")) ** {pnom="озёра";pgen="озёр";pdat="озёрам";pacc="озёра";pins="озёрами";pprep="озёрах"} ;
|
||||
lamp_N = mkN "лампа" ;
|
||||
language_N = mkN "язык" ;
|
||||
@@ -188,7 +188,7 @@ lin
|
||||
man_N = (mkNAltPl (mkN "человек" masculine animate "3a") (mkN "людь" masculine animate)) ** {pins="людьми"};
|
||||
married_A2 = mkA2 (mkA "замужем" "" "0") behind_Prep ; -- for Fem only
|
||||
meat_N = mkN "мясо" neuter inanimate "1c" ;
|
||||
milk_N = mkN "молоко" neuter inanimate "3d(1)" ;
|
||||
milk_N = mkN "молоко" neuter inanimate "3d(1)" only_singular ;
|
||||
moon_N = mkN "луна" ;
|
||||
mother_N2 = (mkN2plus (mkN2 "матерь" feminine animate "8e" nullPrep)) ** {snom="мать";sacc="мать";svoc="мать";} ;
|
||||
mountain_N = mkN "гора" ;
|
||||
@@ -249,7 +249,7 @@ lin
|
||||
run_V = mkV imperfective intransitive "бегать" "бегу" "бежит" ;
|
||||
salt_N = mkN "соль" ;
|
||||
sand_N = (mkNplus (mkN "песок" masculine inanimate "3*b")) ** {sptv="песку"} ;
|
||||
say_VS = mkV imperfective "говорить" "говорю" "говорит" ;
|
||||
say_VS = mkVS (mkV imperfective "говорить" "говорю" "говорит") ;
|
||||
school_N = mkN "школа" ;
|
||||
science_N = mkN "наука" ;
|
||||
scratch_V2 = mkV2 (mkV imperfective "чесать" "чешу" "чешет");
|
||||
@@ -267,7 +267,7 @@ lin
|
||||
shoe_N = mkN "туфля" feminine inanimate "2*a" ;
|
||||
shop_N = mkN "магазин" ;
|
||||
short_A = mkA "короткий" "короче" "3*a/c'";
|
||||
silver_N = mkN "серебро" ;
|
||||
silver_N = (mkNplus (mkN "серебро")) ** {mayben=only_singular};
|
||||
sister_N = mkN "сестра" feminine animate ;
|
||||
sit_V = mkV imperfective intransitive "сидеть" "сижу" "сидит";
|
||||
skin_N = mkN "кожа" ;
|
||||
@@ -344,7 +344,7 @@ lin
|
||||
wing_N = (mkNplus (mkN "крыло" neuter inanimate "1d")) ** {pnom="крылья";pgen="крыльев";pdat="крыльям";pacc="крылья";pins="крыльями";pprep="крыльях"};
|
||||
wipe_V2 = mkV2 (mkV imperfective "вытирать" "вытираю");
|
||||
woman_N = mkN "женщина" feminine animate ;
|
||||
wonder_VQ = mkV imperfective "интересовать" "интересую" "интересует";
|
||||
wonder_VQ = mkVQ (mkV imperfective "интересовать" "интересую" "интересует") ;
|
||||
wood_N = mkN "древесина" feminine inanimate "1a" ;
|
||||
worm_N = mkN "червь" masculine animate ;
|
||||
write_V2 = mkV2 (mkV imperfective "писать" "пишу" "пишет");
|
||||
|
||||
@@ -10,21 +10,11 @@ lin
|
||||
DetCN det cn =
|
||||
let n = numSizeNumber det.size in {
|
||||
s=case det.type of {
|
||||
-- EmptyIndef => \\cas =>
|
||||
-- let d=case n of {Pl=>a_Pl_Det; _=>a_Det} in
|
||||
-- d.s ! det.g ! Inanimate ! cas
|
||||
-- ++ det.s ! cn.g ! cn.anim ! cas
|
||||
-- ++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size ;
|
||||
-- EmptyDef => \\cas =>
|
||||
-- let d=case n of {Pl=>the_Pl_Det; _=>the_Det} in
|
||||
-- d.s ! det.g ! Inanimate ! cas
|
||||
-- ++ det.s ! cn.g ! cn.anim ! cas
|
||||
-- ++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size ;
|
||||
_ => \\cas => det.s ! cn.g ! cn.anim ! cas
|
||||
++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size
|
||||
} ;
|
||||
pron=False ;
|
||||
a=Ag (gennum det.g n) P3
|
||||
a=Ag (gennum det.g (forceMaybeNum cn.mayben n)) P3
|
||||
} ;
|
||||
|
||||
-- : PN -> NP ; -- John
|
||||
@@ -65,22 +55,25 @@ lin
|
||||
} ;
|
||||
|
||||
-- : CN -> NP ; -- (beer)
|
||||
MassNP cn = {
|
||||
s = \\cas => cn.s ! Sg ! cas ; -- can it be plural-only? eg квасцы
|
||||
pron=False ;
|
||||
a = Ag (gennum cn.g Sg) P3
|
||||
} ;
|
||||
MassNP cn =
|
||||
let n=forceMaybeNum cn.mayben Sg in {
|
||||
s = \\cas => cn.s ! Sg ! cas ;
|
||||
pron=False ;
|
||||
a = Ag (gennum cn.g n) P3
|
||||
} ;
|
||||
|
||||
-- : N2 -> NP -> CN ; -- mother of the king - мать короля
|
||||
ComplN2 n2 np = {
|
||||
s=\\n,cas=> (nounFormsNoun n2).s ! n ! cas ++ n2.c2.s ++ np.s ! n2.c2.c ;
|
||||
g=n2.g ;
|
||||
mayben=n2.mayben ;
|
||||
anim=n2.anim
|
||||
} ;
|
||||
-- : N3 -> NP -> N2 ; -- distance from this city (to Paris)
|
||||
ComplN3 n3 np = let n3_noun = nounFormsNoun n3 in nounToNounForm {
|
||||
s=\\n,g=>n3_noun.s ! n ! g ++ n3.c2.s ++ np.s ! n3.c2.c ;
|
||||
g=n3.g ;
|
||||
mayben=n3.mayben ;
|
||||
anim=n3.anim
|
||||
} ** {c2=n3.c3} ;
|
||||
|
||||
@@ -146,7 +139,9 @@ lin
|
||||
-- Common nouns
|
||||
|
||||
-- : AP -> CN -> CN ; -- big house - большой дом
|
||||
AdjCN ap cn = cn ** {s = \\n,cas => preOrPost (notB ap.isPost) (ap.s ! (gennum cn.g n) ! cn.anim ! cas) (cn.s ! n ! cas)} ;
|
||||
AdjCN ap cn = cn ** {
|
||||
s = \\n,cas => preOrPost (notB ap.isPost) (ap.s ! (gennum cn.g (forceMaybeNum cn.mayben n)) ! cn.anim ! cas) (cn.s ! n ! cas)
|
||||
} ;
|
||||
|
||||
-- : N -> CN
|
||||
UseN n = nounFormsNoun n ;
|
||||
@@ -161,10 +156,14 @@ lin
|
||||
Use3N3 n3 = lin N2 n3 ;
|
||||
|
||||
-- : CN -> RS -> CN ; -- house that John bought
|
||||
RelCN cn rs = cn ** {s = \\n,c => cn.s ! n ! c ++ embedInCommas (rs.s ! gennum cn.g n ! cn.anim ! c)} ;
|
||||
RelCN cn rs = cn ** {
|
||||
s = \\n,c => cn.s ! n ! c ++ embedInCommas (rs.s ! gennum cn.g (forceMaybeNum cn.mayben n) ! cn.anim ! c)
|
||||
} ;
|
||||
|
||||
-- : CN -> SC -> CN ; -- question where she sleeps
|
||||
SentCN cn sc = cn ** {s = \\n,c => cn.s ! n ! c ++ sc.s}; -- SC type will change???
|
||||
SentCN cn sc = cn ** {
|
||||
s = \\n,c => cn.s ! n ! c ++ sc.s
|
||||
}; -- SC type will change???
|
||||
|
||||
-- : CN -> Adv -> CN ; -- house on the hill
|
||||
AdvCN cn adv = cn ** {s = \\n,c => cn.s ! n ! c ++ adv.s};
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
resource ParadigmsRus = open CatRus, ResRus, (R=ResRus), ParamRus, (Z=ZaliznyakAlgo), Prelude in {
|
||||
--1 Russian Lexical Paradigms
|
||||
|
||||
----------------
|
||||
-- Parameters
|
||||
resource ParadigmsRus = open CatRus, ResRus, (R=ResRus), ParamRus, (Z=ZaliznyakAlgo), Prelude, Maybe in {
|
||||
|
||||
--2 Parameters
|
||||
--
|
||||
|
||||
oper
|
||||
singular : Number
|
||||
= Sg ;
|
||||
plural : Number
|
||||
= Pl ;
|
||||
|
||||
-- Abstracting gender. Gender is a parameter for mkN, mkN2, mkN3
|
||||
masculine : Gender
|
||||
= Masc ;
|
||||
feminine : Gender
|
||||
@@ -16,16 +14,31 @@ oper
|
||||
neuter : Gender
|
||||
= Neut ;
|
||||
|
||||
-- Abstracting numbers. Number is a parameter for mkPN, mkConj
|
||||
singular : Number
|
||||
= Sg ;
|
||||
plural : Number
|
||||
= Pl ;
|
||||
|
||||
-- Limiting number
|
||||
only_singular : MaybeNumber
|
||||
= JustSg ;
|
||||
only_plural : MaybeNumber
|
||||
= JustPl ;
|
||||
|
||||
-- Adjectives can have short and full form. ShortFormPreference type is a parameter for mkA
|
||||
short : ShortFormPreference
|
||||
= PrefShort ;
|
||||
full : ShortFormPreference
|
||||
= PrefFull ;
|
||||
|
||||
-- Animacy is needed for nouns and some pronouns.
|
||||
animate : Animacy
|
||||
= Animate ;
|
||||
inanimate : Animacy
|
||||
= Inanimate ;
|
||||
|
||||
-- Main cases:
|
||||
nominative : Case
|
||||
= Nom ;
|
||||
genitive : Case
|
||||
@@ -39,15 +52,15 @@ oper
|
||||
prepositional : Case
|
||||
= Pre ;
|
||||
|
||||
-- "Minor" cases:
|
||||
|
||||
locative : Case
|
||||
-- "Minor" cases:
|
||||
locative : Case -- or Pre-2, some nouns have this different from prepositional case
|
||||
= Loc ;
|
||||
partitive : Case
|
||||
partitive : Case -- or Gen-2. Some nouns like "tee", have this in addition to genitive, usually spoken language
|
||||
= Ptv ;
|
||||
vocative : Case
|
||||
vocative : Case -- can be used in spoken language
|
||||
= VocRus ;
|
||||
|
||||
-- Degrees of adjectives
|
||||
positive : Degree
|
||||
= Posit ;
|
||||
comparative : Degree
|
||||
@@ -55,19 +68,134 @@ oper
|
||||
superlative : Degree
|
||||
= Superl ;
|
||||
|
||||
-- Aspects of verbs
|
||||
perfective : Aspect
|
||||
= Perfective ;
|
||||
imperfective : Aspect
|
||||
= Imperfective ;
|
||||
|
||||
-- Transitivity is verb's inherent characteristic. Can influence which forms are possible
|
||||
transitive : Transitivity
|
||||
= Transitive ;
|
||||
intransitive : Transitivity
|
||||
= Intransitive ;
|
||||
|
||||
-- Reflexivity is traditionally understood as inherent characteristic. Not to be confused with passive forms
|
||||
reflexive : Reflexivity
|
||||
= Reflexive ;
|
||||
non_reflexive : Reflexivity
|
||||
= NonReflexive ;
|
||||
|
||||
-- Voice (not yet used)
|
||||
active : Voice
|
||||
= Act ;
|
||||
passive : Voice
|
||||
= Pass ;
|
||||
|
||||
------------------------------
|
||||
--2 Nouns
|
||||
|
||||
mkN : overload {
|
||||
mkN : Str -> N ; -- can guess declension and gender of some nouns given nominative
|
||||
mkN : Str -> Gender -> Animacy -> N ; -- can guess declension of more nouns
|
||||
mkN : Str -> Gender -> Animacy -> (idx : Str) -> N ; -- Fourth parameter is a declension type index (based on Zaliznyak's dictionary), for example, "1*a(1)"
|
||||
mkN : Str -> Gender -> Animacy -> (idx : Str) -> MaybeNumber -> N ; -- Same, but number restrictions can be added
|
||||
mkN : A -> Gender -> Animacy -> N ; -- for nouns, which decline as adjective
|
||||
mkN : A -> Gender -> Animacy -> MaybeNumber -> N ; -- same, with possibility to limit number (usually to only_singular)
|
||||
mkN : N -> (link : Str) -> N -> N ; -- compound noun. Link can end on "-", in which case parts are glued together. First one characterizes the whole.
|
||||
} ;
|
||||
|
||||
mkN2 : overload {
|
||||
mkN2 : N -> N2 ;
|
||||
mkN2 : N -> Prep -> N2 ;
|
||||
mkN2 : Str -> Gender -> Animacy -> (idx : Str) -> Prep -> N2 ; -- convenience for making N2. Fourth parameter is a declension type index (based on Zaliznyak's dictionary), for example, "1*f''(1)"
|
||||
} ;
|
||||
|
||||
mkN3 : overload {
|
||||
mkN3 : N -> Prep -> Prep -> N3 ;
|
||||
mkN3 : Str -> Gender -> Animacy -> (idx : Str) -> Prep -> Prep -> N3 ; -- convenience for making N2. Fourth parameter is a declension type index (based on Zaliznyak's dictionary), for example, "4*b"
|
||||
} ;
|
||||
|
||||
mkPN : overload {
|
||||
mkPN : N -> PN ;
|
||||
mkPN : N -> Str -> N -> PN ; -- see compound noun
|
||||
} ;
|
||||
|
||||
--2 Adjectives
|
||||
|
||||
mkA : overload {
|
||||
mkA : Str -> A ; -- can guess declension of many adjectives given nominative masculine
|
||||
mkA : Str -> Str -> A ; -- same, but comparative given as a second argument
|
||||
mkA : Str -> Str -> (idx : Str) -> A ; -- nom masc, comparative and third parameter is Zaliznyak's dictionary index, for example, "1a"
|
||||
mkA : Str -> Str -> (idx : Str) -> ShortFormPreference -> A ; -- same, but with short form preference given
|
||||
} ;
|
||||
|
||||
ShortenA : A -> A ;
|
||||
|
||||
-- Two-place adjectives need a preposition and a case as extra arguments.
|
||||
|
||||
-- TODO: ? mkA2 : A -> Str -> Case -> A2 ; -- "делим на"
|
||||
mkA2 : A -> Prep -> A2 ;
|
||||
|
||||
mkOrd : overload {
|
||||
mkOrd : (nom : Str) -> Ord ;
|
||||
} ;
|
||||
|
||||
-------------------------
|
||||
--2 Verbs
|
||||
|
||||
mkV : overload {
|
||||
mkV : (inf : Str) -> (sg1 : Str) -> V ; -- guess some I conjugation verbs (not "ё") from infinitive and Sg P1, perfective, transitive
|
||||
mkV : (inf : Str) -> (sg1 : Str) -> (sg3 : Str) -> V ; -- guess verb forms given Inf, Sg P1, Sg P3, perfective, transitive
|
||||
mkV : Aspect -> (inf : Str) -> (sg1 : Str) -> (sg3 : Str) -> V ; -- same, but aspect as first parameter
|
||||
mkV : Aspect -> Transitivity -> (inf : Str) -> (sg1 : Str) -> (sg3 : Str) -> V ; -- aspect, transitivity, Inf, Sg P1, Sg P3
|
||||
mkV : Aspect -> Transitivity -> (inf : Str) -> (sg1 : Str) -> (sg3 : Str) -> (idx : Str) -> V -- aspect, transitivity, Inf, Sg P1, Sg P3 and index from Zaliznyak's dictionary, eg "14a"
|
||||
} ;
|
||||
|
||||
mkV2 : overload {
|
||||
mkV2 : V -> V2 ; -- most common case with Acc and no preposition
|
||||
mkV2 : V -> Case -> V2 ; -- given case, but no preposition
|
||||
mkV2 : V -> Prep -> V2 ;
|
||||
} ;
|
||||
|
||||
mkV3 : overload {
|
||||
mkV3 : V -> Case -> Case -> V3 ;
|
||||
mkV3 : V -> Prep -> Prep -> V3 ;
|
||||
} ;
|
||||
|
||||
mkVS : V -> VS ;
|
||||
mkVQ : V -> VQ ;
|
||||
mkV2V : V -> Prep -> V2V ;
|
||||
mkV2S : V -> Prep -> V2S ;
|
||||
mkV2Q : V -> Prep -> V2Q ;
|
||||
mkV2A : V -> Prep -> V2A ;
|
||||
|
||||
dirV2 : V -> V2 ;
|
||||
tvDirDir : V -> V3 ;
|
||||
mkVV : V -> VV;
|
||||
|
||||
------------------------
|
||||
--2 Adverbs, prepositions, conjunctions, ...
|
||||
|
||||
mkAdv : Str -> Adv ;
|
||||
mkIAdv : Str -> IAdv ;
|
||||
mkConj : overload {
|
||||
mkConj : Str -> Number -> Conj ; -- only middle conjunction
|
||||
mkConj : Str -> Str -> Number -> Conj ; -- two-part conjunction
|
||||
} ;
|
||||
|
||||
mkInterj : Str -> Interj ;
|
||||
mkPrep : Str -> Case -> Prep ;
|
||||
|
||||
-- The definitions should not bother the user of the API. So they are
|
||||
-- hidden from the document.
|
||||
--.
|
||||
|
||||
------------------------------
|
||||
-- Nouns
|
||||
|
||||
nullPrep : Prep = lin Prep {s=[]; c=Gen; hasPrep=False} ;
|
||||
|
||||
mkN = overload {
|
||||
mkN : Str -> N
|
||||
= \nom -> lin N (guessNounForms nom) ;
|
||||
@@ -79,8 +207,14 @@ oper
|
||||
= \word, g, anim, z -> lin N (noMinorCases (Z.makeNoun word g anim z)) ;
|
||||
mkN : Str -> Gender -> Animacy -> Str -> N
|
||||
= \word, g, anim, zi -> lin N (noMinorCases (Z.makeNoun word g anim (Z.parseIndex zi))) ;
|
||||
mkN : Str -> Gender -> Animacy -> Str -> MaybeNumber -> N
|
||||
= \word, g, anim, zi, mbn -> lin N (applyMaybeNumber ((noMinorCases (Z.makeNoun word g anim (Z.parseIndex zi))) ** {mayben=mbn})) ;
|
||||
mkN : A -> Gender -> Animacy -> N
|
||||
= \a, g, anim -> lin N (makeNFFromAF a g anim) ;
|
||||
mkN : A -> Gender -> Animacy -> MaybeNumber -> N
|
||||
= \a, g, anim, mbn -> lin N (applyMaybeNumber ((makeNFFromAF a g anim) ** {mayben=mbn})) ;
|
||||
mkN : N -> Str -> N -> N
|
||||
= \n1,link,n2 -> lin N (compoundN n1 link n2) ;
|
||||
|
||||
-- For backwards compatibility:
|
||||
mkN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg, nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N
|
||||
@@ -89,6 +223,7 @@ oper
|
||||
snom=nomSg;pnom=nomPl;sgen=genSg;pgen=genPl;sdat=datSg;pdat=datPl;sacc=accSg;pacc=accPl;sins=instSg;pins=instPl;sprep=preposSg;pprep=preposPl;
|
||||
sloc=prepos2Sg; sptv=genSg ; svoc=nomSg ;
|
||||
anim=anim;
|
||||
mayben=BothSgPl ;
|
||||
g=g
|
||||
} ;
|
||||
} ;
|
||||
@@ -114,6 +249,8 @@ oper
|
||||
mkPN = overload {
|
||||
mkPN : N -> PN
|
||||
= \n -> lin PN n ;
|
||||
mkPN : N -> Str -> N -> PN
|
||||
= \n1,link,n2 -> lin PN (compoundN n1 link n2) ;
|
||||
mkPN : Str -> PN
|
||||
= \nom -> lin PN (guessNounForms nom) ;
|
||||
mkPN : Str -> Gender -> Animacy -> PN
|
||||
@@ -140,13 +277,16 @@ oper
|
||||
= \nom, comp, zi, spf -> lin A (makeAdjectiveForms nom comp zi spf) ;
|
||||
} ;
|
||||
|
||||
ShortenA : A -> A
|
||||
= \a -> a ** {preferShort = PrefShort} ;
|
||||
|
||||
-- Two-place adjectives need a preposition and a case as extra arguments.
|
||||
|
||||
-- TODO: ? mkA2 : A -> Str -> Case -> A2 ; -- "делим на"
|
||||
mkA2 : A -> Prep -> A2
|
||||
= \a,p -> lin A2 (a ** {c = p}) ;
|
||||
|
||||
mkOrd = overload { -- ord from adj. TODO: This shadows mkOrd from constructors...
|
||||
mkOrd = overload {
|
||||
mkOrd : (nom : Str) -> Ord
|
||||
= \nom -> lin Ord (guessAdjectiveForms nom) ;
|
||||
} ;
|
||||
@@ -208,33 +348,17 @@ oper
|
||||
= \vf, prep1, prep2, cas1, cas2 -> lin V3 (vf ** {c={s=prep1 ; c=cas1 ; hasPrep=True} ; c2={s=prep2 ; c=cas2 ; hasPrep=True}} ) ;
|
||||
} ;
|
||||
|
||||
dirV2 : V -> V2 ;
|
||||
dirV2 v = mkV2 v Acc ;
|
||||
tvDirDir : V -> V3 ;
|
||||
tvDirDir v = mkV3 v Acc Dat ;
|
||||
|
||||
mkVV : V -> VV;
|
||||
dirV2 v = mkV2 v Acc ;
|
||||
tvDirDir v = mkV3 v Acc Dat ;
|
||||
mkVV = \v -> lin VV {v=v; modal=\\a=>[]} ;
|
||||
|
||||
-- for backwards compatibility only. Use mkV methods instead.
|
||||
-- These are deprecated!
|
||||
param Conjugation = First | FirstE | Second | SecondA | Mixed | Dolzhen | Foreign ;
|
||||
oper
|
||||
first, firstE, second, mixed, dolzhen, foreign : Conjugation ;
|
||||
first = First ; firstE = FirstE ; second = Second ; secondA = SecondA ; mixed = Mixed ; dolzhen = Dolzhen; foreign = Foreign;
|
||||
|
||||
-- Do not use the following method as it is only approximate because it does not use most informative SgP3 amd
|
||||
-- SgP3 is being guessed instead from SgP1.
|
||||
regV : Aspect -> Conjugation -> (stemPresSg1,endPresSg1,pastSg1,imp,inf : Str) -> V ;
|
||||
regV asp bconj stemPresSg1 endPresSg1 pastSg1 imp inf =
|
||||
let sg1=stemPresSg1 + endPresSg1 in
|
||||
let sg3 : Str = case bconj of {
|
||||
First => (Z.sg1StemFromVerb sg1) + "ет" ;
|
||||
Mixed => (Z.sg1StemFromVerb sg1) + "чет" ;
|
||||
FirstE => (Z.sg1StemFromVerb sg1) + "ёт" ;
|
||||
Second | SecondA => (Z.sg1StemFromVerb sg1) + "ит" ;
|
||||
_ => (Z.sg1StemFromVerb sg1) + "ет"
|
||||
} in (guessVerbForms asp Transitive inf sg1 sg3) ** {lock_V=<>} ;
|
||||
mkVS v = lin VS v ;
|
||||
mkVQ v = lin VQ v ;
|
||||
mkV2V v prep = lin V2V (v ** {c=prep}) ;
|
||||
mkV2S v prep = lin V2S (v ** {c=prep}) ;
|
||||
mkV2Q v prep = lin V2Q (v ** {c=prep}) ;
|
||||
mkV2A v prep = lin V2A (v ** {c=prep}) ;
|
||||
|
||||
------------------------
|
||||
-- Adverbs, prepositions, conjunctions, ...
|
||||
@@ -257,4 +381,24 @@ oper
|
||||
|
||||
mkPrep : Str -> Case -> Prep
|
||||
= \s,c -> lin Prep {s = s ; c = c ; hasPrep = True} ;
|
||||
|
||||
-- for backwards compatibility only. Use mkV methods instead.
|
||||
-- These are deprecated!
|
||||
param Conjugation = First | FirstE | Second | SecondA | Mixed | Dolzhen | Foreign ;
|
||||
oper
|
||||
first, firstE, second, mixed, dolzhen, foreign : Conjugation ;
|
||||
first = First ; firstE = FirstE ; second = Second ; secondA = SecondA ; mixed = Mixed ; dolzhen = Dolzhen; foreign = Foreign;
|
||||
|
||||
-- Do not use the following method as it is only approximate because it does not use most informative SgP3 amd
|
||||
-- SgP3 is being guessed instead from SgP1.
|
||||
regV : Aspect -> Conjugation -> (stemPresSg1,endPresSg1,pastSg1,imp,inf : Str) -> V ;
|
||||
regV asp bconj stemPresSg1 endPresSg1 pastSg1 imp inf =
|
||||
let sg1=stemPresSg1 + endPresSg1 in
|
||||
let sg3 : Str = case bconj of {
|
||||
First => (Z.sg1StemFromVerb sg1) + "ет" ;
|
||||
Mixed => (Z.sg1StemFromVerb sg1) + "чет" ;
|
||||
FirstE => (Z.sg1StemFromVerb sg1) + "ёт" ;
|
||||
Second | SecondA => (Z.sg1StemFromVerb sg1) + "ит" ;
|
||||
_ => (Z.sg1StemFromVerb sg1) + "ет"
|
||||
} in (guessVerbForms asp Transitive inf sg1 sg3) ** {lock_V=<>} ;
|
||||
}
|
||||
@@ -29,11 +29,15 @@ param
|
||||
Case = Nom | Gen | Dat | Acc | Ins | Pre -- падеж, "малые падежи":
|
||||
| Loc | Ptv | VocRus ; -- "minor cases", usually Loc = Pre, Ptv = Gen, VocRus = Nom
|
||||
ShortFormPreference = PrefShort | PrefFull ;
|
||||
CopulaType = NomCopula | InsCopula | EllCopula;
|
||||
CopulaType = NomCopula | InsCopula | EllCopula | ExplicitCopula ;
|
||||
SpecialFuture = NormalFuture | BeFuture | CanFuture | WantFuture | NullFuture ;
|
||||
DetType = NormalDet | EmptyDef | EmptyIndef ; -- artificial parameter to side-step DetNP parsing issues
|
||||
oper
|
||||
MaybeAgr = Maybe Agr ;
|
||||
MaybeNumber = Maybe Number ;
|
||||
JustSg = Just Number Sg ;
|
||||
JustPl = Just Number Pl ;
|
||||
BothSgPl = Nothing Number Sg ; -- Both are possible, nothing limited
|
||||
-- GenNum helpers and coercions
|
||||
MSg = GSg Masc ;
|
||||
FSg = GSg Fem ;
|
||||
|
||||
@@ -64,7 +64,7 @@ lin
|
||||
-- : IDet -> CN -> IP ; -- which five songs
|
||||
IdetCN idet cn = caseTableToRecord (\\cas => idet.s ! cn.g ! cn.anim ! cas
|
||||
++ cn.s ! numSizeNum cas idet.size ! numSizeCase cas idet.size)
|
||||
(Ag (gennum cn.g (numSizeNumber idet.size)) P3) cn.anim ;
|
||||
(Ag (gennum cn.g (forceMaybeNum cn.mayben (numSizeNumber idet.size))) P3) cn.anim ;
|
||||
|
||||
-- : IDet -> IP ; -- which five
|
||||
IdetIP idet = caseTableToRecord (\\cas => idet.s ! idet.g ! Inanimate ! cas)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
resource ResRus = ParamRus ** open Prelude, ZaliznyakAlgo in {
|
||||
resource ResRus = ParamRus ** open Prelude, ZaliznyakAlgo, Maybe in {
|
||||
flags coding=utf8 ; optimize=all ;
|
||||
|
||||
---------------
|
||||
@@ -30,8 +30,11 @@ oper
|
||||
snom, sgen, sdat, sacc, sins, sprep, sloc, sptv, svoc,
|
||||
pnom, pgen, pdat, pacc, pins, pprep : Str ;
|
||||
g : Gender ;
|
||||
mayben : MaybeNumber ;
|
||||
anim : Animacy
|
||||
} ;
|
||||
Noun2Forms = NounForms ** {c2 : ComplementCase} ;
|
||||
Noun3Forms = NounForms ** {c2,c3 : ComplementCase} ;
|
||||
|
||||
-- But traditional tables make agreement easier to handle in syntax
|
||||
-- so this is the lincat of CN
|
||||
@@ -39,13 +42,15 @@ oper
|
||||
Noun : Type = {
|
||||
s : Number => Case => Str ;
|
||||
g : Gender ;
|
||||
mayben : MaybeNumber ; -- used to control dependent words
|
||||
anim : Animacy
|
||||
} ;
|
||||
|
||||
Noun2Forms = NounForms ** {c2 : ComplementCase} ;
|
||||
Noun3Forms = NounForms ** {c2,c3 : ComplementCase} ;
|
||||
|
||||
-- this is used in UseN
|
||||
NounPhrase = {
|
||||
s : Case => Str ;
|
||||
pron : Bool ; -- this only indicates n-prefixable pronouns
|
||||
a : Agr
|
||||
} ;
|
||||
|
||||
nounFormsNoun : NounForms -> Noun
|
||||
= \forms -> {
|
||||
@@ -74,6 +79,7 @@ oper
|
||||
}
|
||||
} ;
|
||||
g = forms.g ;
|
||||
mayben=forms.mayben ;
|
||||
anim = forms.anim
|
||||
} ;
|
||||
|
||||
@@ -140,18 +146,43 @@ oper
|
||||
sloc = base.sprep ;
|
||||
sptv = base.sgen ;
|
||||
svoc = base.snom ;
|
||||
mayben = BothSgPl
|
||||
} ;
|
||||
|
||||
mkNAltPl : NounForms -> NounForms -> NounForms
|
||||
= \sgn, pln -> sgn ** {
|
||||
pnom = pln.pnom ;
|
||||
pgen = pln.pgen ;
|
||||
pdat = pln.pdat ;
|
||||
pacc = pln.pacc ;
|
||||
pins = pln.pins ;
|
||||
pprep= pln.pprep
|
||||
pnom = pln.pnom ;
|
||||
pgen = pln.pgen ;
|
||||
pdat = pln.pdat ;
|
||||
pacc = pln.pacc ;
|
||||
pins = pln.pins ;
|
||||
pprep = pln.pprep
|
||||
} ;
|
||||
|
||||
applyMaybeNumber : NounForms -> NounForms
|
||||
= \nf -> case <nf.mayben.exists, fromMaybe Number Sg nf.mayben> of {
|
||||
<True,Sg> => nf ** {
|
||||
pnom = nf.snom ;
|
||||
pgen = nf.sgen ;
|
||||
pdat = nf.sdat ;
|
||||
pacc = nf.sacc ;
|
||||
pins = nf.sins ;
|
||||
pprep = nf.sprep
|
||||
} ;
|
||||
<True,Pl> => nf ** {
|
||||
snom = nf.pnom ;
|
||||
sgen = nf.pgen ;
|
||||
sdat = nf.pdat ;
|
||||
sacc = nf.pacc ;
|
||||
sins = nf.pins ;
|
||||
sprep = nf.pprep ;
|
||||
sloc = nf.pprep ;
|
||||
sptv = nf.pgen ;
|
||||
svoc = nf.pnom ;
|
||||
} ;
|
||||
_ => nf
|
||||
} ;
|
||||
|
||||
mkNplus : NounForms -> NounForms
|
||||
= \nf -> nf ;
|
||||
|
||||
@@ -176,6 +207,27 @@ oper
|
||||
|
||||
from2 = {s="из"; c=Gen; hasPrep=True} ;
|
||||
|
||||
compoundN : NounForms -> Str -> NounForms -> NounForms
|
||||
= \n1,link,n2 ->
|
||||
let l : Str=case link of {x+"-" => BIND ++ "-" ++ BIND ; _ => link} in
|
||||
n1 ** {
|
||||
snom = n1.snom ++ l ++ n2.snom ;
|
||||
sgen = n1.sgen ++ l ++ n2.sgen ;
|
||||
sdat = n1.sdat ++ l ++ n2.sdat ;
|
||||
sacc = n1.sacc ++ l ++ n2.sacc ;
|
||||
sins = n1.sins ++ l ++ n2.sins ;
|
||||
sprep = n1.sprep ++ l ++ n2.sprep ;
|
||||
sloc = n1.sloc ++ l ++ n2.sloc ;
|
||||
sptv = n1.sptv ++ l ++ n2.sptv ;
|
||||
svoc = n1.svoc ++ l ++ n2.svoc ;
|
||||
pnom = n1.pnom ++ l ++ n2.pnom ;
|
||||
pgen = n1.pgen ++ l ++ n2.pgen ;
|
||||
pdat = n1.pdat ++ l ++ n2.pdat ;
|
||||
pacc = n1.pacc ++ l ++ n2.pacc ;
|
||||
pins = n1.pins ++ l ++ n2.pins ;
|
||||
pprep = n1.pprep ++ l ++ n2.pprep
|
||||
} ;
|
||||
|
||||
---------------------------
|
||||
-- Adjectives -- Прилагательные
|
||||
|
||||
@@ -373,6 +425,7 @@ oper
|
||||
sptv = af.fsgen ;
|
||||
svoc = af.fsnom ;
|
||||
g=g ;
|
||||
mayben=BothSgPl ;
|
||||
anim=anim
|
||||
} ;
|
||||
Masc => {
|
||||
@@ -392,6 +445,7 @@ oper
|
||||
sptv = af.msgen ;
|
||||
svoc = af.msnom ;
|
||||
g=g ;
|
||||
mayben=BothSgPl ;
|
||||
anim=anim
|
||||
} ;
|
||||
Neut => {
|
||||
@@ -411,6 +465,7 @@ oper
|
||||
sptv = af.msgen ;
|
||||
svoc = af.nsnom ;
|
||||
g=g ;
|
||||
mayben=BothSgPl ;
|
||||
anim=anim
|
||||
}
|
||||
} ;
|
||||
@@ -511,9 +566,20 @@ oper
|
||||
prpl3=""
|
||||
} ;
|
||||
|
||||
copulaFull : VerbForms
|
||||
= copula ** {
|
||||
prsg1="есть" ;
|
||||
prsg2="есть" ;
|
||||
prsg3="есть" ;
|
||||
prpl1="есть" ;
|
||||
prpl2="есть" ;
|
||||
prpl3="есть"
|
||||
} ;
|
||||
|
||||
selectCopula : CopulaType -> VerbForms
|
||||
= \cop -> case cop of {
|
||||
NomCopula => copula ;
|
||||
ExplicitCopula => copulaFull ;
|
||||
EllCopula => copulaEll ;
|
||||
InsCopula => copulaIns
|
||||
} ;
|
||||
@@ -1109,6 +1175,7 @@ oper
|
||||
pptv=n.s ! Pl ! Ptv ;
|
||||
pvoc=n.s ! Pl ! VocRus ;
|
||||
g=n.g ;
|
||||
mayben=n.mayben ;
|
||||
anim=n.anim
|
||||
} ;
|
||||
|
||||
@@ -1272,6 +1339,10 @@ oper
|
||||
size : NumSize
|
||||
} ;
|
||||
|
||||
-- choose number, force limited number if necessary
|
||||
forceMaybeNum : MaybeNumber -> Number -> Number
|
||||
= \mbn,n -> fromMaybe Number n mbn;
|
||||
|
||||
-- Number from size to be used in agreement after numeral has been applied
|
||||
numSizeNumber : NumSize -> Number
|
||||
= \ns -> case ns of {Num1 => Sg ; NumAll | Num2_4 | Num5 => Pl} ;
|
||||
@@ -1294,13 +1365,12 @@ oper
|
||||
numSizeGenAgr : NumSize -> Gender -> Person -> Agr
|
||||
= \ns,g,p -> Ag (case ns of {Num1 => GSg g ; NumAll | Num2_4 | Num5 => GPl}) p ;
|
||||
|
||||
oper -- TODO:
|
||||
ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ;
|
||||
|
||||
----------------
|
||||
-- Misc
|
||||
|
||||
oper
|
||||
ComplementCase : Type = {s : Str ; c : Case ; hasPrep : Bool} ;
|
||||
|
||||
applyPrep : ComplementCase -> NounPhrase -> Str
|
||||
= \prep,np -> case <np.pron, prep.hasPrep, prep.c> of {
|
||||
<True, True, Gen|Dat|Acc|Ins|Ptv> => prep.s ++ "н" ++ BIND ++ (np.s ! prep.c) ;
|
||||
@@ -1310,10 +1380,4 @@ oper
|
||||
applyIPronPrep : ComplementCase -> IPronounForms -> Str
|
||||
= \prep,ip -> prep.s ++ selectIPronCase ip prep.c ;
|
||||
|
||||
NounPhrase = {
|
||||
s : Case => Str ;
|
||||
-- , prep : Case => Str -- what for is this neeeded?
|
||||
pron : Bool ; -- this only indicates n-prefixable pronouns
|
||||
a : Agr
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ lin
|
||||
|
||||
less_CAdv = X.mkCAdv "менее" "чем" ;
|
||||
more_CAdv = X.mkCAdv "более" "чем" ;
|
||||
as_CAdv = X.mkCAdv "так же" "как и" ;
|
||||
as_CAdv = X.mkCAdv "так же" "как и" ; -- requires short form adjective
|
||||
|
||||
can8know_VV = {v=can; modal=\\a=>[]} ;
|
||||
can_VV = {v=can; modal=\\a=>[]} ;
|
||||
|
||||
@@ -15,17 +15,19 @@ lin
|
||||
NumPN card = (immutableNounForms (card.s ! Neut ! Inanimate ! Nom) Neut Inanimate) ** {g = Neut; a = Inanimate} ;
|
||||
|
||||
-- : CN -> Card -> NP ; -- level five ; level 5
|
||||
CNNumNP cn n = {
|
||||
s = \\cas => cn.s ! Sg ! cas ++ n.s ! cn.g ! cn.anim ! cas ;
|
||||
CNNumNP cn card = {
|
||||
s = \\cas => cn.s ! Sg ! cas ++ card.s ! cn.g ! cn.anim ! cas ;
|
||||
pron=False ;
|
||||
a = Ag (gennum cn.g Sg) P3
|
||||
a = Ag (gennum cn.g (forceMaybeNum cn.mayben Sg)) P3
|
||||
} ;
|
||||
|
||||
-- : Det -> CN -> [Symb] -> NP ; -- (the) (2) numbers x and
|
||||
CNSymbNP det cn xs = {
|
||||
s=\\cas => det.s ! cn.g ! cn.anim ! cas ++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size ++ xs.s ;
|
||||
s=\\cas => det.s ! cn.g ! cn.anim ! cas
|
||||
++ cn.s ! numSizeNum cas det.size ! numSizeCase cas det.size
|
||||
++ xs.s ;
|
||||
pron=False ;
|
||||
a=Ag (gennum cn.g (numSizeNumber det.size)) P3
|
||||
a=Ag (gennum cn.g (forceMaybeNum cn.mayben ((numSizeNumber det.size)))) P3
|
||||
} ;
|
||||
|
||||
-- : Symb -> S ; -- A
|
||||
|
||||
93
src/russian/TerminologyRus.gf
Normal file
93
src/russian/TerminologyRus.gf
Normal file
@@ -0,0 +1,93 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
concrete TerminologyRus of Terminology = CatRus ** open
|
||||
ResRus,
|
||||
ParadigmsRus,
|
||||
(G = GrammarRus),
|
||||
(S = SyntaxRus),
|
||||
(L = LexiconRus),
|
||||
Prelude,
|
||||
HTML
|
||||
in {
|
||||
flags coding=utf8 ;
|
||||
|
||||
lincat
|
||||
Category = G.N ;
|
||||
ParameterType = G.N ;
|
||||
Parameter = G.N ;
|
||||
Modifier = G.A ;
|
||||
Heading = {s : Str} ;
|
||||
|
||||
lin
|
||||
noun_Category = mkN (mkA "существительный") neuter inanimate ;
|
||||
adjective_Category = mkN (mkA "прилагательный") neuter inanimate ;
|
||||
verb_Category = mkN "глагол" ;
|
||||
adverb_Category = mkN "наречие" ;
|
||||
preposition_Category = mkN "предлог" ;
|
||||
|
||||
finite_form_ParameterType = mkN (mkN (mkA "личный" "" "1*a") feminine inanimate) "" (mkN "форма") ;
|
||||
nominal_form_ParameterType = mkN (mkN (mkA "субстантивный" "" "1*a") feminine inanimate) "" (mkN "форма") ;
|
||||
|
||||
singular_Parameter = mkN "ед.ч." ;
|
||||
plural_Parameter = mkN "мн.ч." ;
|
||||
|
||||
masculine_Parameter = mkN "мужской" ;
|
||||
feminine_Parameter = mkN "женский" ;
|
||||
neuter_Parameter = mkN "средний" ;
|
||||
|
||||
nominative_Parameter = mkN "именительный" ;
|
||||
genitive_Parameter = mkN "родительный" ;
|
||||
dative_Parameter = mkN "дательный" ;
|
||||
accusative_Parameter = mkN "винительный" ;
|
||||
|
||||
partitive_Parameter = mkN "разделительный" ;
|
||||
translative_Parameter = mkN "становительный" ;
|
||||
essive_Parameter = mkN "эссив" ;
|
||||
inessive_Parameter = mkN "инессив" ;
|
||||
elative_Parameter = mkN "элатив" ;
|
||||
illative_Parameter = mkN "иллатив" ;
|
||||
adessive_Parameter = mkN "адессив" ;
|
||||
ablative_Parameter = mkN "аблатив" ;
|
||||
allative_Parameter = mkN "аллатив" ;
|
||||
abessive_Parameter = mkN "абессив" ;
|
||||
comitative_Parameter = mkN "комитатив" ;
|
||||
instructive_Parameter = mkN "инструктив" ;
|
||||
|
||||
active_Parameter = mkN "автивный" ;
|
||||
passive_Parameter = mkN "пассивный" ;
|
||||
|
||||
imperative_Parameter = mkN "повелительное" ;
|
||||
indicative_Parameter = mkN "изъявительное" ;
|
||||
conjunctive_Parameter = mkN "сослагательное" ;
|
||||
infinitive_Parameter = mkN "инфинитив" ;
|
||||
|
||||
present_Parameter = mkN "настоящее" ;
|
||||
past_Parameter = mkN "прошлое" ;
|
||||
future_Parameter = mkN "будущее" ;
|
||||
conditional_Parameter = mkN "условное" ;
|
||||
perfect_Parameter = mkN "перфект" ;
|
||||
potential_Parameter = mkN "потенциал" ;
|
||||
|
||||
participle_Parameter = mkN "причастие" ;
|
||||
aux_verb_Parameter = mkN "глагол" ;
|
||||
agent_Parameter = mkN "агенс" ;
|
||||
|
||||
positive_Parameter = mkN "положительная" ;
|
||||
comparative_Parameter = mkN "сравнительная" ;
|
||||
superlative_Parameter = mkN "превосходная" ;
|
||||
predicative_Parameter = mkN "предикатив" ;
|
||||
negative_Parameter = mkN "отрицательное" ;
|
||||
positivePol_Parameter = mkN "утвердительное" ;
|
||||
|
||||
long_Parameter = mkN "длинная" ;
|
||||
short_Parameter = mkN "краткая" ;
|
||||
|
||||
finite_Modifier = mkA "финитный" ;
|
||||
|
||||
nounHeading n = ss n.snom ;
|
||||
nounPluralHeading n = ss n.pnom ;
|
||||
|
||||
formGF_N = mkN "форма" ;
|
||||
exampleGr_N = mkN "пример" ;
|
||||
|
||||
}
|
||||
@@ -168,9 +168,13 @@ lin
|
||||
CompNP np = {s=\\a=>np.s ! Ins ; adv=[] ; cop=InsCopula} ;
|
||||
|
||||
-- : Adv -> Comp ; -- (be) here
|
||||
CompAdv adv = {s=\\a=>[] ; adv=adv.s ; cop=NomCopula} ;
|
||||
CompAdv adv = {s=\\a=>[] ; adv=adv.s ; cop=ExplicitCopula} ;
|
||||
-- : CN -> Comp ; -- (be) a man/men
|
||||
CompCN cn = {s=\\a=>cn.s ! numGenNum (agrGenNum a) ! Ins ; adv=[] ; cop=InsCopula} ;
|
||||
CompCN cn = {
|
||||
s=\\a=>cn.s ! numGenNum (agrGenNum a) ! Ins ;
|
||||
adv=[] ;
|
||||
cop=InsCopula
|
||||
} ;
|
||||
|
||||
-- : VP ; -- be
|
||||
UseCopula = {adv=\\a=>[] ; verb=copulaIns ; dep=[] ; compl=\\a=>[]} ;
|
||||
|
||||
@@ -17,13 +17,125 @@ gt RelCN (UseN apple_N) (UseRCl ? PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (
|
||||
gt RelCN (UseN apple_N) (UseRCl (TTAnt TCond AAnter) PPos (RelSlash IdRP (SlashVP (MassNP (RelCN (UseN bird_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (Slash3V3 send_V3 (UsePN paris_PN))))))) (Slash3V3 add_V3 (UsePN paris_PN))))) | l -treebank
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (GenericCl (ComplSlash (SlashV2a like_V2) (MassNP (RelCN (UseN worm_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP thirsty_VP)))))) | l -treebank
|
||||
gt RelSlash IdRP (SlashPrep (CleftAdv now_Adv (ConjS and_Conj (BaseS (UseCl (TTAnt TPres ASimul) PNeg (PredVP everybody_NP UseCopula)) (UseCl (TTAnt TPast ASimul) PPos (ImpersCl hungry_VP))))) in8front_Prep) | l -treebank
|
||||
gt UseRCl (TTAnt TCond ASimul) PPos ( RelSlash IdRP ( SlashPrep ( CleftAdv now_Adv ( ConjS and_Conj (BaseS (UseCl (TTAnt TPres ASimul) PNeg (PredVP everybody_NP UseCopula)) (UseCl (TTAnt TPast ASimul) PPos (ImpersCl hungry_VP))) ) ) after_Prep ) ) |l -treebank
|
||||
gt UseRCl (TTAnt TCond ASimul) PPos ( RelSlash IdRP (SlashPrep ( CleftAdv now_Adv ( ConjS and_Conj (BaseS (UseCl (TTAnt TPres ASimul) PNeg (PredVP everybody_NP UseCopula)) (UseCl (TTAnt TPast ASimul) PPos (ImpersCl hungry_VP))) ) ) after_Prep ) ) |l -treebank
|
||||
gt UseCl (TTAnt TPres AAnter) PPos (CleftNP (UsePron ?) (UseRCl (TTAnt TPast AAnter) PPos (RelVP IdRP ready_VP))) | l -treebank
|
||||
gt ComplA2 ? (UsePron she_Pron) | l -treebank
|
||||
gt ReflA2 ? |l -treebank
|
||||
gt CAdvAP less_CAdv (PositA full_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
|
||||
gt timeunitAdv (NumDigits (IDig ?)) second_Timeunit | l -treebank
|
||||
gt SelfNP (UsePron ? ) |l -treebank
|
||||
|
||||
gt RelCN (UseN apple_N) (UseRCl ? PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (Slash3V3 talk_V3 (UsePN paris_PN))))) | l -treebank
|
||||
gt bottle_of_CN (MassNP (UseN wine_N)) | l -treebank
|
||||
gt glass_of_CN (MassNP (UseN wine_N)) | l -treebank
|
||||
gt cup_of_CN (MassNP (UseN silver_N)) | l -treebank
|
||||
gt UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron ?) (ComplSlash (SlashV2a drink_V2) (DetCN (DetQuant DefArt (NumCard (NumDigits (IDig D_2)))) (cup_of_CN (MassNP (UseN water_N)) )))) | l -treebank
|
||||
gt n_units_of_NP (NumNumeral (num (pot3plus (pot1as2 pot110) (pot2plus pot01 pot111)))) (UseN cap_N) (MassNP (UseN water_N)) | l -treebank
|
||||
gt n_unit_CN (NumNumeral (num (pot2as3 (pot1as2 pot110)))) (UseN cap_N) (bottle_of_CN (MassNP (UseN water_N))) |l -treebank
|
||||
gt UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron ?) (ComplSlash (SlashV2a drink_V2) (MassNP (n_unit_CN (NumNumeral (num (pot2as3 (pot1as2 pot110)))) (UseN cap_N) (bottle_of_CN (MassNP (UseN water_N))))) )) | l -treebank
|
||||
gt UseSlash (TTAnt TCond AAnter) ? (SlashVP (UsePN john_PN) (Slash3V3 talk_V3 (UsePN paris_PN))) |l -treebank
|
||||
gt SlashVS (MassNP (UseN baby_N)) know_VS ( UseSlash (TTAnt TCond AAnter) ? (SlashVP (UsePN john_PN) (Slash3V3 talk_V3 (UsePN paris_PN))) ) | l -treebank
|
||||
gt RelSlash IdRP ( SlashVS (MassNP (UseN baby_N)) know_VS ( UseSlash (TTAnt TCond AAnter) ? (SlashVP (UsePN john_PN) (Slash3V3 talk_V3 (UsePN paris_PN))) ) ) | l -treebank
|
||||
gt UseRCl (TTAnt TPast ASimul) ? (RelSlash IdRP ( SlashVS (MassNP (UseN baby_N)) know_VS ( UseSlash (TTAnt TCond AAnter) ? (SlashVP (UsePN john_PN) (Slash3V3 talk_V3 (UsePN paris_PN))) ) ) ) | l -treebank
|
||||
gt RelCN (UseN house_N) (UseRCl (TTAnt TPast ASimul) ? (RelSlash IdRP ( SlashVS (MassNP (UseN baby_N)) know_VS ( UseSlash (TTAnt TCond AAnter) ? (SlashVP (UsePN john_PN) (Slash3V3 talk_V3 (UsePN paris_PN))) ) ) ) )| l -treebank
|
||||
gt RelCN (UseN woman_N) (UseRCl (TTAnt TPast ASimul) ? (RelSlash IdRP ( SlashVS (MassNP (UseN baby_N)) know_VS ( UseSlash (TTAnt TCond AAnter) ? (SlashVP (UsePN john_PN) (Slash3V3 talk_V3 (UsePN paris_PN))) ) ) ) )| l -treebank
|
||||
gt UseCl (TTAnt TPres AAnter) PPos (ExistNP everything_NP) | l -treebank
|
||||
gt SSubjS (UseCl (TTAnt TPres AAnter) PPos (ExistNP everything_NP)) because_Subj (UseCl (TTAnt TPres AAnter) PPos (ExistNP everything_NP)) | l -treebank
|
||||
gt UseQCl (TTAnt TPres ASimul) PPos (QuestSlash whatSg_IP (AdvSlash (SlashVP (UsePN john_PN) (VPSlashPrep (UseV walk_V) for_Prep)) here_Adv ) ) | l -treebank
|
||||
|
||||
gt ImpVP (AdvVP (AdVVP always_AdV (SelfAdvVP hungry_VP)) (weekdayNextAdv friday_Weekday)) |l -treebank
|
||||
|
||||
gt PredSCVP (EmbedQS (UseQCl (TTAnt TCond AAnter) PNeg (QuestIAdv (AdvIAdv how8much_IAdv everywhere_Adv) (ExistNP nobody_NP)))) hungry_VP | l -treebank
|
||||
gt RelCl (PredSCVP (EmbedQS (UseQCl (TTAnt TCond AAnter) PNeg (QuestIAdv (AdvIAdv how8much_IAdv everywhere_Adv) (ExistNP nobody_NP)))) hungry_VP) | l -treebank
|
||||
|
||||
gt RelCl (PredSCVP (EmbedQS (UseQCl (TTAnt TCond AAnter) PNeg (QuestIAdv (AdvIAdv how8much_IAdv everywhere_Adv) (ExistNP nobody_NP)))) hungry_VP) | l -treebank
|
||||
gt UseRCl (TTAnt TPres ASimul) PPos (RelCl (PredSCVP (EmbedQS (UseQCl (TTAnt TCond AAnter) PNeg (QuestIAdv (AdvIAdv how8much_IAdv everywhere_Adv) (ExistNP nobody_NP)))) hungry_VP) ) | l -treebank
|
||||
gt RelS (UseCl (TTAnt TPres ASimul) PNeg (GenericCl scared_VP)) (UseRCl (TTAnt TPres ASimul) PPos (RelCl (PredSCVP (EmbedQS (UseQCl (TTAnt TCond AAnter) PNeg (QuestIAdv (AdvIAdv how8much_IAdv everywhere_Adv) (ExistNP nobody_NP)))) hungry_VP) )) | l -treebank
|
||||
|
||||
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 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 ? (PassV2 squeeze_V2) ) ) | l -treebank
|
||||
gt ComplVS hope_VS ( UseCl (TTAnt ? AAnter) ? (have_name_Cl (UsePron he_Pron) (UsePN john_PN)) ) | l -treebank
|
||||
gt UseCl (TTAnt TPast ASimul) PPos (ImpersCl (ComplSlash (VPSlashPrep ill_VP possess_Prep) (UsePron we_Pron))) | l -treebank
|
||||
|
||||
gt UseQCl (TTAnt ? ASimul) PPos (what_name_QCl (UsePron youSg_Pron)) | l -treebank
|
||||
|
||||
gt UseA2 easy_A2V | l -treebank
|
||||
gt SentAP (UseA2 easy_A2V) ( EmbedVP (ComplSlash (VPSlashPrep hungry_VP possess_Prep) (UsePron we_Pron)) ) | l -treebank
|
||||
gt ComplVA become_VA ( SentAP (UseA2 easy_A2V) ( EmbedVP (ComplSlash (VPSlashPrep (UseV fall_V) possess_Prep) (UsePron we_Pron)) )) | l -treebank
|
||||
|
||||
gt EmbedVP ( UseV ? ) | l -treebank
|
||||
gt SentCN (UseN apple_N) (EmbedVP ( UseV fall_V ) ) | l -treebank
|
||||
gt MassNP ( SentCN (UseN apple_N) (EmbedVP (UseV fall_V)) ) | l -treebank
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (SlashV2a learn_V2) (DetCN (DetQuant DefArt NumSg) (SentCN (UseN apple_N) (EmbedVP (ProgrVP (UseV fall_V))))))) |l -treebank
|
||||
|
||||
gt UseCl (TTAnt TPres ASimul) ? (PredVP (UsePron he_Pron) (ComplVQ know_VQ (UseQCl (TTAnt TPres ASimul) ? (QuestCl (PredVP (DetCN (DetQuant DefArt NumSg) (UseN apple_N)) (UseV fall_V)))))) | l -treebank
|
||||
gt UseCl (TTAnt TPres ASimul) ? (PredVP (UsePron he_Pron) (ComplVQ know_VQ (UseQCl (TTAnt ? ASimul) ? (QuestCl (PredVP (DetCN (DetQuant DefArt NumSg) (UseN apple_N)) (AdVVP always_AdV (UseV fall_V))))))) | l -treebank
|
||||
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (PredVP (AdvNP (UsePron he_Pron) here_Adv) (UseV fall_V)) | l -treebank
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (AdvVP (UseV fall_V) here_Adv)) | l -treebank
|
||||
gt UttS (UseCl (TTAnt ? ASimul) ? (PredVP (UsePron he_Pron) (ComplVV want_VV (UseV fall_V)))) | l -treebank
|
||||
gt UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (UsePron he_Pron) (ComplSlash (VPSlashPrep (ComplSlash (VPSlashPrep (UseV sit_V) possess_Prep) (UsePron she_Pron)) part_Prep) (DetCN (DetQuant DefArt NumPl) (UseN window_N))))) | l -treebank
|
||||
gt UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (UsePron he_Pron) (ComplSlash (SlashV2a wait_V2) (MassNP (PartNP (AdvCN (UseN car_N) (PrepNP possess_Prep (UsePron she_Pron))) (DetCN (DetQuant DefArt NumPl) (UseN window_N))))))) | l -treebank
|
||||
gt UttS (UseCl (TTAnt ? AAnter) ? (PredVP (UsePron he_Pron) (ComplSlash (VPSlashPrep (ComplSlash (VPSlashPrep (ComplSlash (SlashV2a count_V2) (DetCN (DetQuant IndefArt NumPl) (UseN car_N))) possess_Prep) (DetNP (DetQuant (PossPron she_Pron) NumPl))) part_Prep) (DetCN (DetQuant IndefArt NumPl) (UseN window_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)))))))
|
||||
|
||||
gt TFullStop (PhrUtt NoPConj (UttImpSg ? (ImpVP (ComplSlash (SlashV2a do_V2) (MassNP (UseN apple_N))))) NoVoc) TEmpty |l -treebank
|
||||
gt TQuestMark (PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestIAdv how_IAdv (ImpersCl (ComplSlash (SlashV2a do_V2) (MassNP (UseN car_N))))))) NoVoc) TEmpty |l -treebank
|
||||
gt TExclMark (PhrUtt NoPConj (UttImpSg ?2 (ImpVP (ComplSlash (SlashV2a do_V2) (MassNP (UseN car_N))))) (VocNP (UsePN john_PN))) TEmpty | l -treebank
|
||||
gt TQuestMark (PhrUtt NoPConj (UttIP (IdetCN how8many_IDet (UseN apple_N))) NoVoc) TEmpty | l -treebank
|
||||
gt TQuestMark (PhrUtt NoPConj (UttIP (IdetCN how8many_IDet (AdvCN (UseN apple_N) (PrepNP possess_Prep (UsePN john_PN))))) NoVoc) TEmpty | l -treebank
|
||||
gt TQuestMark (PhrUtt NoPConj (UttQS (UseQCl (TTAnt TFut AAnter) PPos (QuestIAdv how8much_IAdv (ImpersCl (AdvVP UseCopula (PrepNP part_Prep (DetCN (DetQuant IndefArt NumPl) (UseN apple_N)))))))) NoVoc) TEmpty |l -treebank
|
||||
gt TQuestMark (PhrUtt NoPConj (UttQS (UseQCl (TTAnt ? AAnter) ? (QuestIAdv how8much_IAdv (ImpersCl (AdvVP (AdvVP UseCopula (PrepNP part_Prep (DetCN (DetQuant IndefArt NumPl) (UseN apple_N)))) (PrepNP possess_Prep (UsePN john_PN))))))) NoVoc) TEmpty | l -treebank
|
||||
gt TQuestMark (PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestVP whatSg_IP (AdvVP (UseV fly_V) here_Adv)))) NoVoc) TEmpty |l -treebank
|
||||
gt TQuestMark (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (SelfAdVVP (UseV fly_V))))) NoVoc) TEmpty |l -treebank
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (DetCN (DetQuant DefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))))))) (UseN apple_N)) (UseV fall_V)))) NoVoc) TEmpty |l -treebank
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (DetCN (DetQuant DefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n2)))))))) (UseN bird_N)) (ComplSlash (SlashV2a love_V2) (UsePN john_PN))))) NoVoc) TEmpty | l -treebank
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (PredetNP all_Predet (DetCN (DetQuant IndefArt NumPl) (UseN bird_N))) (ComplSlash (SlashV2a love_V2) (UsePN john_PN))))) NoVoc) TEmpty | l -treebank
|
||||
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 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
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPast AAnter) PPos (PredVP (RelNP (MassNP (bottle_of_CN (MassNP (UseN beer_N)))) (UseRCl (TTAnt TPast AAnter) PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a drink_V2))))) (AdvVP (UseV fall_V) here_Adv)))) NoVoc) TEmpty |l -treebank
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron it_Pron) (ReflVP (SlashV2a teach_V2))))) NoVoc) TEmpty |l -treebank
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) ? (PredVP (UsePron ?) (SelfAdvVP (ReflVP (SlashV2a learn_V2)))))) NoVoc) TEmpty |l -treebank
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TFut ASimul) ? (PredVP (UsePron he_Pron) (AdvVP (PassV2 learn_V2) (weekdayPunctualAdv ?))))) NoVoc) TEmpty |l -treebank
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TFut ASimul) ? (PredVP (UsePron he_Pron) (AdvVP (PassV2 learn_V2) (weekdayNextAdv ?))))) NoVoc) TEmpty |l -treebank
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) ? (PredVP (UsePron he_Pron) (AdvVP (PassV2 learn_V2) (weekdayLastAdv ?))))) NoVoc) TEmpty |l -treebank
|
||||
gt TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TFut AAnter) PPos (PredVP (UsePron ?) (AdvVP (PassV2 teach_V2) (yearAdv (intYear 2024)))))) NoVoc) TEmpty |l -treebank
|
||||
|
||||
gt UseComp (CompAdv here_Adv) | l -treebank
|
||||
gt PredSCVP (EmbedVP (UseV think_V)) thirsty_VP | l -treebank
|
||||
|
||||
-- these below sound unnatural
|
||||
|
||||
gt QuestCl ( PredSCVP (EmbedVP (UseV play_V)) thirsty_VP ) | l -treebank
|
||||
gt UseQCl ? ? ( QuestCl (PredSCVP (EmbedVP (UseV play_V)) thirsty_VP) ) | l -treebank
|
||||
gt UseQCl (TTAnt TCond AAnter) ? (QuestCl (PredSCVP (EmbedVP (UseV play_V)) thirsty_VP)) | l -treebank
|
||||
gt UttQS ( UseQCl (TTAnt TCond AAnter) ? (QuestCl (PredSCVP (EmbedVP (UseV play_V)) thirsty_VP)) ) | l -treebank
|
||||
gt ComplVQ know_VQ ( UseQCl (TTAnt TCond AAnter) ? (QuestCl (PredSCVP (EmbedVP (UseV play_V)) thirsty_VP)) ) | l -treebank
|
||||
|
||||
gt EmbedVP (ComplSlash (VPSlashPrep hungry_VP possess_Prep) (UsePron we_Pron)) | l -treebank
|
||||
gt SentCN (UseN apple_N) (EmbedVP (ComplSlash (VPSlashPrep hungry_VP possess_Prep) (UsePron we_Pron))) | l -treebank
|
||||
gt PredSCVP (EmbedVP (ComplSlash (VPSlashPrep hungry_VP possess_Prep) (UsePron we_Pron))) ( PassV2 count_V2 ) | l -treebank
|
||||
gt UseQCl ? ? ( QuestCl (PredSCVP (EmbedVP (ComplSlash (VPSlashPrep hungry_VP possess_Prep) (UsePron we_Pron))) ( PassV2 count_V2 )) ) | l -treebank
|
||||
|
||||
|
||||
gt PredVP (somebody_NP) (ComplVA become_VA ( SentAP (UseA2 easy_A2V) ( EmbedVP (ComplSlash (VPSlashPrep (UseV fall_V) possess_Prep) (UsePron we_Pron)) ))) |l -treebank
|
||||
gt UseCl ? ? (PredVP (somebody_NP) (ComplVA become_VA ( SentAP (UseA2 easy_A2V) ( EmbedVP (ComplSlash (VPSlashPrep (UseV fall_V) possess_Prep) (UsePron we_Pron)) ))) )|l -treebank
|
||||
|
||||
gt PredSCVP (EmbedVP (UseV play_V)) (UseComp (CompAP (PositA clean_A)) ) | l -treebank
|
||||
gt UseCl ? ? ( PredSCVP (EmbedVP (UseV play_V)) (UseComp (CompAP (PositA clean_A)) ) ) |l -treebank
|
||||
|
||||
gt UseCl (TTAnt TPres ASimul) PPos (PredSCVP (EmbedVP (UseV play_V)) (UseComp (CompCN (AdjCN (PositA clean_A) (UseN war_N))))) | l -treebank
|
||||
|
||||
|
||||
@@ -1,22 +1,49 @@
|
||||
# Some problematic places
|
||||
# Some problematic situations
|
||||
|
||||
## Possessive pronouns over a list/conjunction of CNs
|
||||
|
||||
With what should be correct approach, produces:
|
||||
|
||||
> l DetCN (DetQuant (PossPron i_Pron) NumSg) (ConjCN and_Conj (ConsCN (UseN grammar_N) (BaseCN (UseN apple_N) (UseN flower_N))))
|
||||
мой грамматика , яблоко и цветок
|
||||
|
||||
Correct text requires AdvNP tricks. Resulting trees are quite artificial, one example:
|
||||
|
||||
> l ConjNP and_Conj (ConsNP (AdvNP (DetNP (DetQuant (PossPron i_Pron) NumPl)) (PrepNP obj_no_Prep (DetCN (DetQuant DefArt NumSg) (UseN grammar_N)))) (BaseNP (MassNP (UseN apple_N)) (MassNP (UseN flower_N))))
|
||||
мои грамматика , яблоко и цветок
|
||||
|
||||
Proper resolution? It's hard to go through Dets and Quants (and will make them more complex). Probably, correct solution would be to make the same as if possessive pronoun is an adjective:
|
||||
|
||||
> l MassNP (AdjCN (PositA red_A) (ConjCN and_Conj (ConsCN (UseN grammar_N) (BaseCN (UseN apple_N) (UseN flower_N)))))
|
||||
красные грамматика , яблоко и цветок
|
||||
|
||||
This would require some Russian-specific (though quite straightforwward) Pron -> AP addition.
|
||||
|
||||
## Not clear
|
||||
|
||||
> l UttS (AdvS (AdAdv quite_Adv (ComparAdvAdj less_CAdv narrow_A everything_NP)) (UseCl (TTAnt TPres ASimul) PNeg (ExistNP something_NP)))
|
||||
довольно менее узко , чем всё что &+ -то не существует
|
||||
|
||||
> l UseCl (TTAnt TPres AAnter) PNeg (CleftNP (PredetNP not_Predet (CountNP somePl_Det everybody_NP)) (UseRCl (TTAnt TFut AAnter) PNeg (RelVP IdRP ready_VP)))
|
||||
это не некоторые из всех не , не которые будут готовыми
|
||||
|
||||
> l UseCl (TTAnt TPres AAnter) PNeg (CleftNP (PredetNP only_Predet (CountNP somePl_Det everybody_NP)) (UseRCl (TTAnt TFut AAnter) PNeg (RelVP IdRP ready_VP)))
|
||||
это единственные некоторые из всех не , не которые будут готовыми
|
||||
## Prepositions change depending on next word
|
||||
|
||||
> l PrepNP above_Prep (UsePron i_Pron)
|
||||
над мной
|
||||
(should be: надо мной)
|
||||
|
||||
- verb zv index does not support "*", it figures forms out from 3 given examples instead. Most of the time.
|
||||
## Note
|
||||
|
||||
Verb zv index does not support "*", it figures forms out from 3 given examples instead. Most of the time.
|
||||
|
||||
## Past particle limited to short form, not always fit
|
||||
|
||||
AllRusAbs: UttImpPol PPos (ImpVP (ComplSlash (Slash2V3 add_V3 everybody_NP) (PPartNP somebody_NP drink_V2)))
|
||||
AllRus: складываем &+ те всех в кого &+ -то пит
|
||||
|
||||
Inherent number for nouns. eg, for geonames or pluralia tantum.
|
||||
|
||||
gt UttS (UseCl (TTAnt ? AAnter) ? (PredVP (DetCN (DetQuant IndefArt NumSg) (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))))))) |l -treebank
|
||||
AllRus: червь не сиде &+ ло бы в его красном яблоке
|
||||
|
||||
AllRusAbs: TQuestMark (PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres AAnter) PNeg (QuestIAdv how8much_IAdv (ImpersCl (AdvVP (AdvVP UseCopula (PrepNP part_Prep (DetCN (DetQuant IndefArt NumPl) (UseN apple_N)))) (PrepNP possess_Prep (UsePN john_PN))))))) NoVoc) TEmpty
|
||||
AllRus: сколько не является яблок у Ивана ?
|
||||
AllRusAbs: TQuestMark (PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres AAnter) PPos (QuestIAdv how8much_IAdv (ImpersCl (AdvVP (AdvVP UseCopula (PrepNP part_Prep (DetCN (DetQuant IndefArt NumPl) (UseN apple_N)))) (PrepNP possess_Prep (UsePN john_PN))))))) NoVoc) TEmpty
|
||||
AllRus: сколько является яблок у Ивана ?
|
||||
|
||||
Reference in New Issue
Block a user