Analyseur de Fréquence de Caractères
Comptez la fréquence de chaque caractère dans votre texte
Options
排序
Qu'est-ce que l'analyse de fréquence des caractères ?
L’analyse de fréquence des caractères compte combien de fois chaque caractère apparaît dans un texte et quelle part il représente. Elle peut inclure lettres, chiffres, ponctuation, espaces, caractères CJK, symboles et caractères de contrôle peu visibles selon l’entrée. C’est utile pour des exercices de cryptographie, une analyse de substitution simple, l’extraction de caractéristiques textuelles, le nettoyage de données, la vérification d’encodage, la recherche en compression et le contrôle qualité de contenus importés. Des fréquences inhabituelles peuvent révéler des caractères cachés, du texte mal décodé, des séparateurs répétés, une langue inattendue ou des traces de copier-coller. L’outil fournit une mesure claire de la distribution réelle.
Comment utiliser
Comment utiliser
- Saisissez ou collez votre texte dans la zone de saisie
- Le système compte automatiquement les occurrences et la fréquence de chaque caractère
- Utilisez les options de tri pour organiser les résultats par caractère ou par fréquence
- Ajustez les options (casse, espaces, retours à la ligne)
Périmètre du comptage
- Avant de comparer des textes, décidez si les espaces, la ponctuation, la casse et les sauts de ligne doivent être pris en compte.
- Pour du texte multilingue, gardez à l'esprit que les émojis, les caractères composés et les caractères CJK ne se comportent pas comme de simples lettres latines.
Cas d’utilisation
Principe technique
L'analyse de fréquence des caractères compte les occurrences de chaque caractère dans un texte. L'implémentation utilise une table de hachage (typiquement un Map en JavaScript) : 1) parcourir le texte caractère par caractère, 2) pour chaque caractère, incrémenter le compteur dans la map, 3) trier les entrées par nombre décroissant, 4) rendre l'histogramme (les 10 à 20 premiers caractères, le reste dans une catégorie résiduelle). L'algorithme est O(N) en fonction de la longueur du texte, où N est le nombre de caractères, et le coût dominant est la recherche et l'incrément dans la map (essentiellement gratuit dans V8 et SpiderMonkey pour le cas courant). Une subtilité utile : qu'est-ce qu'un caractère ? En JavaScript, .length retourne le nombre d'unités de code UTF-16, pas de points de code Unicode. Un caractère en dehors du Plan multilingue de base (émojis, idéogrammes CJK rares) est encodé en paire de substitution (deux unités de code), et un comptage naïf par unité de code surcomptera en traitant chaque moitié de substitution comme un caractère séparé. La page utilise Array.from(text) ou Intl.Segmenter pour itérer sur les points de code (ou les clusters de graphèmes), ce qui est la bonne définition d'un caractère pour la plupart des cas d'usage. Une application utile : l'analyse fréquentielle est la technique classique pour casser les chiffrements par substitution (César, Vigenère, substitution simple). La distribution de fréquence des lettres anglaises est bien connue (E, T, A, O, I, N, S, H, R sont les plus courantes, dans cet ordre approximatif), et un chiffrement par substitution préserve la distribution de fréquence, donc la lettre la plus fréquente du texte chiffré correspond probablement à E, la deuxième à T, et ainsi de suite. La page est un outil pédagogique, pas un outil de cryptanalyse, mais la technique est la même. Une réserve sur Unicode : pour les langues CJK, la distribution de fréquence des caractères dépend du corpus (roman moderne, poésie classique, texte technique) et du niveau d'analyse (caractère, mot, bigramme, trigramme). Une analyse fréquentielle d'un roman chinois moderne donne une distribution ; une analyse des Analectes en donne une autre. La page est indépendante du corpus, l'utilisateur peut donc l'exécuter sur n'importe quel texte.
- Table de hachage (Map en JS) : parcourir le texte, incrémenter le compteur, trier par nombre décroissant, rendre l'histogramme ; O(N) en fonction de la longueur du texte avec un coût par caractère très faible.
- Paires de substitution : un caractère en dehors du BMP (émojis, CJK rares) occupe deux unités de code UTF-16 ; un comptage naïf par unité de code surcompte ; utiliser Array.from ou Intl.Segmenter.
- Cryptanalyse par chiffrement par substitution : fréquence des lettres anglaises E, T, A, O, I, N, S, H, R (les plus courantes dans cet ordre) ; un chiffrement par substitution préserve la distribution.
- Fréquence CJK : dépend du corpus (roman moderne, poésie classique, texte technique) et du niveau d'analyse (caractère, mot, bigramme) ; la page est indépendante du corpus.
- Top-N et catégorie résiduelle : la page affiche par défaut les 10 à 20 premiers caractères par fréquence, avec une catégorie résiduelle pour le reste ; utile pour repérer des motifs dans un texte dense.
- Sensibilité à la casse : la page propose une bascule sensible/insensible à la casse ; l'anglais est généralement insensible à la casse (E et e sont la même lettre, juste des formes différentes), le CJK est toujours insensible à la casse (pas de concept de casse).
- Performance : O(N) pour le comptage, O(K log K) pour le tri des K caractères distincts ; la page gère des textes d'un million de caractères en bien moins d'une seconde, ce qui est le pattern de production.
Exemples
Analyse de texte anglais
Entrée "hello world" → Résultat : 'l' apparaît 3 fois (27,3 %), 'o' apparaît 2 fois (18,2 %)Analyse de texte chinois
Entrée "我爱中国我爱北京" → Résultat : '我' et '爱' apparaissent chacun 2 fois (25 %)Comparaison de distribution de fréquence
Texte anglais : 'e' le plus fréquent à ~12,7 % ; chinois : '的' le plus fréquent à ~4 %FAQ
Que compte l'analyseur ?
Chaque caractère unique et sa fréquence d'apparition, triés par fréquence. Utile pour l'analyse de chiffrements (le texte anglais a des fréquences de lettres prévisibles, commençant par E, T, A, O), le profilage de texte et la détection de caractères inattendus dans un document copié-collé.
Les espaces sont-ils comptés ?
Oui par défaut : espaces, tabulations et sauts de ligne ont chacun leur propre ligne. Activez « ignorer les espaces » si vous voulez uniquement les caractères imprimables. Les espaces sont généralement le « caractère » le plus fréquent dans un texte en langue naturelle (~20 %).
Le comptage tient-il compte de la casse ?
Par défaut, oui : « A » et « a » sont distincts. Activez « ignorer la casse » pour les fusionner, ce qui est courant pour l'analyse linguistique. Pour l'inspection de code ou de hachages, la casse est importante.
Cela fonctionne-t-il pour le chinois, le japonais, le coréen ?
Oui. Chaque caractère CJK est compté individuellement. Le tableau de fréquences d'un paragraphe en chinois affiche naturellement des centaines de caractères distincts puisque le chinois ne dispose pas d'un alphabet partagé. L'outil gère correctement Unicode via le comptage par grappes de graphèmes.
Puis-je voir la fréquence en pourcentage ?
Oui, la page affiche généralement le décompte et le pourcentage du total. Utile pour comparer les distributions de lettres à des distributions de référence connues lors du décodage de chiffrements par substitution simple.
Pourquoi la somme des pourcentages ne fait-elle pas 100 ?
Arrondi. Chaque cellule est arrondie à un nombre fixe de décimales ; la somme des pourcentages arrondis peut s'écarter de 100 % de quelques dixièmes. Additionnez les décomptes bruts pour un total exact.
Mon texte est-il envoyé en ligne ?
Non. L'analyse de fréquence s'effectue dans votre navigateur. Le texte collé n'est pas transmis.