CommencerCommencer gratuitement

Plus que des mots : tokenization (2)

Le package tidytext vous permet d’analyser des données textuelles avec les packages du "tidyverse" comme dplyr et sparklyr. La façon de mener une analyse de sentiment dépasse le cadre de ce cours ; vous trouverez plus de détails dans le cours Sentiment Analysis. Cet exercice a pour but de vous donner un rapide aperçu de la démarche sur Spark.

L’analyse de sentiment permet d’attribuer un score ou une émotion à chaque mot. Par exemple, dans le lexique AFINN, le mot "outstanding" a un score de +5, car il est presque toujours utilisé dans un contexte positif. "grace" est légèrement positif, avec un score de +1. "fraud" est généralement employé dans un contexte négatif, avec un score de -4. L’ensemble de scores AFINN est renvoyé par get_sentiments("afinn"). Pour plus de commodité, les mots « unnestés » et le lexique de sentiments ont été copiés dans Spark.

En général, vous souhaitez comparer le sentiment de plusieurs groupes de données. Pour cela, on utilise le motif de code suivant.

text_data %>%
  inner_join(sentiments, by = "word") %>%
  group_by(some_group) %>%
  summarize(positivity = sum(score))

Un inner join prend toutes les valeurs de la première table et cherche des correspondances dans la seconde. S’il en trouve, il ajoute les données de la deuxième table. Contrairement à un left join, il supprime les lignes sans correspondance. Le principe est illustré dans ce schéma.

An inner join, explained using table of colors.

Comme les left joins, les inner joins sont un type de mutating join, car ils ajoutent des colonnes à la première table. Voyez si vous pouvez deviner quelle fonction utiliser pour les inner joins et comment l’employer. (Indice : l’utilisation est très similaire à left_join(), anti_join() et semi_join() !)

Cet exercice fait partie du cours

Introduction à Spark avec sparklyr en R

Afficher le cours

Instructions

Une connexion Spark a été créée pour vous sous le nom spark_conn. Les tibbles contenant les mots des titres et le lexique de sentiments stockés dans Spark ont été pré-définis sous les noms title_text_tbl et afinn_sentiments_tbl respectivement.

  • Créez une variable appelée sentimental_artists à partir de title_text_tbl.
    • Utilisez inner_join() pour joindre afinn_sentiments_tbl à title_text_tbl par "word".
    • Regroupez par artist_name.
    • Résumez en définissant une variable positivity, égale à la somme du champ score.
  • Trouvez les 5 artistes dont les titres sont les plus négatifs.
    • Triez sentimental_artists par positivité croissante.
    • Utilisez slice_max pour obtenir les 5 meilleurs résultats.
  • Trouvez les 5 artistes dont les titres sont les plus positifs.
    • Triez sentimental_artists par positivité décroissante.
    • Obtenez les 5 meilleurs résultats.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# title_text_tbl, afinn_sentiments_tbl have been pre-defined
title_text_tbl
afinn_sentiments_tbl

sentimental_artists <- title_text_tbl %>%
  # Inner join with sentiments on word field
  ___ %>%
  # Group by artist
  ___ %>%
  # Summarize to get positivity
  ___

sentimental_artists %>%
  # Arrange by ascending positivity
  ___ %>%
  # Get top 5
  ___

sentimental_artists %>%
  # Arrange by descending positivity
  ___ %>%
  # Get top 5
  ___
Modifier et exécuter le code