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

Connected

Exercice

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() !)

Instructions

100 XP

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.