olski.subset¶
Deklaracja podzbioru: co się w olskim wyprowadza, wypisane produkcjami.
Wykluczenia są dwojakie, bo produkcja rozstrzyga o zdaniu, a nie o formie.
Produkcje mówią, jakie zdanie się wyprowadza,
a czytanie odbiera formie warstwa morfologiczna (olski/segmentacja.py),
zanim produkcja to czytanie zobaczy.
Co gramatyka orzeka o jednym zdaniu, mówi olski/werdykt.py.
Gramatyka buduje się przy imporcie (GRAMMAR),
więc kto pyta o sam lemat, sięga po olski/lematy.py.
Podział na moduły jest tu decyzją i idzie za tym, co dany moduł deklaruje.
olski.subset.słowa trzyma słownictwo, którym produkcje są pisane:
zbiory lematów i terminale, czyli to, co gramatyka bierze od morfologii.
olski.subset.rama trzyma walencję i formy czasownika, które z niej wychodzą.
olski.subset.deklaracja trzyma to, co stoi obok produkcji, a nie w nich:
nazwy ról, rodziny czoła i listy, którymi werdykt schodzi po lesie.
Produkcje same stoją w czterech modułach po gospodarzu —
wypowiedzenie, zdanie, podrzędne i grupa —
a build niżej jest jedynym miejscem, które je składa,
bo kolejność ich wywołań rozstrzyga o kolejności czytań.
Podkreślenie w nazwie znaczy tu prywatne dla pakietu, a nie dla modułu:
poza niego wychodzą same nazwy wyliczone w __all__.
CIĄG_PRZYIMKOWY = 'ciąg_przyimkowy'
module-attribute
¶
CZĄSTKA_ZDANIA = 'cząstka_zdania'
module-attribute
¶
CZŁON_PRZYIMKOWY = 'człon_przyimkowy'
module-attribute
¶
DEKLARACJA = Deklaracja(role=('podmiot', 'dopełnienie', 'orzecznik', 'orzeczenie', ORZECZENIE_RZECZOWNIKOWE, ORZECZNIK_ŁĄCZNIKA, ORZECZENIE_BEZOSOBOWE, OKOLICZNIK_PRZYSŁÓWKOWY, CZĄSTKA_ZDANIA, OKOLICZNIK_NARZĘDNIKOWY, SPÓJNIK, OKOLICZNIK_ZDANIOWY, GRUPA_PYTAJNA, OKOLICZNIK_PYTAJNY, WTRĄCENIE, WTRĄCENIE_MYŚLNIKOWE, ELIPSA, DOPOWIEDZENIE, WYRAŻENIE_PRZYIMKOWE), przyłączane=(WYRAŻENIE_PRZYIMKOWE, OKOLICZNIK_PRZYSŁÓWKOWY, CZĄSTKA_ZDANIA, OKOLICZNIK_NARZĘDNIKOWY, SPÓJNIK, OKOLICZNIK_ZDANIOWY, WTRĄCENIE, WTRĄCENIE_MYŚLNIKOWE, ELIPSA), rozstrzygany=WYRAŻENIE_PRZYIMKOWE, gospodarze=(GRUPA_IMIENNA, 'grupa_przymiotnikowa', 'zdanie_składowe', 'fraza_bezokolicznikowa', FRAZA_BEZOKOLICZNIKOWA_OTWARTA, GRUPA_PYTAJNA, OKOLICZNIK_ZDANIOWY, *(rodzina.rdzeń for rodzina in RODZINY)), współrzędne=(GRUPA_IMIENNA, 'grupa_przymiotnikowa', 'zdanie'), składowe=('zdanie_składowe',), podrzędne=(*(symbol for rodzina in RODZINY for symbol in rodzina.opakowujące), 'zdanie_podrzędne', OKOLICZNIK_ZDANIOWY, WTRĄCENIE, WTRĄCENIE_MYŚLNIKOWE, ELIPSA, DOPOWIEDZENIE), obsada=Obsada(orzeczenia=('orzeczenie', ORZECZENIE_BEZOSOBOWE), podmiot='podmiot', przypadkowe=('dopełnienie',), własna_rama=('fraza_bezokolicznikowa', FRAZA_BEZOKOLICZNIKOWA_OTWARTA)), grupa_imienna=GRUPA_IMIENNA)
module-attribute
¶
GRUPA_PYTAJNA = 'grupa_pytajna'
module-attribute
¶
MIJANE = ('okoliczniki', OKOLICZNIK_PRZYSŁÓWKOWY, 'człon_imienny', 'człon_przymiotnikowy', 'wypełnienia', PARA_WYPEŁNIEŃ, 'zdanie', ELIPSA, WTRĄCENIE_MYŚLNIKOWE, 'zdanie_względne')
module-attribute
¶
NAZWY_SZKOLNE = {'podmiot': 'orzecznik', ORZECZNIK_ŁĄCZNIKA: 'podmiot'}
module-attribute
¶
OKOLICZNIK_NARZĘDNIKOWY = 'okolicznik_narzędnikowy'
module-attribute
¶
OKOLICZNIK_PRZYSŁÓWKOWY = 'okolicznik_przysłówkowy'
module-attribute
¶
OKOLICZNIK_ZDANIOWY = 'okolicznik_zdaniowy'
module-attribute
¶
ORZECZENIE_BEZOSOBOWE = 'orzeczenie_bezosobowe'
module-attribute
¶
ORZECZENIE_RZECZOWNIKOWE = 'orzeczenie_rzeczownikowe'
module-attribute
¶
ORZECZNIK_ŁĄCZNIKA = 'orzecznik_łącznika'
module-attribute
¶
PARA_WYPEŁNIEŃ = 'para_wypełnień'
module-attribute
¶
RODZINY = (Rodzina(rdzeń='rdzeń_względny', modyfikator='wyrażenie_przyimkowe_względne', czoła=('zaimek_względny', 'grupa_imienna_względna'), opakowujące=('zdanie_względne',)), Rodzina(rdzeń='rdzeń_względny_rzeczowny', modyfikator='wyrażenie_przyimkowe_względne_rzeczowne', czoła=('zaimek_względny_rzeczowny',), opakowujące=('zdanie_względne_rzeczowne', 'zdanie_względne_bez_poprzednika')), Rodzina(rdzeń='rdzeń_pytajny', modyfikator='wyrażenie_przyimkowe_pytajne', czoła=(GRUPA_PYTAJNA,), opakowujące=('zdanie_pytajne',)))
module-attribute
¶
WTRĄCENIE = 'wtrącenie'
module-attribute
¶
WTRĄCENIE_MYŚLNIKOWE = 'wtrącenie_myślnikowe'
module-attribute
¶
WYRAŻENIE_PRZYIMKOWE = 'wyrażenie_przyimkowe'
module-attribute
¶
RAMA_BEZ_BIERNIKA = RAMA_DOMYŚLNA - {'acc'}
module-attribute
¶
AGREE = {'case': V('c'), 'number': V('n'), 'gender': V('g')}
module-attribute
¶
BEZ_CZOŁA = 'żadne'
module-attribute
¶
CZĄSTKI = frozenset({'już', 'jeszcze', 'dopiero', 'także', 'również', 'nawet', 'zarazem', 'naprawdę', 'znowu', 'wreszcie', 'ponadto', 'jedynie', 'niemal', 'niespełna', 'zresztą', 'przynajmniej'})
module-attribute
¶
PREDYKATYWY = frozenset({'można', 'trzeba', 'warto', 'wiadomo', 'widać', 'wolno', 'słychać', 'znać'})
module-attribute
¶
PRZECINEK = word('interp', lemma=',')
module-attribute
¶
PRZYSŁÓWEK = word('adv', bez_lematu=PRZYSŁÓWKI_PYTAJNE | {PRZYSŁÓWEK_WZGLĘDNY})
module-attribute
¶
PRZYSŁÓWEK_STOPNIA = word('adv', niesie='degree')
module-attribute
¶
SPÓJNIK_BEZ_PRZECINKA = word('conj', bez_lematu=SPÓJNIKI_PRZECINKOWE | {LEMAT_PRZECZENIA})
module-attribute
¶
SPÓJNIK_PRZECINKOWY = word(SPÓJNIKOWE, lemma=SPÓJNIKI_PRZECINKOWE)
module-attribute
¶
SPÓJNIK_PYTAJNY = 'czy'
module-attribute
¶
SPÓJNIKI_OKOLICZNIKOWE = SPÓJNIKI_WYSUWANE | SPÓJNIKI_PO_ZDANIU
module-attribute
¶
SPÓJNIKI_PRZECINKOWE = frozenset({'ale', 'a', 'lecz', 'natomiast', 'więc', 'zatem', 'toteż', 'czyli'})
module-attribute
¶
SPÓJNIKI_SKORELOWANE = frozenset({'ani'})
module-attribute
¶
SPÓJNIKOWE = frozenset({'conj', 'comp'})
module-attribute
¶
ZAIMEK_RZECZOWNY = frozenset({'to', 'tamto', 'owo', 'kto', 'któż', 'ktoś', 'ktokolwiek', 'co', 'cóż', 'coś', 'cokolwiek', 'nikt', 'nic', 'wszystko'})
module-attribute
¶
GRAMMAR = build()
module-attribute
¶
__all__ = ['AGREE', 'BEZ_CZOŁA', 'CIĄG_PRZYIMKOWY', 'CZĄSTKA_ZDANIA', 'CZĄSTKI', 'CZŁON_PRZYIMKOWY', 'DEKLARACJA', 'GRAMMAR', 'GRUPA_PYTAJNA', 'MIJANE', 'OKOLICZNIK_NARZĘDNIKOWY', 'OKOLICZNIK_PRZYSŁÓWKOWY', 'OKOLICZNIK_ZDANIOWY', 'ORZECZENIE_BEZOSOBOWE', 'ORZECZENIE_RZECZOWNIKOWE', 'NAZWY_SZKOLNE', 'ORZECZNIK_ŁĄCZNIKA', 'PARA_WYPEŁNIEŃ', 'PREDYKATYWY', 'PRZECINEK', 'PRZYSŁÓWEK', 'PRZYSŁÓWEK_STOPNIA', 'RAMA_BEZ_BIERNIKA', 'RODZINY', 'SPÓJNIKI_OKOLICZNIKOWE', 'SPÓJNIKI_PRZECINKOWE', 'SPÓJNIKI_SKORELOWANE', 'SPÓJNIKOWE', 'SPÓJNIK_BEZ_PRZECINKA', 'SPÓJNIK_PRZECINKOWY', 'SPÓJNIK_PYTAJNY', 'WALENCJA', 'WALENCJA_ZWROTNA', 'WTRĄCENIE', 'WTRĄCENIE_MYŚLNIKOWE', 'WYRAŻENIE_PRZYIMKOWE', 'ZAIMEK_RZECZOWNY', 'build']
module-attribute
¶
build()
¶
Gramatyka olskiego, złożona z sekcji rozpisanych po modułach, po jednej na gospodarza.
Kolejność wywołań jest kolejnością wpisywania produkcji, a tę widać po
czytaniach: rozstrzyga o nich koszt, a przy równym koszcie właśnie ona
(wyprowadzenia w olski/parse/las.py). Sekcja przestawiona zmienia więc
czytania, a nie sam układ pakietu, i dlatego jej moduł tego nie rusza:
kolejność stoi tutaj, w jednym miejscu, i dowodzi jej odcisk samej gramatyki
(harness/odcisk.py).
Source code in olski/subset/__init__.py
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | |