Analyse von Facebook-Stellenanzeigen

Dieser Artikel beschäftigt sich mit der Analyse von Facebook-Stellenanzeigen mittels Python. Das Ziel dieses Projekts ist es, ein Tool zu bauen, welches folgende Funktionen anbietet:

  1. Performance Analyse der Stellenanzeigen
  2. Stellenanzeigen miteinander durch KI vergleichen
  3. Die Jobtitel der Stellenanzeigen durch KLDB-Klassen klassifizieren

Motivation

Der Artikel enthält die Ergebnisse unserer Projektarbeit des Fachs “Data Science and Applications” aus dem Wintersemester 24/25 an der Hochschule Kaiserslautern, welche wir in Zusammenarbeit mit einer namhaften Firma erzielt haben.
Das Projekt wurde von Prof. Dr. Bastian Beggel betreut und in Zusammenarbeit mit einem anonymen externen Unternehmen durchgeführt.

Datengrundlage

Die zuvor erwähnten Stellenanzeigen wurden gezielt als Werbemittel auf den Social-Media-Plattformen von Meta (Facebook, Instagram und Threads) eingesetzt. Um detaillierte Informationen zu den Werbekampagnen dieser Anzeigen zu erhalten, nutzte unser Team die „Meta Graph API“. Dafür stellte uns das Unternehmen einen Token zur Verfügung, mit dem wir die benötigten Daten abrufen und speichern konnten.

Ein zentraler Bestandteil des Projekts war zudem die Untersuchung von Zusammenhängen zwischen den in den Stellenanzeigen genannten Berufen und den zugehörigen Daten der Werbekampagnen. Daten zu den einzelnen Berufen konnten wir über die sogenannten „KLDB-Klassen“ beziehen. Diese Klassen enthalten unter anderem Informationen zu Qualifikationen sowie zu ähnlichen Berufsfeldern.

Verwendete Technologien

  1. Python
  2. Streamlit
  3. Meta Graph API
  4. ChatGPT
  5. Docker
Aufbau der Daten

Zum besseren Verständnis der Anwendung, wird folgend noch ein Überblick über die ausgewerteten Daten geschaffen.

Meta Graph API

Eine Werbekampagne enthält mehrere Anzeigengruppen (Ad Sets). Diese Anzeigengruppen bestehen wiederum aus mehreren Anzeigen (Ads). Eine Anzeige ist in unserem Fall eine Stellenanzeige. Die Anzeige enthält alle nötigen Informationen, die zur Analyse benötigt werden. Diese Informationen werden von der Meta Graph API in Kategorien zugewiesen.

Die Creative Kategorie eines Ads enthält den Titel und den Text einer Anzeige. Zu jedem Text gibt es allerdings verschiedene Varianten, die je nach Nutzer angezeigt werden. Die Insights Kategorie besteht aus den Statistiken einer Anzeige. Dazu zählen z.B. wie oft die Anzeige angeklickt wurde, wie viele Nutzer die Werbung erreicht hat und wie viel Geld der Webbetreiber für diese Werbekampagne ausgegeben hat.

KLDB API

Die Klassifizierung des Jobtitels einer Stellenanzeige erfolgt über die KLDB API. KLDB steht für “Klassifizierung der Berufe”.
Die Bundesagentur für Arbeit erstellt für jede Berufsgruppe einen fünfstelligen numerischen Code, mit dem diese identifiziert werden kann. In dieser Anwendung werden die Jobtitel, die durch die Meta Graph API erlangt werden, mit einer KLDB-Klasse angereichert.

Meta Ad Analyzer

####### Aufbau

Das Tool “Meta Ad Analyzer" ist eine webbasierte Python Anwendung, die durch das Framework Streamlit (https://streamlit.io/) realisiert wurde. Streamlit ist ein Open-Source Python Framework, mit dem Web-Anwendung generiert werden können. Der Fokus von Streamlit liegt darauf, komplexe Datenvisualisierungen benutzerfreundlich und interaktiv zu präsentieren.

Unsere Anwendung besteht aus fünf verschiedenen Pages. Durch eine Sidebar kann zu jeder Page navigiert werden. Hinter jeder Page steckt ein Python-Skript, welches die UI-Elemente der Seite erstellt und die Interaktion mit dem Benutzer steuert.

Home-Page

Dies ist die erste Page, die der Nutzer beim Laden der Anwendung sieht. Diese wird mit der Python Bibliothek “ydata-profiling” erstellt und zeigt eine erste explorative Analyse der Stellenanzeigen. Hierbei werden die vorhandenen Daten auf Vollständigkeit und Abhängigkeiten überprüft, sowie Statistiken zu den einzelnen Features erstellt. Beispiele sind hier z.B die Min.-Max. oder Mittelwerte der Features.

Database-Page

Diese Seite dient dem Verwalten der zu analysierenden Daten. Hierbei können die Daten entweder durch eine CSV-Datei oder durch ein Python-Skript in die Datenbank geladen werden. Die im Python-Skript realisierte Pipeline besteht hierbei aus vier Teilabschnitten.

  1. Laden der Daten durch API-Calls an die Meta Graph API
  2. Aufbereitung der Daten für die Analyse
  3. Clustering der Jobtitel
  4. Persistieren der Daten in die Datenbank

Angesiedelt in der Projektstruktur verwendet die Datenbank die sogenannte "sqlite3" -Technologie zum Speichern der Daten. Wenn also die Software lokal genutzt wird, besitzt jeder Anwender eine eigenständige Datenbank, auf der er seine Daten speichern kann.

Weiterhin können über die Page die Daten in der Datenbank gelöscht oder ein Teilabschnitt angezeigt werden. Zuletzt ist es möglich, die Datenbank als CSV-Datei zu exportieren. Aus technischen Gründen ist es nicht möglich, den gesamten Datensatz in einem Schritt via KLDB-API mit KLDB-Klassen anzureichern. Das Problem wurde durch die Verwendung eines vorgespeicherten DataFrames gelöst, der eine begrenzte Anzahl an Ad IDs mit bereits angereicherten KLDB-Klassen enthält. Fehlende KLDB-Klassen können im später beschriebenen Modul nachträglich eingelesen werden, wodurch sowohl die Datenbank als auch die vorgespeicherte Datei sukzessive erweitert werden. Auf diese Weise wird eine schrittweise Anreicherung des Datensatzes ermöglicht.

KLDB-Page

Diese Seite dient nicht zur Analyse der Daten, sondern zum Ermitteln der KLDB-Klassen eines gewünschten Berufes. Dazu gibt man in das Input-Feld die gewünschte Berufsbezeichnung (z.B. Software-Entwickler). Die KLDB-API gibt dazu die fünf am meisten zutreffenden KLDB-Klassen aus. Diese werden auf der Seite als Liste dargestellt.

Zudem besteht die Möglichkeit, fehlende KLDB-Klassen im Datensatz durch Eingabe der entsprechenden Ad ID nachträglich zu ergänzen.

Dashboard-Page

Das Dashboard dient zur weiterführenden Analyse der Daten. Hierbei werden die Anzeigen in Bezug auf ihre KLDB-Klasse, Städte oder Cluster-Gruppen verglichen. Die Features der einzelnen Anzeigen können hierbei durch einen Graphen verglichen werden. Dazu wählt man im Voraus die Gruppierung und Features aus, die verglichen werden sollen. Zudem erhält man den Inhalt der besten und schlechtesten Anzeigen. Durch ChatGPT wird eine KI-generierte Analyse der schlechtesten/besten Anzeigen erzeugt. Innerhalb dieser Analyse wird ein Fokus auf die Features (z.B. Reichweite, Klicks) gelegt.

In den Clustern werden Jobanzeigen anhand ihrer Jobtitel zusammengefasst. Mithilfe der Python Bibliothek 'spaCy' werden Vektoren aus den Jobtiteln erzeugt. Es werden zwei unterschiedliche Cluster-Gruppierungen angeboten, welche mit “sklearn” realisiert werden: Zum einen das hierarchische Clustering basierend auf der Cosinus-Ähnlichkeit und zum anderen der K-Means-Algorithmus. Beide Methoden ermöglichen eine effektive Gruppierung der Jobtitel entsprechend ihrer semantischen Ähnlichkeit. Die Benennung der einzelnen Gruppen erfolgt über das am häufigsten vorkommenden Wort innerhalb ihrer Titel.

Variants-Page

Jede Stellenanzeige besitzt verschiedene Varianten, die abhängig vom Facebook-Nutzer angezeigt werden. Dies kann man mit personalisierter Werbung vergleichen. Mit dieser Page werden die Varianten für eine Stellenanzeige präsentiert. Weiterführend werden die Varianten aller Stellenanzeigen gruppiert und miteinander verglichen. Die Gruppierung erfolgt manuell anhand verschiedener Eigenschaften und Formulierungen innerhalb ihres Anzeigentextes.

Beispiel für Varianten:

  • Werde Teil unseres Anwalt-Teams…
  • Anwälte gesucht…
  • Deine Chance ein Anwalt bei “Firma” zu werden…

Dabei kann das Feature ausgewählt werden, mit dem die Varianten Gruppen verglichen werden. Zuletzt können mit Hilfe von ChatGPT verschiedene Varianten miteinander verglichen werden.

Fazit

Der “Meta Ad Analyzer” ist ein nützliches Tool, mit dem man Stellenanzeigen auf Facebook analysieren kann. Es hilft dem Anwender, einen Einblick in vergangene Werbekampagnen zu erhalten. Somit kann ermittelt werden, welche Stellenanzeigen besser liefen als andere und warum dies der Fall war. Mithilfe dieses Wissens können zukünftige Stellenanzeigen besser erstellt werden. Es dient als effektives Argument in der Beratung potenzieller Kunden. Das Tool muss jedoch erst einmal in der Praxis angewendet werden, um zu wissen, ob man daraus wertvolle Schlussfolgerungen ziehen kann.

Ausblick

  • Optimierung Clustering
  • Erweiterung der Datengrundlage
  • Einsatz in der Praxis