Mehr als Worte: Tokenisierung (2)
Mit dem Paket tidytext kannst du Textdaten mit "tidyverse"-Paketen wie dplyr und sparklyr analysieren. Wie man Sentiment-Analyse im Detail durchführt, sprengt den Rahmen dieses Kurses; mehr dazu findest du im Kurs Sentiment Analysis. Diese Übung soll dir einen schnellen Eindruck vermitteln, wie das in Spark funktioniert.
Bei der Sentiment-Analyse weist du im Kern jedem Wort einen Wert oder eine Emotion zu. Im AFINN-Lexikon hat zum Beispiel das Wort "outstanding" einen Score von +5, weil es fast immer positiv verwendet wird. "grace" ist leicht positiv mit einem Score von +1. "fraud" wird meistens negativ genutzt und hat einen Score von -4. Der Datensatz mit den AFINN-Scores wird von get_sentiments("afinn") zurückgegeben. Der entnestete Wortdatensatz und das Sentiment-Lexikon wurden der Einfachheit halber bereits nach Spark kopiert.
Typischerweise möchtest du die Stimmung mehrerer Gruppen von Daten vergleichen. Das Muster sieht so aus:
text_data %>%
inner_join(sentiments, by = "word") %>%
group_by(some_group) %>%
summarize(positivity = sum(score))
Ein Inner Join nimmt alle Werte aus der ersten Tabelle und sucht Übereinstimmungen in der zweiten. Wenn eine Übereinstimmung gefunden wird, werden die Daten aus der zweiten Tabelle hinzugefügt. Anders als ein Left Join verwirft er Zeilen ohne Treffer. Das Prinzip zeigt diese Grafik.

Wie Left Joins zählen auch Inner Joins zu den mutierenden Joins, da sie Spalten zur ersten Tabelle hinzufügen. Überlege, welche Funktion du für Inner Joins verwendest und wie. (Hinweis: Die Verwendung ist der von left_join(), anti_join() und semi_join() sehr ähnlich!)
Diese Übung ist Teil des Kurses
Einführung in Spark mit sparklyr in R
Anleitung zur Übung
Eine Spark-Verbindung wurde als spark_conn für dich erstellt. Tibbles mit den Titelwörtern und dem in Spark gespeicherten Sentiment-Lexikon sind bereits als title_text_tbl bzw. afinn_sentiments_tbl definiert.
- Erstelle eine Variable namens
sentimental_artistsaustitle_text_tbl.- Verwende
inner_join(), umafinn_sentiments_tblüber"word"mittitle_text_tblzu verknüpfen. - Gruppiere nach
artist_name. - Fasse zusammen, um eine Variable
positivityzu definieren, die der Summe des Feldsscoreentspricht.
- Verwende
- Finde die 5 Künstler mit den negativsten Songtiteln.
- Sortiere
sentimental_artistsnach aufsteigender positivity. - Verwende
slice_max, um die Top 5 Ergebnisse zu erhalten.
- Sortiere
- Finde die 5 Künstler mit den positivsten Songtiteln.
- Sortiere
sentimental_artistsnach absteigender positivity. - Hole die Top 5 Ergebnisse.
- Sortiere
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# title_text_tbl, afinn_sentiments_tbl have been pre-defined
title_text_tbl
afinn_sentiments_tbl
sentimental_artists <- title_text_tbl %>%
# Inner join with sentiments on word field
___ %>%
# Group by artist
___ %>%
# Summarize to get positivity
___
sentimental_artists %>%
# Arrange by ascending positivity
___ %>%
# Get top 5
___
sentimental_artists %>%
# Arrange by descending positivity
___ %>%
# Get top 5
___