LB 10.06.2014 - 13:37

#24hPolizei

von LB

Zur Twitter-Aktion der Berliner Polizei am Pfingstwochenende wurde schon einiges geschrieben.

Ich habe das lange Wochenende genutzt und eine interaktive Visualisierung der Tweets gebastelt: Screenshot der Visualisierung

SVG Karte der Bezirke

Dazu musste natürlich zuerst eine Berlin-Karte her. Wenige Sekunden googlen brachten mich auf ein SVG, welches von der Piratenpartei bereitgestellt wird.

Piratenkarte von Berlin

Leider ist diese Karte alles andere als optimal um sie in eine Webseite einzubinden. Folgende Änderungen habe ich vorgenommen:

  • Mehr als 100 Polygone und Pfade, die mit display="none" ausgeblendet wurden, habe ich gelöscht
  • Die Bezirksnamen, die vorher als SVG-Pfade angelegt waren, sind jetzt als "echter" Text gespeichert.
  • Als Beispiel hier das erste "I" aus dem Bezirk "Reinickendorf":
    <polygon xmlns="http://www.w3.org/2000/svg" points="277.286,174.247 279.738,174.247 277.881,184.826 275.43,184.826 "/>
  • die Bezirke haben sprechende IDs bekommen (id="Wedding")

Von ursprünglich ~1MB ist die Karte dadurch auf brauchbare 167KB geschrumpft. Berlin Karte, vorher vs. nachher

Tweets

Um die Tweets abzurufen habe ich ein kleines Python Script geschrieben, welches die Twitter-Api anfragt und alle wichtigen Informationen in einer JSON-Datei abspeichert. Dazu gehören neben Text, id und Zeitstempel natürlich die Hashtags, die ich für die Zuordnung der Bezirke brauche.

Für die meisten Tweets ist diese Zuordnung, Hashtag → Bezirk, sehr einfach. Dafür habe ich die Liste der Hashtags eines Tweets genommen und jeweils den Bezirk aus der Liste aller Bezirke genommen, der am Besten passt. Ich habe dafür die Python-Funktion difflib.getclosematches verwendet.

Für ca. 100 von den insgesamt über 900 Tweets war eine Zuordnung auf Basis der Hashtags nicht möglich. Das waren entweder Tweets ohne Ort, bspw. wünschte Frank Henkel zu Beginn der Aktion "allen Polizistinnen und Polizisten einen erfolgreichen Dienst"1, oder nicht vollständige Bezirksnamen als Hashtag, bspw. "#Alt-Treptow"2. (Ein Hashtag darf nur Zahlen und Buchstaben enthalten, das '-' beendet den Hashtag)

Besser Ergebnisse beim Klassifizieren hätte ich vermutlich durch eine Analyse der Worte - durch Leerzeichen getrennte Buchstabenketten - bekommen. Die ~10% nicht, bzw. falsch klassifizierten Tweets konnte ich aber verschmerzen.

Das ganze Projekt liegt auf github: https://github.com/lbenedix/24hPolizei


0 Kommentare   #Coding #Web