ComenzarEmpieza gratis

Algo más que palabras: tokenización (1)

Usos habituales del text-mining incluyen analizar reseñas de compras para averiguar cómo se sienten las personas que han adquirido un producto, o analizar noticias financieras para predecir el sentimiento sobre los precios de las acciones. Para analizar datos de texto, los pasos de preprocesamiento más comunes son convertir el texto a minúsculas (consulta tolower()) y dividir las oraciones en palabras individuales.

ft_tokenizer() realiza ambos pasos. Su uso sigue el mismo patrón que el de otras transformaciones que ya has visto, sin argumentos adicionales.

shop_reviews %>%
  ft_tokenizer("review_text", "review_words")

Como la salida puede contener un número diferente de palabras en cada fila, output.col es una columna de listas, donde cada elemento es una lista de cadenas. Para analizar datos de texto, normalmente es preferible tener una palabra por fila en los datos. El formato de lista de listas de cadenas puede transformarse en un único vector de caracteres usando unnest() del paquete tidyr. Actualmente no existe un método para hacer unnest en Spark, así que por ahora tienes que colectarlo a R antes de transformarlo. El patrón de código para lograrlo es el siguiente.

library(tidyr)
text_data %>%
  ft_tokenizer("sentences", "word") %>%
  collect() %>%
  mutate(word = lapply(word, as.character)) %>%
  unnest(word)

Si quieres aprender más sobre cómo usar el paquete tidyr, realiza el curso Cleaning Data in R.

Este ejercicio forma parte del curso

Introducción a Spark con sparklyr en R

Ver curso

Instrucciones del ejercicio

Ya tienes creada una conexión a Spark llamada spark_conn. También se ha predefinido un tibble asociado a los metadatos de las pistas almacenados en Spark como track_metadata_tbl.

  • Crea una variable llamada title_text a partir de track_metadata_tbl.
    • Selecciona los campos artist_name y title.
    • Usa ft_tokenizer() para crear un nuevo campo, word, que contenga el título dividido en palabras.
    • Recopila el resultado.
    • Aplica una mutación a la columna word, aplanándola a una lista de vectores de caracteres usando lapply y as.character.
    • Usa unnest() para aplanar la columna de listas y obtener una palabra por fila.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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
  ___
Editar y ejecutar código