Vote utilisateur: 0 / 5

Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives
 

Fréquence d'apparition des lettres dans un texte

 

 

1. Une fonction qui donne la fréquence d'une lettre dans un texte

 

On va créer une fonction frequence_lettre(lettre,texte) qui va renvoyer la fréquence de la lettre dans le texte donné sous la forme du couple (lettre, fréquence) ou d'une liste [lettre, fréquence].
Rappel : len(X) renvoie la longueur de la liste ou chaîne X

 

 

Méthode 1
L'idée dans un premier temps est de faire une boucle sur les caractères du texte donné et de compter le nombre de fois où la lettre apparait à l'aide d'un compteur.
ex='zaaabbcabj'
#
def frequence_lettre1(lettre,texte):
    compteur=0
    for i in texte:
        ...
    return ...
Vérifier qu'en écrivant frequence_lettre1('a',ex) dans la console on obtient bien avec notre exemple ( 'a' , 0.4 ).
 
Méthode 2
La fonction count permet de compter le nombre d'élément dans une liste ou une chaîne de caractères.
Par exemple X.count('y') va renvoyer le nombre de caractère 'y' dans X. Noter que les chaîne de caractères doivent être notée entre apostrophe.

On va l'utiliser pour créer une fonction frequence_lettre2(lettre,texte) qui va renvoyer la fréquence de la lettre dans le texte sous la forme du couple (lettre, fréquence) ou d'une liste [lettre, fréquence]. 

 

#
def frequence_lettre2(lettre,texte):            
    return ...
Vérifier qu'en écrivant frequence_lettre2('a',ex) dans la console on obtient bien  ( 'a' , 0.4 ).
Remarque : Si vous écrivez dans la console frequence_lettre2('a',ex)[0]  vous allez obtenir le premier argument renvoyé soit 'a'
et si vous écrivez frequence_lettre2('a',ex)[1] vous allez obtenir le deuxième argument renvoyé soit 0.4 ici.

2. Une fonction qui donne la fréquence de toutes les lettres de l'alphabet présentent dans un texte donné

 

On va maintenant écrire une fonction frequence(texte) qui donne la fréquence d'apparition des lettres de l'alphabet dans un texte donné. On va créer une variable alphabet qui contient les lettres à tester et boucler sur ces lettres avec un test sur chaque caractère du texte. La liste renvoyée sera une liste de couples (ou de listes) composés de la lettre et de sa fréquence.
Par exemple on devra ici obtenir en écrivant frequence(ex) dans la console :
 
[('a', 0.4), ('b', 0.3), ('c', 0.1), ('d', 0.0), ('e', 0.0), ('f', 0.0), ('g', 0.0), ('h', 0.0), ('i', 0.0), ('j', 0.1), ('k', 0.0), ('l', 0.0), ('m', 0.0), ('n', 0.0), ('o', 0.0), ('p', 0.0), ('q', 0.0), ('r', 0.0), ('s', 0.0), ('t', 0.0), ('u', 0.0), ('v', 0.0), ('w', 0.0), ('x', 0.0), ('y', 0.0), ('z', 0.1)]
 
 
#
alphabet='abcdefghijklmnopqrstuvwxyz'
#
def frequence(texte):
    ...
#
 
Remarque : Si vous écrivez dans la console frequence(ex)[0]  vous allez obtenir le premier couple renvoyé soit :
('a', 0.4)

3. Représentation graphique

Il est possible d'obtenir une représentation graphique des résultats mais la syntaxe est assez lourde, nous vous donnons directement une solution, possible.
import matplotlib.pyplot as plt 
import numpy as np
import pylab
x = [x for x in range(26)]
height = [x[1] for x in frequence(ex)]#On extrait chaque frequence des couples 
width = 0.5
BarName = [x for x in alphabet]
plt.bar(x, height, width, color='b' )
pylab.xticks(x, BarName, rotation=0)
plt.xlabel('Lettres')
plt.ylabel('Frequences')
plt.savefig('graph')

 

Articles Connexes