Przejdź do treści

olski.reprezentacja

Reprezentacja pośrednia: kto co robi w zdaniu, bez kształtu gramatyki.

Czytanie parsera schodzi tu do zbioru krawędzi (głowa, rola, zależnik) nad słowami zdania. Krawędź jest trójką, na której ma się uczyć model przebiegu semantycznego. Dwa czytania o tym samym zbiorze krawędzi są jednym czytaniem, ale na zdaniach z NKJP zdarza się to rzadko (docs/kierunek.md).

CZŁON = 'człon' module-attribute

ORZECZNIK = 'orzecznik' module-attribute

PRZYMIOTNE = frozenset({'adj', 'ppas', 'pact'}) module-attribute

INTERPUNKCJA = 'interp' module-attribute

SPINAJĄCE = frozenset({'conj', INTERPUNKCJA}) module-attribute

PRZYSŁÓWEK = 'adv' module-attribute

Słowo dataclass

Wystąpienie słowa w zdaniu.

Tożsamością jest miejsce w grafie segmentacji razem z lematami, bo forma czytana innym leksemem jest innym słowem: sobie od siebie i od rzeczownika soba to dwa czytania, a nie jedno.

Source code in olski/reprezentacja.py
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
@dataclass(frozen=True, order=True)
class Słowo:
    """Wystąpienie słowa w zdaniu.

    Tożsamością jest miejsce w grafie segmentacji razem z lematami,
    bo forma czytana innym leksemem jest innym słowem:
    `sobie` od `siebie` i od rzeczownika `soba` to dwa czytania, a nie jedno.
    """

    początek: int
    koniec: int
    forma: str
    lematy: tuple[str, ...]
    części_mowy: tuple[str, ...]

    def __str__(self) -> str:
        return self.forma

początek instance-attribute

koniec instance-attribute

forma instance-attribute

lematy instance-attribute

części_mowy instance-attribute

__init__(początek, koniec, forma, lematy, części_mowy)

__str__()

Source code in olski/reprezentacja.py
50
51
def __str__(self) -> str:
    return self.forma

Krawędź dataclass

Source code in olski/reprezentacja.py
54
55
56
57
58
59
60
61
@dataclass(frozen=True, order=True)
class Krawędź:
    głowa: Słowo
    rola: str
    zależnik: Słowo

    def __str__(self) -> str:
        return f"{self.głowa} —{self.rola}→ {self.zależnik}"

głowa instance-attribute

rola instance-attribute

zależnik instance-attribute

__init__(głowa, rola, zależnik)

__str__()

Source code in olski/reprezentacja.py
60
61
def __str__(self) -> str:
    return f"{self.głowa} —{self.rola}→ {self.zależnik}"

Reprezentacja dataclass

Source code in olski/reprezentacja.py
64
65
66
67
@dataclass(frozen=True)
class Reprezentacja:
    korzeń: Słowo
    krawędzie: frozenset[Krawędź]

korzeń instance-attribute

krawędzie instance-attribute

__init__(korzeń, krawędzie)

obniż(czytanie)

Source code in olski/reprezentacja.py
176
177
178
179
def obniż(czytanie: Node) -> Reprezentacja:
    budowa = _Budowa()
    korzeń = budowa.węzeł(czytanie)
    return Reprezentacja(korzeń, _scal_łącznik(frozenset(budowa.krawędzie)))

reprezentacje(czytania)

Różne reprezentacje tych czytań, w kolejności pierwszego wystąpienia.

Source code in olski/reprezentacja.py
182
183
184
def reprezentacje(czytania: Iterable[Node]) -> list[Reprezentacja]:
    """Różne reprezentacje tych czytań, w kolejności pierwszego wystąpienia."""
    return list(dict.fromkeys(obniż(czytanie) for czytanie in czytania))