ac_emotion() conta, por documento, quantas palavras caem em cada
categoria de emoção de um léxico fornecido pelo usuário: indo além
da polaridade binária de ac_sentiment() para distinguir, por
exemplo, se um texto negativo expressa raiva, medo ou tristeza
(Mohammad & Turney, 2013, propuseram essa distinção no NRC Emotion
Lexicon, hoje o léxico de emoções mais usado em inglês).
O pacote não distribui um léxico de emoções em português: o NRC
Emotion Lexicon original é em inglês e sua tradução/adaptação para
português está sujeita aos termos de licença do léxico de origem, que
o usuário deve obter e licenciar por conta própria (o NRC é gratuito
para pesquisa, mas não redistribuível livremente dentro de outro
pacote). ac_emotion() é agnóstica ao léxico: funciona com qualquer
tabela palavra→emoção que você tenha: o NRC traduzido, um léxico
doméstico, ou uma lista construída à mão para um domínio específico
(ex.: emoções em avaliações de atendimento ao cliente).
Internamente, é uma camada sobre ac_dictionary(): converte o léxico
em formato longo (uma linha por palavra-emoção) para o formato de
dicionário multi-categoria e aplica a mesma contagem.
Arguments
- corpus
Objeto
ac_corpus.- lexicon
Tibble/data.frame em formato longo com colunas de palavra e emoção (ver
term_col/emotion_col). Uma palavra pode aparecer em mais de uma linha (associada a mais de uma emoção).- term_col
Nome da coluna de palavra em
lexicon. Padrão:"termo".- emotion_col
Nome da coluna de emoção em
lexicon. Padrão:"emocao".- by
Coluna(s) de agrupamento adicional. Padrão:
NULL.
Value
Tibble no mesmo formato de ac_dictionary(): total_tokens
e, para cada emoção presente em lexicon, colunas <emocao>_n e
<emocao>_prop.
References
Mohammad, S. M.; Turney, P. D. (2013). Crowdsourcing a Word-Emotion Association Lexicon. Computational Intelligence, 29(3), 436-465.
Examples
# Lexico de emocao mínimo, construido a mao para este exemplo
# (em uso real, substitua por um lexico de emocoes licenciado em PT)
lexico <- data.frame(
termo = c("alegria", "feliz", "medo", "assustado", "raiva", "furioso"),
emocao = c("alegria", "alegria", "medo", "medo", "raiva", "raiva"),
stringsAsFactors = FALSE
)
df <- data.frame(
id = paste0("d", 1:3),
texto = c(
"fiquei muito feliz com a alegria do momento",
"fiquei assustado, senti muito medo da situação",
"fiquei furioso, aquela raiva não passava"
),
stringsAsFactors = FALSE
)
corpus <- ac_corpus(df, text = texto, docid = id)
ac_emotion(corpus, lexicon = lexico)
#> # A tibble: 3 × 8
#> doc_id total_tokens alegria_n medo_n raiva_n alegria_prop medo_prop raiva_prop
#> <chr> <int> <int> <int> <int> <dbl> <dbl> <dbl>
#> 1 d1 8 2 0 0 0.25 0 0
#> 2 d2 7 0 2 0 0 0.286 0
#> 3 d3 6 0 0 2 0 0 0.333
