David Schliewe Fabian Gries
RWTH Aachen University RWTH Aachen University
david.schliewe@rwth-aachen.de fabian.gries@rwth-aachen.de

Abstract

In den letzten Jahren wurden viele Algorithmen für die Entdeckung von Gruppen in sozialen Netzwerken an Hand von generierten Datensätzen entwickelt. Unter diesen Gruppen finden sich auch politische und ökonomische Subnetzwerke, aus denen man interessante und wertvolle Informationen über die Interaktionen zwischen den Mitglieder*Innen dieser Netzwerke gewinnen kann. Je früher man an solche Informationen kommt, desto besser kann man sein Handeln anpassen. Wir betrachten in unserer Arbeit das Anwenden von Overlapping Community Detection Algorithms, kurz OCDAs auf deutsche Politiker*Innen und ihr Auftreten auf twitter.com. Hierbei untersuchen wir anhand der Interaktion “Folgen” die Verknüpfungen zwischen einzelnen Parteien und deren Mitglieder*Innen mit Hilfe von dem Louvain Modularity Algorithm (Blondel et al., 2008). Zum Schluss vergleichen wir, ob solche Algorithmen auf dieses Beispiel effektiv angewendet werden können und ein nutzbares Ergebnis liefern.


Inhaltsverzeichnis

  1. Einleitung
  2. Verwandte Arbeiten
  3. Methodik
  4. Anwendung
  5. Zusammenfassung/Ausblick
  6. Referenzen


Einleitung

In der heutigen Zeit sind soziale Medien ein immer größer werdender Bestandteil der Leben der Menschen, demnach auch die Bildung sogenannter Communities, in denen Menschen gleicher Interessen interagieren (Puschmann & Peters, op. 2017). Die Interessen dieser Gemeinschaften überlappen sich häufig mit Anderen, wodurch viele Individuen mehrer Communities angehören können. Überlappungen dieser Art werden mit Hilfe von Overlapping Community Detection Algorithms entdeckt und kategorisiert.

Solche Algorithmen helfen Firmen, durch Auswertung der gesammelten Daten, ihre Produkte und besonders Werbung auf die Kunden*Innen anzupassen. Weitaus mehr können so auch Trends vorhergesagt werden, was Unternehmen erlaubt, aktiv am Markt teilzunehmen und dadurch einen bedeutenden wirtschaftlichen Vorteil zu gewinnen (Labatut & Balasque, 2013). Zudem helfen OCDAs, Kundenabwanderungen vorherzusagen und nachzuvollziehen (Richter et al., n.d.).

Vielmehr hilft es der Politik, um bestimmte Tendenzen ihrer Wähler*Innen festzustellen und können so zielgruppengerichteten Wahlkampf betreiben, um, wie auch in der Wirtschaft, Abwanderungen von Wähler*Innen vorzubeugen (Richter et al., n.d.). Außerdem bringen solche Algorithmen auch Einsicht über das politische Spektrum von einflussreichen Personen, welche von vielen Menschen “gefolgt” werden und somit eine Art Meinungsmacher sind. Ebenfalls kann man mit OCDAs die politische Stellung von einflussreichen Personen nachvollziehen oder überprüfen.

Da Politiker*Innen eben zu solchen einflussreichen Personen gehören und obwohl sie explizit zu einer Partei angehören, damit auch einer politischen Tendenz, ist es interessant, zu welchen anderen Parteien diese Politiker*Innen abgeneigt oder zugeneigt sind. Dadurch, dass Politiker*Innen auf sozialen Netzwerken öffentlich viel miteinander interagieren, ist es sehr einfach, diese Daten in einen sozialen Graphen umzuwandeln.

In diesem Paper werden wir anhand von Followern (Nutzer*Innen, die einem/r Nutzer*In auf sozialen Netzwerken folgen) von Politiker*Innen untereinander feststellen, ob diese auch Tendenzen in anderen Richtungen des politischen Spektrums besitzen. Dafür verwenden wir den Louvain Modularity Algorithm (Blondel et al., 2008), um die Gruppierungen der Politiker*Innen zu bestimmen und sie im Anschluss mit der Realität vergleichen.

Verwandte Arbeit

Diese Arbeit basiert größtenteils auf den zwei Papern. #Brexit: Leave or Remain? The Role of User’s Community and Diachronic Evolution on Stance Detection (Lai et al., 2020). Dieser beschäftigt sich teils mit der Vorhersage politischer Positionen von verschiedenen Wähler*Innen. Dabei wurde der Louvain Modularity Algorithm (Blondel et al., 2008) verwendet. Der Louvain Algorithmus überprüft dabei die Intensität der inneren Knoten in Bezug auf die Kanten zu anderen Gemeinschaften und erstellt in Folge dessen eine lokale Community. Weiterhin wird dabei ein Modularity scale optimiert, welcher dann die Communities besser separieren kann. Außerdem wurden bei Social Networks and Political Participation: The Role of Social Interaction in Explaining Political Participation (Mcclurg, 2003) statistische Verfahren benutzt, um Intensität der Interaktionen von Beteiligten zu erklären. Dabei werden zuerst Parameter aus einem statistischen Modell entnommen. Zweitens, um die Schätzungsunsicherheit einzubeziehen, ziehen sie einen Wert aus der Verteilung von den übergebenden Parametern, um eine Parameterschätzung darzustellen. Drittens wählen sie Werte für die unabhängigen Variablen, bei denen sie einen Erwartungswert für die abhängige Variable berechnen wollen. Und zu guter Letzt, verwenden sie die simulierten Koeffizienten aus dem zweiten Schritt und einer Ziehung aus der stochastischen Verteilung des Modells, um einen erwarteten Wert zu simulieren. Dadurch kann man den Einfluss der verschieden Variablen auf die politische Beteiligung sehen.

Methodik

Nachdem wir eine Weile gesucht haben, haben wir eine vorgefertigte Liste mit den meisten Bundestagsabgeordneten, die einen Twitter Account besitzen, gefunden. Mit Hilfe der Twitter API konnte man ein simples Python-Script schreiben, mit dem man die Follower jedes/r Nutzer*Innens in dieser Liste abfragen kann. Dadurch haben wir für jede/n Nutzer*In eine eigene Datei generiert, die alle Follower-Identifikationen (kurz ID) gespeichert hat.

def get_followers(id):
    url = "api_url" + str(id)
    cursor = -1
    followers = []
    bearer_token = auth()
    headers = create_headers(bearer_token)
    while cursor != 0:
        url_cursor = url + "&cursor=" + str(cursor)
        json_response = connect_to_endpoint(url_cursor, headers)
        followers += json_response["ids"]
        cursor = json_response["next_cursor"]
    with codecs.open("%d_followers.json" % id, 'w') as f:
        f.writelines(json.dumps(followers, indent=4, sort_keys=True))
 
def get_followers_from_list(users):
    for user in users:
        if not os.path.isfile("%d_followers.json" % user[id]):
            get_followers(user[id])
        else:
            print("skipped user %s (%d)" % (user[name], user[id]))

Da die Twitter-API uns lediglich 15 Abfragen alle 15 Minuten erlaubt und bei Internetverlust das Script kurzzeitig abgebrochen hat, hat dieser Prozess bei 538 Nutzern drei Tage gedauert. Dadurch verteilt sich der Stand der Daten vom 14.01.2021 bis zum 16.01.2021.

Weiterhin benutzen wir die gesammelten Daten, um einen Graphen in .gml Format zu generieren. Wir haben zunächst für jede/n Nutzer*In einen Knoten hinzugefügt und anschließend für jede/n Nutzer*In überprüft, ob er in einer der Follower-Listen der anderen Nutzer*Innen zu finden ist. Wenn ja, wurde ein gerichteter Graph zwischen den Nutzer*Innen hinzugefügt. Dieser Graph ist als “Nutzer*In A folgt Nutzer*In B” zu lesen.

def write_edges_in_from_list(file, liste):
    for user in liste:
        with open("%d_followers.json" % user[0], "r") as jsonfile:
            followers = json.load(jsonfile)
            for follower in liste:
                if follower[id] in followers:
                    print("found")
                    write_edge(file, follower[id], user[id])

Zum Schluss fügten wir die Partei jedes/r Nutzer*Innens in den Graphen manuell hinzu. Dadurch können wir die Kategorisierung durch die tatsächlichen Parteien und die Kategorisierung des OCDAs visuell und verständlich vergleichen.

Als OCDA haben wir den Louvain Modularity Algorithm (Blondel et al., 2008), jedoch in der für gerichtete Graphen optimierten Form (Leicht & Newman, 2008) verwendet, da dieser bereits in vorherigen Arbeiten sehr gute Ergebnisse erzielt hat und für unser Problem perfekt passt. Dieser Algorithmus kann anhand der Anzahl und Art der Verbindungen zwischen Knoten entscheiden, ob mehrere Knoten zu einer Community gehören. Anders ausgedrückt, berechnet dieser Algorithmus die Modularität des Graphen und somit die Anzahl der Module eines Graphen. Solch ein Modul wird als Community bezeichnet, da die Knoten eines Moduls überdurchschnittlich viele Verbindungen zueinander als Verbindungen zu anderen Modulen besitzen.

Evaluation

Nachdem wir den Algorithmus auf unserem Graphen laufen lassen haben, färbten wir die errechneten Partitionen bzw. Communities in passenden Farben. Die Partitionen waren den tatsächlichen Parteien sehr ähnlich, weswegen wir diese mit den Parteifarben gefärbt haben.

Alt-TextAbb. 1 - Reale Partitionierung

Alt-TextAbb. 2 - Berechnete Partitionierung

Durch diese generierte Veranschaulichung sieht man, dass sich verschiedene Parteien verschieden Nahe stehen. Anhand der Followerschaften können wir also Vorhersagen über eventuelle Koalitionen oder Beobachtungen von Änderungen der politischen Positionen der Parteien bzw. Communities tätigen. Außerdem können wir die Positionierung verschiedener Nutzer*Innen nachvollziehen und Ausreißer erkennen. Insgesamt kann man also alleine auf Basis des gegenseitigen Folgens die Positionierung der Nutzer*Innen im gegebenen Kontext feststellen.

Zusammenfassung

Man erkennt, dass der Algorithmus sehr zuverlässig die Nutzer*Innen in die Communities einteilt. In unserem Beispiel hilft uns dieser Zuschuss an Information nicht viel. Sieht man sich aber andere politische Netzwerke an, in denen nur von einer Community die politische Einstellung kennt, hilft uns diese Methode abzuschätzen, wie die anderen Communities politisch positionieren. Diese Information kann man nutzen, um gezielt Wahlkampf zu betreiben, in dem man nur die Leute anspricht, die garantiert die Wunschpartei wählen, oder aber Nutzer*Innen umstimmt oder polarisiert.

Im wirtschaftlichen Aspekt hingegen kann man anhand solcher analysierten Graphen sehen, wie sehr sich die Interaktion zwischen z.B. verschiedenen Unternehmen einer Branche ändert. Solche Änderungen können von dem Algorithmus erkannt werden, indem die einzelnen Unternehmen ab einem gewissen Schwellwert als eines erkannt werden. Je nach Kontext kann man dann vorhersagen, ob sich die Unternehmen zu einer Instanz fusionieren oder es einen Konflikt zwischen denen gibt, welches sich auch auf die Aktien auswirken kann.

Referenzen

  1. Blondel, V. D., Guillaume, J.-L., Lambiotte, R., & Lefebvre, E. (2008). Fast unfolding of communities in large networks. J. Stat. Mech. https://doi.org/10.1088/1742-5468/2008/10/P10008
  2. Puschmann, C., & Peters, I. (op. 2017). Handbuch soziale Medien. Springer VS. https://doi.org/10.1007/978-3-658-03765-9\textunderscore 12
  3. Labatut, V., & Balasque, J.-M. (2013). Informative Value of Individual and Relational Data Compared Through Business-Oriented Community Detection. In T. Özyer, J. Rokne, G. Wagner, & A. H. P. Reuser (Eds.), The Influence of Technology on Social Network Analysis and Mining (Vol. 6, pp. 303–330). Springer Vienna. https://doi.org/10.1007/978-3-7091-1346-2\textunderscore 13
  4. Richter, Y., Yom-Tov, E., & Slonim, N. Predicting customer churn in mobile networks through analysis of social groups. Proceedings of the 2010 SIAM International Conference on Data Mining. http://epubs.siam.org/doi/abs/10.1137/1.9781611972801.64
  5. Lai, M., Patti, V., Ruffo, G., & Rosso, P. (2020). #Brexit: Leave or remain? the role of user’s community and diachronic evolution on stance detection. Journal of Intelligent & Fuzzy Systems, 39(2), 2341–2352. https://doi.org/10.3233/JIFS-179895
  6. Mcclurg, S. D. (2003). Social Networks and Political Participation: The Role of Social Interaction in Explaining Political Participation. Political Research Quarterly, 56(4), 449–464. https://doi.org/10.1177/106591290305600407
  7. Leicht, E. A., & Newman, M. E. J. (2008). Community structure in directed networks. Physical Review Letters, 100(11), 118703. https://doi.org/10.1103/PhysRevLett.100.118703