Inizia subitoInizia gratis

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.

An inner join, explained using table of colors.

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

Visualizza corso

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_artists a partire da title_text_tbl.
    • Usa inner_join() per unire afinn_sentiments_tbl a title_text_tbl per "word".
    • Raggruppa per artist_name.
    • Esegui un summarize per definire una variabile positivity, uguale alla somma del campo score.
  • Trova i 5 artisti con i titoli delle canzoni più negativi.
    • Ordina sentimental_artists per positività crescente.
    • Usa slice_max per ottenere i primi 5 risultati.
  • Trova i 5 artisti con i titoli delle canzoni più positivi.
    • Ordina sentimental_artists per positività decrescente.
    • Ottieni i primi 5 risultati.

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
  ___
Modifica ed esegui il codice