Maison > développement back-end > Tutoriel Python > Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte

Jennifer Aniston
Libérer: 2025-03-05 09:58:11
original
924 Les gens l'ont consulté

How to Use Python to Find the Zipf Distribution of a Text File

Ce tutoriel montre comment utiliser Python pour traiter le concept statistique de la loi de Zipf et démontre l'efficacité de la lecture et du tri de Python de gros fichiers texte lors du traitement de la loi.

Vous vous demandez peut-être ce que signifie le terme Zipf Distribution . Pour comprendre ce terme, nous devons d'abord définir la loi ZIPF . Ne vous inquiétez pas, je vais essayer de simplifier les instructions.

La loi de Zipf

La loi de Zipf signifie simplement: dans un grand corpus en langage naturel, les mots les plus fréquents apparaissent environ deux fois plus fréquemment que les deuxième mots fréquents, trois fois comme les troisième mots fréquents, quatre fois comme les quatrième mots fréquents, etc.

Regardons un exemple. Si vous regardez le corpus brun en anglais américain, vous remarquerez que le mot qui apparaît le plus souvent est "le" (apparaît 69 971 fois). Le second est fréquemment apparu le mot "de" est apparu 36 411 fois.

"Le" représente environ 7% du vocabulaire Brown Corpus (69 971 sur plus d'un million de mots). Et "de" représente environ 3,6% du corpus (environ la moitié de "le"). Par conséquent, nous pouvons voir que la loi de Zipf s'applique à cette affaire.

Par conséquent, la loi de Zipf essaie de nous dire qu'un petit nombre d'articles occupent généralement la majeure partie de l'activité que nous observons. Par exemple, quelques maladies (cancer, maladies cardiovasculaires) expliquent la majorité des décès. Cela s'applique également aux mots qui occupent la majeure partie de la fréquence des mots dans les œuvres littéraires, ainsi que de nombreux autres exemples dans nos vies.

Préparation des données

Avant de continuer, permettez-moi de vous présenter les données expérimentales que nous utiliserons dans ce tutoriel. Nos données proviennent de la version Text Dracula disponible sur le site Web de Project Gutenberg.

Construction du programme

Après avoir téléchargé les données de la section précédente, commençons à construire un script Python qui recherchera la distribution ZIPF des données dans

dracula.txt .

La première étape consiste à utiliser la fonction

pour lire le fichier. read()

Puisque nous recherchons des modèles (c'est-à-dire des mots), les expressions régulières sont utiles. Nous utiliserons Python

pour supprimer tous les mots qui ne sont pas des mots au sens traditionnel. Par exemple, il ne correspondra pas à Robotics_89, 40_pie_40 et à Bigmango. "Bigmango" ne correspond pas car il commence par plusieurs lettres majuscules. b[A-Za-z][a-z]{2,9}b

Cette expression régulière nous dit essentiellement de trouver tous les mots qui commencent par des lettres (caps ou minuscules) suivis d'au moins 2 caractères et pas plus de 9 caractères. En d'autres termes, les tailles de mots contenues dans la sortie vont de 3 à 10 caractères.

Dans Python, cela peut être exprimé comme:

words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)
Copier après la connexion
Copier après la connexion
Maintenant, nous pouvons exécuter une boucle pour calculer la fréquence de chaque occurrence du mot:

for word in words:
    count = frequency.get(word,0)
    frequency[word] = count + 1
Copier après la connexion
Copier après la connexion
Ici, si le mot ne se trouve pas dans la liste des mots, nous utilisons la fonction

pour traverser les valeurs afin que nous puissions également suivre les positions d'index de différents mots au lieu de lancer une erreur de boucle. enumerate()

La fréquence des mots les plus fréquents est ensuite divisée par la fréquence des autres mots pour calculer leur rapport. Cela nous permet de voir à quel point la loi de Zipf est suivie.

Intégrer tous les contenus

Après avoir compris les différents éléments constitutifs d'un programme, voyons comment ils sont assemblés:

words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)
Copier après la connexion
Copier après la connexion

Ici, j'affiche les dix premiers mots renvoyés par le programme et leur fréquence:

for word in words:
    count = frequency.get(word,0)
    frequency[word] = count + 1
Copier après la connexion
Copier après la connexion

À partir de cette distribution ZIPF, nous pouvons vérifier la loi de Zipf, c'est-à-dire que certains mots (mots à haute fréquence) représentent la plupart des mots, tels que "le" et ",", "que", "était" et "pour".

Conclusion

Dans ce tutoriel, nous voyons comment Python simplifie le traitement des concepts statistiques tels que la loi de Zipf. Surtout lorsque vous traitez avec de grands fichiers texte, Python est très pratique, et si nous recherchons manuellement les distributions ZIPF, cela prend beaucoup de temps et d'efforts. Comme nous pouvons le voir, nous sommes en mesure de charger, analyser rapidement et trouver des distributions ZIPF de fichiers de taille 28 Mo. Et en raison du dictionnaire de Python, le tri de sortie est également simple.

Cet article a été mis à jour et contient des contributions de Monty Shokeen. Monty est un développeur complet qui aime également écrire des tutoriels et apprendre de nouvelles bibliothèques JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal