Comptage de la fréquence des mots dans un fichier à l'aide de Python

Vous êtes-vous déjà demandé un moyen rapide de savoir sur quoi un document se concentre? Quel est son sujet principal? Laissez-moi vous donner ce truc simple. Répertoriez les mots uniques mentionnés dans le document, puis vérifiez le nombre de fois que chaque mot a été mentionné (fréquence). Cela vous donnerait une indication sur le contenu principal du document. Mais cela ne fonctionnerait pas facilement manuellement, nous avons donc besoin d'un processus automatisé, ne nous?

Oui, un processus automatisé rendra cela beaucoup plus facile. Voyons comment répertorier les différents mots uniques dans un fichier texte et vérifier la fréquence de chaque mot à l'aide de Python.

Fichier de test

Dans ce tutoriel, nous allons utiliser test.txt comme fichier de test. Allez-y, téléchargez-le, mais ne l'ouvrez pas! Faisons un petit jeu. Le texte contenu dans ce fichier de test provient d’un de mes tutoriels d’Envato Tuts +. En fonction de la fréquence des mots, devinons lequel de mes tutoriels ce texte a été extrait.

Que le jeu commence!

Expressions régulières

Puisque nous allons appliquer un motif à notre jeu, nous devons utiliser des expressions régulières (regex). Si "expressions régulières" est un nouveau terme pour vous, c'est une belle définition de Wikipedia:

Une séquence de caractères qui définit un modèle de recherche, principalement à utiliser dans la correspondance de modèles avec des chaînes, ou la correspondance de chaînes, c’est-à-dire les opérations de type "trouver et remplacer". Le concept est apparu dans les années 1950, lorsque le mathématicien américain Stephen Kleene a formalisé la description d'un langage courant et est devenu communément utilisé avec les utilitaires de traitement de texte Unix, ed, un éditeur et grep, un filtre.

Si vous voulez en savoir plus sur les expressions régulières avant de poursuivre avec ce tutoriel, vous pouvez voir mon autre tutoriel Expressions régulières en Python, et revenir pour continuer ce tutoriel..

Construire le programme

Travaillons étape par étape pour construire ce jeu. La première chose à faire est de stocker le fichier texte dans une variable chaîne..

document_text = open ('test.txt', 'r') text_string = document_text.read ()

Maintenant, afin de faciliter l'application de notre expression régulière, convertissons toutes les lettres de notre document en lettres minuscules, en utilisant la fonction lower (), comme suit:

text_string = document_text.read (). lower ()

Écrivons notre expression régulière qui renverrait tous les mots avec le nombre de caractères compris dans la plage. [3-15]. Partant de 3 aidera à éviter les mots que nous ne sommes peut-être pas intéressés à compter leur fréquence comme si, de, dans, etc., et des mots ayant une longueur supérieure à 15 pourrait ne pas être des mots corrects. L'expression régulière pour un tel motif se présente comme suit:

\ b [a-z] 3,15 \ b

\ b est liée à limite de mot. Pour plus d'informations sur la limite de mots, vous pouvez consulter ce tutoriel.

L'expression régulière ci-dessus peut être écrite comme suit:

match_pattern = re.search (r '\ b [a-z] 3,15 \ b', chaîne de texte) 

Puisque nous voulons parcourir plusieurs mots du document, nous pouvons utiliser le Trouver tout une fonction:

Renvoie toutes les correspondances de modèle dans chaîne, comme une liste de chaînes. le chaîne est balayé de gauche à droite et les correspondances sont renvoyées dans l’ordre trouvé. Si un ou plusieurs groupes sont présents dans le motif, retournez une liste de groupes. Ce sera une liste de tuples si le motif a plus d'un groupe. Les matchs vides sont inclus dans le résultat, sauf s'ils touchent le début d'un autre match..

À ce stade, nous voulons trouver la fréquence de chaque mot du document. Le concept approprié à utiliser ici est Dictionnaires Python, car nous avons besoin valeur clé paires, où clé est le mot, et le valeur représente le la fréquence les mots sont apparus dans le document.

En supposant que nous ayons déclaré un dictionnaire vide fréquence = , le paragraphe ci-dessus se présenterait comme suit:

pour mot dans match_pattern: compte = fréquence.get (mot, 0) fréquence [mot] = compte + 1

Nous pouvons maintenant voir nos clés en utilisant:

frequency_list = frequency.keys ()

Enfin, pour obtenir le mot et sa fréquence (nombre d'apparitions dans le fichier texte), nous pouvons procéder comme suit:

pour les mots dans frequency_list: mots imprimés, fréquence [mots]

Rassemblons le programme dans la section suivante et voyons à quoi ressemble le résultat.

Mettre tous ensemble

Après avoir discuté du programme étape par étape, voyons maintenant à quoi ressemble le programme:

import re importer chaîne fréquence =  document_text = open ('test.txt', 'r') text_string = document_text.read (). lower () match_pattern = re.findall (r '\ b [az] 3,15  \ b ', text_string) pour le mot dans match_pattern: count = frequency.get (word, 0) frequency [mot] = count + 1 frequency_list = frequency.keys () pour les mots de frequency_list: mots imprimés, fréquence [mots]

Si vous exécutez le programme, vous devriez obtenir quelque chose comme ce qui suit:

Revenons à notre jeu. En parcourant les mots fréquences, que pensez-vous du fichier de test (avec le contenu de mon autre tutoriel Python)?? 

(Indice: vérifiez le mot avec la fréquence maximale).