Začněte nyníZačněte zdarma

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.

An inner join, explained using table of colors.

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

Zobrazit kurz

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_artists z title_text_tbl.
    • Pomocí inner_join() spoj afinn_sentiments_tbl s title_text_tbl podle sloupce "word".
    • Seskup podle artist_name.
    • Pomocí summarize definuj proměnnou positivity jako součet hodnot pole score.
  • Najdi 5 umělců s nejnegativnějšími názvy skladeb.
    • Seřaď sentimental_artists vzestupně podle positivity.
    • Pomocí slice_max získej top 5 výsledků.
  • Najdi 5 umělců s nejpozitivnějšími názvy skladeb.
    • Seřaď sentimental_artists sestupně podle positivity.
    • Získej top 5 výsledků.

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
  ___
Upravit a spustit kód