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 ZipfRegardons 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
Construction du programme
dracula.txt .
La première étape consiste à utiliser la fonction pour lire le fichier. read()
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
Dans Python, cela peut être exprimé comme:
words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)
for word in words: count = frequency.get(word,0) frequency[word] = count + 1
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.
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)
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
À 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".
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!