AFINN: I'm your Huckleberry
We schakelen nu over naar het AFINN-lexicon. Het AFINN-lexicon heeft numerieke waarden van 5 tot -5, niet alleen positief of negatief. In tegenstelling tot de sentiment-kolom van het Bing-lexicon heet de kolom met sentimentscores in AFINN value.
Net als eerder pas je eerst inner_join() toe en daarna count(). Vervolgens gebruiken we group_by() en summarize() uit dplyr om de scores per regel op te tellen. De functie group_by() neemt een bestaande data frame en maakt er een gegroepeerde data frame van, waarbij bewerkingen “per groep” worden uitgevoerd. Daarna kun je met summarize() voor elke groep in je data frame een waarde berekenen met een functie die data aggregeert, zoals sum() of mean(). In ons geval kun je dus zoiets doen als
data_frame %>%
group_by(book_line) %>%
summarize(total_value = sum(book_line))
In de tidy-versie van Huckleberry Finn bevat regel 9703 de woorden "best", "ever", "fun", "life" en "spirit". "best" en "fun" hebben respectievelijk AFINN-scores van 3 en 4. Na aggregatie krijgt regel 9703 een totale score van 7.
In de tidyverse heeft filter() de voorkeur boven subset() omdat het de functionaliteit van subset() combineert met eenvoudigere syntaxis. Hier is een voorbeeld dat data_frame filter()t waar een waarde in column1 gelijk is aan 24. Let op: de kolomnaam staat niet tussen aanhalingstekens.
filter(data_frame, column1 == 24)
Het object afinn bevat het AFINN-lexicon. Het object huck is een tidy-versie van Mark Twains Adventures of Huckleberry Finn voor analyse.
Regel 5400 is All the loafers looked glad; I reckoned they was used to having fun out of Boggs. Stopwoorden en interpunctie zijn al uit de gegevens verwijderd.
Deze oefening maakt deel uit van de cursus
Sentimentanalyse in R
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# See abbreviated line 5400
huck %>% filter(line == 5400)
# What are the scores of the sentiment words?
afinn %>% filter(word %in% c("fun", "glad"))
huck_afinn <- huck %>%
# Inner Join to AFINN lexicon
inner_join(___, by = c("___" = "___")) %>%
# Count by value and line
___(___, ___)