AFINN: Nu kör vi
Nu övergår vi till AFINN-lexikonet. AFINN-lexikonet har numeriska värden från 5 till -5, inte bara positivt eller negativt. Till skillnad från Bing-lexikonets sentiment heter AFINN-lexikonets sentimentkolumn value.
Precis som tidigare använder du inner_join() följt av count(). För att summera poängen för varje rad använder vi sedan dplyrs funktioner group_by() och summarize(). Funktionen group_by() tar en befintlig dataram och omvandlar den till en grupperad dataram där operationer utförs "per grupp". Sedan låter summarize() dig beräkna ett värde för varje grupp i dataramen med hjälp av en aggregerande funktion, som sum() eller mean(). I vårt fall kan vi till exempel skriva:
data_frame %>%
group_by(book_line) %>%
summarize(total_value = sum(book_line))
I den städade versionen av Huckleberry Finn innehåller rad 9703 orden "best", "ever", "fun", "life" och "spirit". "best" och "fun" har AFINN-poängen 3 respektive 4. Efter aggregering får rad 9703 en totalpoäng på 7.
I tidyverse föredras filter() framför subset(), eftersom den kombinerar funktionaliteten hos subset() med enklare syntax. Här är ett exempel där filter() används på data_frame för rader där ett värde i column1 är lika med 24. Observera att kolumnnamnet inte är inom citattecken.
filter(data_frame, column1 == 24)
Objektet afinn innehåller AFINN-lexikonet. Objektet huck är en städad version av Mark Twains Adventures of Huckleberry Finn för analys.
Rad 5400 är All the loafers looked glad; I reckoned they was used to having fun out of Boggs. Stoppord och skiljetecken har redan tagits bort från datamängden.
Den här övningen är en del av kursen
Sentimentanalys i R
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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
___(___, ___)