Víc než slova: tokenizace (1)
Dolování z textu se běžně využívá například k analýze recenzí produktů – abychom zjistili, co si zákazníci myslí – nebo k analýze finančních zpráv za účelem předpovědi sentimentu okolo cen akcií. Při zpracování textových dat se jako předběžné kroky obvykle provádí převod textu na malá písmena (viz tolower()) a rozdělení vět na jednotlivá slova.
ft_tokenizer() provede oba tyto kroky najednou. Používá se stejně jako ostatní transformace, které jsi už viděl/a – bez dalších argumentů.
shop_reviews %>%
ft_tokenizer("review_text", "review_words")
Protože výstup může v každém řádku obsahovat různý počet slov, je output.col sloupcovým seznamem, kde každý prvek je seznam řetězců. Pro analýzu textu je zpravidla výhodnější mít v datech jedno slovo na řádek. Formát seznam-seznamů-řetězců lze převést na jednoduchý znakový vektor pomocí unnest() z balíčku tidyr. Zatím neexistuje způsob, jak unnestovat data přímo ve Sparku, takže je nejprve musíš načíst do R a teprve pak transformovat. Vzor kódu vypadá takto:
library(tidyr)
text_data %>%
ft_tokenizer("sentences", "word") %>%
collect() %>%
mutate(word = lapply(word, as.character)) %>%
unnest(word)
Pokud se chceš o balíčku tidyr dozvědět víc, podívej se na kurz Cleaning Data in R.
Toto cvičení je součástí kurzu
Úvod do Sparku se sparklyr v R
Pokyny k cvičení
Spark připojení je pro tebe připraveno jako spark_conn. Tibble napojený na metadata skladeb uložená ve Sparku je předdefinován jako track_metadata_tbl.
- Vytvoř proměnnou
title_textztrack_metadata_tbl.- Vyber pole
artist_nameatitle. - Pomocí
ft_tokenizer()vytvoř nové poleword, které bude obsahovat název rozdělený na jednotlivá slova. - Načti výsledek pomocí
collect(). - Uprav sloupec
wordpomocímutate()– zploštěj ho na seznam znakových vektorů s využitímlapplyaas.character. - Použij
unnest()pro zploštění sloupcového seznamu a získej jedno slovo na řádek.
- Vyber pole
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
___