Comparison Cloud scalata
Ti ricordi la "inflazione dei voti" dei punteggi di polarità nelle recensioni degli affitti? A volte, un altro modo per far emergere un insight è riportare i punteggi a una media di 0 e poi effettuare il subset del corpus. Questo significa che alcuni commenti prima positivi potrebbero finire nella sezione negativa o viceversa, dato che la media viene riportata a 0. In questo esercizio scalerai i punteggi e poi ridisegnerai la comparison.cloud(). Rimuovere l'"inflazione dei voti" può offrire ulteriori spunti.
In precedenza hai applicato polarity() a bos_reviews$comments e creato una comparison.cloud(). In questo esercizio applicherai scale() al risultato prima di creare la comparison.cloud(). Guarda se la visualizzazione mostra qualcosa di diverso!
Dato che è principalmente un esercizio di ripasso, gran parte del codice è già presente: ti basta completare con gli oggetti e i parametri corretti!
Questo esercizio fa parte del corso
Sentiment Analysis in R
Istruzioni dell'esercizio
- Rivedi una sezione di
bos_pol$allgià caricato indicizzando con[1:6,1:3]. - Aggiungi una nuova colonna chiamata
scaled_polarityapplicandoscale()alla colonna del punteggio di polaritàbos_pol$all$polarity. - Per i commenti positivi, usa
subset()dove la nuova colonnabos_reviews$scaled_polarityè maggiore di (>) zero. - Per i commenti negativi, usa
subset()dove la nuova colonnabos_reviews$scaled_polarityè minore di (<) zero. - Crea
pos_termsusandopaste()supos_comments. - Ora crea
neg_termsconpaste()suneg_comments. - Organizza i documenti collassati,
pos_termseneg_terms, in un unico corpus chiamatoall_terms. - Segui il solito workflow di
tmannidandoVectorSource()dentroVCorpus()applicato aall_terms. - Crea la
TermDocumentMatrix()usando l'oggettoall_corpus. Nota che è una TDM pesata TfIdf con funzioni di pulizia di base. - Trasforma
all_tdminall_tdm_musandoas.matrix(). Poi rinomina le colonne nel codice esistente in"positive"e"negative". - Finalmente! applica
comparison.cloud()all'oggetto matriceall_tdm_m. Fai attenzione alle nuove parole negative più frequenti. Magari sveleranno un insight che prima ti era sfuggito!
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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")
)