ComeçarComece de graça

Mais que palavras: tokenização (1)

Usos comuns de text mining incluem analisar avaliações de compras para entender a percepção de quem comprou sobre o produto, ou analisar notícias financeiras para prever o sentimento em relação aos preços das ações. Para analisar dados de texto, etapas de pré-processamento comuns incluem converter o texto para minúsculas (veja tolower()) e dividir frases em palavras individuais.

ft_tokenizer() realiza essas duas etapas. Seu uso segue o mesmo padrão das outras transformações que você viu, sem precisar de outros argumentos.

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

Como a saída pode conter um número diferente de palavras em cada linha, output.col é uma coluna de lista, em que cada elemento é uma lista de strings. Para analisar dados de texto, geralmente é preferível ter uma palavra por linha nos dados. O formato lista-de-listas-de-strings pode ser transformado em um único vetor de caracteres usando unnest() do pacote tidyr. No momento, não há método para fazer unnest de dados no Spark, então, por enquanto, você precisa coletá-los para o R antes de transformá-los. O padrão de código para isso é o seguinte.

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

Se você quiser aprender mais sobre como usar o pacote tidyr, faça o curso Cleaning Data in R.

Este exercício faz parte do curso

Introdução ao Spark com sparklyr em R

Ver curso

Instruções do exercício

Uma conexão com o Spark foi criada para você como spark_conn. Uma tibble ligada aos metadados das faixas armazenados no Spark foi pré-definida como track_metadata_tbl.

  • Crie uma variável chamada title_text a partir de track_metadata_tbl.
    • Selecione os campos artist_name e title.
    • Use ft_tokenizer() para criar um novo campo, word, que contém o título dividido em palavras.
    • Colete o resultado.
    • Faça um mutate na coluna word, achatando-a para uma lista de vetores de caracteres usando lapply e as.character.
    • Use unnest() para achatar a coluna de lista e obter uma palavra por linha.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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 e executar o código