ac_sentiment() calcula a polaridade de sentimento dos documentos de um
ac_corpus usando o OpLexicon (Souza & Vieira, 2012), retornando
pontuações por documento e, opcionalmente, por grupo ou janela temporal.
Arguments
- corpus
Objeto
ac_corpus.- by
Coluna(s) de agrupamento para agregar o sentimento além do documento (ex:
"partido","data"). Padrão:NULL(por documento).- lexicon
Léxico a usar. Atualmente apenas
"oplexicon"(padrão).- method
Método de agregação por documento:
"sum"(padrão): soma das polaridades."mean": média das polaridades."ratio": razão entre positivos e negativos.
- ...
Ignorado.
Value
Tibble com colunas:
doc_id: identificador do documento;Colunas de metadado (se
byespecificado);n_pos: número de tokens positivos;n_neg: número de tokens negativos;n_neu: número de tokens neutros;score: pontuação de sentimento (método escolhido);sentiment: classificação ("positivo","negativo","neutro").
References
Souza, M.; Vieira, R. (2012). Sentiment Analysis on Twitter Data for Portuguese Language. PROPOR.
Souza, M.; Vieira, R.; Busetti, D.; Chishman, R.; Alves, I. M. (2011). Construction of a Portuguese Opinion Lexicon from multiple resources. STIL/SBC.
Examples
# Discursos com valencia afetiva variada
df <- data.frame(
id = paste0("d", 1:6),
texto = c(
"A reforma tributaria e um passo excelente para o pais",
"Esta proposta e um desastre, um retrocesso terrivel",
"O relator apresentou o parecer na sessao ordinaria",
"Comemoramos essa vitoria historica com muita alegria",
"Rejeitamos com veemencia essa medida injusta e ilegal",
"A comissao encerra os trabalhos as 18h"
),
partido = rep(c("A", "B"), 3),
stringsAsFactors = FALSE
)
corpus <- ac_corpus(df, text = texto, docid = id)
# Polaridade agregada por documento (soma de scores OpLexicon)
ac_sentiment(corpus)
#> # A tibble: 6 × 6
#> doc_id n_pos n_neg n_neu score sentiment
#> <chr> <int> <int> <int> <int> <chr>
#> 1 d1 1 1 8 0 neutro
#> 2 d2 0 1 7 -1 negativo
#> 3 d3 0 0 8 0 neutro
#> 4 d4 0 0 7 0 neutro
#> 5 d5 0 2 6 -2 negativo
#> 6 d6 0 0 7 0 neutro
# Agregado por grupo (aqui, por partido)
ac_sentiment(corpus, by = "partido")
#> # A tibble: 6 × 7
#> doc_id partido n_pos n_neg n_neu score sentiment
#> <chr> <chr> <int> <int> <int> <int> <chr>
#> 1 d1 A 1 1 8 0 neutro
#> 2 d2 B 0 1 7 -1 negativo
#> 3 d3 A 0 0 8 0 neutro
#> 4 d4 B 0 0 7 0 neutro
#> 5 d5 A 0 2 6 -2 negativo
#> 6 d6 B 0 0 7 0 neutro
# Metodo alternativo: razao positivos/negativos
ac_sentiment(corpus, method = "ratio")
#> # A tibble: 6 × 6
#> doc_id n_pos n_neg n_neu score sentiment
#> <chr> <int> <int> <int> <dbl> <chr>
#> 1 d1 1 1 8 0 neutro
#> 2 d2 0 1 7 -1 negativo
#> 3 d3 0 0 8 0 neutro
#> 4 d4 0 0 7 0 neutro
#> 5 d5 0 2 6 -1 negativo
#> 6 d6 0 0 7 0 neutro
