Víc než slova: tokenizace (2)
Balíček tidytext ti umožňuje analyzovat textová data pomocí balíčků z „tidyverse", jako jsou dplyr a sparklyr. Samotná analýza sentimentů přesahuje rozsah tohoto kurzu – více se o ní dozvíš v kurzu Sentiment Analysis. Toto cvičení ti dá rychlou ochutnávku toho, jak ji provádět na Sparku.
Analýza sentimentů ti v zásadě umožňuje přiřadit každému slovu skóre nebo emoci. Například v lexikonu AFINN má slovo "outstanding" skóre +5, protože se téměř vždy používá v pozitivním kontextu. "grace" je mírně pozitivní slovo se skóre +1. "fraud" se obvykle používá v negativním kontextu a má skóre -4. Dataset skóre AFINN vrací funkce get_sentiments("afinn"). Pro pohodlí byla unnestovaná slovní data i lexikon sentimentů zkopírovány do Sparku.
Typicky chceš porovnávat sentiment několika skupin dat. K tomu slouží následující vzor kódu.
text_data %>%
inner_join(sentiments, by = "word") %>%
group_by(some_group) %>%
summarize(positivity = sum(score))
Inner join vezme všechny hodnoty z první tabulky a hledá shody v druhé tabulce. Pokud shodu najde, přidá data z druhé tabulky. Na rozdíl od left joinu zahodí všechny řádky, pro které shodu nenajde. Princip ukazuje následující diagram.

Stejně jako left joiny jsou i inner joiny typem mutujícího joinu, protože přidávají sloupce do první tabulky. Zkus odhadnout, jakou funkci pro inner join použít a jak ji volat. (Nápověda: použití je velmi podobné funkcím left_join(), anti_join() a semi_join()!)
Toto cvičení je součástí kurzu
Úvod do Sparku se sparklyr v R
Pokyny k cvičení
Připojení ke Sparku bylo vytvořeno jako spark_conn. Tibble připojené k slovům z názvů skladeb a k lexikonu sentimentů uloženým ve Sparku jsou předem definovány jako title_text_tbl, respektive afinn_sentiments_tbl.
- Vytvoř proměnnou
sentimental_artistsztitle_text_tbl.- Pomocí
inner_join()spojafinn_sentiments_tblstitle_text_tblpodle sloupce"word". - Seskup podle
artist_name. - Pomocí
summarizedefinuj proměnnoupositivityjako součet hodnot polescore.
- Pomocí
- Najdi 5 umělců s nejnegativnějšími názvy skladeb.
- Seřaď
sentimental_artistsvzestupně podle positivity. - Pomocí
slice_maxzískej top 5 výsledků.
- Seřaď
- Najdi 5 umělců s nejpozitivnějšími názvy skladeb.
- Seřaď
sentimental_artistssestupně podle positivity. - Získej top 5 výsledků.
- Seřaď
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
___