polish_strings.py 13.9 KB
POSITION_PROP = {
    'subj'            : 'podmiot',
    'obj'             : 'dopełnienie dopuszczające stronę bierną',
    'head'            : 'rzeczownikowy nadrzędnik składniowy frazy przymiotnikowej',
    'controller'      : 'pozycja kontrolująca podmiot bezokolicznika lub jego odpowiednik (podnoszenie wykonawcy czynności)',
    'controllee'      : 'pozycja podlegająca kontroli czynnościowej (dziedzicząca wykonawcę czynności)',
    'pred_controller' : 'pozycja kontrolująca pozycję predykatywną (posiadacz własności)',
    'pred_controllee' : 'pozycja predykatywna kontrolowana przez inną pozycję',
}

# there’s an NP class in the importer
NP_ = ('{} {} w {{case}}', 'fraza', 'rzeczownikowa')
NUMP = ('{} {} w {{case}}', 'fraza', 'liczebnikowa')
ADJP = ('{} {} w {{case}}', 'fraza', 'przymiotnikowa')
# TODO inne opisy?
PPASP = ('{} {} w {{case}}', 'fraza', 'imiesłowowa')
PACTP = ('{} {} w {{case}}', 'fraza', 'imiesłowowa')
CASE_FOR_NP = {
    'nom'  : 'mianowniku',
    'gen'  : 'dopełniaczu',
    'dat'  : 'celowniku',
    'acc'  : 'bierniku',
    'inst' : 'narzędniku',
    'str_subj'  : 'przypadku strukturalnym (mianownik)',
    'str'  : 'przypadku strukturalnym (biernik przechodzący na dopełniacz w konstrukcjach zanegowanych)',
    'pred' : 'przypadku predykatywnym (narzędnik bądź przypadek narzucany przez element kontrolujący na pozycji predykatywnej)',
    'agr'  : 'przypadku uzgadniającym (z nadrzędnikiem rzeczownikowym w wypadku apozycji lub podrzędnikiem przymiotnikowym)',
    'part' : 'przypadku służącym do opisu rozchwiania pomiędzy biernikiem a dopełniaczem charakterystycznego dla rzeczowników partytywnych (podzielnych, np. <i>chleb</i>) oraz niepoliczalnych (np. <i>woda</i>). Np. <i>zjeść chleb/chleba</i>, <i>nalać wodę/wody</i>',
}
CASE_FOR_ADJP = { case : desc for case, desc in CASE_FOR_NP.items() }
CASE_FOR_ADJP['agr'] = 'przypadku uzgadniającym z nadrzędnikiem rzeczownikowym'

PREPNP = ('{} przyimkowo-{} z przyimkiem <i>{{prep}}</i> wymagającym {{case}}', 'fraza', 'rzeczownikowa')
PREPGERP = ('{} przyimkowo-{} z przyimkiem <i>{{prep}}</i> wymagającym {{case}}', 'fraza', 'odsłownikowa')
PREPNUMP = ('{} przyimkowo-{} z przyimkiem <i>{{prep}}</i> wymagającym {{case}}', 'fraza', 'liczebnikowa')
PREPADJP = ('{} przyimkowo-{} z przyimkiem <i>{{prep}}</i> wymagającym {{case}}', 'fraza', 'przymiotnikowa')
PREPPPASP = ('{} przyimkowo-{} z przyimkiem <i>{{prep}}</i> wymagającym {{case}}', 'fraza', 'imiesłowowa')
# TODO dowolna przyimkowa czy przyim-rzecz?
COMPREPNP = ('{} przyimkowo-{} z przyimkiem złożonym <i>{{prep}}</i>', 'fraza', 'rzeczownikowa')
CASE_FOR_PREPNP = {
    'nom'   : 'mianownika',
    'gen'   : 'dopełniacza',
    'dat'   : 'celownika',
    'acc'   : 'biernika',
    'inst'  : 'narzędnika',
    'loc'   : 'miejscownika',
    # TODO przeredagowałam: Przypadek strukturalny występuje tez z przyimkami jak (prepnp(jak, str)) oraz jako (prepnp(jako,str)) będącymi rodzajem konstrukcji porównawczych. Frazy takie występują zawsze na pozycji predykatywnej podlegającej kontroli i uzgadniają przypadek strukturalny z frazą kontrolującą.
    'str'   : 'przypadka strukturalnego występującego z przyimkami <i>jak</i> oraz <i>jako</i> będącymi rodzajem konstrukcji porównawczych (frazy takie występują zawsze na pozycji predykatywnej podlegającej kontroli i uzgadniają przypadek strukturalny z frazą kontrolującą)',
    # TODO nie było w dokumentacji, występuje np. w prepadjp(po,postp)
    'postp' : 'celownika poprzyimkowego',
}

INFP = ('{{aspect}} {} {}', 'fraza', 'bezokolicznikowa')
ASPECT = {
    'imperf' : ('{}', 'niedokonana'),
    'perf'   : ('{}', 'dokonana'),
    '_'      : ('{}', 'dowolna'),
}

# there’s a CP class in the importer
# TODO variants for realisations/lexes (no “odpowiedni zaimek...”)
CP_ = ('{} {} {{typ}}', 'fraza', 'zdaniowa')
CP_TYPE = {
    'gdy'   : ('{} przez spójnik podrzędny <i>gdy</i> oraz <i>gdyby</i> w trybie przypuszczającym', 'wprowadzana'),
    'żeby2' : ('{} przez spójnik podrzędny <i>że</i> oraz dodatkowo <i>żeby</i> w konstrukcjach zanegowanych','wprowadzana'),
    'int'   : ('pytajno-{} {} przez odpowiedni zaimek pytajny', 'zależna', 'wprowadzana'),
    'rel'   : ('{} {} przez odpowiedni zaimek względny', 'względna', 'wprowadzana'),
    'int_r' : ('pytajno-{} {} przez <i>{{conj}}</i>', 'zależna', 'wprowadzana'),
    'rel_r' : ('{} {} przez <i>{{conj}}</i>', 'względna', 'wprowadzana'),
}
# TODO(?) this is a catch-all, should we check that the conj is valid?
CP_CONJ =  ('{} przez spójnik podrzędny <i>{{conj}}</i>', 'wprowadzana')

# there’s an NCP class in the importer
NCP_ = ('{} {} {{typ}}', 'fraza', 'zdaniowa')
TO = {
    'nom'  : 'to',
    'gen'  : 'tego',
    'dat'  : 'temu',
    'acc'  : 'to',
    'inst' : 'tym',
    'loc'  : 'tym',
    'str'  : 'to',
    'pred' : 'tym',
    'agr'  : 'to',
}

NCP_TYPE = {
    'gdy'   : ('{} przez <i>{{to}}, gdy</i> bądź <i>{{to}}, gdyby</i> w trybie przypuszczającym', 'wprowadzana'),
    'żeby2' : ('{} przez <i>{{to}}, że</i> bądź dodatkowo <i>{{to}}, żeby</i> w konstrukcjach zanegowanych', 'wprowadzana'),
    'int'   : ('pytajno-{} {} przez <i>{{to}}, co (czy, ile, kto)</i> lub dowolny inny zaimek pytajny', 'zależna', 'wprowadzana'),
    'rel'   : ('{} {} przez <i>{{to}}, co (gdzie, kto)</i> lub dowolny inny zaimek względny', 'względna', 'wprowadzana'),
    'int_r' : ('pytajno-{} {} przez <i>{{to}}, {{conj}}</i>', 'zależna', 'wprowadzana'),
    'rel_r' : ('{} {} przez <i>{{to}}, {{conj}}</i>', 'względna', 'wprowadzana'),
}
NCP_CONJ = ('{} przez </i>{{to}}, {{conj}}</i>', 'wprowadzana')

PREPNCP_TYPE = {
    'gdy'   : ('{} przez <i>{{prep}} {{to}}, gdy</i> bądź <i>{{prep}} {{to}}, gdyby</i> w trybie przypuszczającym', 'wprowadzana'),
    'żeby2' : ('{} przez <i>{{prep}} {{to}}, że</i> bądź dodatkowo <i>{{prep}} {{to}}, żeby</i> w konstrukcjach zanegowanych', 'wprowadzana'),
    'int'   : ('pytajno-{} {} przez <i>{{prep}} {{to}}, co (czy, ile, kto)</i> lub dowolny inny zaimek pytajny', 'zależna', 'wprowadzana'),
    'rel'   : ('{} {} przez <i>{{prep}} {{to}}, co (gdzie, kto)</i> lub dowolny inny zaimek względny', 'względna', 'wprowadzana'),
    'int_r' : ('pytajno-{} {} przez <i>{{prep}} {{to}}, {{conj}}</i>', 'zależna', 'wprowadzana'),
    'rel_r' : ('{} {} przez <i>{{prep}} {{to}}, {{conj}}</i>', 'względna', 'wprowadzana'),
}
PREPNCP_CONJ = ('{} przez <i>{{prep}} {{to}}, {{conj}}</i>', 'wprowadzana')

# there’s an XP class in the importer
# description depends on whether there are specified realisations
XP_ = {
    True  : ('{}', 'fraza'),
    False : ('{} {}', 'dowolna', 'fraza'),
}

ADVP = ('{} {}', 'fraza', 'przysłówkowa')

XP_SEM = {
    'locat' : ('{} (miejsce)', 'lokatywna'),
    'abl'   : ('{} (miejsce początkowe)', 'ablatywna'),
    'adl'   : ('{} (miejsce końcowe)', 'adlatywna'),
    'perl'  : ('{} (trasa)', 'perlatywna'),
    'temp'  : ('{} (czasu)', 'temporalna'),
    'dur'   : ('{} (trwania)', 'duratywna'),
    'mod'   : ('sposobu',),
    'caus'  : ('{} (przyczyny)', 'kauzatywna'),
    'dest'  : ('{} (celu)', 'destynacyjna'),
    'instr' : ('{} narzędzie', 'opisująca'),
}

ADVP_PRON = ('wyłącznie {} {} <i>jak</i>, <i>tak</i>', 'zaimki', 'przysłówkowe')

ADVP_MISC = ('{} {} ({} z centrum przysłówkowym oraz {} przyimkowo-{} typu <i>na pewno</i>, <i>bez mała</i>)', 'fraza', 'przysłówkowa', 'fraza', 'konstrukcje', 'przysłówkowe')

COMPAR = ('{} {} {} przez <i>{{prep}}</i>', 'fraza', 'porównawcza', 'wprowadzana')

NONCH = ('{} {}, czyli {} {} rzeczownikowa w przypadku strukturalnym, {} wyłącznie przez zaimki <i>co</i>, <i>coś</i>, <i>nic</i>, <i>to</i> oraz nieokreślone frazy liczebnikowe (<i>dużo</i>, <i>niewiele</i> itp.) bez podrzędnika rzeczownikowego', 'fraza', 'niechromatyczna', 'specyficzna', 'fraza', 'realizowana')

# there’s an OR class in the importer
OR_ = ('{} {}', 'mowa', 'niezależna')

REFL = ('{} <i>się</i> {} użycie zwrotne czasownika (<i>sam siebie</i>)', 'partykuła', 'realizująca')

RECIP = ('{} <i>się</i> {} użycie wzajemnościowe czasownika (<i>siebie nawzajem</i>)', 'partykuła', 'realizująca')

# there’s an E class in the importer
E_ = ('{} czasownika wymagającego bezokolicznika, którego własności są tożsame z narzucanymi przez czasownik w bezokoliczniku, w tym brak podmiotu', 'podmiot')

POSSP = ('{} {} {} na pytanie <i>czyj?</i>, np. <i>mój,</i> <i>pański</i>, <i>Piotra</i>', 'fraza', 'posesywna', 'odpowiadająca')

# TODO przeredagowałam: fraza przyimkowo-nominalna z przyimkiem po stosowana w konstrukcjach dystrybutywnych. Charakteryzuje się tym, że typowo przyimek po wymaga miejscownika (prepnp(po,loc) – dać każdemu po jabłku), jednak w wypadku fraz liczebnikowych występuje tam biernik (prepnp(po,acc) – dać każdemu po dwa jabłka).
DISTRP = ('{} przyimkowo-{} z przyimkiem <i>po</i> {} w konstrukcjach dystrybutywnych; typowo przyimek <i>po</i> wymaga miejscownika (<i>dać każdemu po jabłku</i>), jednak w wypadku fraz liczebnikowych występuje biernik (<i>dać każdemu po dwa jabłka</i>)', 'fraza', 'rzeczownikowa', 'stosowana')

QUB = ('{}', 'partykuła')

XP_SEM_PHRASEO = {
    'locat' : '‹gdzieś›',
    'abl'   : '‹skądś›',
    'adl'   : '‹dokądś›',
    'perl'  : '‹którędyś›',
    'temp'  : '‹kiedyś›',
    'dur'   : '‹przez jakiś czas›',
    'mod'   : '‹w jakiś sposób›',
    'caus'  : '‹z jakiegoś powodu›',
    'dest'  : '‹w jakimś celu›',
    'instr' : '‹za pomocą czesgoś›',
    # TODO for advp
    'misc'  : 'TODO',
}

INFLECTED = {
    'ablatywna'        : { 'nom' : 'ablatywna',        'gen' : 'ablatywnej',        'inst' : 'ablatywną' },
    'adlatywna'        : { 'nom' : 'adlatywna',        'gen' : 'adlatywnej',        'inst' : 'adlatywną' },
    'bezokolicznikowa' : { 'nom' : 'bezokolicznikowa', 'gen' : 'bezokolicznikowej', 'inst' : 'bezokolicznikową' },
    'destynacyjna'     : { 'nom' : 'destynacyjna',     'gen' : 'destynacyjnej',     'inst' : 'destynacyjną' },
    'dokonana'         : { 'nom' : 'dokonana',         'gen' : 'dokonanej',         'inst' : 'dokonaną' },
    'dowolna'          : { 'nom' : 'dowolna',          'gen' : 'dowolnej',          'inst' : 'dowolną' },
    'duratywna'        : { 'nom' : 'duratywna',        'gen' : 'duratywnej',        'inst' : 'duratywną' },
    'fraza'            : { 'nom' : 'fraza',            'gen' : 'frazy',             'inst' : 'frazą' },
    'imiesłowowa'      : { 'nom' : 'imiesłowowa',      'gen' : 'imiesłowowej',      'inst' : 'imiesłowową' },
    'kauzatywna'       : { 'nom' : 'kauzatywna',       'gen' : 'kauzatywnej',       'inst' : 'kauzatywną' },
    'konstrukcje'      : { 'nom' : 'konstrukcje',      'gen' : 'konstrukcyj',       'inst' : 'konstrukcjami' },
    'liczebnikowa'     : { 'nom' : 'liczebnikowa',     'gen' : 'liczebnikowej',     'inst' : 'liczebnikową' },
    'lokatywna'        : { 'nom' : 'lokatywna',        'gen' : 'lokatywnej',        'inst' : 'lokatywną' },
    'mowa'             : { 'nom' : 'mowa',             'gen' : 'mowy',              'inst' : 'mową' },
    'niechromatyczna'  : { 'nom' : 'niechromatyczna',  'gen' : 'niechromatycznej',  'inst' : 'niechromatyczną' },
    'niedokonana'      : { 'nom' : 'niedokonana',      'gen' : 'niedokonanej',      'inst' : 'niedokonaną' },
    'niezależna'       : { 'nom' : 'niezależna',       'gen' : 'niezależnej',       'inst' : 'niezależną' },
    'odpowiadająca'    : { 'nom' : 'odpowiadająca',    'gen' : 'odpowiadającej',    'inst' : 'odpowiadającą' },
    'odsłownikowa'     : { 'nom' : 'odsłownikowa',     'gen' : 'odsłownikowej',     'inst' : 'odsłownikową' },
    'opisująca'        : { 'nom' : 'opisująca',        'gen' : 'opisującej',        'inst' : 'opisującą' },
    'partykuła'        : { 'nom' : 'partykuła',        'gen' : 'partykuły',         'inst' : 'partykułą' },
    'perlatywna'       : { 'nom' : 'perlatywna',       'gen' : 'perlatywnej',       'inst' : 'perlatywną' },
    'podmiot'          : { 'nom' : 'podmiot',          'gen' : 'podmiotu',          'inst' : 'podmiotem' },
    'posesywna'        : { 'nom' : 'posesywna',        'gen' : 'posesywnej',        'inst' : 'posesywną' },
    'porównawcza'      : { 'nom' : 'porównawcza',      'gen' : 'porównawczej',      'inst' : 'porównawczą' },
    'przymiotnikowa'   : { 'nom' : 'przymiotnikowa',   'gen' : 'przymiotnikowej',   'inst' : 'przymiotnikową' },
    'przysłówkowa'     : { 'nom' : 'przysłówkowa',     'gen' : 'przysłówkowej',     'inst' : 'przysłówkową' },
    'przysłówkowe'     : { 'nom' : 'przysłówkowe',     'gen' : 'przysłówkwoych',    'inst' : 'przysłówkowymi' },
    'realizowana'      : { 'nom' : 'realizowana',      'gen' : 'realizowanej',      'inst' : 'realizowaną' },
    'realizująca'      : { 'nom' : 'realizująca',      'gen' : 'realizującej',      'inst' : 'realizującą' },
    'rzeczownikowa'    : { 'nom' : 'rzeczownikowa',    'gen' : 'rzeczownikowej',    'inst' : 'rzeczownikową' },
    'specyficzna'      : { 'nom' : 'specyficzna',      'gen' : 'specyficznej',      'inst' : 'specyficzną' },
    'stosowana'        : { 'nom' : 'stosowana',        'gen' : 'stosowanej',        'inst' : 'stosowaną' },
    'temporalna'       : { 'nom' : 'temporalna',       'gen' : 'temporalnej',       'inst' : 'temporalną' },
    'wprowadzana'      : { 'nom' : 'wprowadzana',      'gen' : 'wprowadzanej',      'inst' : 'wprowadzaną' },
    'względna'         : { 'nom' : 'względna',         'gen' : 'względnej',         'inst' : 'względną' },
    'zaimki'           : { 'nom' : 'zaimki',           'gen' : 'zaimków',           'inst' : 'zaimkami' },
    'zależna'          : { 'nom' : 'zależna',          'gen' : 'zależnej',          'inst' : 'zależną' },
    'zdaniowa'         : { 'nom' : 'zdaniowa',         'gen' : 'zdaniowej',         'inst' : 'zdaniową' },
    #''       : { 'nom' : '',       'gen' : '',       'inst' : '' },
}

def make_inflected_string(pattern, case):
    template, words = pattern[0], pattern[1:]
    return template.format(*(INFLECTED[w][case] for w in words))