Vidéo terminée
Fin du chapitrePasser le QCM du chapitreLeçon 9
Python, fréquence des lettres d'un texte
Le cours écrit
9.1 Une fréquence est une probabilité
On tire au hasard une lettre dans un texte, avec équiprobabilité. La probabilité d'obtenir la lettre « e » est alors la fréquence de « e » dans le texte : c'est le lien entre proportion et probabilité de la leçon 3. Le texte est une population, et chaque lettre en est un individu.
9.2 Compter une lettre
On écrit le texte en minuscules, sans accents, sans ponctuation. On parcourt ses caractères, comme une liste.
def nb_occurrences(lettre, texte):
n = 0
for c in texte:
if c == lettre:
n = n + 1
return n
9.3 La liste des fréquences
On construit la liste des effectifs des lettres, en compréhension, puis on divise par le nombre total de lettres. Les espaces ne sont pas comptés.
alphabet = "abcdefghijklmnopqrstuvwxyz"
def frequences(texte):
effectifs = [nb_occurrences(lettre, texte) for lettre in alphabet]
total = sum(effectifs)
return [n / total for n in effectifs]
9.4 En français, en anglais
Voici deux textes de même sens, écrits pour ce cours.
texte_fr = ("le hasard ne suit aucune regle pour une seule partie "
"mais il devient previsible quand on repete une experience "
"un tres grand nombre de fois les savants ont longtemps etudie "
"les jeux de cartes et de des avant de comprendre que les memes "
"calculs servent aussi pour les assurances la meteo et la medecine "
"aujourd hui on mesure le risque avec des nombres simples "
"une moyenne et un ecart type et chacun peut decider "
"en connaissance de cause")
texte_en = ("chance follows no rule for a single game "
"but it becomes predictable when we repeat an experiment "
"a very large number of times scholars studied card games "
"and dice for a long time before they understood that the same "
"calculations also serve for insurance weather and medicine "
"today we measure risk with simple numbers "
"a mean and a standard deviation and everyone can decide "
"with full knowledge of the facts")
Exemple 40. Le texte français compte lettres, le texte anglais . La lettre « e » arrive en tête dans les deux langues : en français et en anglais, en arrondissant à un dixième. La lettre « u » est bien plus fréquente en français ( contre ), la lettre « h » en anglais ( contre ), et le « w », à en anglais, n'apparaît pas une seule fois dans le texte français.
Un texte aussi court ne donne que des tendances : sur des textes longs, les fréquences varient moins d'un texte à l'autre. Chaque langue a ainsi sa signature, que les codes secrets par décalage de lettres ne cachent pas.
9.5 La proportion de voyelles est une espérance
On tire une lettre au hasard, et on pose si c'est une voyelle, et sinon, en comptant le « y » parmi les voyelles. Comme à l'exemple 33, l'espérance de est la probabilité d'obtenir une voyelle : c'est la proportion de voyelles du texte. On réutilise la fonction de la leçon 8, les valeurs étant ou et les probabilités étant les fréquences.
valeurs = [1 if lettre in "aeiouy" else 0 for lettre in alphabet]
print(esperance(valeurs, frequences(texte_fr)))
Exemple 41. On obtient environ en français et en anglais.
Exercices 17 et 18
- Exercice 17 : un mot, à la main
- Exercice 18 : un message codé
Corrigés
Cherche d'abord les exercices sur ta feuille, puis compare avec le corrigé détaillé.