Inizia subitoInizia gratis

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

Visualizza corso

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_text a partire da track_metadata_tbl.
    • Seleziona i campi artist_name e title.
    • 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 usando lapply e as.character.
    • Usa unnest() per appiattire la colonna lista e ottenere una parola per riga.

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
  ___
Modifica ed esegui il codice