from rule import Rule # věty # TODO: přesunout většinu konstrukcí za klitiky do cz_verbals # a holt je zatím odlišit přímo neterminálem # (plánuju zavést (VP INFINITIVE), což se bude sloužit jen pro shodu) # (momentálně tedy třeba VP_WITHOUT_SENSE_VERB, VP_WITHOUT_MODAL atd., # abych se vypořádal s případy, kdy plnovýznamové sloveso, resp. modální # už jsou v iniciální pozici) rules = [ # Kočka se napila mléka / Kočce jsme dali mléko. # Že jde o podmět/nepřímý předmět, informují výstupní gramatické kategorie. '(S e g n a m c) → (NP c) (VP e g n a m)', # Do střední Evropy (se rozšíří tlaková výše) '(S e g n a m c) → (PP c) (VP e g n a m)', # Chce/musí to odevzdat zítra. '(S e g n a) → (MODAL m="[^F]") (VP_WITHOUT_MODAL e g n a)', # Bude to odevzdávat až za měsíc. '(S e g n a m=B) → (k=5 lemma="být" e g n a m=B) (VP m=F a=I)', # Bude to muset odevzdat/odevzdávat až za měsíc. '(S e g n a m=B) → (k=5 lemma="být" e g n a m=B) (VP e g n a m=F)', '(S g n) → (k=5 g n) (ADVP)', '(S g n) → (k=5 g n) (NP) (ADVP)', '(S g n) → (k=5 g n) (PP)', # Jeli jsme na dovolenou # Líbí se mi to. '(S a e g m n) → (k=5 a e g m n)', # Líbí se mi to, co jsi napsal. '(S a e g m n) → (k=5 a e g m n) (NP c=1)', # Umožňuje nám stanovit příznivější ceny pro domácí klienty. '(S a e g m n) → (k=5 a e g m n) (VP m=F a=P)', # '(VP g n) → (k=5 g n) (NP c=4)', # kousnul kočku # '(VP g n) → (k=5 g n) (PP c=4)', # kopnul do prdele # '(VP g n) → (k=5 g n m="[IA]") (NP c=4) (PP c="[3467]")', # kopnul kočku do prdele # '(S g n) → (VP g n)', # Chtěli [jsme tam] jít, ale nakonec [jsme si to] rozmysleli. # Chtěl jsem [lyžovat nebo bruslit]. # (INF) → (INF) (k=8) (INF) # (INF) → (k=5 m=F) # (INF) → (k=5) (CLITICS) (NP) # (S) → (MODAL) (CLITICS) (INF) # (NP) → (k=3 x=D) (NP) # (NP) → (k=1) # Za sebou měl medvídka # '(S) → (MODAL) (VP WITHOUT_MODAL)', ] rules = [Rule(rule).insert_token('(CLITICS)', position=1) for rule in rules] rules = [rule.insert_token('(INTER)', before=True, after=True) for rule in rules] rules = [rule.insert_token('(OPT_FULLSTOP)', inside=False, after=True) for rule in rules] rules += [ # # přívlastkové vedlejší věty # # kterého bodla včela („který se smál“ by mohl být druhý případ – se shodou, # ale zatím to asi není potřeba (interpretace se z toho dostane i tak) '(ATTR_CLAUSE g n) → (OPT_COMMA) (lemma="který" g n) (CLITICS) (VP) (OPT_COMMA)', # TODO: a co pád? '(ATTR_CLAUSE g n) → (OPT_COMMA) (word=na) (lemma="který" g n) (VP) (OPT_COMMA)', '(ATTR_CLAUSE) → (OPT_COMMA) (word=co) (CLITICS) (VP m="[^f]") (OPT_COMMA)', # '(ATTR_CLAUSE) → (OPT_COMMA) (ATTR_CLAUSE_COMMA) (OPT_COMMA)', # '(ATTR_CLAUSE_COMMA g n) → (ATTR_CLAUSE_COMMA)', # ?že utekli jsme z hodiny # že jsme utekli z hodiny # '(ATTR_CLAUSE) → (SCONJ) (S_s_inicialni_pozici)', # že ten kluk se ulil z hodiny # '(ATTR_CLAUSE) → (SCONJ) (S_bez_s_inicialni_pozice)', # že se ulil z hodiny # '(S_bez_s_inicialni_pozice) → (CLITICS) (NP)', # '(S_s_inicialni_pozici) → (NP) (CLITICS) (VP)', # # předmětové vedlejší věty # # že/co jsem (to) nevěděl '(OBJ_CLAUSE) → (OPT_COMMA) (word="že|co") (CLITICS) (VP) (OPT_COMMA)', # že maminka se (asi) ztratila '(OBJ_CLAUSE) → (OPT_COMMA) (word="že") (NP) (CLITICS) (VP) (OPT_COMMA)', # kdo to nevěděl # komu jsem to nedal # na koho naléhal ]