Heim >Backend-Entwicklung >Python-Tutorial >So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden
Dieses Tutorial zeigt, wie man Python verwendet, um das statistische Konzept des ZIPF -Gesetzes zu verarbeiten, und zeigt die Effizienz des Lesens und Sortierens großer Textdateien von Python bei der Verarbeitung des Gesetzes.
Sie fragen sich vielleicht, was der Begriff ZiPF -Verteilung bedeutet. Um diesen Begriff zu verstehen, müssen wir zunächst das Zipf -Gesetz definieren. Mach dir keine Sorgen, ich werde versuchen, die Anweisungen zu vereinfachen.
ZIPF -GesetzSchauen wir uns ein Beispiel an. Wenn Sie sich den Brown Corpus in amerikanischem Englisch ansehen, werden Sie feststellen, dass das Wort, das am häufigsten erscheint, "das" ist (erscheint 69.971 Mal). Das zweite häufig erschien das Wort "von" 36.411 Mal.
"Die" macht etwa 7% des Brown Corpus -Wortschatzes aus (69.971 von mehr als 1 Million Wörtern). Und "von" macht etwa 3,6% des Korpus (etwa die Hälfte von "dem") aus. Daher können wir sehen, dass das ZIPF -Gesetz für diesen Fall gilt.
Daher versucht das Zipf -Gesetz uns zu sagen, dass eine kleine Anzahl von Gegenständen normalerweise den größten Teil der von uns beobachteten Aktivitäten belegt. Beispielsweise machen einige Krankheiten (Krebs, Herz -Kreislauf -Erkrankungen) den größten Teil der Todesfälle aus. Dies gilt auch für Wörter, die den größten Teil der Häufigkeit von Wörtern in literarischen Werken sowie viele andere Beispiele in unserem Leben einnehmen.
Datenvorbereitung
Programmkonstruktion
dracula.txt sucht.
Der erste Schritt besteht darin, die Funktion zum Lesen der Datei zu verwenden. read()
verwenden, um alle Wörter zu entfernen, die keine Wörter im traditionellen Sinne sind. Zum Beispiel werden Robotics_89, 40_Pie_40 und Bigmango nicht übereinstimmen. "Bigmango" stimmt nicht überein, da es mit mehreren Großbuchstaben beginnt. b[A-Za-z][a-z]{2,9}b
In Python kann dies ausgedrückt werden als:
words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)Jetzt können wir eine Schleife ausführen, um die Frequenz jedes Wortes Auftreten zu berechnen:
for word in words: count = frequency.get(word,0) frequency[word] = count + 1Wenn das Wort nicht in der Wortliste gefunden wird, verwenden wir die Funktion
, um die Werte zu durchqueren, damit wir auch die Indexpositionen verschiedener Wörter verfolgen können, anstatt einen für Schleifenfehler zu werfen. enumerate()
Die Frequenz der häufigsten Wörter wird dann durch die Frequenz der anderen Wörter geteilt, um ihr Verhältnis zu berechnen. Auf diese Weise können wir sehen, wie gut das Zipf -Gesetz befolgt wird.
Nach dem Verständnis der verschiedenen Bausteine eines Programms sehen wir sehen, wie sie zusammengestellt werden:
words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)
Hier zeige ich die ersten zehn Wörter, die vom Programm zurückgegeben wurden, und deren Frequenz:
for word in words: count = frequency.get(word,0) frequency[word] = count + 1
Aus dieser ZiPF -Verteilung können wir das Zipf -Gesetz verifizieren, dh einige Wörter (Hochfrequenzwörter) repräsentieren die meisten Wörter, wie "das", "und", "das", "," und "für".
In diesem Tutorial sehen wir, wie Python die Verarbeitung statistischer Konzepte wie ZiPFs Gesetz vereinfacht. Vor allem im Umgang mit großen Textdateien ist Python sehr bequem, und wenn wir manuell nach Zipf -Verteilungen nachschlagen, dauert es viel Zeit und Mühe. Wie wir sehen können, können wir ZiPF -Verteilungen von Dateien mit 28 MB schnell laden, analysieren und finden. Und wegen des Wörterbuchs von Python ist auch die Sortierleistung einfach.
Dieser Artikel wurde aktualisiert und enthält Beiträge von Monty Shokeen. Monty ist ein vollständiger Stack -Entwickler, der es auch liebt, Tutorials zu schreiben und neue JavaScript -Bibliotheken zu lernen.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!