ÎncepețiÎncepe gratuit

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

Vezi cursul

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_text pornind de la track_metadata_tbl.
    • Selectează câmpurile artist_name și title.
    • 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 folosind lapply și as.character.
    • Folosește unnest() pentru a aplatiza coloana de tip listă și a obține câte un cuvânt pe rând.

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
  ___
Editează și rulează codul