Monthly Archive for März, 2012

Der passive Wahlomat – Textmining mit politischen Programmen und Konversationen (Teil 1)

Als ich auf der Big-Data-Konferenz “Strata” in Santa Clara einigen Vorträgen zum Thema Textmining in Datenströmen zugehört habe, ist mir die Idee gekommen, das doch einmal mit politischen Kommunikationen auszuprobieren. Vielleicht ist es möglich, anhand der Wörter, die jemand besonders häufig in seinen Twitternachrichten oder Blogposts verwendet, festzustellen, welcher Partei er oder sie am nächsten steht. Wahrscheinlich kennt jeder die Wahlomaten und politischen Tests, die regelmäßig zu jeder Landtags- oder Bundestagswahl heißlaufen und Wahlempfehlungen ausspucken. Ich frage mich, ob man nicht auch schon aufgrund der öffentlichen Äußerungen auf Twitter solche Empfehlungen aussprechen könnte.

Dazu ist zunächst ein Referenzkorpus notwendig, der die unterschiedlichen Parteiideen repräsentiert. Das könnte man natürlich manuell erstellen und z.B. festlegen, dass das Wort “Eigenverantwortung” für eine gewisse FDP-Nähe spricht, “Solidarität” einem SPD-Profil entspricht und “Open Access” eher einen piratischen Wert darstellt. Das dauert zum einen sehr lange und ist zum anderen eine subjektive Einschätzung. Ein sehr viel schnellerer, weil fast vollständig automatisierbarer, Weg ist die Auswertung der entsprechenden Parteiprogramme. Wenn hier die Werte nicht vorkommen, wo sonst. Also habe ich einmal die 2010er Wahlprogramme für NRW verwendet, um daraus die Worthäufigkeitsvektoren zu errechnen. Ein einfaches Python-Script liest die Parteiprogramme ein (die ich vorher um Seitenzahlen, Inhaltsverzeichnisse und Seitentitel bereinigt habe) und errechnet, wie oft jedes einzelne Wort darin vorkommt.

Dabei kann man schon einen deutlichen Unterschied zwischen den Programmen feststellen: Sie sind unterschiedlich lang …

Grüne 60.347
FDP 39.376
Linke 37.635
SPD 23.904
Piraten 21.800
CDU 8.775

… und sie unterscheiden sich auch in ihrer lexikalischen Vielfalt, d.h. dem Verhältnis von unterschiedlichen Wörtern und der Gesamtzahl der Wörter:

CDU 27,79%
Piraten 26,00%
SPD 23,11%
Linke 21,07%
FDP 20,36%
Grüne 17,38%

Die Rangordnung ist hier genau umgekehrt – logisch: Wer einen so langen Text schreibt wie die Grünen ihr Wahlprogramm, dem gehen irgendwann einmal die neuen Wörter aus und man muss auf einen der schon verwendeten 10.486 Begriffe zurückgreifen.

Jetzt aber zu den Vektoren. Diese sehen in etwa so aus:
piraten_2010.txt,36,2,2,0,0,0,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0 ...

Jede Zahl steht für die Häufigkeit eines bestimmten Wortes. Mit dem Cosinus-Ähnlichkeitsmaß kann man nun berechnen, wie nah zwei Vektoren beieinander liegen (oder genauer: Wie groß der Winkel zwischen ihnen ist).

Hier das Ergebnis der Berechnungen:

          CDU       FDP       GRU
CDU 0.0000000 0.8736595 0.8847022
FDP 0.8736595 0.0000000 0.9146393
GRU 0.8847022 0.9146393 0.0000000
LIN 0.6898869 0.8065468 0.8468190
PIR 0.6653087 0.8090312 0.8215914
SPD 0.9170037 0.9047183 0.9548909

          LIN       PIR       SPD
CDU 0.6898869 0.6653087 0.9170037
FDP 0.8065468 0.8090312 0.9047183
GRU 0.8468190 0.8215914 0.9548909
LIN 0.0000000 0.8882453 0.8122456
PIR 0.8882453 0.0000000 0.7855856
SPD 0.8122456 0.7855856 0.0000000

Der R-Code dazu lautet:

library(lsa)
e <- as.dist(cosine(t(vectors)),diag=TRUE,upper=TRUE)

Zwei interessante Zahlen aus der Tabelle: Die beiden Programme, die sich gemessen an den Worthäufigkeiten am ähnlichsten sind, sind die Programme von SPD und Grünen. Die beiden unähnlichsten Programme sind die der CDU und der Piraten. Aber auch CDU und Linke liegen nicht wirklich auf einer Linie. Aber das war auch so zu erwarten.

Im nächsten Schritt habe ich die Ähnlichkeitsmatrix in eine Distanzmatrix verwandelt und die Ergebnisse visualisiert:

Die Parteien haben aber natürlich nicht nur ein Wahlprogramm für die NRW-Wahl 2010, sondern auch Programme für die Wahlen in Berlin 2011 und im Saarland 2012. Diese habe ich, sofern verfügbar, auch noch in die Distanzmatrix genommen. Das Ergebnis sieht wie folgt aus:

Man sieht sofort, dass die Wahlkampfprogramme von unterschiedlichen Parteien zu einer einzelnen Landtagswahlen einander zum Teil ähnlicher sind als die Programme einer Partei in unterschiedlichen Landtagswahlen. Die y-Achse beschreibt hier eindeutig das Bundesland. Oben sind die Berliner Programme, in der Mitte die NRW-Programme und unten die Saarland-Programme.

Schwieriger ist es, die x-Achse inhaltlich zu beschreiben. In NRW könnte diese Achse durchaus als "Piratizität" beschrieben werden - mit den Piraten am einen extremen Pol und der CDU am anderen. Interessanterweise scheint dies in Berlin nicht zu gelten. Hier liegt die CDU "piratiger" als die Grünen.



Verwandte Artikel:
  • Die Feed-Malaise
  • Politik in 140 Zeichen
  • Internationale Diplomatie auf Twitter
  • Digitale Stadtentwicklung oder Warum Code for America die Zukunft des digitalen Ehrenamts ist

    Auf Twitter erlebe ich immer wieder merkwürdige Koinzidenzien. Heute Abend zum Beispiel waren zwei meiner Twitter-Freunde in München auf einer Stadtentwicklungsveranstaltung. Unter dem Motto “MitDenken” sind hier die Bürger aufgefordert, sich Gedanken über die Zukunft der Stadt zu machen. Also ein klassischer Bürgerdialog – immerhin mit Onlinefragebogen.

    Parallel dazu wurden auf der US-Konferenz SXSW in Austin, Texas die ersten Ergebnisse des Projekts “Code for America” vorgestellt. Nur ein paar Tweets von den Münchener MitDenkern entfernt, aber trotzdem liegen Welten zwischen den Projekten. Code for America ist eine Initiative mit dem Ziel, ganz praktische Aufgaben und Herausforderungen von Städten auf digitalem Weg zu lösen – mit Hilfe von Apps.

    Das Vorhaben setzt dabei vor allem auf das freiwillige Engagement der digitalen Bürger. Diese werden nicht zum Schneeschippen aufgerufen, aber dazu, eine Crowdsourcing-App zu programmieren “Adopt-a-Hydrant“, die das Freischaufeln von Hydranten intelligent unter den Bürgern verteilt. Eine andere App verzeichnet alle Street-Art-Werke in Philadelphia, könnte aber sehr schnell an andere Zwecke angepasst werden, zum Beispiel wenn es darum geht, die Kunst im Öffentlichen Raum erfahrbar und erlebbar zu machen. DataCouch ist eine Anwendung, die es zum Beispiel Stadtverwaltungen wie auch Bürgern ermöglicht, Datensätze über das Netz zu teilen und in standardisierten Formaten abzurufen, um daraus zum Beispiel weitere Anwendungen zu bauen.

    Hinter dem Vorhaben stecken drei sehr spannende Grundannahmen:

    • Wiederverwertung: Gerade unter kommunalen Sparzwängen (und dies ist eigentlich der Normalzustand) ist es unverantwortlich, dass jede Stadt, jede Gemeinde ihre eigenen Apps bastelt bzw. für viel Geld bei IT-Dienstleistern in Auftrag gibt. Allein, wenn man sich die Webseiten der Kommunen betrachtet, wird schnell deutlich, dass die Vielfalt im Erscheinungsbild der Städte im Web viel größer ist als das immergleiche physische Stadtbild aus “großzügigen Villen im Landhausstil”, 1950er-Jahre-Überbleibseln mit Deutschem Dach gepaart mit brutistischer Dienstgebäudearchitektur. Natürlich ist Vielfalt hübsch, aber nicht wenn sie auf Kosten von Funktionalität, Wartbarkeit und vor allem wichtiger kommunaler Aufgaben geht. Hier kann eine freie und wiederverwertbare Anwendungsinfrastruktur wie “Code for America” sehr sinnvoll sein.
    • Interfacegestaltung: Diesen Punkt hat die Gründerin Jennifer Pahlka vorhin auf ihrem Vortrag in sehr schönen Zitat angebracht: “I believe that interfaces to government can be simple, beautiful, and easy to use.” Warum nicht einmal den Programmiererblick auf die Kommunalpolitik richten. Die städtischen Webseiten, Formulare, Broschüren etc. sind nichts anderes als eine mehr oder weniger gelungene Benutzerschnittstelle für die Politik. Damit bedienen wir die städtischen Funktionen. Warum nicht diesem Aspekt eine Generalüberholung gönnen und dafür sorgen, dass Bürgerbeteiligung sich ähnlich anfühlt wie das Blättern bei Flipboard auf dem iPad? Oder so viel Spaß macht wie das Kommentieren und Posten von Bildern auf Instagram? Oder so produktiv sind wie das gemeinsame Arbeiten an Dokumenten über Dropbox?
    • Digitales Ehrenamt: Ich weiß, Ehrenamt klingt immer viel zu abgedroschen und altmodisch. Man denkt gleich an Rasenmähen im Kindergarten, Kuchenbacken für den Kirchenkaffee oder das Freischaufeln von Hydranten (moment mal?). Bitte nicht falsch verstehen, diese Dinge sind sehr wichtig. Aber warum gibt es so wenige Versuche, den kommenden Generationen der digital natives Möglichkeiten für ein digitales Ehrenamt zu geben? Warum lassen wir die Wikipedianer nicht eine neue Plattform für Ortschroniken schreiben? Warum nicht die jungen Ruby-on-Rails- und Python-Hacker in kommunalen Hackathons eine wiederverwertbare Infrastruktur für kommunale Open-Data-Initiativen entwickeln? Warum nicht die Nachwuchsdesigner und UI-Startups ein elegantes und benutzerfreundliches Interface für die Kommunalpolitik entwickeln?

    Workshops und Ortsbegehungen zur Planung und Verbesserung von Fahrradwegen sind nicht schlecht, sind aber Bürgerbeteiligung im Stil der 1960er/70er Jahre. Wir leben längst in einer digitalen Gesellschaft, also sollten wir auch auf die Fähigkeiten und Kompetenzen ihrer Bewohner zurückgreifen.



    Verwandte Artikel:
  • Quick Response in Spex und Welt
  • Interessante Kriminalprozesse gefällig? Die digitale Bibliothek als Open Content
  • Wenn Social Networks Bundesländer wären …