Mer än ord: tokenisering (2)
Paketet tidytext låter dig analysera textdata med hjälp av "tidyverse"-paket som dplyr och sparklyr. Sentimentanalys är ett eget ämne som faller utanför den här kursens scope – du kan läsa mer i kursen Sentiment Analysis. Den här övningen ger dig en snabb inblick i hur det kan göras i Spark.
Sentimentanalys innebär att du tilldelar ett poäng eller en känsla till varje ord. I AFINN-lexikonet har till exempel ordet "outstanding" poängen +5, eftersom det nästan alltid används i ett positivt sammanhang. "grace" är ett svagt positivt ord med poängen +1. "fraud" används vanligtvis i ett negativt sammanhang och har poängen -4. AFINN-datamängden returneras av get_sentiments("afinn"). För att underlätta har de uppdelade orddata och sentimentlexikonet kopierats till Spark.
Vanligtvis vill du jämföra sentimentet för flera grupper av data. Kodmönstret för detta ser ut så här.
text_data %>%
inner_join(sentiments, by = "word") %>%
group_by(some_group) %>%
summarize(positivity = sum(score))
En inner join tar alla värden från den första tabellen och söker efter matchningar i den andra tabellen. Om en matchning hittas läggs data från den andra tabellen till. Till skillnad från en left join tas rader utan matchning bort. Principen illustreras i diagrammet nedan.

Precis som left joins är inner joins en typ av muterande join, eftersom de lägger till kolumner i den första tabellen. Försök lista ut vilken funktion som används för inner joins och hur den används. (Ledtråd: syntaxen liknar mycket left_join(), anti_join() och semi_join()!)
Den här övningen är en del av kursen
Introduktion till Spark med sparklyr i R
Övningsinstruktioner
En Spark-anslutning har skapats åt dig som spark_conn. Tibbles kopplade till titelord och sentimentlexikonet som lagrats i Spark är fördefinierade som title_text_tbl respektive afinn_sentiments_tbl.
- Skapa en variabel med namnet
sentimental_artistsfråntitle_text_tbl.- Använd
inner_join()för att joinaafinn_sentiments_tblmedtitle_text_tblpå"word". - Gruppera efter
artist_name. - Sammanfatta genom att definiera variabeln
positivitysom summan av fältetscore.
- Använd
- Hitta de 5 artister vars låttitlar har mest negativt sentiment.
- Sortera
sentimental_artistsi stigande ordning efter positivity. - Använd
slice_maxför att hämta de 5 översta resultaten.
- Sortera
- Hitta de 5 artister vars låttitlar har mest positivt sentiment.
- Sortera
sentimental_artistsi fallande ordning efter positivity. - Hämta de 5 översta resultaten.
- Sortera
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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
___