Oltre le parole: tokenizzazione (2)
Il pacchetto tidytext ti permette di analizzare dati testuali usando i pacchetti del "tidyverse" come dplyr e sparklyr. Come fare sentiment analysis esula dallo scopo di questo corso; puoi approfondire nel corso Sentiment Analysis. Questo esercizio è pensato per darti un assaggio rapido di come farlo su Spark.
La sentiment analysis, in sostanza, ti consente di assegnare un punteggio o un'emozione a ciascuna parola. Per esempio, nel lessico AFINN, la parola "outstanding" ha un punteggio di +5, poiché è quasi sempre usata in un contesto positivo. "grace" è leggermente positiva e ha un punteggio di +1. "fraud" è di solito usata in un contesto negativo e ha un punteggio di -4. Il dataset dei punteggi AFINN è restituito da get_sentiments("afinn"). Per comodità, i dati delle parole "unnestate" e il lessico dei sentiment sono stati copiati su Spark.
In genere, vuoi confrontare il sentiment di più gruppi di dati. Per farlo, il pattern di codice è il seguente.
text_data %>%
inner_join(sentiments, by = "word") %>%
group_by(some_group) %>%
summarize(positivity = sum(score))
Un inner join prende tutti i valori dalla prima tabella e cerca corrispondenze nella seconda. Se trova una corrispondenza, aggiunge i dati della seconda tabella. A differenza di un left join, elimina le righe per cui non trova alcuna corrispondenza. Il principio è mostrato in questo diagramma.

Come i left join, anche gli inner join sono un tipo di mutating join, perché aggiungono colonne alla prima tabella. Prova a indovinare quale funzione usare per gli inner join e come usarla. (Suggerimento: l'uso è molto simile a left_join(), anti_join() e semi_join()!)
Questo esercizio fa parte del corso
Introduzione a Spark con sparklyr in R
Istruzioni dell'esercizio
È stata creata per te una connessione Spark chiamata spark_conn. Le tibbles con le parole dei titoli e il lessico dei sentiment memorizzati in Spark sono state predefinite rispettivamente come title_text_tbl e afinn_sentiments_tbl.
- Crea una variabile chiamata
sentimental_artistsa partire datitle_text_tbl.- Usa
inner_join()per unireafinn_sentiments_tblatitle_text_tblper"word". - Raggruppa per
artist_name. - Esegui un summarize per definire una variabile
positivity, uguale alla somma del camposcore.
- Usa
- Trova i 5 artisti con i titoli delle canzoni più negativi.
- Ordina
sentimental_artistsper positività crescente. - Usa
slice_maxper ottenere i primi 5 risultati.
- Ordina
- Trova i 5 artisti con i titoli delle canzoni più positivi.
- Ordina
sentimental_artistsper positività decrescente. - Ottieni i primi 5 risultati.
- Ordina
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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
___