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.

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
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_artistsdintitle_text_tbl.- Folosește
inner_join()pentru a uniafinn_sentiments_tblcutitle_text_tbldupă"word". - Grupează după
artist_name. - Rezumă pentru a defini o variabilă
positivity, egală cu suma câmpuluiscore.
- Folosește
- 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_maxpentru a obține primele 5 rezultate.
- Sortează
- 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.
- Sortează
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
___