By Rodrigo Esteves de Lima Lopes University of Campinas [email protected]
Quanteda é um pacote para gerenciar e analisar texto quantitativamente. É bastante fácil de usar e nos trará uma série de funções interessantes.
- O pacote
Quanteda
,quanteda.textplots
equanteda.textstats
, que podem ser instalados usando RStudio - O pacote
rtweet
, que instalamos em nosso primeiro tutorial de Twitter. - O
Ggplot2
criar alguns gráficos, que foi instalado em nosso primeiro tutorial de Twitter.
# Running the packages
library(quanteda)
library(quanteda.textplots)
library(quanteda.textstats)
Vamos usar os mesmos dados do tutorial anterior
Nosso primeiro passo é usar Quanteda
para criar o corpus. Um corpus, neste contexto, é uma variável formal que permite que o texto interaja com o pacote.
presidents.C <- corpus(presidents)
Nosso próximo passo é criar um corpus para cada um dos candidatos que raspamos a linha do tempo
lula.c <- corpus_subset(presidents.C, screen_name == "LulaOficial")
ciro.c <- corpus_subset(presidents.C, screen_name == "cirogomes")
JB.c <- corpus_subset(presidents.C, screen_name == "jairbolsonaro")
Agora precisamos tokenisar os dados, para que o pacote possa identificar cada palavra como uma unidade de análise.
#Lula
lula.toc <- tokens(lula.c,
remove_punct = TRUE,
remove_symbols = TRUE,
remove_numbers = TRUE,
verbose = TRUE)
lula.toc <- tokens_remove(lula.toc,
stopwords("pt"),
valuetype = "fixed",
verbose = TRUE
) %>% tokens_tolower()
#Ciro
ciro.toc <- tokens(ciro.c,
remove_punct = TRUE,
remove_symbols = TRUE,
remove_numbers = TRUE,
verbose = TRUE)
ciro.toc <- tokens_remove(ciro.toc,
stopwords("pt"),
valuetype = "fixed",
verbose = TRUE
) %>% tokens_tolower()
# JB
JB.toc <- tokens(JB.c,
remove_punct = TRUE,
remove_symbols = TRUE,
remove_numbers = TRUE,
verbose = TRUE)
JB.toc <- tokens_remove(JB.toc,
stopwords("pt"),
valuetype = "fixed",
verbose = TRUE
) %>% tokens_tolower()
O Quanteda
permite fazer concordância. Vejamos um pouco de Kwic
.
kwic(JB.toc,"Brasil") |> View()
kwic(lula.toc,"Brasil") |> View()
kwic(ciro.toc,"Brasil") |> View()
Que tal analisar como estão os bigramas em cada corpus? Isso nos ajudará a compreender o caráter temático geral dos textos.
lula.col <- textstat_collocations(lula.toc, method = "lambda",
size = 2,
min_count = 2,
smoothing = 0.5,
tolower = TRUE,
verbose = TRUE)
ciro.col <- textstat_collocations(ciro.toc, method = "lambda",
size = 2,
min_count = 2,
smoothing = 0.5,
tolower = TRUE,
verbose = TRUE)
JB.col <- textstat_collocations(JB.toc, method = "lambda",
size = 2,
min_count = 2,
smoothing = 0.5,
tolower = TRUE,
verbose = TRUE)
Vamos usar cada um deles:
lula.col |> View()
JB.col |> View()
ciro |> View()
Nosso próximo passo é comparar os candidatos. Vamos selecioná-los separadamente, para que possamos observar suas palavras mais relevantes:
a.lula_Ciro <- corpus_subset(presidents.C, screen_name != "jairbolsonaro")
b.lula_JB <- corpus_subset(presidents.C, screen_name != "cirogomes")
c.ciro_JB <- corpus_subset(presidents.C, screen_name != "LulaOficial")
Plotagem:
# Lula vs ciro
a.tk <- tokens(a.lula_Ciro,
remove_punct = TRUE,
remove_symbols = TRUE,
remove_numbers = TRUE,
verbose = TRUE) %>%
tokens_remove(pattern = stopwords("pt")) %>%
tokens_group(groups = screen_name)
dfm.a <- dfm(a.tk, verbose = TRUE)
textstat_keyness(dfm.a,
target = "LulaOficial",
measure = "lr") |>
textplot_keyness(n= 25)
# Lula vs JB
b.tk <- tokens(b.lula_JB,
remove_punct = TRUE,
remove_symbols = TRUE,
remove_numbers = TRUE,
verbose = TRUE) %>%
tokens_remove(pattern = stopwords("pt")) %>%
tokens_group(groups = screen_name)
dfm.b <- dfm(b.tk, verbose = TRUE)
textstat_keyness(dfm.b,
target = "LulaOficial",
measure = "lr") |>
textplot_keyness(n= 25)
# Ciro vs JB
c.tk <- tokens(c.ciro_JB,
remove_punct = TRUE,
remove_symbols = TRUE,
remove_numbers = TRUE,
verbose = TRUE) %>%
tokens_remove(pattern = stopwords("pt")) %>%
tokens_group(groups = screen_name)
dfm.c <- dfm(c.tk, verbose = TRUE)
textstat_keyness(dfm.c,
target = "cirogomes",
measure = "lr") |>
textplot_keyness(n= 25)