Python Tutorial
- jetzt Python programmieren lernen

Wordcloud mit Python erstellen

Ausgabe einer WordCloud in Form eines Kreises

Eine „Wörterwolke“, besser bekannt unter dem englischen Wordcloud, zeigt die Häufigkeit von dem Vorkommen von Wörtern in einem Text als Grafik. Je häufiger ein Wort vorkommt, desto prominenter wird es dargestellt. Die Anzeigegröße der einzelnen Wörter wird größer je öfters es vorkommt. Die dazugehörige Farbe ändert sich entsprechend.

Das selber programmieren einer Wordcloud ist zwar möglich aber aufwändig. Daher sind fertige Module und Bibliotheken natürlich eine gute Sache, besonders wenn eine solche in dem großen Umfang vorliegt wie bei „wordcloud“. Mit diesem Modul wird ein Text ausgewertet und es können zusätzlich Wörter ausgeschlossen werden. Wörter wie „der, die, das etc.“ kommen natürlich sehr oft in einem Text vor und wären wenig spannend in Groß dargestellt zu werden. Diese können gezielt ausgeschlossen werden. Zusätzlich können Masken genutzt werden, dass die Wörter in Form eines Bildes dann dargestellt werden.

Über die Bibliothek Wordcloud ist eine einfache Erstellung einer solchen mit Python schnell erledigt.

Jetzt aber Schritt für Schritt zur Nutzung (und erst einmal die Installation).

Installation Modul Wordcloud

Als erstes muss die Bibliothek installiert werden:

pip install wordcloud

Jetzt warden alle benötigten Module installiert, sofern diese im System nicht schon vorhanden sind. Dazu gehört neben „wordcloud“ zum Beispiel auch „numpy“ und „matplotlib“:

Installation WordCloud
Installation WordCloud

Nach der Installation können wir mit unserer ersten Wordcloud in Python starten.

erste Wordcloud in Python

Wir erstellen zum Einstieg eine sehr einfache Wörterwolke mit einem kurzen Text. Als Text nehmen wir von der Startseite https://www.python-lernen.de/ die erste 3 Absätze.

Im ersten Schritt müssen wir in unser Python-Programm „WordCloud“ importieren

from wordcloud import WordCloud

Zusätzlich benötigen wir für die Ausgabe das Modul „matplot“:

from wordcloud import WordCloud
import matplotlib.pyplot as plt

Jetzt kommt unser Text, den wir zu einer Wörterwolke umgebaut bekommen wollen:

from wordcloud import WordCloud
import matplotlib.pyplot as plt

text = 'Python Kurs: mit Python programmieren lernen für Anfänger und Fortgeschrittene Dieses Python Tutorial entsteht im Rahmen von Uni-Kursen und kann hier kostenlos genutzt werden. Python ist eine für Anfänger und Einsteiger sehr gut geeignete Programmiersprache, die später auch den Fortgeschrittenen und Profis alles bietet, was man sich beim Programmieren wünscht. Der Kurs ist eine Einführung und bietet einen guten Einstieg. Es wird aktuelles Wissen vermittelt - daher schreiben wir unseren Python-Code mit der aktuellen Python-Version 3. einfach Python lernen über das Programmieren von Spielen Damit Python programmieren lernen noch mehr Spaß macht, werden wir im Kurs anhand verschiedener Spiele die Anwendung von Python kennen lernen und unser Wissen als Programmierer aufbauen. Die Grundlagen werden direkt umgesetzt in bekannte Spiele wie:'

Dieser wird als Variable übergeben:

from wordcloud import WordCloud
import matplotlib.pyplot as plt

text = 'Python Kurs: mit Python programmieren lernen für Anfänger und Fortgeschrittene Dieses Python Tutorial entsteht im Rahmen von Uni-Kursen und kann hier kostenlos genutzt werden. Python ist eine für Anfänger und Einsteiger sehr gut geeignete Programmiersprache, die später auch den Fortgeschrittenen und Profis alles bietet, was man sich beim Programmieren wünscht. Der Kurs ist eine Einführung und bietet einen guten Einstieg. Es wird aktuelles Wissen vermittelt - daher schreiben wir unseren Python-Code mit der aktuellen Python-Version 3. einfach Python lernen über das Programmieren von Spielen Damit Python programmieren lernen noch mehr Spaß macht, werden wir im Kurs anhand verschiedener Spiele die Anwendung von Python kennen lernen und unser Wissen als Programmierer aufbauen. Die Grundlagen werden direkt umgesetzt in bekannte Spiele wie:'

# Generate a word cloud image
wordcloud = WordCloud().generate(text)

Und jetzt noch die Ausgabe über „matplot“:

from wordcloud import WordCloud
import matplotlib.pyplot as plt

text = 'Python Kurs: mit Python programmieren lernen für Anfänger und Fortgeschrittene Dieses Python Tutorial entsteht im Rahmen von Uni-Kursen und kann hier kostenlos genutzt werden. Python ist eine für Anfänger und Einsteiger sehr gut geeignete Programmiersprache, die später auch den Fortgeschrittenen und Profis alles bietet, was man sich beim Programmieren wünscht. Der Kurs ist eine Einführung und bietet einen guten Einstieg. Es wird aktuelles Wissen vermittelt - daher schreiben wir unseren Python-Code mit der aktuellen Python-Version 3. einfach Python lernen über das Programmieren von Spielen Damit Python programmieren lernen noch mehr Spaß macht, werden wir im Kurs anhand verschiedener Spiele die Anwendung von Python kennen lernen und unser Wissen als Programmierer aufbauen. Die Grundlagen werden direkt umgesetzt in bekannte Spiele wie:'

# Generate a word cloud image
wordcloud = WordCloud().generate(text)

plt.imshow(wordcloud, interpolation="bilinear")
plt.show()

Als Ergebnis erhalten wir:

erste Wordcloud über 6 Zeilen Python-Code
erste Wordcloud über 6 Zeilen Python-Code

Natürlich ist die Bemaßung hier wenig sinnvoll. Daher schalten wir diese ab über:

plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

Weißer Hintergrund für die Ausgabe

Wir können noch weitere Angaben dem Modul für die Ausgabe mitgeben. Dazu gehört die Hintergrundfarbe:

wordcloud = WordCloud(background_color="white").generate(text)

plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

Die Farben der Schrift werden automatisch angepasst:

Wordcloud mit weißer Hintergrundfarbe
Wordcloud mit weißer Hintergrundfarbe

Wörter ausschließen aus Wordcloud

Viele Wörter sind in der Ausgabe wenig interessant. Am bisherigen Beispiel fallen die Wörter „und, von, Der, das, den, wir, ist, die, auf, im“ auf. Diese wollen wir ausschließen. Dazu erstellen wir eine Liste mit den unerwünschten Wörtern:

Unseren Import müssten wird ergänzen mit den „STOPWORDS“:

from wordcloud import WordCloud, STOPWORDS

Aus unserer Variablen „uninteressant“ mit den unwichtigen Wörtern erstellen wir über split() eine Liste:

uninteressant = "und von Der das den wir ist die auf im"
liste_der_unerwuenschten_woerter = nichtinteressant.split()

Und die STOPWORDS werden vor dem Erzeugen der WordCloud geupdatet:

STOPWORDS.update(liste_der_unerwuenschten_woerter)
wordcloud = WordCloud(background_color="white").generate(text)

Das Ergebnis ist eine viel aussagekräftigere WordCloud:

WordCloud ohne bestimmte nichtssagenden Wörter
WordCloud ohne bestimmte nichtssagenden Wörter

Der komplette Code bisher:

from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt

text = 'Python Kurs: mit Python programmieren lernen für Anfänger und Fortgeschrittene Dieses Python Tutorial entsteht im Rahmen von Uni-Kursen und kann hier kostenlos genutzt werden. Python ist eine für Anfänger und Einsteiger sehr gut geeignete Programmiersprache, die später auch den Fortgeschrittenen und Profis alles bietet, was man sich beim Programmieren wünscht. Der Kurs ist eine Einführung und bietet einen guten Einstieg. Es wird aktuelles Wissen vermittelt - daher schreiben wir unseren Python-Code mit der aktuellen Python-Version 3. einfach Python lernen über das Programmieren von Spielen Damit Python programmieren lernen noch mehr Spaß macht, werden wir im Kurs anhand verschiedener Spiele die Anwendung von Python kennen lernen und unser Wissen als Programmierer aufbauen. Die Grundlagen werden direkt umgesetzt in bekannte Spiele wie:'

nichtinteressant = "und von Der das den wir ist die auf im"
liste_der_unerwuenschten_woerter = nichtinteressant.split()

STOPWORDS.update(liste_der_unerwuenschten_woerter)
wordcloud = WordCloud(background_color="white").generate(text)

plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

Es fällt noch eine gewisse Unschärfe unseres Bildes auf. Diese können wir durch die Ausgabegröße ändern!

wordcloud = WordCloud(background_color="white",width=1920, height=1080).generate(text)

Jetzt wird das Ausgabebild eine Breite von 1920 Pixel haben und eine Höhe von 1080 und somit Scharf dargestellt:

Text aus Datei für WordCloud

Bisher haben wir relativ kurze Texte genutzt. Bei längeren Texten ist es sinnvoll, diese aus einer Datei einfach zu laden.

Dazu müssen wir das Modul „os“ importieren:

import os

Und nun können wir die Datei laden und den enthaltenen Text in der Variablen „text“ speichern.

d = os.path.dirname(__file__) if "__file__" in locals() else os.getcwd()

with open("wordcloud-beispieltext.txt") as f:
    text = f.read()

Hier ist es egal, ob wir einen kurzen oder langen Text nutzen wie beispielsweise „Faust“ von Goehte ( https://de.wikisource.org/wiki/Faust_-_Der_Trag%C3%B6die_erster_Teil ) mit lockeren 8300 Zeilen.

Wir erhalten innerhalb ein paar Sekunden dann folgende Ausgabe:

Wordcloud zu Goethes Faust
Wordcloud zu Goethes Faust

Folgende der komplette Python-Code:

from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
import os

d = os.path.dirname(__file__) if "__file__" in locals() else os.getcwd()

with open("wordcloud-beispieltext.txt") as f:
    text = f.read()

nichtinteressant = "und von Der das den wir ist die auf im"
liste_der_unerwuenschten_woerter = nichtinteressant.split()

STOPWORDS.update(liste_der_unerwuenschten_woerter)
wordcloud = WordCloud(background_color="white",width=1920, height=1080).generate(text)

plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

Parameter für WordCloud

Über folgende Parameter können gewünschte Einstellungen getätigt werden. Dazu werden diese wie in den bisherigen Beispielen gezeigt dem Aufruf WordCloud(PARAMETER).generate(text) übergeben. Werden mehrere Parameter übergeben, erfolgt die Trennung anhand von Kommas.

max_font_size=40
Maximale Schriftgröße

max_words=500
Maximale Anzahl der angezeigten Wörter

Viele Weitere Parameter gibt es auf der Seite des Entwicklers unter: https://amueller.github.io/word_cloud/

Ausgabe in Formen von WordCloud

Der Einsatz von Masken ermöglicht die Ausgabe der Wordcloud in beliebiger Art und Weise. Wir kommen so weg von der rechteckigen Anzeige hin zu Kreisen, Ellipsen oder einfach als Füllung von Figuren.

Starten wir mit einem Kreis:

Dazu erstellen wir eine Maske, die wir dem Aufruf mitgeben.

Für das Beispiel benötigen wir das Modul „numpy“:

import numpy as np

Und folgende Angaben führen zu einem Kreis:

x, y = np.ogrid[:1000, :1000]

mask = (x - 500) ** 2 + (y - 500) ** 2 > 400 ** 2
mask = 255 * mask.astype(int)

wordcloud = WordCloud(background_color="white",width=1920, height=1080, mask=mask).generate(text)
Ausgabe einer WordCloud in Form eines Kreises
Ausgabe einer WordCloud in Form eines Kreises

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.

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