Aan de slagGa gratis aan de slag

Vergelijkende stacked staafdiagrammen

Een andere manier om je tekst te bekijken is door te bepalen hoeveel van het document bestaat uit positieve of negatieve woorden. Een restaurantrecensie kan bijvoorbeeld positieve punten hebben zoals "het eten was goed", maar vervolgens doorgaan met "het restaurant was vies, het personeel was onbeleefd en parkeren was waardeloos." Daarom wil je misschien weten welk deel van een document is gewijd aan positieve vs. negatieve taal. In dit voorbeeld zou het negatieve percentage hoger zijn dan het positieve.

Een methode hiervoor is om de positieve en negatieve woorden te count()-en en vervolgens te delen door het aantal subjectiviteitswoorden dat is gevonden. In het voorbeeld van de restaurantrecensie telt "good" als 1 positief woord en "dirty", "rude" en "awful" als 3 negatieve termen. Een simpele berekening laat je dan denken dat de recensie 25% positief en 75% negatief is, omdat er 4 subjectiviteitstermen waren.

Begin met het uitvoeren van de inner_join() op een samengevoegd tidy data frame met 4 boeken: Agamemnon, Oz, Huck Finn en Moby Dick. Net als in de vorige oefening gebruik je filter() en grepl().

Om de count() uit te voeren moet je de data groeperen per boek en daarna per sentiment. Bijvoorbeeld: alle positieve woorden voor Agamemnon moeten worden gegroepeerd en opgeteld, zodat positieve woorden van alle boeken niet door elkaar raken. Gelukkig kun je meerdere variabelen direct aan count() doorgeven.

Deze oefening maakt deel uit van de cursus

Sentimentanalyse in R

Cursus bekijken

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Review tail of all_books
tail(all_books)

# Count by book & sentiment
books_sent_count <- all_books %>%
  # Inner join to nrc lexicon
  ___(___, by = c("term" = "word")) %>% 
  # Keep only positive or negative
  ___(__("___", sentiment)) %>% 
  # Count by book and by sentiment
  ___(___, ___)
  
# Review entire object
books_sent_count
Code bewerken en uitvoeren