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

Connected

ćwiczenie

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

Eksploracja tekstu (text mining) ma wiele zastosowań – na przykład analiza recenzji produktów pozwala ocenić nastawienie kupujących, a analiza wiadomości finansowych – przewidzieć sentyment wobec kursów akcji. Aby móc analizować dane tekstowe, trzeba je najpierw wstępnie przetworzyć: przekształcić tekst na małe litery (zob. tolower()) oraz podzielić zdania na pojedyncze słowa.

ft_tokenizer() wykonuje oba te kroki. Stosuje się go tak samo jak inne transformacje, które już poznałeś – bez dodatkowych argumentów.

shop_reviews %>%
  ft_tokenizer("review_text", "review_words")

Ponieważ każdy wiersz może zawierać inną liczbę słów, output.col jest kolumną listową, w której każdy element to lista ciągów znaków. Do analizy tekstu wygodniej jest mieć jedno słowo w jednym wierszu. Format listy-list-ciągów-znaków można przekształcić w pojedynczy wektor znakowy za pomocą unnest() z pakietu tidyr. Na razie nie ma możliwości wykonania tej operacji bezpośrednio na Sparku, dlatego przed transformacją trzeba zebrać dane do R. Schemat kodu wygląda następująco.

library(tidyr)
text_data %>%
  ft_tokenizer("sentences", "word") %>%
  collect() %>%
  mutate(word = lapply(word, as.character)) %>%
  unnest(word)

Jeśli chcesz dowiedzieć się więcej o pakiecie tidyr, zajrzyj do kursu Cleaning Data in R.

Instrukcje

100 XP

Połączenie ze Sparkiem zostało już utworzone jako spark_conn. Tibble powiązany z metadanymi utworów przechowywanymi w Sparku jest predefiniowany jako track_metadata_tbl.

  • Utwórz zmienną o nazwie title_text na podstawie track_metadata_tbl.
    • Wybierz pola artist_name i title.
    • Użyj ft_tokenizer(), aby utworzyć nowe pole word, zawierające tytuł podzielony na słowa.
    • Zbierz wynik.
    • Przekształć kolumnę word, spłaszczając ją do listy wektorów znakowych za pomocą lapply i as.character.
    • Użyj unnest(), aby spłaszczyć kolumnę listową i uzyskać jedno słowo w każdym wierszu.