Mai mult decât cuvinte: tokenizare (1)
Minarea textului (text mining) este folosită frecvent pentru a analiza recenzii de produse și a înțelege sentimentul cumpărătorilor sau pentru a analiza știri financiare și a prezice sentimentul față de prețurile acțiunilor. Pentru a analiza date text, pașii de pre-procesare obișnuiți sunt conversia textului la litere mici (vezi tolower()) și împărțirea propozițiilor în cuvinte individuale.
ft_tokenizer() realizează ambii acești pași. Sintaxa sa urmează același tipar ca și celelalte transformări pe care le-ai văzut, fără argumente suplimentare.
shop_reviews %>%
ft_tokenizer("review_text", "review_words")
Deoarece rezultatul poate conține un număr diferit de cuvinte pentru fiecare rând, output.col este o coloană de tip listă, unde fiecare element este o listă de șiruri de caractere. Pentru a analiza date text, este de obicei preferabil să ai câte un cuvânt pe rând. Formatul listă-de-liste-de-șiruri poate fi transformat într-un singur vector de caractere folosind unnest() din pachetul tidyr. Momentan nu există o metodă pentru a aplica unnesting direct în Spark, așa că va trebui să colectezi datele în R înainte de a le transforma. Tiparul de cod pentru a realiza acest lucru este următorul:
library(tidyr)
text_data %>%
ft_tokenizer("sentences", "word") %>%
collect() %>%
mutate(word = lapply(word, as.character)) %>%
unnest(word)
Dacă vrei să afli mai multe despre pachetul tidyr, parcurge cursul Cleaning Data in R.
Acest exercițiu face parte din cursul
Introducere în Spark cu sparklyr în R
Instrucțiuni pentru exercițiu
O conexiune Spark a fost creată pentru tine sub numele spark_conn. Un tibble atașat la metadatele pistelor stocate în Spark a fost predefinit ca track_metadata_tbl.
- Creează o variabilă numită
title_textpornind de latrack_metadata_tbl.- Selectează câmpurile
artist_nameșititle. - Folosește
ft_tokenizer()pentru a crea un câmp nou,word, care conține titlul împărțit în cuvinte. - Colectează rezultatul.
- Aplică mutate pe coloana
word, aplatizând-o la o listă de vectori de caractere folosindlapplyșias.character. - Folosește
unnest()pentru a aplatiza coloana de tip listă și a obține câte un cuvânt pe rând.
- Selectează câmpurile
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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
___