Jako trezor hesel používám lokálně KeePassXC a nedávno jsem si všiml, že do generátoru hesel přibyla i možnost použít slova. To je docela užitečné, protože jakmile potřebuju heslo někam napsat, třeba do mobilu, jsou generované změti znaků dost náchylné na chybu. Zatímco slova…
…slova jsou na opisování fajn, ale překáží mi jejich slovníkovost a angličtina.
Ale protože je tu možnost přidat vlastní zdroj slov, pojal jsem myšlenku vyrobit seznam českých slabik a slova do hesla z nich skládat. V dnešní době AI a wibe codingu to musí být hračka. A opravdu byla.
(Koho nezajímá postup, ale slovníky, nechť přeskočí na konec článku, kde jsou ke stažení.)
Jako první krok mi ChatGTP radil získat seznam slov:
Nejprve je potřeba získat dostatečně velký seznam českých slov, ze kterého lze slabiky odvodit. Existuje několik veřejně dostupných zdrojů:
- Český národní korpus (SYN): Oficiální korpus obsahující rozsáhlé sbírky textů. Například na Wikislovníku lze najít seznam 15 000 nejčastějších českých slov z korpusu SYN2015 en.wiktionary.org. Tento frekvenční seznam (i když není zcela vyčištěn od cizích výrazů) může posloužit jako základ slov.
- OpenSubtitles: Jedná se o otevřený korpus filmových titulků. Pro češtinu existují frekvenční seznamy slov z dat OpenSubtitles
- (...)
Vybral jsem hned první variantu, tedy 15 000 nejčastějších slov z Wikislovníku. Ze stránky je zkopíroval do schránky, vložil do Mousepadu, v něm hromadně nahradil mezery a uložil.
Jakmile máme seznam slov, dalším krokem je rozdělit tato slova na slabiky. Ruční dělení by bylo nepraktické, ale existují nástroje, které to zvládnou automaticky:
- Python knihovna `czech_syllable_splitter`: Tato knihovna (autora Adam Benda, 2024) přímo poskytuje funkci pro dělení českých slov na slabiky [pypi.org]. Lze ji nainstalovat (`pip install czech-syllable-splitter`) a použít například takto: (...)
Protože python nainstalovaný mám, stačilo opravdu spustit doporučený příkaz:
pip install czech-syllable-splitter
Defaulting to user installation because normal site-packages is not writeable
Collecting czech-syllable-splitter
Downloading czech_syllable_splitter-0.1.0-py3-none-any.whl.metadata (1.9 kB)
Downloading czech_syllable_splitter-0.1.0-py3-none-any.whl (4.3 kB)
Installing collected packages: czech-syllable-splitter
Successfully installed czech-syllable-splitter-0.1.0
A pak už jsem si jen hrál postupným dolaďováním skriptu. Beru jen délku slabiky 3 a více znaků, měním velikost písmen na malá. Taky jsem udělal i variantu bez diakritiky a tak podobně.
from czech_syllable_splitter import split_to_syllables;
with open("00_wiktionary_czech.txt", "r", encoding="utf-8") as fin, \
open("01_syllables.txt", "w", encoding="utf-8") as fout:
for line in fin:
syllables = split_to_syllables(line.strip())
for i, s in enumerate(syllables):
if len(s) < 3:
continue
fout.write(s.lower() + "\n")
Protože rozsekáním mohly vzniknout duplicity, zbavil jsem se jich:
cat 01_syllables.txt | sort | uniq > 01_syllables_uniq.txt
No a to je vlastně všechno. Nahrát do KeePassXC a pak už jen používat:
Samozřejmě by se mi líbily ještě další modifikace, třeba slepovat dvě až tři slabiky do slov a oddělovače vybírat ze skupiny znaků a tak, ale je celkem snadné to udělat ručně:
Pokud byste někdo slovníky chtěl používat, zde jsou ke stažení:




Hodnocení hvězdičkami používá jako prevenci
opakovaného kliknutí anonymní cookie.
Pokud s tím nesouhlasíte, neklikejte.
Další podrobnosti k cookies zde.