Nuage comparatif normalisé
Vous souvenez-vous de la « majoration des notes » des scores de polarité dans les évaluations de locations? Parfois, une autre façon de faire ressortir un constat consiste à normaliser les scores autour de 0, puis à créer les sous-ensembles du corpus. Cela veut dire que certains commentaires auparavant positifs peuvent se retrouver du côté négatif, et vice versa, puisque la moyenne est ramenée à 0. Cet exercice vous aidera à normaliser les scores, puis à refaire le tracé de comparison.cloud(). Enlever cette « majoration des notes » peut révéler des pistes supplémentaires.
Précédemment, vous avez appliqué polarity() à bos_reviews$comments et créé un comparison.cloud(). Dans cet exercice, vous allez appliquer scale() au résultat avant de créer le comparison.cloud(). Voyez si l'illustration met en évidence quelque chose de différent!
Comme il s'agit surtout d'un exercice de révision, une bonne partie du code est déjà là : il ne reste qu'à compléter avec les bons objets et paramètres!
Cette activité fait partie du cours
Analyse de sentiment en R
Instructions de l’exercice
- Passez en revue une section de
bos_pol$allpréchargé en indexant[1:6,1:3]. - Ajoutez une nouvelle colonne appelée
scaled_polarityavecscale()appliqué à la colonne des scores de polaritébos_pol$all$polarity. - Pour les commentaires positifs, utilisez
subset()où la nouvelle colonnebos_reviews$scaled_polarityest strictement supérieure (>) à zéro. - Pour les commentaires négatifs, utilisez
subset()où la nouvelle colonnebos_reviews$scaled_polarityest strictement inférieure (<) à zéro. - Créez
pos_termsavecpaste()à partir depos_comments. - Créez maintenant
neg_termsavecpaste()à partir deneg_comments. - Regroupez les documents concaténés,
pos_termsetneg_terms, dans un seul corpus appeléall_terms. - Suivez le flot de travail habituel de
tmen imbriquantVectorSource()à l'intérieur deVCorpus()appliqué àall_terms. - Créez la
TermDocumentMatrix()à partir de l'objetall_corpus. Notez qu'il s'agit d'une matrice termes-documents pondérée TfIdf avec des fonctions de nettoyage de base. - Transformez
all_tdmenall_tdm_mavecas.matrix(). Puis renommez les colonnes dans le code existant en"positive"et"negative". - Enfin! appliquez
comparison.cloud()à l'objet matriceall_tdm_m. Portez attention aux nouveaux mots négatifs les plus fréquents. Peut-être que cela fera ressortir une idée que vous n'aviez pas encore vue!
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Review
___
# Scale/center & append
bos_reviews$___ <- scale(___)
# Subset positive comments
pos_comments <- subset(bos_reviews$comments, ___)
# Subset negative comments
neg_comments <- subset(bos_reviews$comments, ___)
# Paste and collapse the positive comments
pos_terms <- paste(___, collapse = " ")
# Paste and collapse the negative comments
neg_terms <- paste(___, collapse = " ")
# Organize
all_terms<- c(___, ___)
# VCorpus
all_corpus <- ___(VectorSource(___))
# TDM
all_tdm <- TermDocumentMatrix(
___,
control = list(
weighting = weightTfIdf,
removePunctuation = TRUE,
stopwords = stopwords(kind = "en")
)
)
# Column names
___ <- as.matrix(___)
colnames(all_tdm_m) <- c("___", "___")
# Comparison cloud
comparison.cloud(
___,
max.words = 100,
colors = c("darkgreen", "darkred")
)