AFINN : je suis votre 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 un data frame existant et le convertit en data frame groupé, où les opérations sont effectuées « par groupe ». Puis, summarize() vous permet de calculer une valeur pour chaque groupe de votre data frame à l'aide d'une fonction d'agrégation, comme sum() ou mean(). Dans notre cas, nous pouvons faire quelque chose comme :
data_frame %>%
group_by(book_line) %>%
summarize(total_value = sum(book_line))
Dans la version « tidy » 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() car il combine les fonctionnalités de subset() avec une syntaxe plus simple. Voici un exemple qui applique filter() à data_frame pour ne garder que les lignes 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 « tidy » des Aventures de Huckleberry Finn de Mark Twain, prête 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.
Cet exercice fait partie du cours
<cours>Analyse de sentiments en R</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
___(___, ___)