Augenblicke – Eine statistische Analyse des Flirt-Portals der BVG

Was ist “Augenblicke”?

Im Frühjahr 2006, mehr als 6 Jahre bevor Tinder die Herzen der Smarthphone-Besitzer im Sturm eroberte, startete die BVG auf ihrer Seite ein Portal mit dem Namen “Augenblicke. Im Gegensatz zu Tinder sind sich die Nutzer von Augenblicke in der Regel aber ziemlich sicher schon einmal über den Weg gelaufen – nämlich in einer der zahlreichen Fahrzeuge der BVG oder S-Bahn.

Augenblicke will diese verlorenen Seelen nun zusammenbringen. Wer beim ersten Treffen nicht den Mut aufgebracht hat, das Gegenüber anzusprechen, darf das später mit einer Nachricht auf dem Portal nachholen. Das geschieht unter der Angabe eines Pseudonyms, ein paar Zeilen Text, der Tram-, Bus- oder Bahn-Linie und natürlich dem Zeitpunkt, wann man sich über den Weg gelaufen ist – der sogenannte und namensgebende Augenblick. Das Prinzip ist also recht einfach. Nach einem verhaltenen Start Anfang 2006 dauerte es erstmal einige Zeit, bis sich ein gewisser Erfolg zeigte.

(Hinweise zur Methodik und Fehlerquellen am Ende)

KleinerMannMitBart

Zum allerersten Augenblick kam es an einem Valentinstag: Am 14. Februar 2006 um 5 Uhr traf es KleinerMannMitBart in der Buslinie 284:

“Du (blond, grüne Augen, schlank)”

KleinerMannMitBart, 14. Februar 2006

Der Dienst dümpelte dann eine Weile vor sich hin, bevor er in der Öffentlichkeit nachhaltig wahrgenommen wird. Erst in 2007 nahm das Portal tatsächlich fahrt auf: die monatliche Beitragszahl stieg auf über 100. Der vorläufige Höhepunkt wurde im Mai 2018 mit 291 Beiträgen im Monat erreicht, fast 10 Gesuche pro Tag! Doch dann war der Hype schon wieder vorbei, das Ende der fetten Flirtjahre:

Anzahl Beiträge / Jahr nach Anbieter

Der Abwärtstrend ist insofern überraschend, da die Zahl der tatsächlichen Fahrgäste in den letzten Jahren stetig zunimmt.

Bis Januar 2021 haben die Besucher in 240 verschiedenen Linien der BVG, S-Bahn und sogar Deutschen Bahn (Regio!) genau 20.108 Augenblicke erlebt. Zu den meisten Begegnungen kommt es den U-Bahnen und S-Bahnen:

Wenn man etwas mehr ins Detail geht, zeigt sich, dass die U-Bahn mit 8.149 Einträgen leicht vorne liegt, dicht gefolgt von der S-Bahn (6.581)

Für dieses Ranking kann es übrigens drei Erklärungen geben:

Trakl und 2.151 Anonyme

[…]Ihr Lächeln, mal amüsiert, gelegentlich auch erstaunt, aber immer von feinster Anmut – ach, es macht(e)mich zufrieden. Nun, die hellen Tage […]

Takl am 21. März 2011 in der M1

Trakl ist nicht nur der Name eines expressionistischen Dichters aus Österreich. Der Name taucht auch auf der Plattform auf und ist mit 39 Einträgen das am meisten genutzte Synonym. Insgesamt wurden 12.298 verschiedene Pseudonyme genutzt. 2.151 Benutzer haben keinen Namen angeben. Das ist die Top-10 der beliebtesten Namen auf dem Portal:

Schaut man sich an, auf welchen Linien die Autoren:innen unterwegs waren, kommt schnell der Verdacht auf, dass es sich jeweils um ein und dieselbe Personen handelt.

Natürlich lässt der Datensatz auch Rückschlüsse auf die genau Uhrzeit oder die exakte Linienbezeichnung und damit vermutlich sogar eine Pendelstrecke zu. Aus Gründen möchte ich diese Details hier nicht weiter vertiefen.

Tageszeiten und Wochentage

Zurück zur grauen Masse und der Frage: Zu welcher Tageszeit und an welchem Wochentag sind die Portal-Nutzer am aktivsten? Zunächst zum offensichtlichen: Die Pendlerzeiten liegen zwischen 7 und 9 Uhr sowie 16 und 19 Uhr. An den Werktagen zeigt sich, dass die Bereitschaft zu Flirten am müden Morgen noch relativ gering ist. Abends, zum Feierabendverkehr – kommt es dagegen zu sehr vielen Kontakten.

Beiträge je Wochentag und Tageszeit

Wenig überraschend sieht es am Wochenende etwas anders aus. Hier verlagert sich die Anzahl der Einträge zunächst auf den frühen Nachmittag.

Ein kurzer Blick auf die Stimmung der Beiträge: Eine klare Tendenz lässt sich hier nicht erkennen. In den frühen Morgenstunden scheint die Stimmung stärker zu schwanken als Abends.

Stimmung im Wochenverlauf (-1: negativ, 1: positiv)

Textanalyse

Zunächst ein grober Überblick über die Stimmung im Verlauf der Jahre sowie die durchschnittliche Länge der Beiträge und Wortanzahl.

Die Wortlänge über alle Nachrichten hat sich im Laufe der Jahre kaum verändert. Die Ausschläge zu Beginn der Messung sind auf die geringe Fallzahl zurückzuführen. Danach sind es zwischen 70 und 80 Wörter pro Nachricht. Ab Ende 2014 gibt es einen kurzlebigen Aufwärtstrend in Richtung 90 Wörter pro Eintrag.

Zwischen 2011 und 2014 lässt sich ein kleines Stimmungstief erkennen. In 2020 gibt es noch mal einen deutlichen Knick – Auswirkungen von Corona? Auch die (durchschnittliche) Länge der Nachrichten und die Wortanzahl scheint ab 2015 leicht zu steigen.

Die nächste Abbildung zeigt die Stimmung aller Autoren:innen sowie die Objektivität ihrer Nachrichten. Die Objektivität liefert kaum Erkenntnisgewinn und wird hier nur einmal erwähnt. Interesssanter ist die Stimmung, die in den allermeisten Fällen positiv ist, mitunter sogar stark positiv.

Stimmung und Objektivität aller Autoren

Weiter geht es mit der Stimmung nach Fahrzeugklasse. Die Abbildung zeigt neben der Stimmung auch die Anzahl der Beiträge (blaue Punkte). So dürfte sich die relativ hohe mittlere Stimmung bei den Nachtbussen erklären. Insgesamt lässt sich vielleicht festhalten, dass die Stimmung in den S- und U-Bahnen sowie Regionalzügen am geringsten ist.

Das passt zu der Erkenntnis oben, dass Beiträge mit Bezug zu z.B. Bussen vergleichsweise selten vorkomen: Sind die Menschen dort glücklicher und demnach vor Ort kontaktfreudiger?

Die längsten Nachrichten mit den meisten Wörtern kommen übrigens nicht aus den Linien-Favoriten S-Bahn oder U-Bahn. Nein, es sind Regionalbahnen und die Nacht-Busse, die sich offenbar äußerst fruchtbar auf die Fantasie der Fahrgäste auswirken. Eine Erklärung: Hat man hier mehr Zeit zum Schreiben?

Noch mal zurück zur Auswertung der Stimmung. Für das folgende Histogramm habe ich die Stimmungswerte in 0,05 Schritten geclustert um deutlich zu machen, in welchem Bereichen sich die Stimmung der meisten Nachrichten bevorzugt zeigt. Hier ist ganz klar eine Dominanz im neutralen Bereich (0) bis hin zu mittelmäßig positiv (0,5) zu erkennen.

Lässt man sich die Cluster im Tagesverlauf anzeigen, dass die Stimmung fast gleichmäßig verteilt zu sein scheint. Nur am Freitag gibt es im Bereich um 0,2 eine höhere Konzentration an Nachrichten (je dunkler die Farbe, desto mehr Nachrichten in diesem Cluster):

Phrasen und Wörter

Zum Abschluss noch ein kleiner Blick auf beliebte Phrasen und Wörter. Zunächst alle Wörter (die mindestens 1.000 mal gezählt wurden):

Wenig überraschend sind hier beschreibende Wörter wie Auge, Haar, Jacke, Braune, Rucksack oder Mantel zu finden. Interessant auch: Das Wort leider wird über 6.000 mal verwendet. Nachvollziehbar: Die Plattform ist ja eine Anlaufstelle, für verpasste Chancen. Das absolut häufigste Wort ist haben mit über 22.000 Vorkommen. Zur Erklärung: Da die Wortstämme gezählt werden, fallen darunter auch hat, hast, habe usw. Sprich: Ich habe dich gesehen, hast du mich gesehen.

Nun noch ein kurzer Blick auf die beliebtesten Phrasen:

Sehr schön gefällt mir hier das Vorkommen von “unsere Blicke” – was sich nicht nur wunderbar auf den Namen des Portals – Augenblicke – sondern auch seinen Zweck beziehen lässts. Ansonsten finden sich hier natürlich auch naheliegende, beschreibende Phrasen. Es geht ja um die “Personensuche”: Blonde Haare, dein Lächeln, schwarze Jacke.

Methodik und Fehlerquellen

Datenerfassung und grobes Datenmodell

Um die Beiträge von der Hauptseite abzugreifen, nutze ich ein in PHP geschriebenes Script (crawl-augenblicke auf Github). In einer MySQL-Tabelle speichere ich dann den Titel der Nachricht, den Nachrichten-Text, den Verfasser der Nachricht, das Datum an dem die Nachricht verfasst wurde sowie das Datum, an dem der “Augenblick” stattgefunden hat. Dazu wird die URL zum Beitrag sowie die Linie erfasst. Zusätzlich nutze ich einige selbstgeschriebene MySQL-Funktionen, um die Anzahl der Wörter im Titel und dem Nachrichten-Text sowie die Differenz zwischen den beiden Zeitpunkten zu erfassen. Ein paar eigene Views erleichtern das anfängliche Finden von Fehlern.

Daneben gibt es zwei weitere Tabellen mit Meta-Informationen. Dies ist zunächst eine Blacklist-Tabelle, die bei einer Aggregation der Wort-Häufigkeiten ignoriert werden sollen. Das betrifft nicht den Vorgang des Zählens der Wörter! In einer weiteren Tabelle wird eine Zuordnung der Linien zu den Linientypen sowie Subtypen festgehalten. Zu den Linientypen zählen nur Bus, Tram, Zug sowie Fähre. Anhand der Subtypen kann außerdem in besondere Liniengruppen unterschieden werden, wie z.B. Metro-Bus, Express-Bus usw.

Datenbankschema
Datenbankschema

Mit einem Python-Script lese ich den Datensatz ein und bereinige die Texte. Stoppwörter werden aussortiert, Steuerzeichen, HTML-Entitites und andere Störquellen werden entfernt. Dann berechen ich für jedes Wort die IDF (Inverse Document Frequency) nach der Formel log 1 + (doc_count_total / doc count with word occurrence). Für die NLP-Aufgaben nutze ich das NLTK bzw. den HannoverTagger (siehe auch). Für die Erkennung der Phrasen und der Stimmung nutze ich TextBlob mit deutschen Trainingsdaten von hier.

Mögliche Fehlerquellen

Grundsätzlich gibt es zwei Dinge zu beobachten: Die Auswertungen werden nicht in Relation zur tatsächlichen Anzahl der Fahrgäste der jeweiligen Linie betrachtet, da diese nur auf Jahresebene zu Verfügung stehen. Es kann also nur ein Vergleich der absoluten Zahlen stattfinden. In Relation betrachtet kann die Gegenüberstellung der Linien ein anderes Ergebnis liefern.


Außerdem kann die Anzahl der Einträge je Linie auf zwei Arten interpretiert werden: Die Passagiere sind in der Linie mit vielen Einträgen entsprechend flirtfreudiger und offener und deshalb kommt es auf der Plattform zu mehr Gesuchen. Oder aber es ist genau andersrum: Da die Menschen einer bestimmten Linie schüchterner sind, trauen sie sich erst im Nachhinein die Kontaktaufnahme über diese Plattform zu starten. Diese Erkenntnisse müssen also mit Vorsicht betrachtet werden.

Leider gab es im Laufe der Zeit einige technische Anpassungen auf den Seiten der BVG, die einige Analysen etwas erschweren bzw. verhindern. Das betrifft vor allem das Datum, an dem die Beiträge verfasst (date_posted) wurden. Es fällt auf, dass sehr viele Einträge offenbar am 13. August 2014 verfasst wurden, das Datum des Augenblicks (date_met) aber sehr lange zurück liegt, teilweise bis 2006. Das älteste Datum in date_posted ist der 30.06.2014, bei date_met allerdings der 14.02.2006. Die Vermutung ist also, dass das Datum, an dem der Beitrag verfasst wurde, erst ab Juni 2014 mit erfasst wurde. Im August hat man dann vermutlich alle älteren Beiträge auf das feste Datum, nämlich den 13.08.2014 gesetzt. Insgesamt betrifft das immerhin 15.560 Datensätze.

Die Stimmungsanalyse nutzt einen fertigen Trainingsdatensatz und ist nur so gut, wie die Qualität der Texte. Rechtschreibfehler und Umgangssprache können hierbei nur unzureichend erfasst werden.

Verwendete Technologie

Für das Abgreifen des BVG-Portals verwende ich ein PHP-Script. Das Python-Script zur Normalisierung, Anreicherung und Bereinigung der Daten ist nicht öffentlich. Ganz offensichtlich verwende ich WordPress. In einer früheren Variante habe ich zwei selbstgeschriebene Plugins verwendet. Das ist zum einen das Plugin für die Darstellung der HTML-Heatmap sowie das Plugin für die WordCloud, basierend auf dem fantastischen wordCloud2.js von Tim Dream. Die Idee war, die Zahlen dynamisch zu aktualisieren. Mittlerweile bin ich auf einfache Screenshots von Tableau Public umgestiegen.

Schreibe einen Kommentar