Wczoraj zrobiłem interslavic_py, czyli słownik, odmieniacz i tłumacz języka międzysłowiańskiego.
interslavic_py możesz pobrać stąd: interslavic_py.tar.bz2.
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.
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
(...)
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"
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.
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).
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".
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:
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".
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.