Python Tutorial
- jetzt Python programmieren lernen

Natural Language Toolkit (NLTK) – Sprache mit Python auswerten

Bei der Bibliothek NLTK (Natural Language Toolkit) kann ideal in der Computerlinguistik genutzt werden. Damit können natürliche Sprache algorithmisch verarbeitet werden.

Hier soll die einfache Anwendung in Form von der Auswertung von Worthäufigkeiten gezeigt werden und die Ausgabe einer Grafik über die Wörterhäufigkeitsverteilung. Das schöne ist, wie einfach dies über die NLTK-Bibliothek möglich ist.

Im ersten Schritt muss in Python die NLTK-Bibliothek über PIP installiert werden:

pip install nltk

Jetzt können wir die Bibliothek auf Text loslassen. Als Erstes müssen wir diese aktivieren durch import nltk und dann benötigen wir einen Text. Wir nutzen die bekannte Ballade „Erlkönig“ von „Wolfgang von Goethe“. Den kompletten Text gibt es bei Wikipedia unter:
https://de.wikipedia.org/wiki/Erlk%C3%B6nig_(Ballade)

import nltk

inhalt = """Der Erlkönig
Wer reitet so spät durch Nacht und Wind?
Es ist der Vater mit seinem Kind;
Er hat den Knaben wohl in dem Arm,
er faßt ihn sicher, er hält ihn warm.
Mein Sohn, was birgst du so bang dein Gesicht?
Siehst, Vater, du den Erlkönig nicht?
Den Erlkönig mit Kron und Schweif? -
Mein Sohn, es ist ein Nebelstreif. -
"Du liebes Kind, komm geh mit mir!
"""

woerter = inhalt.split()
worthaeufigkeit = nltk.FreqDist(woerter)
print(worthaeufigkeit)
print(worthaeufigkeit.most_common())

Unseren Text in der Variable inhalt wandeln wir über die Funktion split() in eine Liste mit dem Namen woerter um, die wir mit Methoden unserer Bibliothek nltk nutzen können. Über die Methode most_common() erhalten wir die Verteilung - als Ergebnis bekommen wir angezeigt:

python3 worthaeufigkeit-erlkoenig.py

[('Erlkönig', 3), ('mit', 3), ('so', 2), ('und', 2), ('ist', 2), ('den', 2), ('er', 2), ('ihn', 2), ('Mein', 2), ('Sohn,', 2), ('du', 2), ('-', 2), ('Der', 1), ('Wer', 1), ('reitet', 1), ('spät', 1), ('durch', 1), ('Nacht', 1), ('Wind?', 1), ('Es', 1), ('der', 1), ('Vater', 1), ('seinem', 1), ('Kind;', 1), ('Er', 1), ('hat', 1), ('Knaben', 1), ('wohl', 1), ('in', 1), ('dem', 1), ('Arm,', 1), ('faßt', 1), ('sicher,', 1), ('hält', 1), ('warm.', 1), ('was', 1), ('birgst', 1), ('bang', 1), ('dein', 1), ('Gesicht?', 1), ('Siehst,', 1), ('Vater,', 1), ('nicht?', 1), ('Den', 1), ('Kron', 1), ('Schweif?', 1), ('es', 1), ('ein', 1), ('Nebelstreif.', 1), ('"Du', 1), ('liebes', 1), ('Kind,', 1), ('komm', 1), ('geh', 1), ('mir!', 1)]

Hier fallen die Satzzeichen auf, die problematisch werden können. Uns interessiert nicht wirklich, wie viele Gedankenstriche vorkommen und Satzzeichen beim Wort oben wie im Beispiel „Gesicht?“. Also beseitigen wir die Satzzeichen komplett:

import nltk

inhalt = """Der Erlkönig
Wer reitet so spät durch Nacht und Wind?
Es ist der Vater mit seinem Kind;
Er hat den Knaben wohl in dem Arm,
er faßt ihn sicher, er hält ihn warm.
Mein Sohn, was birgst du so bang dein Gesicht?
Siehst, Vater, du den Erlkönig nicht?
Den Erlkönig mit Kron und Schweif? -
Mein Sohn, es ist ein Nebelstreif. -
"Du liebes Kind, komm geh mit mir!
"""

satzzeichen = (",", ";", ":", ".", "?", "!", '"', '-', '–')

for unerwuenschtes in satzzeichen:
  inhalt = inhalt.replace(unerwuenschtes, "")

bereinigt = inhalt.split()
worthaeufigkeit = nltk.FreqDist(bereinigt)

print(worthaeufigkeit.most_common())

Jetzt bekommen wir die Auswertung der Worthäufigkeiten, die wir über die Angabe in der Klammer auf eine gewünschte Ausgabeanzahl über print(worthaeufigkeit.most_common(20)) einschränken können. Für die gesamte Ballade die Häufigkeit der ersten 20 Begriffe:

[('Vater', 9), ('und', 7), ('mit', 6), ('Mein', 6), ('du', 6), ('Kind', 5), ('mein', 5), ('so', 4), ('den', 4), ('Sohn', 4), ('nicht', 4), ('mir', 4), ('Erlkönig', 3), ('Er', 3), ('hat', 3), ('er', 3), ('ich', 3), ('Meine', 3), ('Töchter', 3), ('dich', 3)]

Und über die weitere Anweisung print(worthaeufigkeit.plot(20)) erhalten wir die grafische Auswertung:

Grafische Auswertung von Worthäufigkeiten über NLTK (Natural Language Toolkit)
Grafische Auswertung von Worthäufigkeiten über NLTK (Natural Language Toolkit)

Dies hier als kleine Einführung in eine extrem umfangreiche Bibliothek. Viele Informationen finden sich auf der Website https://www.nltk.org/ des Projekts.

Weiterempfehlen • Social Bookmarks • Vielen Dank

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Das neue E-Book zum Kurs gibt es zum Kaufen.

Sie können uns auch eine Spende über PayPal zukommen lassen.

Bestellen Sie Bücher über folgenden Link bei Amazon:
Bücher über Python

Vielen Dank für Ihre Unterstützung