Przejdź do treści

olski.odniesienia

Zaimek, który wskazuje na dwie rzeczy naraz.

Wieloznaczność, którą liczy werdykt, kończy się na kropce: mówi ona, ile kształtów ma jedno zdanie (olski/werdykt.py). Zaimek trzeciej osoby wychodzi poza tę granicę, bo rzecz, na którą wskazuje, nazwało zdanie wcześniejsze, a rozbiór zdania z zaimkiem o tamtym zdaniu nic nie wie. Werdykt nad Są one czerwone. jest przez to ten sam po Widzimy pole maków. i po Maki rosną w garnkach., choć po pierwszym z nich czytelnik ma jedną rzecz do wyboru, a po drugim dwie. Umowa olskiego jest o tekście właśnie z tego powodu (docs/roadmap.md#podzbiór-jest-umową-a-nie-zasięgiem), a ta warstwa jest tym kawałkiem umowy, którego rozbiór jednego zdania nie obejmuje.

Zaimek dostaje zgłoszenie wtedy, gdy zdanie obok nazywa dwie rzeczy albo więcej, a każda z nich zgadza się z nim liczbą i rodzajem. Co to znalezisko mówi autorowi i jakie zaimki bierze, trzyma docs/subset.md#zaimek-wskazujący-na-dwie-rzeczy-jest-trzecim-znaleziskiem. Tutaj stoją trzy warunki, których z kodu nie widać, i cena każdego z nich.

Rzecz nazywa najszersza grupa imienna, a nie każdy rzeczownik pod nią. duże pole maków nazywa pole, a maków jest w nim określeniem. Bez tego zawężenia kandydatów jest tylu, ile zdanie ma rzeczowników: Ogrodnik ogląda pole maków w doniczce bratków. nazywa dwie rzeczy, a wydałoby czterech kandydatów, wśród nich maków i bratków, więc Są one czerwone. dostałoby po nim zgłoszenie. Tu widać, czego ta warstwa żąda od rozbioru: morfologia mówi, że pole i maków są rzeczownikami, a która z tych dwóch form jest głową grupy, mówi dopiero drzewo.

Granicą jest zdanie obok, a nie akapit. Bierzemy ją stamtąd, skąd bierze ją druga strona: olski/skład/opowieść.py opuszcza podmiot tylko wtedy, gdy o rzeczy była mowa w zdaniu obok. Kandydaci z całego akapitu byliby przez to szersi niż to, co druga strona uznaje za rzecz podaną czytelnikowi.

Zaimek rozstrzygnięty we własnym zdaniu zgłoszenia nie dostaje. Pierwsze ma jedno odczytanie, więc autor nie ma w nim czego wybierać. nie odsyła czytelnika do zdania obok, bo Pierwsze stoi przed nim i zgadza się z nim; sięganie dalej byłoby zgadywaniem, którego czytelnik nie wykonuje. Wstrzymanie się jest tu odpowiedzią pełnoprawną (docs/linter.md#abstention-is-allowed) i płaci się je milczeniem: nad prozą tego repozytorium zdejmuje ono więcej zgłoszeń, niż zostawia, a wśród zdjętych jest Olski go nie czyta i o jego polszczyźnie milczy., gdzie kandydatem miejscowym jest sam podmiot zdania, a rzecz podejmowana stoi w zdaniu obok. Warunek zostaje mimo to, bo zdejmuje w większości trafienia chybione, a chybione kosztuje więcej: autor przepisuje przez nie zdanie bez powodu (docs/roadmap.md#cele). Zawężenie, po którym Olski przestaje być kandydatem, trzyma todo/.

Wszystkie trzy warunki mylą się w jedną stronę: zdejmują kandydatów, a nie dokładają ich, i tak samo myli się zdanie obok, którego gramatyka nie wyprowadza wcale. Na tej asymetrii stoi decyzja o zaimku bez ani jednego kandydata.

ZAIMEK = 'ppron3' module-attribute

IMIENNE = frozenset({'subst', 'depr'}) module-attribute

ZGODNE = ('number', 'gender') module-attribute

Odniesienie dataclass

Zaimek wraz z rzeczami, na które w zdaniu obok może wskazywać.

Rzeczy nazwane są formą, tak jak olski.parse.Przyłączenie nazywa gospodarzy: autor ma je odszukać w zdaniu obok, a stoją tam właśnie w tej formie.

Source code in olski/odniesienia.py
87
88
89
90
91
92
93
94
95
96
97
98
@dataclass(frozen=True)
class Odniesienie:
    """Zaimek wraz z rzeczami, na które w zdaniu obok może wskazywać.

    Rzeczy nazwane są formą, tak jak :class:`olski.parse.Przyłączenie` nazywa
    gospodarzy: autor ma je odszukać w zdaniu obok, a stoją tam właśnie w tej formie.
    """

    #: Zaimek tak, jak stoi w zdaniu.
    zaimek: str
    #: Formy rzeczy, które się z nim zgadzają, ustawione tak jak w zdaniu obok.
    rzeczy: tuple[str, ...]

zaimek instance-attribute

rzeczy instance-attribute

__init__(zaimek, rzeczy)

niejasne_odniesienia(text, werdykty)

Zgłoszenia o zaimkach, po jednej krotce na werdykt i w kolejności zdań.

Tekstem, a nie samym podziałem, bo tak bierze go druga warstwa tekstowa (olski.rozstrzyganie.sąsiedztwa), i tak samo buduje sobie dokument. Zdanie obok wskazuje ostatni z numerów, które podaje olski.document.Document.wcześniejsze.

Source code in olski/odniesienia.py
116
117
118
119
120
121
122
123
124
125
126
127
128
129
def niejasne_odniesienia(
    text: str, werdykty: Sequence[Verdict]
) -> list[tuple[Odniesienie, ...]]:
    """Zgłoszenia o zaimkach, po jednej krotce na werdykt i w kolejności zdań.

    Tekstem, a nie samym podziałem, bo tak bierze go druga warstwa tekstowa
    (:func:`olski.rozstrzyganie.sąsiedztwa`), i tak samo buduje sobie dokument.
    Zdanie obok wskazuje ostatni z numerów, które podaje
    :attr:`olski.document.Document.wcześniejsze`.
    """
    return [
        _zgłoszenia(verdict, werdykty[poprzednie[-1]] if poprzednie else None)
        for verdict, poprzednie in zip(werdykty, Document(text).wcześniejsze, strict=True)
    ]