Projektergebnis: Datenanalyse von Telekommunikationsblogs

In diesem Beitrag möchte ich eine Analyse von Daten, die ich aus RSS Feeds von verschiedenen Telekommunikationsblogs  gesammelt habe vorstellen. Damit möchte ich eine Idee geben wie man Analytics Aufgaben angehen könnte.

In dem Rahmen möchte ich auch verschiedene Punkte bzw. Fragen aufgreifen die sich mir bei der Planung und Durchführung des Analytics-Projekt gestellt haben.

  • Was ist meine Fragestellung/Hypothese gewesen?
  • Wie kann ich hier an Daten kommen und warum habe ich mich für diese Methode entschieden?
  • Wie habe ich die Daten aufbereitet und analysiert?
  • Welche Erkenntnisse habe ich daraus abgeleitet?
  • Was habe ich für zukünftige Projekte daraus gelernt?

Fragestellung:

Das Projekt war im Rahmen einer Hausarbeit von mir durchgeführt worden. Es sollte etwas zum Thema Trend und Innovationsmanagement sein. Da ich in der Telekommunikationsbranche arbeite, wollte ich hierüber etwas schreiben. Meine These dabei war, dass ich anhand der Blogbeiträge von entsprechenden Seiten oder von den Blogs der großen Konzerne aktuelle Themen und Trends identifizieren kann und mit einem Unsupervised ML Algorithmus diese Trends auch clustern kann.

Projektaufbau:

Zuerst stellte sich die Frage, wie kann ich überhaupt die Daten von diesen Blogs sammeln. Relativ schnell bin ich dabei auf das Thema Web Scraping gekommen. Python bietet hierfür die Library „BeautifulSoup“ an. Ich hätte aber für jeden Blog ggf. eine eigene Routine zum sammeln schreiben müssen. Ich dachte mir, dass muss einfacher funktionieren. Solche Blogs und Newsseiten bieten in der Regel auch RSS Feeds an. Diese sind relativ gut strukturiert und enthalten ein Summary und den Titel etc. Mit der Library „Feedparser“ können diese entsprechend ausgelesen werden. Aufgrund der Einfachheit habe ich mich für dieses Vorgehen entschieden und musste mich nicht mit den HTML Codes der verschiedenen Blogs auseinander setzen.

Nun musste ich noch im Hintergrund eine kleine Infrastruktur aufbauen mit der ich ein Python Programm automatisiert ausführen kann und die Ergebnisse auch gesichert werden. Ich hatte nämlich keine Lust jede Stunde dieses Programm selbst auszuführen. Da ich einen Raspberry Pi noch bei mir rumliegen hatte habe ich den einfach kurzerhand dafür verwendet. Eine PostgreSQL Datenbank draufgespielt, und mit der Crontab mein Programm im Stundentakt ausgeführt. Fertig war meine kleine Datensammelkrake.

Das Python Programm bestand im wesentlichen aus 2 Teilen.

  1. Alle Blogs über eine entsprechende Liste ansteuern und mithilfe des Feedparsers alle Einträge in einem Dataframe speichern.
  2.  Aus meiner Datenbank die bereits vorhandenen Daten abrufen und mit den neuen zusammenführen. Danach die doppelten Datensätze löschen und die Daten wieder in die Datenbank eintragen

Datenaufbereitung / Analysevorgehen:

So nachdem wir nun die Daten über einen Monat hinweg erfasst und gespeichert haben, will ich nun natürlich auch mal sehen ob ich da was rausbekommen kann. Dafür hatte ich auch mehrere Probleme die ich angehen musste. So hatte ich keine Keywords zu den Beiträgen gesammelt. Diese musste ich irgendwie aus den Summarys generieren. Dafür habe ich verschiedene Natural Language Programming (NLP) Librarys verwendet. Vor allem das Natural Language Toolkit und SpaCy habe ich dafür verwendet. Ich habe versucht Füllwörter zu entfernen, Rechtschreibfehler zu korrigieren und auch Wortstämme zu bilden um den Wortumfang im Text möglichst zu reduzieren. Also aus „sein“, „war“, „ist“ wurde „sein“. Auch die Groß-Kleinschreibung wurde vereinheitlich ( Alles in Lower Case geändert). Damit konnte ich den Wortumfang in den Texten bereits gut reduzieren. Außerdem habe ich besonders kurze Wörter entfernt. Da diese ebenfalls i.d.R. wenig zum Thema beitragen. Dies führte bei mir aber auch zu Problemen dazu aber später mehr.

Wie man sehen kann habe ich aber bereits die Anzahl der Wörter um ca. 50% pro Datensatz reduzieren können und in meiner gesamten Datengrundlage von 91.000 unterschiedliche Wörter es auf 20.000 reduzieren können.

Nun wollte ich diese Daten clustern. Dazu habe ich den K-Means Algorithmus verwendet. Ich musste dafür aber zuerst alle Wörter in eine Zahl umwandeln. Dazu habe ich den tf-idfvectorizer verwendet. Dieser berechnet die Wichtigkeit des Wortes in dem die Häufigkeit des Wortes in der Datengrundlage und der Häufigkeit des Wortes in dem Datensatz einen Vectorwert zugewiesen wird. Diese Funktion ist in der Library sklearn enthalten. Danach habe ich den K-Means Algorithmus mit 6 Clustern trainiert und danach die Top Features angesehen. Hierbei waren noch einige HTML Tags aus den Feeds enthalten. Solche Wörter habe ich über eine Blacklist ebenfalls aus dem Dataset entfernen lassen und dann den Algorithmus wieder neu trainiert. Am Ende habe ich folgende Cluster unterteilen können.

Da ich meine Analyse zum Zeitpunkt der 5G Vergabe durchgeführt habe, war ich sehr erstaunt, dass der Glasfaser/Mobilfunk Anteil so gering war. Hier kommt das Problem, dass ich vorher bereits erwähnt hatte. Ich hatte alle Wörter mit <=2 Buchstaben aus dem Dataset entfernt. Dazu zählt auch 5G. Nach einer Stichprobenprüfung habe ich diese Beiträge vor allem im Cluster „Digital“ wiedergefunden. Der Cluster Digital besteht also zu großen Teilen aus den 5G Beiträgen. Außerdem überraschte mich der hohe Anteil der Beiträge im Cluster Diversity. Als ich mir diese Aufteilung auf die Quellen gemappt habe, habe ich erkennen können dass fast alle Beiträge dazu von dem Vodafone Blog kamen. Anscheinend wurde hier zeitgleich eine Kampagne zu dem Thema gefahren.

Außerdem haben die Seiten von Telekom und Vodafone kaum Beiträge in den Clustern, welche sich auf Smartphone Hersteller beziehen sondern mehr auf Digitalisierung, Glasfaser und eben Diversity ausgerichtet.

Fazit / Erkenntnisse:

Mein Wesentliches Fazit ist, dass es durchaus möglich ist über so ein Vorgehen aktuelle Trends zu identifizieren. Zusätzlich habe ich Hinweise auf die unterschiedlichen Marketing Strategien der Anbieter finden können. Die günstigeren Anbieter setzen vor allem auf klassische Vermarktung durch Werbung von Tarifen und Smartphones. Die höherwertigen Anbieter betreiben aktiver Content Marketing und versuchen so die eigene Marke von den Wettbewerbern abzugrenzen. Besonders auffällig ist hierbei Vodafone, welche Themen abseits von typischen Telekommunikationsthemen behandeln.

Für mich selber habe ich gelernt, dass das PreProcessing extrem wichtig ist und Fehler ( wie bei dem Löschen von 5G) bei der späteren Analyse zu verfälschten Ergebnissen führen können. Auch das entsprechende Feature Engineering zum trainieren des Algorithmus kann die Ergebnisse deutlich verbessern und hier sollte entsprechend Zeit investiert werden. Was ich ebenfalls in zukünftigen Projekten machen werde, ist ein Vergleich verschiedener Algorithmen durch zuführen um besser abwägen zu können, welcher Algorithmus nun der richtige für meine Daten und meine Fragestellung ist.

Ich hoffe ich konnte einen kleinen Einblik in das Thema geben und vll. dem einen oder anderen einen interessanten Denkanstoß bieten für sein Data Science Projekt.