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
  • Internationale Diplomatie auf Twitter
  • Politik in 140 Zeichen
  • 1 Response to “Der passive Wahlomat – Textmining mit politischen Programmen und Konversationen (Teil 1)”


    1. 1 Quardian

      Man sieht das die politisch jüngste Partei – Die Piraten das Netz am intensivsten nutzt und dadurch die etaplierten Parteien vor sich hertreibt.

    Leave a Reply