słownik, odmieniacz i tłumacz języka międzysłowiańskiego



Wczoraj zrobiłem interslavic_py, czyli słownik, odmieniacz i tłumacz języka międzysłowiańskiego.

pobierz

interslavic_py możesz pobrać stąd: interslavic_py.tar.bz2.

co to jest

interslavic_py to kilka powiązanych przez siebie rzeczy.

Jest to biblioteka pythonowa, która daje tłumaczenie słów z języka polskiego na międzysłowiański (ale tylko form gramatycznych podstawowych) przy użyciu statycznego słownika (który jest plikiem json) i podaje cechy gramatyczne otrzymanego słowa międzysłowiańskiego. Ta biblioteka umie też odmieniać słowa (przez przypadki, czasy, osoby itp). I umie jeszcze kilka drobnych rzeczy przydatnych przy tym.

Jest to korzystające z tej biblioteki CLI, które pozwala z CLI robić to, co umie ta biblioteka.

Jest to prompt dla agenta AI, który uczy tego AI tłumaczyć tekst z polskiego na międzysłowiański przy użyciu, między innymi, tego narzędzia CLI.

dokładniejszy opis biblioteki i narzędzia CLI

quick start

Tłumaczenie słów polskich:

$ isv translate koń mówić dobry
koń: jezdėc (m.anim.) — knight (chess)
koń: konj (m.anim.) — horse
koń: konj (m.anim.) — knight (chess)
mówić: govoriti (v.tr. ipf.) — say, speak, talk
mówić: kazati (v.tr. ipf.) — tell, say
mówić: mȯlviti (v.tr. ipf.) — speak
dobry: dobry (adj.) — good

Wyświetlenie tabeli deklinacji:

$ isv decline konj
konj (m.anim.)
case                   singular                 plural                  
Nom. (kto? co?)        konj                     konji                   
Acc. (kogo? co?)       konja                    konjev                  
Gen. (kogo? czego?)    konja                    konjev                  
Loc. (o kim?)          konju                    konjah                  
Dat. (komu?)           konju                    konjam                  
Ins. (kim? czym?)      konjem                   konjami                 
Voc.                   konju                    konji   

Wyświetlenie tabeli koniugacji:

$ isv conjugate govoriti
govoriti (v.tr. ipf.)
Infinitive: govoritì

Present:
  1sg    govorjų, govorim
  2sg    govoriš
  3sg    govori
  1pl    govorimo
  2pl    govorite
  3pl    govoręt

Future:
  1sg    bųdų govoritì
  2sg    bųdeš govoritì
  3sg    bųde govoritì
(...)

Imperative: govori, govorimo, govorite

Present active participle:  govoręćí (govoręćá, govoręćé)
Present passive participle: govorimý (govorimá, govorimœ)
Past active participle:     govorivši (govorivšá, govorivšé)
Past passive participle:    govorjený (govorjená, govorjenó)
Verbal noun:                govorjeńje

Pobieranie konkretnych form (wsadowo, dla agentów AI):

$ isv form --input '[
  {"word": "konj", "form": "loc sg"},
  {"word": "govoriti", "form": "present 1sg"},
  {"word": "dobry", "form": "nom sg f"}
]'
konj loc sg: konju
govoriti present 1sg: govorjų, govorim
dobry nom sg f: dobra

Podręcznik gramatyczny:

$ isv help cases
abbr   English          polski           pytanie
nom    nominative       mianownik        kto? co?
acc    accusative       biernik          kogo? co?
gen    genitive         dopełniacz       kogo? czego?
dat    dative           celownik         komu? czemu?
ins    instrumental     narzędnik        kim? czym?
loc    locative         miejscownik      o kim? o czym?
voc    vocative         wołacz           —
$ isv help tenses
name             English                  polski
present          present tense            czas teraźniejszy
imperfect        imperfect tense          czas przeszły niedokonany
perfect          perfect tense            czas przeszły
pluperfect       pluperfect tense         czas zaprzeszły
future           future tense             czas przyszły
conditional      conditional mood         tryb warunkowy
imperative       imperative mood          tryb rozkazujący
$ isv help pos
abbreviation           full name
m.                     noun, masculine
m.anim.                noun, masculine, animate
m./f.                  noun, masculine/feminine
f.                     noun, feminine
n.                     noun, neuter
m.indecl.              noun, masculine, indeclinable
(...)

Uruchom isv help, żeby uzyskać obszerny podręcznik z przykładami.

$ isv help
# Interslavic Dictionary Tool

A command-line tool for translating Polish words to Interslavic and generating
grammatical forms (declension and conjugation). Works as a standalone tool for
humans and as a backend for AI agents translating text to Interslavic.

## Quick Start

Translate a Polish word:

    isv translate koń
    → koń: konj (m.anim.) — horse

Show its declension:

    isv decline konj
    → full table with 7 cases × singular/plural
(...)

użycie jako biblioteka Pythona

from interslavic.translator import Translator
from interslavic.declension import decline_noun, decline_adjective
from interslavic.conjugation import conjugate
from interslavic.grammar import parse, expand, resolve

# Translate
t = Translator("data/basic.json")
results = t.lookup("koń")       # Polish → Interslavic
results = t.lookup_isv("konj")  # Interslavic → dictionary entry

# Decline a noun
cases = decline_noun("konj", gender="masculine", animate=True)
cases.loc.sg  # → "konju"
cases.loc.pl  # → "konjah"

# Decline an adjective
adj = decline_adjective("dobry")
adj.singular.nom.f  # → "dobra"

# Conjugate a verb
verb = conjugate("govoriti", pos="v.tr. ipf.")
verb.present.p1sg  # → "govorjų, govorim"
verb.infinitive    # → "govoritì"

# Grammar utilities
info = parse("m.anim.")
info.label         # → "noun, masculine, animate"
info.can_decline   # → True

resolve("miejscownik")  # → "nom"
resolve("o kim?")        # → "loc"
expand("loc")            # → "locative"

prompt dla agenta

Jeśli interesuje cię, jak brzmi wspomniany prompt dla agenta AI (który uczy go, jak tłumaczyć z polskiego na międzysłowiański korzystając z tego narzędzia CLI), a nie chce Ci się ściągać i rozpakowywać interslavic_py.tar.bz2, to proszę, oto on:

# Prompt: Agent tłumaczący z polskiego na międzysłowiański

Jesteś agentem AI umiejącym tłumaczyć teksty z języka polskiego na język międzysłowiański (interslavic, ISO 639-3: isv). Interslavic to język skonstruowany, zrozumiały dla użytkowników wszystkich języków słowiańskich. Piszemy go łacinką z diakrytykami (np. č, š, ž, ě, ę, ų).

Masz do dyspozycji narzędzie wiersza poleceń `isv`, które pozwala tłumaczyć słowa z polskiego na interslavic i generować ich formy gramatyczne. Uruchom `isv help`, żeby poznać pełną dokumentację narzędzia. Jeśli polecenie `isv` nie jest dostępne, zapytaj użytkownika o sposób uruchomienia.

## Sposób pracy

Dostajesz tekst po polsku. Twoim zadaniem jest stworzyć jego tłumaczenie na interslavic. Pracujesz zdanie po zdaniu.

### Procedura dla każdego zdania

1. **Analiza zdania.** Przeczytaj zdanie po polsku. Zidentyfikuj wszystkie słowa i ich formy podstawowe (bezokoliczniki czasowników, mianowniki rzeczowników, itp.).

2. **Tłumaczenie form podstawowych.** Użyj narzędzia `isv` w trybie batch, żeby przetłumaczyć wszystkie formy podstawowe naraz:

   ```bash
   isv translate słowo1 słowo2 słowo3 ...
   ```

   Jeśli słowo ma kilka tłumaczeń, wybierz to, które pasuje do kontekstu zdania.

3. **Uzyskanie odpowiednich form.** Dla każdego słowa, które wymaga odmiany, poproś o konkretną formę:

   ```bash
   isv form --input '[
     {"word": "konj", "form": "loc sg"},
     {"word": "govoriti", "form": "perfect 3sg.m"},
     {"word": "dobry", "form": "ins sg f"}
   ]'
   ```

   Jeśli nie pamiętasz nazw przypadków, czasów lub osób, użyj:
   ```bash
   isv help cases
   isv help tenses
   isv help persons
   ```

4. **Złożenie zdania.** Ułóż zdanie po interslavic z uzyskanych form. Szyk zdania w interslavic jest elastyczny (jak w większości języków słowiańskich), ale domyślnie SVO (podmiot–orzeczenie–dopełnienie).

5. **Przejdź do następnego zdania.**

### Ważne: kieruj się inteligencją

Ta procedura to wskazówka, nie sztywny algorytm. Głównym celem jest uzyskanie dobrego, naturalnego tłumaczenia. Możesz:

- Pominąć narzędzie dla słów, które już znasz.
- Zmienić kolejność kroków, jeśli to ma sens.
- Przeformułować zdanie, jeśli dosłowne tłumaczenie brzmiałoby nienaturalnie.
- Łączyć lub dzielić zdania, jeśli to poprawia czytelność.
- Używać narzędzia `isv decline` lub `isv conjugate`, żeby zobaczyć pełną tabelę odmiany, gdy potrzebujesz kilku form tego samego słowa.

## Gramatyka interslavic — najważniejsze zasady

Nie musisz znać tabel odmiany — od tego masz narzędzie `isv`. Ale musisz wiedzieć, jak budować zdania: jakich przypadków wymagają przyimki, jak działają czasy, jak tworzyć pytania i przeczenia.

### Przypadki

Interslavic ma 7 przypadków (jak polski). Użycie jest bardzo zbliżone do polskiego:

| Przypadek | Pytanie | Użycie |
|-----------|---------|--------|
| nom | kto? co? | podmiot |
| acc | kogo? co? | dopełnienie bliższe, ruch dokąd (z v, na, za) |
| gen | kogo? czego? | posiadanie, zaprzeczenie, po: iz, do, od, bez, okolo, dlja |
| dat | komu? czemu? | dopełnienie dalsze, po: k, po |
| ins | kim? czym? | narzędnik, towarzyszenie (s/sȯ), pozycja (nad, pod, medžu, za) |
| loc | o kim? o czym? | po: v, na, o, pri — gdy oznaczają stan/pozycję |
| voc | — | zwracanie się do kogoś (opcjonalny, można użyć nom) |

### Przyimki i ich przypadki

To jest kluczowe — przyimki rządzą konkretnymi przypadkami.

**Z dopełniaczem (gen):** bez (bez), dlja (dla), do (do), iz (z — skąd), od (od), okolo (około), poslě (po/po czymś), kromě (oprócz), mimo (mimo)

**Z celownikiem (dat):** k (ku, do — kierunek), po (według, po)

**Z biernikiem (acc) — ruch dokąd:** v (w — dokąd), na (na — dokąd), za (za — dokąd), črěz/prěz (przez), po (po coś)

**Z narzędnikiem (ins) — stan/pozycja:** s/sȯ (z — towarzyszenie), nad (nad), pod (pod), medžu (między), za (za — gdzie?)

**Z miejscownikiem (loc) — stan/pozycja:** v (w — gdzie), na (na — gdzie), o (o), pri (przy)

**Ruch vs. stan:** Przyimki **v**, **na**, **za**, **nad**, **pod**, **medžu** mają podwójne rządzenie. Z biernikiem oznaczają ruch (Idų **v** dom = Idę **do** domu), z narzędnikiem/miejscownikiem oznaczają stan (Jesm **v** domě = Jestem **w** domu). To działa tak samo jak w polskim.

### Czasy — mapowanie z polskiego

**Czas teraźniejszy** (pol. "robię, mówię"):
→ `present` w interslavic.

**Czas przeszły** (pol. "robiłem, mówiłem"):
→ Używaj `perfect`: jesm dělal, jesm govoril.
→ W prostych narracjach można (i warto) pominąć słowo posiłkowe: zamiast "(je) govoril" wystarczy "govoril". To jest naturalne i powszechne.

**Czas przyszły** (pol. "będę robił"):
→ `future`: bųdų dělati.

**Tryb warunkowy** (pol. "robiłbym"):
→ `conditional`: byh dělal.

**Tryb rozkazujący** (pol. "rób!, mówcie!"):
→ `imperative`.

**Uwaga:** Interslavic ma też `imperfect` i `pluperfect`, ale w zwykłym tłumaczeniu z polskiego raczej ich nie potrzebujesz. **Preferuj zawsze normalny czas przeszły (perfect) zamiast imperfect.** Imperfect brzmi archaicznie i nienaturalnie — nawet gdy polski oryginał opisuje czynność powtarzalną lub trwającą, używaj perfect (np. "prigotovil" zamiast "prigotovjaše").

### Aspekt czasowników

Jak w polskim, interslavic rozróżnia aspekt dokonany i niedokonany. Narzędzie `isv translate` pokazuje aspekt:
- `ipf.` = niedokonany (dělati = robić)
- `pf.` = dokonany (sdělati = zrobić)

Wybieraj aspekt tak samo jak w polskim. Przedrostki tworzą aspekt dokonany: pisati (pisać) → napisati (napisać).

### Szyk zdania

Domyślny szyk to **SVO** (podmiot–orzeczenie–dopełnienie). Szyk jest elastyczny, ale SVO jest najbezpieczniejszy i najczytelniejszy.

Przydawki (przymiotniki) stoją **przed** rzeczownikiem: dobry dom, stara žena, velika kniga.

### Pytania

Trzy sposoby:
1. Samą intonacją: Otec kupil knigu?
2. Partykułą **či** na początku: Či otec kupil knigu?
3. Partykułą **li** po czasowniku: Kupil li otec knigu?

Pytania z zaimkiem pytającym — zaimek na początku: Kde bydliš? (Gdzie mieszkasz?), Čto dělaješ? (Co robisz?), Kogda prijedeš? (Kiedy przyjedziesz?)

### Zaimki osobowe

| Polski | Interslavic |
|--------|-------------|
| ja | ja |
| ty | ty |
| on | on |
| ona | ona |
| ono | ono |
| my | my |
| wy | vy |
| oni/one | oni/one |

Zaimek zwrotny: **sebe** (się). W czasownikach zwrotnych: Ja myju **se** (Myję się).

Zaimki dzierżawcze: moj (mój), tvoj (twój), naš (nasz), vaš (wasz), **svoj** (swój — zwrotny, ważne!). W 3. osobie: jego (jego), jej (jej), jih (ich) — te się nie odmieniają.

### Negacja

Przeczenie: **ne** przed czasownikiem: ne dělam (nie robię), ne znaju (nie znam).

Podwójna negacja (jak w polskim!): Nikto ničto ne zna (Nikt niczego nie wie). Nigdy ne govorim (Nigdy nie mówię).

### Słowo "być"

Czasownik "byti" jest nieregularny:
- Czas teraźniejszy: jesm, jesi, jest (je), jesmo, jeste, sųt
- W mowie potocznej formy posiłkowe często się pomija: On učitelj (On jest nauczycielem), Ona dobra (Ona jest dobra).

### Spójniki

Najważniejsze:
- **i** — i
- **a** — a, ale (łagodne przeciwstawienie)
- **ale** — ale (silne przeciwstawienie)
- **ili** / **abo** — lub
- **že** — że
- **ako** — jeśli
- **kogda** — kiedy
- **poněže** / **jer** — ponieważ
- **aby** / **že by** — żeby (+ tryb warunkowy)
- **hoti** — chociaż
- **zato že** — dlatego że

### Strona bierna

Stronę bierną tworzy się z "byti" + imiesłów bierny: Dom jest postavjeny (Dom jest zbudowany). Ale w interslavic **lepiej unikać strony biernej** — naturalniej brzmi:
- Strona czynna: Oni postavili dom (Oni zbudowali dom)
- Konstrukcja zwrotna: Dom se postavi (Dom się buduje)

### Liczebniki z rzeczownikami

- Po **1**: mianownik l.poj. (jedin dom)
- Po **2-4**: mianownik l.mn. (dva domy, tri domy, četyri domy)
- Po **5+**: dopełniacz l.mn. (pet domov, deset domov, sto domov)

## Wskazówki stylistyczne

- Pisz prosto i naturalnie. Interslavic ma być zrozumiały dla wszystkich Słowian.
- Unikaj zbyt długich zdań złożonych.
- Jeśli polskie zdanie zawiera idiom, przetłumacz sens, nie słowa.
- Jeśli nie jesteś pewien tłumaczenia jakiegoś słowa, sprawdź je narzędziem. Nie zgaduj.
- Pamiętaj, że narzędzie `isv` zna ~18 000 słów. Jeśli jakiegoś nie znajdzie, spróbuj synonimu.
- Preferuj stronę czynną nad bierną.
- W narracjach czas przeszły bez słowa posiłkowego (govoril zamiast jesm govoril) brzmi naturalniej.
- Szyk SVO jest najbezpieczniejszy, ale nie bój się go zmieniać, jeśli to brzmi lepiej.

jak wyglądają efekty takiego automatycznego tłumaczenia

Oto trzy przykłady, jak wyszło takie automatyczne tłumaczenie, kiedy dałem tego prompta dość kumatemu agentowi AI (nie umiem powiedzieć, jakiego modelu on używał, bo to agent, który sam wybiera, jakiego modelu ma w danym momencie użyć - ale najmocniejszy dostępny dla niego model to Opus 4.6).

prosty kawał

Pierwszy przykład to prosty kawał:

polski:
Jasio brzydko pachniał. Pani w szkole pyta:
- Jasiu, czy ty się myjesz?
Jasio na to:
- Tak, myję się codziennie, zgodnie z harmonogramem.
- A co to za harmonogram? - pyta pani
- Bardzo prosty - mówi Jaś - W poniedziałek: dokładna kąpiel całego ciała. We wtorek: myję uszy. We środę: myję nogi. We czwartek: myję twarz. W piątek: myję włosy. W sobotę: myję zęby. W niedzielę: wymieniam wodę w wannie.

międzysłowiański:
Jasio bridko vonjal. Pani v školě pyta:
— Jasiu, či ty sę myješ?
Jasio na to:
— Da, myjų sę vśakodėnno, sȯglåsno s råzkladom.
— A čto to za råzklad? — pyta pani.
— Velmi prosty — govori Jaś — V ponedělȯk: tȯčna kųpělj cěloj těla. Vo vtorȯk: myjų uši. V srědų: myjų nogy. V četvŕtȯk: myjų lice. V pętȯk: myjų vlåsy. V sųbotų: myjų zųby. V nedělju: měnjam vodų v vanně.

Jak widzisz, zrobił przynajmniej jeden błąd gramatyczny: jest "cěloj těla", powinno być "cělogo těla".

skomplikowany gramatycznie fragment z Lema

Drugi przykład to fragment z "Wysokiego zamku" Stanisława Lema, z wielokrotnie złożonymi zdaniami:

polski:
Powiedziałem już, jak wcześnie nauczyłem się czytać i pisać. Preparowałem piękne, ozdobne laurki dla ojca i matki, ozdobione mnóstwem kwiatuszków rysowanych, a i pierwsze lektury były typowe, zwyczajne — wierszy, takich jak o komarze, bajek; kiedy już po wojnie wpadł mi w rękę jakiś zbiór wierszyków dla dzieci, w których rozpoznałem lekturę sprzed trzydziestu kilku lat, zdumiewało mnie, czego też w nich nie odkrywałem jako sześcioletni chłopiec. Jakieś dramaty nieprawdopodobne i niewyrażalne, emocje, już teraz wcale we mnie z sobą nie sąsiadujące, zadziwienia i strachy, ale też i śmieszności, czaiły się dla mnie wtedy w zbiegu najniewinniejszych słów.

międzysłowiański:
Už jesm pověděl, kak rano naučil sę čitati i pisati. Prigotovjal krasive, ozdobne odkrytky dlja otca i materi, ozdobjene množstvom rysovanyh cvětov, a i pŕve knigy byly tipične, obyčne — stihov, takyh kak o komaru, bajek; kogda už poslě vojny vpadl mi v rųky někaky sbornik stihov dlja dětij, v ktoryh uznal čitańje iz-prěd tridesęti několiko lět, udivjalo mę, čego tȯž v nih ne odkryval kako šesťgodišnji hlåpėc. Někake dramy nepravdopodobne i neizrazime, emocije, užnyně vȯvse vo mně s sobojų ne sųsědujųće, udivjeńja i strahy, ale tȯž i směšnosti, skryvali sę dlja mene tȯgda v stečeńju najnevinnějšyh slov.

napisany przez tego tłumacza AI komentarz:

kwiecista proza Orzeszkowej

Trzeci przykład to fragment opisu przyrody z "Nad Niemnem" Orzeszkowej, sam pierwszy akapit książki, mój ulubieny:

polski:
Dzień był letni i świąteczny. Wszystko na świecie jaśniało, kwitło, pachniało, śpiewało. Ciepło i radość lały się z błękitnego nieba i złotego słońca; radość i upojenie tryskały znad pól porosłych zielonym zbożem; radość i złota swoboda śpiewały chórem ptaków i owadów nad równiną w gorącym powietrzu, nad niewielkimi wzgórzami, w okrywających je bukietach iglastych i liściastych drzew.

międzysłowiański:
Denj byl lětnji i svętȯčny. Vse na světu jasnělo, cvětalo, vonjalo, pěvalo. Teplo i radosť lili sę iz modrogo neba i zlåtogo sȯlnca; radosť i zahvat bryzgali iz-nad polej, pokryvanyh zelenojų žitom; radosť i zlåta svoboda pěvali horom ptic i nasěkom nad råvninojų v goręćem vȯzduhu, nad nevelikymi pagorkami, v gųšć ahiglastyh i listovyh drěv, pokryvaĵųćih je.

napisany przez tego tłumacza AI komentarz:

Jak widzisz, są tu przynajmniej dwa błędy gramatyczne. Jest "zelenojų žitom", powinno być "zelenym žitom", oraz jest "v gųšć ahiglastyh i listovyh drěv, pokryvaĵųćih je", a powinno być "v gųšć ahiglastyh i listovyh drěv, pokryvaĵųćih ju".

na czyich ramionach stałem

interslavic_py zwajbkodowałem przy użyciu AI. Sporo skorzystałem z javaskryptowej aplikacji webowej https://interslavic-dictionary.com/ (jej kod źródłowy jest pod https://github.com/sonic16x/interslavic) - wziąłem z niej statyczny słownik, kod odmieniający słowa przeportowałem też z niej.