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.
To ćwiczenie jest częścią kursu
Wprowadzenie do Spark z pakietem sparklyr w R
Instrukcje do ćwiczenia
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_textna podstawietrack_metadata_tbl.- Wybierz pola
artist_nameititle. - Użyj
ft_tokenizer(), aby utworzyć nowe poleword, zawierające tytuł podzielony na słowa. - Zbierz wynik.
- Przekształć kolumnę
word, spłaszczając ją do listy wektorów znakowych za pomocąlapplyias.character. - Użyj
unnest(), aby spłaszczyć kolumnę listową i uzyskać jedno słowo w każdym wierszu.
- Wybierz pola
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
title_text <- track_metadata_tbl %>%
# Select artist_name, title
___ %>%
# Tokenize title to words
___ %>%
# Collect the result
___ %>%
# Flatten the word column
___ %>%
# Unnest the list column
___