1. Apprendre
  2. /
  3. Cours
  4. /
  5. Introduction à Spark avec sparklyr en R

Connected

Exercice

Plus que des mots : tokenisation (1)

L'exploration de texte sert souvent à analyser des avis de magasinage pour cerner le ressenti des acheteurs face à un produit, ou encore à analyser des nouvelles financières afin de prédire le sentiment à propos des cours boursiers. Pour analyser des données textuelles, on applique généralement des étapes de prétraitement comme la conversion du texte en minuscules (voir tolower()) et la segmentation des phrases en mots individuels.

ft_tokenizer() effectue ces deux étapes. Son utilisation suit le même modèle que les autres transformations que vous avez vues, sans autres arguments.

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

Comme la sortie peut contenir un nombre différent de mots par ligne, output.col est une colonne de type liste, où chaque élément est une liste de chaînes. Pour analyser du texte, il est généralement préférable d'avoir un mot par ligne dans les données. Le format « liste de listes de chaînes » peut être transformé en un seul vecteur de caractères au moyen de unnest() du paquet tidyr. Il n'existe actuellement aucune méthode pour aplatir (unnest) des données directement sur Spark ; pour l'instant, vous devez donc les rapatrier dans R avant de les transformer. Le canevas de code suivant permet d'y parvenir :

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

Pour en savoir plus sur l'utilisation du paquet tidyr, suivez le cours Cleaning Data in R.

Instructions

100 XP

Une connexion Spark a été créée pour vous sous le nom spark_conn. Un tibble lié aux métadonnées de pistes stockées dans Spark a été prédéfini sous le nom track_metadata_tbl.

  • Créez une variable nommée title_text à partir de track_metadata_tbl.
    • Sélectionnez les champs artist_name et title.
    • Utilisez ft_tokenizer() pour créer un nouveau champ word qui contient le titre découpé en mots.
    • Rapatriez le résultat.
    • Modifiez la colonne word pour l'aplatir en une liste de vecteurs de caractères à l'aide de lapply et as.character.
    • Utilisez unnest() pour aplatir la colonne de type liste et obtenir un mot par ligne.