# Slovník Slovní dílny

Hra používá společný konečný seznam ověřených odpovědí pro prohlížeč i server.
Slova se nepřidávají odhadem podle koncovek ani podle toho, zda vypadají česky.

## Zdroje a licence

1. Česká část anglického Wiktionary, strojový výtah Kaikki/Wiktextract.
   Lexikální data © přispěvatelé Wiktionary, **CC BY-SA 4.0**:
   https://kaikki.org/dictionary/Czech/
   https://en.wiktionary.org/wiki/Wiktionary:Copyrights
   Zachován je původní vstup z 8. 11. 2026: dump z 1. 10. 2026, extrakce z 30. 10. 2026.
2. **Czech CC0 dictionaries**, autor Stanislav Horáček a přispěvatelé, připnutý commit
   `3705e3f61c5d5ede438b645732e6e75ab62de58d`:
   https://gitlab.com/strepon/czech-cc0-dictionaries/-/tree/3705e3f61c5d5ede438b645732e6e75ab62de58d
   Jde o 1 060 406 hotových slovních tvarů včetně skloňování a časování.
   Původní doplňková data jsou **CC0 1.0**, plné znění je v `CC0-Czech-LICENSE.txt`.
   Projekt čerpá z českého tvarotvorného slovníku a lexémů Wikidata.
3. Pro přesné rodiny vyloučených lemmat používá sestavení také **Český tvarotvorný slovník**,
   Public Domain, připnutý commit `cc60bbc9c8449a70feb4077479544d786ade2a1a`:
   https://github.com/plin/slovnik/tree/cc60bbc9c8449a70feb4077479544d786ade2a1a

Výběr a úpravy dat Wiktionary a jejich doklady v `words.mjs`, `bases.json`,
`supplements.json` a `provenance.json` jsou dostupné pod CC BY-SA 4.0:
https://creativecommons.org/licenses/by-sa/4.0/
Záznamy pocházející z CC0 zdroje mají v provenienci výslovně uvedeno `license: CC0-1.0`.

Každá odpověď má odkaz `source` a typ dokladu `kind`. U Wiktionary je uvedeno známé
lemma; u hotového tvaru z CC0 je uveden přímo doložený `form`, bez domýšlení lemmatu.
Definice, příklady, překlady, zvuky ani obrázky se nepřebírají.

## Ověření nových tvarů

Samotný pravopisný seznam obsahuje také vlastní jména, zkratky nebo nežádoucí výrazy.
Před importem se proto kontroluje původní velikost písmen, NFC, česká abeceda a délka.
Nový tvar musí zároveň projít referenčním **Hunspellem 1.7.2** s českým slovníkem
LibreOffice, commit `b3a1c0be50d1ad0b404070124463fb4af90bbe39`:
https://github.com/LibreOffice/dictionaries/tree/b3a1c0be50d1ad0b404070124463fb4af90bbe39/cs_CZ

Hunspell slouží pouze jako nástroj při sestavení. Do hry se jeho knihovna ani
referenční slovník nepřibalují. Výstup kontroly obsahuje pouze schválené vstupní
řetězce pocházející z CC0 seznamu. Referenční slovník má GNU GPL licenci popsanou
v jeho `README_cs.txt`; vlastní Hunspell nabízí MPL/GPL/LGPL varianty licence.

Referenční `FORBIDDENWORD` je respektován a kořeny s `NOSUGGEST` se při kontrole
konzervativně vyřazují včetně jejich tvarů. Značky Wiktionary pro zkratky, překlepy,
zastaralost, nářečí a nevhodný obsah se přenášejí přes přesné doložené rodiny
Wiktionary/plin a skutečná pravidla CC0. Nepoužívá se blokování podle podobného
začátku slova: například rodina „srát“ nesmí odstranit slovo „sraz“.

`nonwords.json` rozlišuje běžné značky jednotek a zkratky, které pravopisná kontrola
jinak přijímá. Nezávisle doložené čisté významy mají přednost před shodnou zkratkou
či nevhodným homonymem: například MIN a DNA mohou být platné tvary českých slov.
Předložky, zájmena, množná čísla a další doložené tvary od dvou písmen jsou přípustné.
Herní pravidla navíc vyřazují samotné hláskovací názvy písmen, například EL, ER,
EN, EM a ES, i když jsou ve zdrojovém slovníku. Nezapočítají se do skóre ani do
seznamu zbývajících odpovědí. Běžná krátká slova jako SE, VE, KU, NA a TO zůstávají.
Starší uložené výsledky si ponechávají původní skóre; staré neodeslané pokusy
s názvy písmen se uchovají místně a znovu se neodesílají podle nových pravidel.
Zůstává výjimka OK, doložená českým Wikislovníkem:
https://cs.wiktionary.org/w/index.php?title=OK&oldid=1339639
Dřívější ověřený doplněk MOK a jeho tvary:
https://cs.wiktionary.org/w/index.php?title=mok&oldid=1119363
OMAK už není ruční výjimka: dodává ho obecný český import.

## Křestní jména

Přípustná jsou také doložená česká křestní jména a jejich skutečně uvedené
skloňované tvary. Import je vybírá z českých hesel Wiktionary označených jako
křestní jméno, včetně doložených domáckých podob. Značky ani samotná příjmení tento filtr nesplňují. Zeměpisné názvy se vybírají
samostatným filtrem popsaným níže.
Samostatná tvarová hesla musí výslovně odkazovat na již rozpoznané křestní jméno.
Doklady mají typ `given-name` nebo `given-name-inflection`.

Jména se pro hru sjednocují na velká písmena stejně jako ostatní odpovědi.
Shodný řetězec se počítá pouze jednou, i když je zároveň jménem i obecným slovem.
Musí dodržet diakritiku a stejný rozpočet fyzických písmen; například NINA jde
složit z PRINCEZNA, ANNA nikoli, protože v zadání chybí druhé A.

## Zeměpisné názvy

Přípustné jsou i doložené české názvy řek, měst, států, oblastí, světadílů,
hor, ostrovů a dalších zeměpisných míst, včetně skutečně doložených skloňovaných
tvarů. Filtr používá zeměpisné tematické kategorie českého významu Wiktionary;
nepovoluje vlastní jméno pouze proto, že začíná velkým písmenem. Samostatná tvarová
hesla musí výslovně odkazovat na již rozpoznaný zeměpisný název. Zkratky států
se tím nepovolují. Doklady mají typ `geographical-name` nebo
`geographical-name-inflection` a odkazují na konkrétní české heslo.

Například ODRA se přijímá z ČARODĚJNICE, pokud dítě ještě stejné slovo nezadalo.
Přesná diakritika i počet dostupných dlaždic zůstávají závazné. Shodný název a obecné
slovo mají společný bodový záznam, nikdy dva body za stejný řetězec.

## Reprodukce

Všechny externí soubory mají připnutou verzi, velikost a SHA-256 v
`scripts/slova-czech-sources.json`; úplný manifest a statistiky jsou v `manifest.json`.
Příprava potřebuje Python 3.9+, přístup ke zdrojovým URL a kompilátor C++11.

```sh
python3 scripts/fetch-slova-czech.py --output /tmp/slova-czech
python3 scripts/build-slova-words.py --source /tmp/kaikki-czech-20261108.jsonl --czech-dir /tmp/slova-czech
python3 -m unittest discover -s tests -p '*_test.py'
npm test
```

Vstupní JSONL Wiktionary musí odpovídat původnímu hashi v manifestu. Pokud se
stažená data změní, sestavení skončí chybou; zdroj je třeba zkontrolovat před změnou
připnutí. Rozšířený český zdroj je při sestavení povinný, takže starý příkaz nemůže
nepozorovaně vrátit původní neúplný seznam. Velké pracovní vstupy ani kompilovaný
kontrolní nástroj nejsou součástí veřejného webového balíku.

Pro každé z 50 zadání v každé obtížnosti se vyberou všechny přípustné odpovědi,
na které stačí fyzická písmena. Diakritika zůstává přesná. Samotné zadání a duplicitní
odpovědi se při hře neuznávají. Hra je plně funkční bez připojení k externím slovníkům.

Jde o konečný herní slovník, nikoli úplný výčet všech slov a budoucích novotvarů.
Při odmítnutí proto hra uvádí „Tohle slovo v herním slovníku nemáme.“ Nové zdroje
nebo další zadání se doplňují stejným reprodukovatelným postupem, nikoli jen ručním
opravováním jednotlivých hlášených slov.
