IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Rivedi una sezione di bos_pol$all già caricato indicizzando con [1:6,1:3].
  • Aggiungi una nuova colonna chiamata scaled_polarity applicando scale() alla colonna del punteggio di polarità bos_pol$all$polarity.
  • Per i commenti positivi, usa subset() dove la nuova colonna bos_reviews$scaled_polarity è maggiore di (>) zero.
  • Per i commenti negativi, usa subset() dove la nuova colonna bos_reviews$scaled_polarity è minore di (<) zero.
  • Crea pos_terms usando paste() su pos_comments.
  • Ora crea neg_terms con paste() su neg_comments.
  • Organizza i documenti collassati, pos_terms e neg_terms, in un unico corpus chiamato all_terms.
  • Segui il solito workflow di tm annidando VectorSource() dentro VCorpus() applicato a all_terms.
  • Crea la TermDocumentMatrix() usando l'oggetto all_corpus. Nota che è una TDM pesata TfIdf con funzioni di pulizia di base.
  • Trasforma all_tdm in all_tdm_m usando as.matrix(). Poi rinomina le colonne nel codice esistente in "positive" e "negative".
  • Finalmente! applica comparison.cloud() all'oggetto matrice all_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")
)
Modifica ed esegui il codice