+1 Daumen
940 Aufrufe

Ich versuche, die besten Möglichkeiten zu verstehen, Text nach ihrer Länge und dem Begriff der verteilten Häufigkeit zu filtern und zu sortieren.

Find all the four-letter words in the Chat Corpus (text5). With the help of a frequency distribution (FreqDist), show these words in decreasing order of frequency.

Natural Language Processing with Python, ch1 from Steven Bird, Ewan Klein and Edward Loper


Das heißt, finden Sie alle vier Buchstaben Wörter im Chat Corpus (text5). Mit Hilfe einer Häufigkeitsverteilung (FreqDist) zeigen Sie diese Wörter in absteigender Reihenfolge der Häufigkeit an.

Ich habe das Ding ausprobiert. Ich denke, es zeigt es in abnehmender Reihenfolge der Frequenz, aber ich bin mir nicht sicher, ob es der effizienteste Weg ist, soweit ich es in drei Zeilen schreiben muss.

    >>> from nltk.books import *
  >>> aux = sorted(w for w in set(text2) if len(w) == 4)
  >>> aux.reverse()
  >>> aux
  [u'zeal', u'your', u'year', u'yard'...
Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Analyse und Lösung:

Um alle vierstelligen Wörter im Chatkorpus (text5) des Natural Language Toolkit (NLTK) zu finden und diese in absteigender Reihenfolge ihrer Häufigkeit anzuzeigen, kann die Bibliothek nltk verwendet werden. Die gezeigte Methode im Frage-Beispiel verwendet den Korpus text2 anstelle von text5 und sortiert nur die Wörter alphabetisch rückwärts, ohne ihre Häufigkeit zu berücksichtigen.

Um die Aufgabe korrekt zu lösen, sollte man folgende Schritte durchführen:

1. Importieren der erforderlichen Pakete und des Chat Corpus (text5) aus NLTK.
2. Filtern aller vier Buchstaben Wörter im text5.
3. Erstellen einer Häufigkeitsverteilung (FreqDist) für diese gefilterten Wörter.
4. Anzeigen dieser Wörter in absteigender Reihenfolge ihrer Häufigkeit.

Hier ist ein effizienter Weg, um die gestellte Aufgabe zu erfüllen, inklusive des notwendigen Python-Codes:

python
# 1. Importieren der erforderlichen Pakete und des Chat Corpus (text5)
import nltk
nltk.download('book')
from nltk.book import text5

# 2. Filtern aller vier Buchstaben Wörter im text5
vier_buchstaben_woerter = [wort for wort in text5 if len(wort) == 4]

# 3. Erstellen einer Häufigkeitsverteilung (FreqDist) für diese Wörter
fdist = nltk.FreqDist(vier_buchstaben_woerter)

# 4. Anzeigen dieser Wörter in absteigender Reihenfolge ihrer Häufigkeit
for wort, haeufigkeit in fdist.most_common():
    print(wort, haeufigkeit)


Erklärung:

- Zuerst importieren wir die notwendigen Module. nltk.download('book') wird verwendet, um sicherzustellen, dass alle Texte aus dem NLTK-Buch verfügbar sind, einschließlich text5.
- Danach erstellen wir eine Liste vier_buchstaben_woerter, die alle Wörter aus text5 enthält, die genau vier Buchstaben lang sind.
- Dann verwenden wir FreqDist von NLTK, um eine Häufigkeitsverteilung dieser Wörter zu erstellen. FreqDist zählt, wie oft jedes Wort in der Liste vorkommt.
- Schließlich nutzen wir fdist.most_common() um die Wörter und ihre Häufigkeiten in absteigender Reihenfolge der Häufigkeit zu erhalten und zu drucken. most_common gibt ein neues sortiertes List von Tupel zurück, wobei jedes Tupel ein Wort und seine Häufigkeit enthält.
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community