ÎncepețiÎncepe gratuit

Mai mult decât cuvinte: tokenizare (2)

Pachetul tidytext îți permite să analizezi date text folosind pachete din universul „tidyverse", precum dplyr și sparklyr. Analiza de sentiment depășește scopul acestui curs; poți afla mai multe în cursul Sentiment Analysis. Acest exercițiu îți oferă o privire rapidă asupra modului în care se aplică această tehnică în Spark.

Analiza de sentiment îți permite să atribui un scor sau o emoție fiecărui cuvânt. De exemplu, în lexiconul AFINN, cuvântul "outstanding" are un scor de +5, deoarece este folosit aproape întotdeauna într-un context pozitiv. "grace" este un cuvânt ușor pozitiv, cu un scor de +1. "fraud" este de obicei folosit într-un context negativ și are un scor de -4. Setul de date cu scoruri AFINN este returnat de get_sentiments("afinn"). Pentru comoditate, datele cu cuvintele extrase și lexiconul de sentimente au fost copiate în Spark.

De obicei, vrei să compari sentimentul mai multor grupuri de date. Pentru aceasta, structura de cod este următoarea.

text_data %>%
  inner_join(sentiments, by = "word") %>%
  group_by(some_group) %>%
  summarize(positivity = sum(score))

Un inner join preia toate valorile din primul tabel și caută corespondențe în al doilea tabel. Dacă găsește o potrivire, adaugă datele din al doilea tabel. Spre deosebire de un left join, elimină rândurile pentru care nu găsește nicio potrivire. Principiul este ilustrat în diagrama de mai jos.

Un inner join explicat cu ajutorul unui tabel de culori.

Ca și left join-urile, inner join-urile sunt un tip de join de tip mutating, deoarece adaugă coloane la primul tabel. Încearcă să ghicești ce funcție se folosește pentru inner join-uri și cum se utilizează. (Indiciu: utilizarea este foarte asemănătoare cu left_join(), anti_join() și semi_join()!)

Acest exercițiu face parte din cursul

Introducere în Spark cu sparklyr în R

Vezi cursul

Instrucțiuni pentru exercițiu

O conexiune Spark a fost creată pentru tine sub numele spark_conn. Tibble-urile atașate la cuvintele din titluri și lexiconul de sentimente stocat în Spark au fost predefinite ca title_text_tbl, respectiv afinn_sentiments_tbl.

  • Creează o variabilă numită sentimental_artists din title_text_tbl.
    • Folosește inner_join() pentru a uni afinn_sentiments_tbl cu title_text_tbl după "word".
    • Grupează după artist_name.
    • Rezumă pentru a defini o variabilă positivity, egală cu suma câmpului score.
  • Găsește primii 5 artiști cu titlurile de cântece cele mai negative.
    • Sortează sentimental_artists în ordine crescătoare după positivity.
    • Folosește slice_max pentru a obține primele 5 rezultate.
  • Găsește primii 5 artiști cu titlurile de cântece cele mai pozitive.
    • Sortează sentimental_artists în ordine descrescătoare după positivity.
    • Obține primele 5 rezultate.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
  ___
Editează și rulează codul