Heim >Backend-Entwicklung >Python-Tutorial >So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden

Jennifer Aniston
Jennifer AnistonOriginal
2025-03-05 09:58:11925Durchsuche

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

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 -Gesetz

ZIPF -Gesetz bedeutet einfach: In einem großen natürlichen Sprachkorpus erscheinen die am häufigsten vorkommenden Wörter ungefähr doppelt so häufig wie die zweiten häufigen Wörter, dreimal wie die dritten häufigen Wörter, viermal wie die vierten häufigen Wörter und so weiter.

Schauen 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

Bevor ich weitergeht, lassen Sie mich Sie in die experimentellen Daten vorstellen, die wir in diesem Tutorial verwenden werden. Unsere Daten stammen aus der Dracula -Textversion, die auf der Website von Project Gutenberg verfügbar ist.

Programmkonstruktion

Nach dem Herunterladen der Daten aus dem vorherigen Abschnitt beginnen wir ein Python -Skript, das nach der ZiPF -Verteilung der Daten in

dracula.txt sucht.

Der erste Schritt besteht darin, die Funktion

zum Lesen der Datei zu verwenden. read()

Da wir nach Mustern suchen (d. H. Wörter), sind regelmäßige Ausdrücke nützlich. Wir werden Pythons

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

Dieser reguläre Ausdruck zeigt uns im Grunde genommen, alle Wörter zu finden, die mit Buchstaben (Kappen oder Kleinbuchstaben) beginnen, gefolgt von mindestens 2 Zeichen und nicht mehr als 9 Zeichen. Mit anderen Worten, die im Ausgangsbereich enthaltenen Wortgrößen von 3 bis 10 Zeichen.

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 + 1
Wenn 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.

Integrieren Sie alle Inhalte

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".

Schlussfolgerung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn