Nuage comparatif mis à l'échelle
Vous vous souvenez de la « gonflette des notes » sur les scores de polarité des avis de locations ? Parfois, une autre manière de faire émerger un insight consiste à recentrer les scores autour de 0, puis à créer les sous-ensembles du corpus. Cela signifie que certains commentaires auparavant positifs peuvent basculer dans la partie négative, et inversement, puisque la moyenne est ramenée à 0. Cet exercice vous aidera à mettre les scores à l'échelle, puis à re-tracer la comparison.cloud(). Supprimer cette « gonflette » peut révéler des informations supplémentaires.
Précédemment, vous avez appliqué polarity() à bos_reviews$comments et créé une comparison.cloud(). Dans cet exercice, vous allez appliquer scale() au résultat avant de créer la comparison.cloud(). Voyez si cela met en évidence autre chose sur le visuel !
Comme il s'agit surtout d'un exercice de révision, une grande partie du code est déjà là : complétez simplement avec les bons objets et paramètres !
Cet exercice fait partie du cours
<cours>Analyse de sentiments en R</cours>Instructions de l’exercice
- Passez en revue une section de
bos_pol$all(préchargé) en indexant[1:6,1:3]. - Ajoutez une nouvelle colonne nommée
scaled_polarityen appliquantscale()à la colonne de score de polaritébos_pol$all$polarity. - Pour les commentaires positifs, utilisez
subset()lorsque la nouvelle colonnebos_reviews$scaled_polarityest strictement supérieure (>) à zéro. - Pour les commentaires négatifs, utilisez
subset()lorsque la nouvelle colonnebos_reviews$scaled_polarityest strictement inférieure (<) à zéro. - Créez
pos_termsà l'aide depaste()surpos_comments. - Créez ensuite
neg_termsavecpaste()surneg_comments. - Regroupez les documents concaténés,
pos_termsetneg_terms, dans un corpus unique appeléall_terms. - Suivez le flux de travail habituel de
tmen imbriquantVectorSource()dansVCorpus()appliqué àall_terms. - Créez la
TermDocumentMatrix()en utilisant l'objetall_corpus. Notez qu'il s'agit d'une TDM 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()à la matriceall_tdm_m. Observez les nouveaux mots négatifs les plus fréquents. Peut-être révélerez-vous un insight encore insoupçonné !
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")
)