Wort-Wolken

Ich hatte ja schon längst mal vor, mich ein wenig mehr mit Data Mining zu beschäftigen und die letzten Tage habe ich dann mal versucht, eine Twitter-Word-Cloud zu erstellen.

Als Basis dient die Statistiksoftware „R“ und diese Anleitung, die ich im Netz gefunden habe. R nutze ich ja seit vielen Jahren um z.B. meinen Blutdruck in lustige Graphiken zu transformieren. Also nicht den Blutdruck, aber die Messwerte die ich davon habe.

Stolpersteine

Der erste Stolperstein war allerdings die Installation der benötigten Pakete aus R. Meine Linux Distribution openSUSE Leap 15.1 enthält nicht alle notwendigen Pakete als RPMs, was aber eigentlich kein Problem ist, da R selbst ja einen Paketmanager hat und fehlende Pakete wie z.B. das Paket „twitteR“ einfach mit.

installiert werden kann. Soweit jedenfalls zur Theorie. In der Praxis bin ich hier erst mal grandios gescheitert. Statt einer erfolgreichen Installation wurde ich mit der Meldung „error in rbind(info getnamespace info(env s3 methods ))“ belohnt.

Nach einigem Googlen und der Überprüfung meiner R-Installation war klar, was passiert ist. Ich hatte es geschafft, eine R-Basisinstallation in der Verison 3.5 über RPM-Pakete zu installieren, aber gleichzeitig aus einem anderen RPM-Repository mit niedrigerer Priorität dann auch Pakete der Version 3.6.1. Beide Versionen haben aber wohl unterschiedliche Paket-Schnittstellen wie diese Antwort in einem Forum zeigt. Die Lösung war also, die Installation einheitlich auf die Version 3.6.1 zu ziehen, also die Repository-Priorität anzugleichen und ein Update mit erlaubtem Anbieterwechsel zu machen. Danach ließen sich die notwendigen Pakete installieren.

Die nächste Hürde war die Anmeldung an die Twitter-API. Da musste ich ebenfalls noch ein wenig googlen, denn die ROAuth Methode läuft jetzt über ein anderes Hilfspaket. Nachdem auch das gelöst war konnte ich die ersten Tweets abrufen.

Stopwords

Nun ging es daran, die Tweets für die Wordcloud ein wenig aufzuarbeiten. Das beinhaltet folgende Aktionen:

  • Mentions entfernen, also alle Wörter die mit „@“ anfangen, denn in der Wordcloud soll ja nicht stehen, dass @hansmustermann ständig Mentions mit @ingemusterfrau austauscht.
  • Links entfernen, also alles was mit „http://“ anfängt.
  • Alle übrigen Wörter in Kleinbuchstaben umwandeln.
  • Stopwörter entfernen, also alle Artikel wie „die, der, das“ und häufig benutzte Wörter, die kaum Aufschluß über den Inhalt geben können.

Erfolgserlebnis

Das ganze war dann nach einigem hin und her und einer manuellen Erweiterung der vorgebenen Stopwords für Englisch und Deutsch von Erfolg gekrönt. Ich kann also jetzt z.B. die letzten 1000 Tweets von einem User abrufen und schauen, was der so twittert. Also z.B. was twittere ich denn so?

Wordcloud @kinghaunst

Man sieht dass ich wohl oft über meine Hunderunden twittere. Und jeden Tag mit einem „Guten Morgen“ anfange. Kaffee ist wohl auch wichtig.

Interessant wird dieses Spielerei wenn wir uns z.B. die Wordclouds von Politikern anschauen. Hier mal das was der US-Präsident Donald Trump so twittert:

Wordclound @realDonaldTrump

Das wichtigste ist wohl das „great“ sein. Schiff hat nix mit einem Wasserfahrzeug zu tun, es geht hier um den Demokraten Adam Schiff der momentan die Untersuchungen zur Ukraine-Affäre und dem damit verbundenen Impeachment-Verfahren leitet. Und der scheint ein richtiger Stachel im Fleisch von Donald Trump zu sein.

Man kann auch schön die Tweets zu einem bestimmten Hashtag analysieren, gestern gab es wieder eine „Montagsdemo“ in Dresden, und was unter dem Hashtag #dd0710 getwittert wurde fasst sich so zusammen.

Hashtag #dd0710

Brot und Spiele

Gestern habe ich dann auch mal ein kleines Quiz-Spiel auf Twitter gestartet. Ich habe ein paar Wordclouds von deutschen Politikern generiert, alle nach dem gleichen Muster und dann eine auf Twitter gepostet. Danach eine Umfrage mit 4 Optionen wer das wohl gewesen sein könnte. Nach einem Tag war die Umfrage vorbei und das Ergebnis sieht so aus:

Ergebnis meiner kleinen Umfrage

Und ja, die Mehrheit hat in diesem Fall richtig geraten, die auf Twitter präsentierte Wordcloud ist tatsächlich die von Ruprecht Polenz.

Wordclound von Ruprecht Polenz.

Ein Twitterer merkte an, dass für Christian Lindner die Begriffe „Freiheit, Tempolimit und Auto“ fehlen würden. Na, wenn er sich da mal nicht getäuscht hat:

Wordcloud von Christian Lindner

Das Wort „Auto“ koimmt tatsächlich links unten vor, ist aber wohl nicht so häufig. Am häufigsten sagt Herr Lindner wohl „danke“. Finde ich auch interessant.

Malte Kaufmann von der Heidelberger AfD stellt sich so dar:

Wordclound Malte Kaufmann

Bei Herrn Kaufmann steht ganz klar seine Partei im Mittelpunkt. Und er scheint sich ein wenig an „Greta“ aufzuarbeiten.

Karl Lauterbach von der SPD hat folgende Wordcloud:

Wordcloud Karl Lauterbach

Interessant erscheint mir, dass Herr Lauterbach in seinen Tweets die CDU wohl genauso oft erwähnt wie seine eigene Partei.

Fazit

Alles in allem eine sehr schöne Spielerei mit der man auch sehr schnell überprüfen kann welche Themen ein Twitterer so auf dem Schirm hat. Vielleicht muss ich noch ein paar mehr Stopwords in den Algorithmus einbauen, aber auch so finde ich diese Wort-Wolken recht interessant. Und es war eine schöne Übung für ein wenig Data Mining.