Přeskočit na obsah

Analýza a vizualizace frekvence znaků

Bezplatný nástroj pro analýzu frekvence znaků. Okamžitě vizualizujte vzory distribuce písmen. Ideální pro kryptografii, kompresi dat, detekci textového kódování a lingvistickou analýzu.

Analýza frekvence znaků

Kalkulačka načítání...
📚

Dokumentace

Co je analýza četnosti znaků?

Analýza četnosti znaků je proces počítání, kolikrát se každý znak objeví v části textu. Zahrnuje písmena, číslice, mezery, interpunkční znaménka i všechny další symboly v textu. Výsledkem je jednoduchá tabulka nebo graf: jeden znak, jeden počet.

Tento nástroj přijme libovolný text vložený nebo zadaný uživatelem a automaticky spočítá každý znak. Vykreslí sloupcový graf četností, takže nejčastější znaky jsou na první pohled zřetelné. Umístěním ukazatele na sloupec nebo klepnutím na něj se zobrazí přesný počet daného znaku.

Tato technika je stará. Arabský učenec Al-Kindí ji popsal v 9. století jako způsob luštění jednoduchých šifer. Dnes se používá také při kompresi dat, kontrolách pravopisu a kódování a k základní identifikaci jazyka.

Jak vypočítat četnost znaků

Ruční výpočet četnosti znaků se skládá ze tří kroků:

  1. Procházet text po jednotlivých znacích včetně mezer a interpunkčních znamének.
  2. Průběžně zaznamenávat počet každého odlišného znaku. Nový znak začíná na hodnotě 1; opakovaný znak přidá ke svému dosavadnímu počtu 1.
  3. Vypsat každý znak s jeho konečným počtem.

Tento nástroj dělá totéž automaticky pomocí datové struktury zvané hašovací mapa (vyhledávací tabulka, která ukládá hodnotu pod klíčem). U každého znaku v textu kontroluje, zda už je tento znak v mapě uveden. Pokud ano, přidá k uloženému počtu 1. Pokud ne, vytvoří novou položku s počtem 1. Tato metoda se každého znaku dotkne právě jednou, takže čas potřebný ke zpracování roste přímo úměrně délce textu, nikoli rychleji.

Po spočítání nástroj vypíše výsledky abecedně podle znaku. V současnosti nenabízí možnost seřadit je podle počtu.

Četnost znaků v procentech

Samotné počty se obtížně porovnávají mezi texty různé délky. Proto se četnost často vyjadřuje jako procento z celkového počtu znaků:

f(c)=ncN×100%f(c) = \frac{n_c}{N} \times 100\%

Zde ncn_c označuje, kolikrát se objeví znak cc, a NN je celkový počet znaků v textu. Tento nástroj uvádí skutečné počty a celkový počet znaků, nikoli sloupec s procenty, ale procento pro libovolný znak lze vypočítat vydělením jeho počtu celkovým počtem a vynásobením hodnotou 100.

Příklad výpočtu

Vezměme slovo „mississippi“, které má 11 znaků a neobsahuje mezery ani interpunkční znaménka.

Počítáním jednotlivých písmen získáme:

ZnakPočetProcento
i436,4 %
m19,1 %
p218,2 %
s436,4 %

Tabulka je seřazena abecedně (i, m, p, s), stejně jako tento nástroj řadí své výsledky. Součet počtů je 11, tedy celková délka slova. Sloupec s procenty vznikne vydělením každého počtu hodnotou 11 a vynásobením hodnotou 100, například 4 ÷ 11 × 100 ≈ 36,4 %.

Jak tento nástroj používat

Zadejte nebo vložte text do vstupního pole. Nástroj jej analyzuje okamžitě, bez nutnosti stisknout tlačítko. Jak se text mění, seznam znaků a sloupcový graf se aktualizují.

Sekce s výsledky zobrazuje:

  • Sloupcový graf s jedním sloupcem pro každý znak. Vyšší sloupce znamenají, že se znak objevuje častěji.
  • Celkový počet znaků v textu včetně mezer a interpunkčních znamének.
  • Přesný počet jednotlivých znaků, který se zobrazí po umístění ukazatele na jeho sloupec nebo po klepnutí na něj.

Tlačítko „Kopírovat“ naformátuje výsledky jako prostý text, přičemž na každém řádku bude jeden znak a jeho počet, připravený k vložení do tabulky nebo dokumentu. Mezery jsou v tomto výstupu označeny jako „mezera“, aby nebyly zaměněny za prázdné řádky.

V běžném anglickém textu se písmena jako E, T, A, O a I obvykle řadí mezi nejčastější. Text, v němž se neobvykle často objevují vzácná písmena jako Q nebo Z, může být kódovaný, šifrovaný nebo napsaný v jiném jazyce.

Využití analýzy četnosti znaků

Luštění substitučních šifer

Substituční šifra nahrazuje každé písmeno zprávy jiným písmenem nebo symbolem a stejné nahrazení používá v celém textu. Protože je nahrazení konzistentní, vzorec četnosti původního jazyka v zašifrovaném textu přetrvává. V angličtině se písmeno E objevuje přibližně v 12–13% případů. Pokud se některý symbol v šifrovaném textu objevuje přibližně s touto četností, je vhodným kandidátem na zástupce písmene E. Po staletí šlo o hlavní metodu luštění substitučních šifer, než moderní šifrování učinilo tuto metodu nepoužitelnou pro jiné než hádankové a historické texty.

Komprese dat

Kompresní formáty jako ZIP a GZIP využívají četnost znaků prostřednictvím přístupu zvaného Huffmanovo kódování. Často se vyskytujícím znakům se přiřazují krátké binární kódy a vzácným znakům delší kódy. Protože běžné znaky zabírají při každém výskytu méně místa, celý soubor se zmenší, aniž by došlo ke ztrátě informací.

Odhalování problémů s kódováním

Text, v němž se zobrazují podivné, neočekávané znaky (například „é“ místo očekávaného „é“), často poukazuje na nesoulad mezi kódováním znaků, v němž byl soubor uložen, a kódováním použitým při jeho načtení. Graf četnosti s neobvyklým nárůstem podivných symbolů místo běžných písmen může pomoci problém s kódováním potvrdit.

Identifikace jazyka

Různé jazyky mají různá typická rozložení znaků. V angličtině převažují E, T a A. Němčina používá mnohem více písmen E a N a také písmena jako ä, ö a ü, která se v angličtině vůbec nevyskytují. Porovnání četností znaků v textu se známými jazykovými profily poskytuje rychlý a orientační způsob, jak odhadnout jeho jazyk.

Styl psaní a autorství

Protože autoři mívají ustálené návyky v používání interpunkce a písmen, mohou vzorce na úrovni znaků sloužit jako jeden z dílčích důkazů při určování autorství. Samotná četnost znaků jen zřídka prokáže, kdo něco napsal; nejlépe funguje v kombinaci s volbou slov, délkou vět a dalšími stylistickými znaky.

Další metody analýzy textu

Četnost znaků není jediným způsobem analýzy textu.

  • Četnost slov počítá celá slova místo znaků. Má blíže k významu textu a běžně se používá při výzkumu klíčových slov a analýze témat.
  • Analýza n-gramů zkoumá krátké posloupnosti znaků nebo slov, například dvojice či trojice. Prediktivní klávesnice a automatické doplňování tuto metodu používají k odhadu dalšího písmene nebo slova.
  • Analýza sentimentu posuzuje, zda text působí pozitivně, negativně nebo neutrálně, a používá k tomu metody výrazně přesahující prosté počítání.
  • Analýza čitelnosti, například pomocí skóre Flesch–Kincaid, odhaduje obtížnost čtení textu na základě délky vět a slov.

Často kladené otázky

Co vám analýza četnosti znaků prozradí?

Ukazuje, jak často se jednotlivé znaky v textu objevují. Výsledky mohou odhalit vzorce užitečné v kryptografii, při kompresi, odhalování chyb v kódování nebo odhadování jazyka textu.

Jak tento nástroj řadí výsledky?

Znaky řadí abecedně. Možnost seřadit je podle počtu není k dispozici. Nejčastější a nejméně časté znaky je třeba najít v grafu nebo projít počty v zkopírovaném textu.

Zobrazuje nástroj procenta?

Ne. Uvádí skutečný počet každého znaku a celkový počet znaků. Procento lze vypočítat vydělením počtu daného znaku celkovým počtem a vynásobením hodnotou 100.

Dokáže analýza četnosti znaků prolomit moderní šifrování?

Ne. Funguje pouze proti jednoduchým substitučním šifrám, v nichž jeden znak vždy zastupuje stejný náhradní znak. Moderní šifrování, například AES, vytváří výstup bez takového konzistentního vzorce, takže četnosti neodhalí nic o původní zprávě.

Počítá nástroj mezery a interpunkční znaménka?

Ano. Počítá se každý znak na vstupu včetně mezer, tabulátorů, zalomení řádků a interpunkčních znamének. Mezery bývají v běžném textu často vůbec nejčastějším znakem.

Kolik textu je potřeba pro spolehlivé vzorce?

Rozumným minimem je několik set znaků. Velmi krátký text může čistě náhodou vykazovat četnosti výrazně odlišné od očekávaného vzorce. Delší vzorky o tisíci znacích nebo více se obvykle známým jazykovým vzorcům podobají přesněji.

Reference

  1. MDN Web Docs: Map — dokumentace k datové struktuře hašovací mapy používané k efektivnímu počítání znaků.
  2. Shannon, C. E. (1951). „Prediction and entropy of printed English.“ The Bell System Technical Journal, 30(1), 50-64.
  3. Huffman, D. A. (1952). „A Method for the Construction of Minimum-Redundancy Codes.“ Proceedings of the IRE, 40(9), 1098-1101.
  4. Huffmanovo kódování — Wikipedie