Soziale-Netzwerk-Analyse und Topic Modeling mit codecentrics Twitter-Freunden und -Followers

Keine Kommentare

Vor kurzem hat Matthias Radtke einen spannenden Blog-Artikel über Topic Modeling der codecentric Blog-Artikel geschrieben. Dort gibt er eine umfassende Einführung in Topic Modeling. In diesem Artikel hier zeige ich ein reales Beispiel dafür, wie wir Data Science nutzen können, um Erkenntnisse aus Textdaten und Sozialer Netzwerk-Analyse zu ziehen.

Mit öffentlich zugänglichen Twitter-Daten charakterisiere ich codecentric’s Twitter Freunde und Follower, um

  • die “einflussreichsten” Follower zu finden und mit Textanalyse-Tools, wie Sentimentanalyse, ihre Interessen aus den Profilbeschreibungen abzuleiten.
  • mit Sozialer Netzwerk-Analyse im Netzwerk von Freunden und Followern Schlüsselfiguren zu identifizieren, die Informationen an viele andere Nutzer weitergeben.
  • durch die Kombination von Netzwerk-Analyse mit Topic Modeling Meta-Gruppen mit ähnlichen Interessen zu identifizieren.

Wenn wir die Interessen und die Position im sozialen Netzerk unserer Follower kennen, können wir Schlüsselfiguren identifizieren, die unsere Posts mit großer Wahrscheinlichkeit retweeten und dabei viele Leute erreichen.

Twitter Mining

Die Twitter REST API erlaubt es jedem auf Tweets, Timelines, Freunde- und Follower-Informationen zuzugreifen. Der Nachteil der REST API ist ihre Beschränkung auf 15 Anfragen pro 15-Minuten Fenster. Eine Alternative ist die Twitters’s Streaming API, die geeignet ist um kontinuierlich Daten von bestimmten Benutzern, Themen oder Hash-Tags zu speichern. Hier betrachte ich eine Momentaufnahme von codecentric’s Twitter Freunden und Followern, um ein paar der Möglichkeiten zu zeigen, wie wir aus Analysen dieser Daten Nutzen ziehen können.

Am 15. Juli hatte codecentric 449 Freunde (Nutzer, denen codecentric folgt) und 2732 Follower (Nutzer, die codecentric folgen). Von diesen waren 261 sowohl Freunde, als auch Follower.

Wir haben jetzt die folgenden Informationen über diese Freunde und Follower:

  • Name
  • Benutzername
  • Profilbeschreibung
  • Anzahl Tweets
  • Anzahl Follower
  • Anzahl Freunde
  • Datum, an dem der Account erstellt wurde
  • Ortsangabe im Profil
  • Spracheinstellung des Profils
  • etc.

Diese Daten können uns eine Menge darüber verraten, wer sich für codecentric und unsere Themen interessiert. Wir können, z.B. mit einer einfachen explorativen Datenanalyse starten und uns anschauen, welche Sprachen die Nutzer-Accounts haben – (noch) ganz ohne komplizierte Modelle!

Grafik Top 10 languages

Top 10 Sprachen von codecentric’s Twitter Freunden und Followern.

Wie wir sehen können, spricht die Mehrheit Englisch oder Deutsch. Daraus können wir lernen, dass sowohl Tweets in Deutsch, als auch in Englisch eine entsprechende Zielgruppe unter unseren Followern haben (wobei Englisch vermutlich mehr Nutzer einschließt, sofern wir davon ausgehen, dass die meisten deutschen Follower ebenfalls Englisch verstehen).

Wer sind codecentric’s einflußreichste Follower und wofür interessieren sie sich?

Wir können auch versuchen unsere einflußreichsten Follower zu identifizieren. Das bedeutet, Follower mit einem großen Netzwerk (die also widerrum viele Follower haben) und die gleichzeitig viel tweeten/retweeten. Wenn wir es schaffen, das Interesse dieser Follower mit einem unserer Tweets zu wecken, ist es a) sehr wahrscheinlich, dass sie ihn retweeten und b) dass sie dabei ein großes Publikum erreichen!

Grafik Korrelation zwischen Anzahl an Followern und der durchschnittlichen Anzahl an Tweets pro Tag

Korrelation zwischen Anzahl an Followern und der durchschnittlichen Anzahl an Tweets pro Tag von codecentric’s Twitter Followern.

Die Abbildung oben zeigt die Korrelation zwischen der Anzahl an Followern von codecentric’s Followern und die Häufigkeit, mit der sie tweeten.

Mit dieser Information wissen wir nun, welche Follower besonders einflußreich sind. Im nächsten Schritt wollen wir wissen, für welche Themen sie sich interessieren. Dafür analysieren wir ihr Profilbeschreibungen. Daraus können wir dann ableiten, welche Tweets mit großer Wahrscheinlich für die Follower interessant sind. Das soll natürlich nicht heißen, dass nur diese Follower für uns wichtig sind und dass wir den Inhalt unserer Tweets (nur) nach ihnen ausrichten sollten! Ein breites Spektrum an Themen sorgt für ein interessantes, authentisches Profil – aber da Wissen ja bekanntermaßen Macht ist, kann es sehr wertvoll sein zu wissen, womit wir unsere Sichtbarkeit erhöhen können!

Um aus den Profilbeschreibungen der 100 einflußreichsten Follower (definiert mit einem Score aus Anzahl an Followern * durschnittliche Anzahl an Tweets pro Tag) Informationen zu ziehen, nutze ich Text- und Sprachanalysemethoden (natural language processing).

Die Daten werden vorbereitet, indem die Profilbeschreibungen zunächst in einzelne Wörter zerlegt und diese auf ihren Wortstamm reduziert werden. Außerdem entfernen wir sogenannte Stop-Wörter.

Wir können jetzt die am häufigsten verwendeten Wörter visualisieren.

Wordcloud mit den am häufigsten verwendeten Wortstämmen

Wordcloud mit den am häufigsten verwendeten Wortstämmen in den Profilbeschreibungen von codecentric’s Twitter Followern.

Nicht überraschend finden wir software, development, agil und business unter den häufigsten Wörtern. Aber auch IoT (Internet of Things), data und science werden häufig in den Profilbeschreibungen unserer einflußreichen Follower genannt!

Statt uns einzelne Wörter anzugucken, können wir auch die Häufigkeit von Wortpaaren analysieren.

Grafik häufigste Wortpaare

Häufigste Wortpaare in den Profilbeschreibungen von codecentric’s Twitter Followern.

Diese Abbildung zeigt die am häufigsten vorkommenden Wortpaare in den Profilbeschreibungen unserer einflußreichsten Follower. Pfeilfarben entsprechen der Häufigkeit. Da wir nur eine relativ kleine Gruppe an Followern analysieren, kommt keines der Wortpaare extrem häufig vor. Nichtsdestrotz ist “data science” das am meisten vorkommende Wortpaar!

Sentimentanalyse

Sentimentanalyse beschreibt eine Reihe von Techniken aus dem Natural Language Processing. Mit ihnen können wir Empfindungen wie Freude, Abscheu, Angst oder Wut und positive oder negative Gefühlslagen in Texten identifizieren.

Hier kommt auch wieder die Wortpaaranalyse zum Tragen. Die können wir hier nutzen um Wörter zu filtern, die auf Negierungen (“nicht”, “kein(e)”, etc.) folgen. Für die Sentimentanalyse können die Bedeutungen dieser negierten Wörter dann umgedreht werden.

Grafik Sentiment-Score-Verteilung

Sentiment-Score-Verteilung der Profilbeschreibungen von codecentric’s Twitter Followern.

This plot shows the overall sentiment in the user descriptions of the most influential followers. Based on Bing Liu’s sentiment lexicon, we can score how many positive and negative words were used in each followers’ description. Because this lexicon is only available for the English language, we can only get realiable scores for followers with an English description (68 out of 100 followers have an English language setting). As we can see, the majority of followers have predominantly positive descriptions.

Diese Abbildung zeigt die Summe der Sentiment-Scores für die Profilbeschreibungen der einflußreichsten Follower. Der Score berechnet sich aus der Summe der positiv und negativ besetzen Wörter (nach Bing Liu’s Sentiment Lexikon). Da das verwendete Lexikon nur für die englische Sprache etabliert ist, erfassen wir hier nur englische Wörter. Allerdings haben von unseren einflußreichsten Followern 68 von 100 englische Spracheinstellungen, so dass wir annehmen können, dass wir einen Großteil der Texte analysieren.

Soziale Netzwerk-Analyse

Soziale Netzwerke beschreiben Interaktionen zwischen Menschen, z.B. Twitter Freunde und Follower. Die Analyse solcher Netzwerke nutzt Techniken aus der Graphentheorie.

So können wir das Netzwerk von codecentric’s Twitter Freunden und Followern beschreiben: jeder Knoten zeigt einen Benutzer und Pfeile zeigen, wer wem folgt oder von wem gefolgt wird.

Aufgrund der Beschränkungen der Twitter API sehen wir hier nur einen Ausschnitt von 106 codecentric Freunden. Aber schon mit so einem kleinen Teil des Netzwerken bekommen wir fast 40 Millionen interagierende Nutzer.

Mit Graphentheorie können wir eine Vielzahl an Metriken berechnen, die uns Schlüsselfiguren im Netzwerk zeigen:

  • Zentralität und Knoten “degree” zeigen uns, wie viele angrenzende Kanten die Knoten haben. Benutzer mit vielen Verbinden sind im Netzwerk von zentraler Rolle.
  • “Closeness” zeigt uns Nutzer, die im Netzwerk zentral liegen und somit Informationen an viele andere Nutzer weitergeben können.
  • Transivitiät oder Clustering Koeffizienten messen die Wahrscheinlichkeit, dass nahe beieinander liegende Knoten verbunden sind.
  • PageRank oder Eigenvektor-Zentralität ordnen Knoten anhand ihrer Verbindungen mit anderen stark vernetzen Knoten.
  • “Betweenness” Zentralität und “diameter” zeigen den kürzesten und längsten Pfad zwischen allen Knoten.

In der nachstehenden Abbildung sehen wir das Netzwerk von codecentric’s Twitter Freunden und Followern. Knoten mit hoher “betweenness” Zentralität sind auf einem Pfad mit vielen anderen Knoten; diese Nutzer sind also Schlüsselverbindungen oder Brücken zu vielen verschiedenen Gruppen von anderen Nutzern. Durch ihre Position im Netzwerk sind diese Nutzer von besonderer Bedeutung für uns, denn sie können Informationen mit großer Reichweite verteilen. Knotenpositionen im Netzwerk wurden mit dem Fruchterman-Reingold Layout Algorithmus berechnet.

Grafik Soziales Netzwerk von codecentric’s Twitter Freunden und Followern

Soziales Netzwerk von codecentric’s Twitter Freunden und Followern. Knotengröße entspricht “betweenness” Zentralität.

Topic Modeling

Im nächsten Schritt können wir mit Topic Modeling auf Basis der Profilbeschreibungen unsere Follower Themengruppen mit ähnlichen Interessen zuordnen. Eine umfassende Einführung in Topic Modeling kann in Matthias Radtke’s “Topic Modeling of the codecentric Blog Articles”nachgelesen werden.

Hier benutze ich “Latent Dirichlet Allocation” mit VEM Algorithmus um alle Nutzer aus dem Netzwerk in fünf Interessens-Gruppen einzuteilen.

Die Wordcloud unten visualisiert die charakteristischsten Wörter in den jeweiligen Gruppen.

Wordcloud der repräsentativsten Wörter in den fünf durch Topic Modelling identifizierten Gruppen

Wordcloud der repräsentativsten Wörter in den fünf durch Topic Modelling identifizierten Gruppen.

Jetzt wollen noch wir wissen, welchen Themen wir den Nutzern in unserem Netzwerk zuordnen können. Dafür nutzen wir den sogenannten Gamma-Score, der für jeden Nutzer und jeder Themengruppe einen Wert entsprechend der berechneten Zugehörigkeit zuweist. Hier wird jedem Nutzer die Themengruppe mit höchstem Gamma-Score zugeteilt.

Grafik 2 Soziales Netzwerk von codecentric’s Twitter Freunden und Followern

Soziales Netzwerk von codecentric’s Twitter Freunden und Followern. Knotenfarbe zeigt Zugehörigkeit zu den fünf durch Topic Modeling identifizierten Themengruppen

Dieses Netzwerk zeigt die verschiedenen Interessensgruppen von codecentric’s Twitter Freunden, basierend auf der Zuordnung zu Themengruppen von den Nutzern, denen sie folgen. Ein Nutzer scheint z.B. vielen Nutzern zu folgen, die in ihren Profilbeschreibungen Software Development nennen.

Obwohl dieses Netzwerk nicht repräsentativ ist, da es nur einen Ausschnitt der Twitter Freunde ersten und zweiten Grades zeigt, können wir hier sehen, welchen Potenzial in dieser Art von Information steckt! Denn wir haben jetzt einen guten Eindruck über die Interessen unserer Freunde gewonnen, anhand von a) ihren Twitter Beschreibungen und b) den Beschreibungen von allen Nutzern, denen sie auf Twitter folgen. Außerdem haben wir jetzt Hinweise auf die Interessen von Kontakten zweiten Grades, die uns (noch) nicht folgen. Das könnten wir nutzen, um Gruppen gezielt anzusprechen, indem wir z.B. Artikel mit Fokus auf diesen Themen veröffentlichen.

Es wäre sogar vorstellbar, dass wir diesen Ansatz um Machine Learning Techniken erweitern, um Follower Interessen und ihr Potenzial als Verteiler von Informationen vorherzusagen.


Alle Analysen wurden mit R version 3.4.0 durchgeführt.

Code ist einzusehen bei Github.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.