Aan de slagGa gratis aan de slag

Geschaalde vergelijking-cloud

Weet je nog de "cijferinflatie" van polariteitsscores in de huurrecensies? Soms helpt het om inzichten te vinden door de scores eerst te schalen naar 0 en daarna pas de corpus-subset te maken. Daardoor kunnen sommige eerder positieve opmerkingen in het negatieve deel terechtkomen, of andersom, omdat het gemiddelde naar 0 wordt verschoven. In deze oefening schaal je de scores en maak je daarna de comparison.cloud() opnieuw. Het verwijderen van de "cijferinflatie" kan extra inzichten opleveren.

Eerder heb je polarity() toegepast op bos_reviews$comments en een comparison.cloud() gemaakt. In deze oefening ga je het resultaat eerst scale() voordat je de comparison.cloud() maakt. Kijk of de visual nu iets anders laat zien!

Omdat dit grotendeels een herhalingsoefening is, staat veel code al klaar. Vul alleen de juiste objecten en parameters in!

Deze oefening maakt deel uit van de cursus

Sentimentanalyse in R

Cursus bekijken

Oefeninstructies

  • Bekijk een gedeelte van de vooringeladen bos_pol$all door te indexeren met [1:6,1:3].
  • Voeg een nieuwe kolom toe genaamd scaled_polarity met scale() toegepast op de polariteitskolom bos_pol$all$polarity.
  • Gebruik voor positieve comments subset() waar de nieuwe kolom bos_reviews$scaled_polarity groter is dan (>) nul.
  • Gebruik voor negatieve comments subset() waar de nieuwe kolom bos_reviews$scaled_polarity kleiner is dan (<) nul.
  • Maak pos_terms met paste() op pos_comments.
  • Maak nu neg_terms met paste() op neg_comments.
  • Organiseer de samengevoegde documenten, pos_terms en neg_terms, in één corpus met de naam all_terms.
  • Volg de gebruikelijke tm workflow door VectorSource() te nesten binnen VCorpus toegepast op all_terms.
  • Maak de TermDocumentMatrix() met het object all_corpus. Let op: dit is een TfIdf-gewogen TDM met basisreinigingsfuncties.
  • Zet all_tdm om naar all_tdm_m met as.matrix(). Hernoem vervolgens de kolommen in de bestaande code naar "positive" en "negative".
  • Tot slot! pas comparison.cloud() toe op het matrixobject all_tdm_m. Let op de nu meest frequente negatieve woorden. Misschien ontdek je een nieuw inzicht!

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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")
)
Code bewerken en uitvoeren