Più che parole: tokenizzazione (1)
Tra gli usi più comuni del text mining ci sono l'analisi delle recensioni di acquisto per capire che impressione hanno i clienti sul prodotto, o l'analisi delle notizie finanziarie per prevedere il sentiment sui prezzi azionari. Per analizzare testi, i passaggi di pre-processing più frequenti sono convertire il testo in minuscolo (vedi tolower()) e suddividere le frasi in singole parole.
ft_tokenizer() esegue entrambi questi passaggi. Il suo utilizzo segue lo stesso schema delle altre trasformazioni che hai visto, senza richiedere altri argomenti.
shop_reviews %>%
ft_tokenizer("review_text", "review_words")
Dato che l'output può contenere un numero diverso di parole in ogni riga, output.col è una colonna di tipo lista, in cui ogni elemento è un elenco di stringhe. Per analizzare al meglio i dati testuali, di solito è preferibile avere una parola per riga. Il formato lista-di-liste-di-stringhe può essere trasformato in un singolo vettore di caratteri usando unnest() dal pacchetto tidyr. Al momento non esiste un metodo per fare unnest dei dati direttamente su Spark, quindi per ora devi prima raccoglierli in R e poi trasformarli. Il pattern di codice per ottenere questo risultato è il seguente.
library(tidyr)
text_data %>%
ft_tokenizer("sentences", "word") %>%
collect() %>%
mutate(word = lapply(word, as.character)) %>%
unnest(word)
Se vuoi approfondire l'uso del pacchetto tidyr, segui il corso Cleaning Data in R.
Questo esercizio fa parte del corso
Introduzione a Spark con sparklyr in R
Istruzioni dell'esercizio
Una connessione Spark è già stata creata come spark_conn. Una tibble collegata ai metadati delle tracce archiviati in Spark è stata predefinita come track_metadata_tbl.
- Crea una variabile chiamata
title_texta partire datrack_metadata_tbl.- Seleziona i campi
artist_nameetitle. - Usa
ft_tokenizer()per creare un nuovo campo,word, che contiene il titolo suddiviso in parole. - Raccogli il risultato.
- Applica una mutazione alla colonna
word, appiattendola in una lista di vettori di caratteri usandolapplyeas.character. - Usa
unnest()per appiattire la colonna lista e ottenere una parola per riga.
- Seleziona i campi
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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
___