ÎncepețiÎncepe gratuit

AFINN: Suntem pe aceeași lungime de undă

Acum trecem la lexiconul AFINN. Acesta folosește valori numerice de la 5 la -5, nu doar pozitiv sau negativ. Spre deosebire de lexiconul Bing, unde coloana de sentiment se numește sentiment, în lexiconul AFINN coloana cu scorul de sentiment se numește value.

Ca și înainte, aplici inner_join(), urmat de count(). Apoi, pentru a suma scorurile fiecărei linii, folosim funcțiile group_by() și summarize() din dplyr. Funcția group_by() preia un data frame existent și îl transformă într-un data frame grupat, în care operațiile se efectuează „pe grup". Apoi, summarize() îți permite să calculezi o valoare pentru fiecare grup din data frame, folosind o funcție de agregare precum sum() sau mean(). Concret, putem scrie ceva de genul:

data_frame %>% 
    group_by(book_line) %>% 
    summarize(total_value = sum(book_line))

În versiunea tidy a romanului Huckleberry Finn, linia 9703 conține cuvintele "best", "ever", "fun", "life" și "spirit". "best" și "fun" au scoruri AFINN de 3, respectiv 4. După agregare, linia 9703 va avea un scor total de 7.

În tidyverse, filter() este preferată față de subset(), deoarece combină funcționalitatea acesteia cu o sintaxă mai simplă. Iată un exemplu în care filter() selectează din data_frame rândurile unde o valoare din column1 este egală cu 24. Observă că numele coloanei nu este pus între ghilimele.

filter(data_frame, column1 == 24)

Obiectul afinn conține lexiconul AFINN. Obiectul huck este versiunea tidy a romanului Aventurile lui Huckleberry Finn de Mark Twain, pregătită pentru analiză.

Linia 5400 corespunde textului All the loafers looked glad; I reckoned they was used to having fun out of Boggs. Cuvintele de oprire (stopwords) și punctuația au fost deja eliminate din set de date.

Acest exercițiu face parte din cursul

Analiza sentimentelor în R

Vezi cursul

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
  ___(___, ___)
Editează și rulează codul