1. Nauka
  2. /
  3. Kursy
  4. /
  5. Wprowadzenie do Spark z pakietem sparklyr w R

Connected

ćwiczenie

Więcej niż słowa: tokenizacja (2)

Pakiet tidytext pozwala analizować dane tekstowe przy użyciu pakietów z rodziny "tidyverse", takich jak dplyr czy sparklyr. Analiza sentymentu to temat wykraczający poza zakres tego kursu – więcej na ten temat znajdziesz w kursie Sentiment Analysis. To ćwiczenie ma dać ci szybki przedsmak tego, jak wykonać taką analizę w Sparku.

Analiza sentymentu polega na przypisaniu każdemu słowu oceny lub emocji. Na przykład w leksykonie AFINN słowo "outstanding" ma wynik +5, ponieważ niemal zawsze występuje w pozytywnym kontekście. "grace" to słowo lekko pozytywne z wynikiem +1, natomiast "fraud" zazwyczaj pojawia się w negatywnym kontekście i ma wynik -4. Zbiór danych z ocenami AFINN zwraca funkcja get_sentiments("afinn"). Dla wygody dane z roztokenizowanymi słowami oraz leksykon sentymentu zostały już skopiowane do Sparka.

Najczęściej chcemy porównać sentyment w kilku grupach danych. Schemat kodu jest wtedy następujący:

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

Złączenie wewnętrzne (inner join) pobiera wszystkie wartości z pierwszej tabeli i szuka dopasowań w drugiej. Jeśli dopasowanie zostanie znalezione, dane z drugiej tabeli są dołączane. W odróżnieniu od złączenia lewostronnego (left join), wiersze bez dopasowania są pomijane. Zasadę działania ilustruje poniższy diagram.

Złączenie wewnętrzne wyjaśnione na przykładzie tabeli kolorów.

Podobnie jak złączenia lewostronne, złączenia wewnętrzne należą do kategorii złączeń mutujących – dodają kolumny do pierwszej tabeli. Spróbuj zgadnąć, jakiej funkcji użyć do złączeń wewnętrznych i jak jej użyć. (Podpowiedź: składnia jest bardzo podobna do left_join(), anti_join() i semi_join()!)

Instrukcje

100 XP

Połączenie ze Sparkiem zostało już utworzone jako spark_conn. Tibble'y powiązane ze słowami z tytułów piosenek oraz z leksykonem sentymentu przechowywanymi w Sparku są wstępnie zdefiniowane odpowiednio jako title_text_tbl i afinn_sentiments_tbl.

  • Utwórz zmienną sentimental_artists na podstawie title_text_tbl.
    • Użyj inner_join(), aby połączyć afinn_sentiments_tbl z title_text_tbl według kolumny "word".
    • Pogrupuj dane według artist_name.
    • Użyj summarize, aby zdefiniować zmienną positivity równą sumie wartości pola score.
  • Znajdź 5 artystów z najbardziej negatywnymi tytułami piosenek.
    • Posortuj sentimental_artists rosnąco według positivity.
    • Użyj slice_max, aby pobrać 5 najlepszych wyników.
  • Znajdź 5 artystów z najbardziej pozytywnymi tytułami piosenek.
    • Posortuj sentimental_artists malejąco według positivity.
    • Pobierz 5 najlepszych wyników.