DTM vs. matrice tidytext
Le tidyverse est un ensemble de packages R qui partagent des principes communs et sont conçus pour fonctionner ensemble. Ce chapitre présente quelques fonctions « tidy » pour manipuler des données. Dans cet exercice, vous allez comparer un DTM à un tableau de texte « tidy » appelé tibble.
Dans le tidyverse, chaque observation correspond à une seule ligne d'un data frame. Cela facilite l'utilisation de différents packages puisque la structure de données de base est la même. Certaines parties de ce cours s'appuient largement sur le package tidytext qui utilise cette organisation des données.
Par exemple, vous connaissez peut-être déjà l'opérateur %>% du package magrittr. Il transmet l'objet situé à sa gauche comme premier argument de la fonction située à sa droite.
Dans l'exemple ci-dessous, vous transmettez l'objet data à function1(). Remarquez que les parenthèses sont vides. Le résultat est ensuite transmis à function2(). Dans la dernière fonction, vous n'avez pas besoin d'ajouter l'objet data car il a été transmis depuis la sortie de function1(). En revanche, vous ajoutez un paramètre fictif, some_parameter, avec la valeur TRUE. Ces enchaînements via le pipe aboutissent finalement à la création de object.
object <- data %>%
function1() %>%
function2(some_parameter = TRUE)
Pour utiliser l'opérateur %>%, vous n'avez pas nécessairement besoin de charger le package magrittr, puisqu'il est aussi disponible dans le package dplyr.
dplyr contient également les fonctions inner_join() (que vous étudierez plus tard) et count pour comptabiliser des données. La dernière fonction dont vous aurez besoin est mutate() pour créer de nouvelles variables ou modifier des variables existantes.
object <- data %>%
mutate(new_Var_name = Var1 - Var2)
ou pour modifier une variable
object <- data %>%
mutate(Var1 = as.factor(Var1))
Vous utiliserez aussi la fonction pivot_wider() de tidyr pour organiser les données avec une ligne par vers du livre et les valeurs positives et négatives en colonnes.
| index | negative | positive |
|---|---|---|
| 42 | 2 | 0 |
| 43 | 0 | 1 |
| 44 | 1 | 0 |
Pour convertir un DTM en format « tidy », utilisez tidy() du package broom.
tidy_format <- tidy(Document_Term_Matrix)
Cet exercice utilise un texte tiré de la tragédie grecque, Agamemnon. Agamemnon raconte une histoire d'infidélité conjugale et de meurtre. Vous pouvez en télécharger un exemplaire ici.
Cet exercice fait partie du cours
<cours>Analyse de sentiments en R</cours>Instructions de l’exercice
Nous avons déjà créé un DTM nettoyé nommé ag_dtm pour cet exercice.
- Créez
ag_dtm_men appliquantas.matrix()àag_dtm. - À l'aide des crochets
[et], indexezag_dtm_mà la ligne2206. - Appliquez
tidy()àag_dtm. Nommez le nouvel objetag_tidy. - Examinez
ag_tidyaux lignes[831:835, ]pour comparer le format « tidy ». Vous verrez un mot commun avec la partie examinée deag_dtm_mà l'étape 2.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# As matrix
ag_dtm_m <- ___
# Examine line 2206 and columns 245:250
ag_dtm_m[___, 245:250]
# Tidy up the DTM
ag_tidy <- ___
# Examine tidy with a word you saw
ag_tidy[___, ]