Naar inhoud springen

Karakterfrequentie-analyse & Visualisatiegereedschap

Gratis karakterfrequentie-analysetool. Visualiseer direct patronen van letterverspreiding. Perfect voor cryptografie, gegevenscompressie, tekstcoderingsdetectie en linguïstische analyse.

Karakterfrequentie-analyse

Laadcalculator...
📚

Documentatie

Wat is karakterfrequentieanalyse?

Karakterfrequentieanalyse is het tellen van hoe vaak elk teken in een stuk tekst voorkomt. Het omvat letters, cijfers, spaties, leestekens en elk ander symbool in de tekst. Het resultaat is een eenvoudige tabel of grafiek: één teken, één telling.

Deze tool neemt tekst die erin is geplakt of getypt en telt elk teken automatisch. Er wordt een staafdiagram van de tellingen gemaakt, zodat de meest voorkomende tekens direct opvallen. Door een staaf aan te wijzen of erop te tikken, wordt de exacte telling van dat teken weergegeven.

De techniek is oud. De Arabische geleerde Al-Kindi beschreef deze in de 9e eeuw als een manier om eenvoudige substitutiecijfers te kraken. Tegenwoordig wordt de techniek ook gebruikt bij datacompressie, controles van spelling en tekencodering en elementaire taalidentificatie.

Hoe bereken je de karakterfrequentie?

Het handmatig berekenen van de karakterfrequentie bestaat uit drie stappen:

  1. Loop de tekst teken voor teken door, inclusief spaties en leestekens.
  2. Houd voor elk afzonderlijk teken een lopende telling bij. Een nieuw teken begint op 1; bij een herhaald teken wordt 1 bij de bestaande telling opgeteld.
  3. Noteer elk teken met de uiteindelijke telling.

Deze tool doet automatisch hetzelfde met behulp van een gegevensstructuur die een hashmap wordt genoemd (een opzoektabel die een waarde onder een sleutel opslaat). Voor elk teken in de tekst wordt gecontroleerd of dat teken al een vermelding in de map heeft. Als dat zo is, telt de tool 1 op bij de opgeslagen telling. Zo niet, dan wordt een nieuwe vermelding met een telling van 1 gemaakt. Deze methode verwerkt elk teken precies één keer, waardoor de benodigde tijd recht evenredig toeneemt met de lengte van de tekst, en niet sneller.

Na het tellen worden de resultaten alfabetisch op teken gesorteerd. Er is momenteel geen optie om in plaats daarvan op telling te sorteren.

Karakterfrequentie als percentage

Tellingen op zichzelf kunnen moeilijk te vergelijken zijn tussen teksten van verschillende lengtes. Daarom wordt frequentie vaak uitgedrukt als percentage van het totale aantal tekens:

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

Hier staat ncn_c voor het aantal keer dat teken cc voorkomt, en NN voor het totale aantal tekens in de tekst. Deze tool rapporteert de ruwe tellingen en het totale aantal tekens, niet een kolom met percentages, maar het percentage voor elk teken kan worden berekend door de telling ervan te delen door het totaal en te vermenigvuldigen met 100.

Uitgewerkt voorbeeld

Neem het woord "mississippi", dat 11 tekens en geen spaties of leestekens bevat.

Als elke letter wordt geteld, ontstaat het volgende:

TekenTellingPercentage
i436,4%
m19,1%
p218,2%
s436,4%

De tabel is alfabetisch gesorteerd (i, m, p, s), zoals deze tool de resultaten ordent. De tellingen komen samen uit op 11, de totale lengte van het woord. Voor de percentagekolom werd elke telling gedeeld door 11 en vermenigvuldigd met 100, bijvoorbeeld 4 ÷ 11 × 100 ≈ 36,4%.

Deze tool gebruiken

Typ of plak tekst in het invoervak. De tool analyseert de tekst direct, zonder knop om op te drukken. Terwijl de tekst verandert, worden de tekenlijst en het staafdiagram bijgewerkt.

In het resultatengedeelte staat:

  • Een staafdiagram met één staaf per teken. Hogere staven betekenen dat het teken vaker voorkomt.
  • Het totale aantal tekens in de tekst, inclusief spaties en leestekens.
  • De exacte telling van één teken tegelijk, weergegeven wanneer je de bijbehorende staaf aanwijst of erop tikt.

Met de knop "Kopiëren" worden de resultaten als platte tekst opgemaakt, met één teken en telling per regel, klaar om in een spreadsheet of document te plakken. Spaties worden in deze uitvoer aangeduid met "space", zodat ze niet worden aangezien voor lege regels.

In gewone Engelse tekst behoren letters als E, T, A, O en I meestal tot de meest voorkomende. Een tekst waarin zeldzame letters als Q of Z ongewoon vaak voorkomen, kan gecodeerd of versleuteld zijn, of in een andere taal zijn geschreven.

Toepassingen van karakterfrequentieanalyse

Substitutiecijfers kraken

Een substitutiecijfer vervangt elke letter van een bericht door een andere letter of een ander symbool, waarbij overal dezelfde vervanging wordt gebruikt. Omdat de vervanging consistent is, blijft het frequentiepatroon van de oorspronkelijke taal in de versleutelde tekst behouden. In het Engels komt de letter E in ongeveer 12–13% van de gevallen voor. Als één symbool in een cijfertekst ongeveer even vaak voorkomt, is het een sterke kandidaat om voor E te staan. Eeuwenlang was dit de belangrijkste methode om substitutiecijfers te kraken, totdat moderne versleuteling deze methode ongeschikt maakte voor alles behalve puzzels en historische documenten.

Datacompressie

Compressie-indelingen zoals ZIP en GZIP gebruiken karakterfrequentie via een methode die Huffmancodering wordt genoemd. Tekens die vaak voorkomen, krijgen korte binaire codes en zeldzame tekens krijgen langere codes. Omdat veelvoorkomende tekens per voorkomen minder ruimte innemen, wordt het hele bestand kleiner zonder informatieverlies.

Problemen met tekencodering opsporen

Tekst waarin vreemde, onverwachte tekens worden weergegeven (zoals "é" waar "é" zou moeten staan), wijst vaak op een verschil tussen de tekencodering waarin een bestand is opgeslagen en de codering die is gebruikt om het te lezen. Een frequentiegrafiek met een ongebruikelijke piek in vreemde symbolen in plaats van veelvoorkomende letters kan helpen een coderingsprobleem te bevestigen.

Taalidentificatie

Verschillende talen hebben verschillende typische tekenverdelingen. In het Engels komen E, T en A vaak voor. In het Duits komen E en N veel vaker voor, evenals letters als ä, ö en ü die helemaal niet in het Engels voorkomen. Door de karakterfrequenties van een tekst te vergelijken met bekende taalprofielen, kan de taal snel en globaal worden geschat.

Schrijfstijl en auteurschap

Omdat schrijvers doorgaans vaste gewoonten hebben op het gebied van leestekens en lettergebruik, kunnen patronen op tekenniveau een klein onderdeel van het bewijs voor het auteurschap vormen. Op zichzelf bewijst karakterfrequentie zelden wie iets heeft geschreven; de methode werkt het best in combinatie met woordkeuze, zinslengte en andere stijlkenmerken.

Andere methoden voor tekstanalyse

Karakterfrequentie is niet de enige manier om tekst te analyseren.

  • Woordfrequentie telt hele woorden in plaats van tekens. Deze methode sluit nauwer aan bij de betekenis van een tekst en wordt vaak gebruikt voor zoekwoordonderzoek en onderwerp-analyse.
  • N-gramanalyse kijkt naar korte reeksen tekens of woorden, zoals paren of drietallen. Voorspellende toetsenborden en automatisch aanvullen gebruiken dit om de volgende letter of het volgende woord te raden.
  • Sentimentanalyse bepaalt of een tekst positief, negatief of neutraal klinkt, met methoden die veel verder gaan dan eenvoudig tellen.
  • Leesbaarheidsanalyse, zoals de Flesch-Kincaid-score, schat in hoe moeilijk een tekst te lezen is op basis van zins- en woordlengte.

Veelgestelde vragen

Wat vertelt karakterfrequentieanalyse je?

De analyse laat zien hoe vaak elk teken in een tekst voorkomt. Het lezen van de resultaten kan patronen onthullen die nuttig zijn voor cryptografie, compressie, het opsporen van coderingsfouten of het raden van de taal van een tekst.

Hoe sorteert deze tool de resultaten?

De tool sorteert tekens alfabetisch. Er is geen optie om in plaats daarvan op telling te sorteren. De meest en minst voorkomende tekens moeten worden gevonden door het staafdiagram te lezen of de tellingen in de gekopieerde tekst te bekijken.

Toont de tool percentages?

Nee. De tool rapporteert de ruwe telling voor elk teken en het totale aantal tekens. Een percentage kan worden berekend door de telling van een teken te delen door het totaal en te vermenigvuldigen met 100.

Kan karakterfrequentieanalyse moderne versleuteling kraken?

Nee. De methode werkt alleen tegen eenvoudige substitutiecijfers, waarbij één teken altijd voor hetzelfde vervangende teken staat. Moderne versleuteling, zoals AES, produceert uitvoer zonder zo'n consistent patroon, waardoor frequentietellingen niets over het oorspronkelijke bericht onthullen.

Telt de tool spaties en leestekens?

Ja. Elk teken in de invoer wordt geteld, inclusief spaties, tabs, regeleinden en leestekens. In gewone tekst zijn spaties vaak het teken dat het vaakst voorkomt.

Hoeveel tekst is nodig voor betrouwbare patronen?

Een paar honderd tekens is een redelijk minimum. In zeer korte teksten kunnen frequenties door toeval sterk afwijken van het verwachte patroon. Langere voorbeelden van duizend tekens of meer komen doorgaans beter overeen met bekende taalpatronen.

Referenties

  1. MDN Web Docs: Map — documentatie voor de hashmap-gegevensstructuur die wordt gebruikt om tekens efficiënt te tellen.
  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. Huffman-codering — Wikipedia