Quickstart — acR em 5 minutos

Quer entender o acR sem ler nada longo? Este é o menor caminho ponta-a-ponta usando apenas as funções que rodam offline e sem chave de API. Copie e cole.

library(acR)

1 · Um corpus mínimo

df <- data.frame(
  id       = paste0("d", 1:6),
  texto    = c(
    "Sou favoravel a reforma tributaria que simplifica os impostos.",
    "Voto contra a proposta, ela vai destruir o setor produtivo.",
    "Apoio integralmente a reforma, ha ganhos claros de eficiencia.",
    "Esta reforma e um retrocesso, vamos rejeitar em plenario.",
    "Defendo a proposta que corrige distorcoes historicas do sistema.",
    "Somos contra, o texto beneficia apenas grandes corporacoes."
  ),
  posicao  = c("favor", "contra", "favor", "contra", "favor", "contra"),
  stringsAsFactors = FALSE
)

corpus <- ac_corpus(df, text = texto, docid = id, meta = posicao)
corpus
#> 
#> ── Corpus acR ──────────────────────────────────────────────────────────────────
#> • Documentos: 6
#> • Metadados: 1 coluna
#> • Idioma: "pt"
#> 
#> # A tibble: 6 × 3
#>   doc_id text                                                            posicao
#>   <chr>  <chr>                                                           <chr>  
#> 1 d1     Sou favoravel a reforma tributaria que simplifica os impostos.  favor  
#> 2 d2     Voto contra a proposta, ela vai destruir o setor produtivo.     contra 
#> 3 d3     Apoio integralmente a reforma, ha ganhos claros de eficiencia.  favor  
#> 4 d4     Esta reforma e um retrocesso, vamos rejeitar em plenario.       contra 
#> 5 d5     Defendo a proposta que corrige distorcoes historicas do sistem… favor  
#> 6 d6     Somos contra, o texto beneficia apenas grandes corporacoes.     contra

2 · Termos mais frequentes por grupo

Removemos stopwords antes de contar — sem isso, “de”, “a”, “o” dominariam qualquer contagem em português.

corpus <- ac_clean(corpus, remove_stopwords = "pt")
freq_por_grupo <- ac_count(corpus, by = "posicao")
ac_top_terms(freq_por_grupo, n = 5, by = "posicao")
#> # A tibble: 34 × 3
#>    posicao token           n
#>    <chr>   <chr>       <int>
#>  1 contra  contra          2
#>  2 contra  apenas          1
#>  3 contra  beneficia       1
#>  4 contra  corporacoes     1
#>  5 contra  destruir        1
#>  6 contra  grandes         1
#>  7 contra  plenario        1
#>  8 contra  produtivo       1
#>  9 contra  proposta        1
#> 10 contra  reforma         1
#> # ℹ 24 more rows

3 · Palavras distintivas de cada lado (keyness)

key <- ac_keyness(freq_por_grupo, group = "posicao", target = "favor")
head(key, 5)
#> # A tibble: 5 × 10
#>   token group target reference n_target n_reference total_target total_reference
#>   <chr> <chr> <chr>  <chr>        <dbl>       <dbl>        <dbl>           <dbl>
#> 1 apoio posi… favor  contra           1           0           18              18
#> 2 clar… posi… favor  contra           1           0           18              18
#> 3 corr… posi… favor  contra           1           0           18              18
#> 4 defe… posi… favor  contra           1           0           18              18
#> 5 dist… posi… favor  contra           1           0           18              18
#> # ℹ 2 more variables: keyness <dbl>, direction <chr>

4 · Sentimento por documento (OpLexicon PT-BR)

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         0     1     4    -1 negativo 
#> 2 d2         1     0     6     1 positivo 
#> 3 d3         1     0     6     1 positivo 
#> 4 d4         0     0     5     0 neutro   
#> 5 d5         0     0     6     0 neutro   
#> 6 d6         0     0     6     0 neutro

5 · Escolher um modelo LLM para a próxima etapa

Se você for usar a etapa qualitativa, o pacote sugere modelos com base em custo, idioma e tipo de tarefa. Consulta 100% offline (banco interno).

ac_qual_recommend_model(task = "coding", budget = "medium", lang = "pt", n = 3)
#> 
#> ── Recomendacoes de modelo acR ─────────────────────────────────────────────────
#> ℹ Tarefa: "coding" | Budget: "medium" | Idioma: "pt"
#> ℹ Baseado em Gilardi et al. (2023, PNAS) e Tornberg (2023, PLOS ONE).
#> # A tibble: 3 × 12
#>    rank provider model_id           name  tier  context_k cost_input cost_output
#>   <int> <chr>    <chr>              <chr> <chr>     <dbl>      <dbl>       <dbl>
#> 1     1 google   google/gemini-2.0… Gemi… fast       1000       0.1          0.4
#> 2     2 google   google/gemini-2.5… Gemi… fron…      1000       1.25        10  
#> 3     3 openai   openai/o4-mini     o4-m… bala…       200       1.1          4.4
#> # ℹ 4 more variables: pt_support <chr>, score <dbl>, justificativa <chr>,
#> #   acr_string <chr>

O que vem depois?

Cada uma das funções acima tem exemplos executáveis em ?nome_da_funcao.