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
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_texta partir detrack_metadata_tbl.- Selecciona los campos
artist_nameytitle. - 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 usandolapplyyas.character. - Usa
unnest()para aplanar la columna de listas y obtener una palabra por fila.
- Selecciona los campos
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
___