AFINN: czas na analizę
Teraz przechodzimy do leksykonu AFINN. Leksykon AFINN przypisuje słowom wartości liczbowe od -5 do 5 – nie tylko etykiety „pozytywny" lub „negatywny". W odróżnieniu od leksykonu Bing, gdzie kolumna z oceną nazywa się sentiment, w leksykonie AFINN odpowiednia kolumna nosi nazwę value.
Podobnie jak wcześniej, stosujesz inner_join(), a następnie count(). Aby zsumować wyniki dla każdego wiersza tekstu, skorzystaj z funkcji group_by() i summarize() z pakietu dplyr. Funkcja group_by() przekształca istniejącą ramkę danych w zgrupowaną ramkę, w której operacje są wykonywane „w obrębie grupy". Następnie summarize() pozwala obliczyć wartość dla każdej grupy przy użyciu funkcji agregującej, takiej jak sum() lub mean(). W naszym przypadku wygląda to tak:
data_frame %>%
group_by(book_line) %>%
summarize(total_value = sum(book_line))
W wersji tidy powieści Huckleberry Finn wiersz 9703 zawiera słowa „best", „ever", „fun", „life" i „spirit". Słowa „best" i „fun" mają w leksykonie AFINN wyniki odpowiednio 3 i 4. Po agregacji wiersz 9703 uzyska łączny wynik 7.
W tidyverse filter() jest preferowany zamiast subset(), ponieważ łączy funkcjonalność subset() z prostszą składnią. Poniżej przykład filtrowania ramki danych data_frame dla wierszy, w których wartość w kolumnie column1 wynosi 24. Zwróć uwagę, że nazwa kolumny nie jest ujęta w cudzysłów.
filter(data_frame, column1 == 24)
Obiekt afinn zawiera leksykon AFINN. Obiekt huck to wersja tidy powieści Marka Twaina Przygody Huckleberry'ego Finna przygotowana do analizy.
Wiersz 5400 to: All the loafers looked glad; I reckoned they was used to having fun out of Boggs. Stopwords i znaki interpunkcyjne zostały już usunięte ze zbioru danych.
To ćwiczenie jest częścią kursu
Analiza sentymentu w R
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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
___(___, ___)