CommencezCommencez gratuitement

Au-delà des mots : la tokenisation (2)

Le paquet tidytext vous permet d'analyser des données textuelles avec les outils du « tidyverse » comme dplyr et sparklyr. L'analyse de sentiment dépasse la portée de ce cours; pour en savoir plus, consultez le cours Sentiment Analysis. Cet exercice vise à vous donner un aperçu rapide de la façon de le faire sur Spark.

L'analyse de sentiment permet essentiellement d'attribuer une cote ou une émotion à chaque mot. Par exemple, dans le lexique AFINN, le mot "outstanding" a une cote de +5, puisqu'il est presque toujours utilisé dans un contexte positif. "grace" est légèrement positif et a une cote de +1. "fraud" est généralement utilisé dans un contexte négatif et a une cote de -4. L'ensemble des cotes AFINN est retourné par get_sentiments("afinn"). Pour plus de commodité, les données de mots « désempilées » 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 ce faire, on utilise le canevas de code suivant.

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

Une jointure interne prend toutes les valeurs du premier tableau et cherche des correspondances dans le second. Si elle en trouve, elle ajoute les données du second tableau. Contrairement à une jointure à gauche, elle élimine les lignes pour lesquelles aucune correspondance n'est trouvée. Le principe est illustré dans ce schéma.

An inner join, explained using table of colors.

Comme les jointures à gauche, les jointures internes sont des jointures « mutantes », puisqu'elles ajoutent des colonnes au premier tableau. Voyez si vous pouvez deviner quelle fonction utiliser pour les jointures internes et comment l'employer. (Indice : l'utilisation ressemble beaucoup à left_join(), anti_join() et semi_join() !)

Cette activité fait partie du cours

Introduction à Spark avec sparklyr en R

Voir le cours

Instructions de l’exercice

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

  • Créez une variable nommé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 pour définir une variable positivity, égale à la somme du champ score.
  • Trouvez les 5 artistes avec les titres de chansons les plus négatifs.
    • Triez sentimental_artists par positivité croissante.
    • Utilisez slice_max pour obtenir les 5 meilleurs résultats.
  • Trouvez les 5 artistes avec les titres de chansons 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 ce code d’exemple.

# 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