CommencezCommencez gratuitement

AFINN : I'm your Huckleberry

Passons maintenant au lexique AFINN. Le lexique AFINN attribue des valeurs numériques de 5 à -5, et pas seulement positif ou négatif. Contrairement à la colonne sentiment du lexique Bing, la colonne du score de sentiment dans AFINN s'appelle value.

Comme précédemment, vous appliquez inner_join() puis count(). Ensuite, pour additionner les scores de chaque ligne, nous utilisons les fonctions group_by() et summarize() de dplyr. La fonction group_by() prend une trame de données existante et la convertit en trame de données groupée où les opérations sont effectuées « par groupe ». Puis, la fonction summarize() vous permet de calculer une valeur pour chaque groupe dans votre trame de données en utilisant une fonction d'agrégation, comme sum() ou mean(). Ainsi, dans notre cas, on peut faire quelque chose comme :

data_frame %>% 
    group_by(book_line) %>% 
    summarize(total_value = sum(book_line))

Dans la version ordonnée de Huckleberry Finn, la ligne 9703 contient les mots « best », « ever », « fun », « life » et « spirit ». « best » et « fun » ont des scores AFINN de 3 et 4 respectivement. Après agrégation, la ligne 9703 aura un score total de 7.

Dans le tidyverse, filter() est préféré à subset() parce qu'il combine les fonctionnalités de subset() avec une syntaxe plus simple. Voici un exemple qui applique filter() à data_frame où une valeur de column1 est égale à 24. Remarquez que le nom de la colonne n'est pas entre guillemets.

filter(data_frame, column1 == 24)

L'objet afinn contient le lexique AFINN. L'objet huck est une version ordonnée des Aventures de Huckleberry Finn de Mark Twain pour l'analyse.

La ligne 5400 est : All the loafers looked glad; I reckoned they was used to having fun out of Boggs. Les mots vides et la ponctuation ont déjà été retirés du jeu de données.

Cette activité fait partie du cours

Analyse de sentiment en R

Voir le cours

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# See abbreviated line 5400
huck %>% filter(line == 5400)

# What are the scores of the sentiment words?
afinn %>% filter(word %in% c("fun", "glad"))

huck_afinn <- huck %>% 
  # Inner Join to AFINN lexicon
  inner_join(___, by = c("___" = "___")) %>%
  # Count by value and line
  ___(___, ___)
Modifier et exécuter le code