Dieses Repository enthält den Code für meine Masterarbeit im Studiengang Medieninformatik an der Universität Regensburg, bei der es um die Analyse und Erkennung des Phänomens "Review Bombing" bei Videospiel-Nutzerreviews geht. Dazu werden Videospiel-Reviews zusammen mit Metadaten und Nutzerinformationen für ausgewählte Spiele sowie Social Media - Daten aus den jeweiligen Zeiträumen der Review Bombing-Vorfälle heruntergeladen, analysiert und für die manuelle Annotation in Label Studio vorbereitet. Darauf aufbauend werden verschiedene DL-Modelle auf diesen Daten trainiert, mit dem Ziel die Zugehörigkeit eines Reviews zu einem Review Bombing automatisch zu bestimmen.
- Die Skripte, um relevante Daten von Steam, Metacritic, Twitter / X und Reddit zu extrahieren befinden sich in den
entsprechenden Ordnern (Steam, Metacritic, Twitter, Reddit).
- Genauere Informationen zu den extrahierten Review und Social Media - Daten sowie zum Code für das Herunterladen und Extrahieren der Daten befindet sich in der Data_Extraction.md - Datei. In der Twitter_Reddit_Search.md - Datei befinden sich zudem einige Notizen zu den Suchfunktionen der jeweiligen Seiten (Steam, Metacritic, Twitter / X und Reddit) und zur Begründung für die Auswahl geeigneter Queries.
- Im data_labeling_test - Ordner befindet sich ein (aufgegebener) Versuch mithilfe von Snorkel die Reviews programmatisch basierend auf Heuristiken zu labeln.
- Der sentiment_analysis_and_nlp - Ordner enthält verschiedene NLP-Utilities (wie
Tokenization, Stopword Removal, Sentence Splitting, Spracherkennung, etc.) sowie ein paar Tests mit
Aspekt-basierter Sentiment-Analyse.
- Da hierbei sowohl NLTK als auch Spacy verwendet werden, müssen einmalig die entsprechenden Corpora
heruntergeladen werden mit:
und
import nltk nltk.download(["stopwords", "wordnet", "vader_lexicon", "punkt"])
python -m spacy download en_core_web_sm
- Da hierbei sowohl NLTK als auch Spacy verwendet werden, müssen einmalig die entsprechenden Corpora
heruntergeladen werden mit:
- Der cleanup_analyze_data - Ordner enthält den Code zur Analyse der Reviews und Social Media - Daten sowie die Vorverarbeitung und Auswahl der Reviews für die Annotation in Label Studio.
- Im label_studio_study - Ordner sind sowohl der Code für das Label Studio - SDK (welches zum automatisierten Zuweisen und Exportieren der Reviews in Label Studio verwendet wurde) als auch die Analyse (+ Kombination) der fertig annotierten Reviews und des Fragebogens enthalten.
- Im classification - Ordner befindet sich der Code für das Machine und Deep Learning.
Der gesamte Code wurde in Python 3.11 geschrieben. Die benötigten Python-Libraries befinden sich in der requirements.txt. Unter anderem wurden BeautifulSoup zum Scraping, Pandas, Textblob, NLTK & Spacy zum Analysieren der Daten, Matplotlib und Seaborn für Visualisierungen sowie PyTorch und Hugging Face Transformers für das Deep Learning verwendet.
Für das Extrahieren der Daten werden plattformspezifische Credentials benötigt, die nicht im Repository enthalten sind:
Für einige Teile der Steam Web API (z.B. Zugriff auf Nutzerinformationen) ist ein API-Key erforderlich. Eine .env - Datei mit folgendem Aufbau wird im Steam - Ordner erwartet:
STEAM_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Für die Verwendung der Reddit API ist es erforderlich sich bei Reddit als Developer zu registrieren und sich eine Reddit Client - Anwendung zu erstellen. Eine praw.ini - Datei mit folgendem Aufbau wird im Reddit - Ordner erwartet:
[Search_Reddit]
client_id=YOUR_APP_ID
client_secret=YOUR_APP_SECRET_KEY
username=YOUR_REDDIT_USERNAME
user_agent=script:Post_Comments_Search_Academic (by /u/%(username)s) # oder ähnliches
Eine twitter_credentials.env - Datei mit folgendem Aufbau wird im Twitter - Ordner erwartet:
ACCOUNT_1_USERNAME = YOUR_TWITTER_ACCOUNT_USERNAME
ACCOUNT_1_PASSWORD = YOUR_TWITTER_ACCOUNT_PASSWORD
[optional:]
ACCOUNT_2_USERNAME = YOUR_SECOND_TWITTER_ACCOUNT_USERNAME
ACCOUNT_2_PASSWORD = YOUR_SECOND_TWITTER_ACCOUNT_PASSWORD
Da Metacritic keine API oder ähnliches zur Verfügung stellt, werden hierfür auch keine Zugangsdaten benötigt.
Die im Code referenzierten Ordner "data_for_analysis", "data_for_analysis_cleaned" und "data_for_labelstudio" befinden sich nicht mit im Github-Repository, sondern nur die finalen, annotierten Daten im label_studio_study - Ordner. Auch die MA-Pre-Fragebogen.csv - Datei im label_studio_study - Ordnern ist aus Datenschutzgründen nicht im Repository.