def req_animacy(animacy: str = "любой"): if animacy == "любой": return yp.true() elif animacy == "одуш.": return y.or_( y.not_(yp.gram("inan")), yp.gram("anim"), yp.gram("NPRO"), yp.gram("ADJF") ) elif animacy == "неодуш.": return y.or_(yp.gram("inan"), yp.gram("anim"), yp.gram("NPRO"), yp.gram("ADJF")) else: raise ValueError("Incorrect Animacy Type")
def req_reflexive(reflexive_status: str = "?"): def is_reflexive_verb(verb: str): return verb.endswith("ся") or verb.endswith("сь") if reflexive_status == "1": return yp.custom(is_reflexive_verb) if reflexive_status == "0": return y.not_(yp.custom(is_reflexive_verb)) elif reflexive_status == "?": return yp.true() else: raise ValueError("Incorrect reflexive status")
'гидроэлектростанция', 'обсерватория', 'ассоциация', 'агентство недвижимости', 'фирма', 'коллектив', 'правление', 'совет', ] gnc = gnc_relation() ADJF_PREFIX = rule( or_( rule(gram('ADJF').match(gnc)), # международное rule( # историко-просветительское true(), eq('-'), gram('ADJF').match(gnc), ), ), or_(caseless('и'), eq(',')).optional(), ).repeatable() case = case_relation() GENT_GROUP = rule( gram('gent').match(case) ).repeatable().optional() QUOTED = rule( gram('OrganisationType'), gram('QUOTE'),
'стартап', 'нотариальная контора', 'букмекерская контора', 'авиазавод', 'автозавод', 'винзавод', 'подстанция', 'гидроэлектростанция', ]) gnc = gnc_relation() ADJF_PREFIX = rule( or_( rule(gram('ADJF').match(gnc)), # международное rule( # историко-просветительское true(), eq('-'), gram('ADJF').match(gnc), ), ), or_(caseless('и'), eq(',')).optional(), ).repeatable() case = case_relation() GENT_GROUP = rule( gram('gent').match(case) ).repeatable().optional() QUOTED = rule( TYPE, in_(QUOTES),