Textmining: análise dos discursos de Getúlio Vargas

Getúlio Vargas chega ao poder, como Chefe do Governo Provisório, em 1930, marcando o fim da República Velha, e fica no poder até 1945, elegendo-se novamente em 1951 como Presidente da República, cargo que ocupou até 1954. Implantando uma ditadura em 1930, Vargas modernizou o Brasil, que se tornou um estado autoritário e centralizado na figura do presidente. O “Pai dos Pobres”, como também é conhecido, é responsável pela Consolidação das Leis Trabalhistas (CLT), pela criação do BNDE (atual BNDES), a fundação e o desenvolvimento da Petrobrás, e também pela inserção do Brasil na Segunda Guerra Mundial. Vargas cometeu suicídio em 24 de agosto de 1954, no Palácio do Catete, no antigo Distrito Federal, no Rio de Janeiro. Vargas era conhecido pela sua eloquência e por seus discursos, considerados grandes ensinamentos políticos.Por isso, me proponho a analisar alguns discursos de Vargas na presidência, mais especificamente todos os discursos proferidos entre 1930 e 1937, 1939, 1941, 1944 e o discurso de posse de 1951. Para isso, utilizarei o pacote quanteda para o R, além do tidyverse. Os discursos podem ser obtidos aqui, no site da Biblioteca da Presidência.

O primeiro passo é carregar os pacotes que serão de fato utilizados, com o pacman:

pacman::p_load(
  tidyverse,
  quanteda,
  pdftools,
  stopwords,
  readtext,
  topicmodels,
  knitr,
  kableExtra)

Em seguida, vamos abrir os discursos. A função readtext permite importar as mais diversas extensões de texto de uma só vez, permitindo a criação de um corpus rapidamente.

vargas <- readtext(
  "Documents/vargas/*",
  docvarsfrom = "filenames",
  dvsep = "_",
  docvarnames = c("ano", "ordem")
)

O argumento docvarnames utiliza o nome do arquivo para adicionar variáveis ao banco. Como estruturei os discursos da seguinte maneira: ANO_ORDEM.pdf, utilizando o separador _, crio as variáveisano e ordem, representando o ano em que o discurso foi proferido e em qual posição ele está (naquele ano).

Isso fica bem claro abaixo:

head(vargas, 6)
## readtext object consisting of 6 documents and 2 docvars.
## # Description: df[,4] [6 × 4]
##   doc_id      text                  ano ordem
## * <chr>       <chr>               <int> <chr>
## 1 1930_01.pdf "\"Presidênci\"..."  1930 01   
## 2 1931_01.pdf "\"Presidênci\"..."  1931 01   
## 3 1931_02.pdf "\"Presidênci\"..."  1931 02   
## 4 1931_03.pdf "\"Presidênci\"..."  1931 03   
## 5 1931_04.pdf "\"Presidênci\"..."  1931 04   
## 6 1931_05.pdf "\"Presidênci\"..."  1931 05

Assim, temos um banco com documentos em pdf que guardam o discurso, o ano e a ordem do mesmo. Todavia, ele ainda não está em um formato próprio para nossa análise, devendo estar dentro do formato corpus. Além do mais, nosso arquivo em PDF guarda um problema comum à todos os PDFs: a hifenização. Um PDF é um arquivo pronto para imprimir, então o texto que está nele, quando selecionado, pode vir com alguns erros. O erro mais comum e que já corregiremos prontamente é o da hifenização. Supondo que em nossos arquivos exista a palavra república. Todavia, em alguns momentos, ela se encontra no fim da linha e não cabe na mesma. Por conta disso, ela é hifenizada, continuando na linha seguinte. Quando transposta para nosso banco de dados, é possível que apareçam as variações re- pública, repú- blica, repúbli- ca. Tudo isso será entendido pelo software como palavras diferentes, quando no fundo, são a mesma. Logo, antes de transformar em corpus, que é o conjunto de textos que iremos analisar, vamos corrigir esse erro usando o str_replace_all com regex. Em seguida, transformamos em corpus:

# Corrigindo hifenizações erradas, unindo palavras separadas
vargas$text <- str_replace_all(vargas$text, "-[\\s]+", "")

# Criando corpus
discursos_vargas <- corpus(vargas)

# Sumarizando os 10 primeiros documentos
summary(discursos_vargas, 10)
## Corpus consisting of 100 documents, showing 10 documents:
## 
##         Text Types Tokens Sentences  ano ordem
##  1930_01.pdf   826   1794        46 1930    01
##  1931_01.pdf  1054   2478        55 1931    01
##  1931_02.pdf  1304   3247        81 1931    02
##  1931_03.pdf  1948   5052       151 1931    03
##  1931_04.pdf   565   1185        22 1931    04
##  1931_05.pdf   970   2060        63 1931    05
##  1931_06.pdf  6806  29274       745 1931    06
##  1932_01.pdf  1793   4629       123 1932    01
##  1932_02.pdf  3103   9690       288 1932    02
##  1932_03.pdf   846   2048       107 1932    03
## 
## Source: /Users/mateuspestana/Documents/mateuspestana.github/content/post/* on x86_64 by mateuspestana
## Created: Sun Nov 10 20:59:06 2019
## Notes:

A saída do comando summary em um objeto de corpus apresenta os textos, a quantidade de caracteres (types),a quantidade de tokens e o número de frases de cada documento, além das variáveis que escolhemos anteriormente.

Agora, para fazermos uma análise de frequência de palavras, por exemplo, precisamos dividir nosso corpus em unidades, denominadas tokens, que podem ser caracteres, palavras, sentenças, parágrafos. No caso, o ideal para a análise que desejo fazer é dividir em palavras, ou n-gramas, pegando cada palavra individualmente. Retirarei pontos, números, separadores, símbolos e hífens. Depois disso, removerei palavras que nada representam e não auxiliam, denominadas stopwords, do pacote de mesmo nome: artigos, preposições, alguns verbos, etc. Além disso, removerei outras palavras, como art (de artigo, quando Vargas cita leis), à, às, é, assim, sobre, ainda, e algumas frases que pertencem ao cabeçalho do arquivo. Há também um problema, que às vezes a palavra república aparece como repdblica, um erro no OCR. Isso será corrigido.

palavras_vargas <- tokens(discursos_vargas,
    "word",
    remove_numbers = T,
    remove_symbols = T,
    remove_punct = T,
    remove_separators = T,
    remove_hyphens = F) %>% 
  tokens_remove(pattern = c(stopwords(language = "pt"), 
                            "á", "ás","é",
                            "ser","art", "assim",
                            "sobre", "ainda", "pêlo",
                            phrase(c("NOVA POLÍTICA DO BRASIL",
                                     "Presidência da República",
                                     "Casa Civil Secretaria de Administração",
                                     "Diretoria de Gestão de Pessoas Coordenação Geral de Documentação e Informação",
                                     "Coordenação de Biblioteca",
                                     "GOVERNO PROVISÓRIO",
                                     "decreto n",
                                     "A ATUALIDADE BRASILEIRA","DISCURSO PRONUNCIADO",
                                     "EST UNIDOS", 
                                     "TRABALHO INDÚSTRIA",
                                     "NEGÓCIOS INTERIORES", 
                                     "v exa", 
                                     "parágrafo único"))),
                padding = F) %>%
  tokens_replace(pattern = "darepdblica", "república")

Com isso, já podemos fazer uma análise da frequência de palavras nos discursos de Getúlio Vargas, podendo descobrir assim as palavras mais utilizadas por ele, dando uma pista sobre temas, termos e o que realmente era relevante (pelo uso). Antes de fazer a frequência, precisamos converter os tokens em uma document-feature matrix, que nada mais é que uma matriz de frequência de termos em documentos:

vargas_dfm <- dfm(palavras_vargas)

# Fazendo a estatística de frequência de palavras: top 15
textstat_frequency(vargas_dfm, n = 25) %>% 
  kable() %>% 
  kable_styling(bootstrap_options = c("condensed", "hover", "striped"), 
                full_width = F, position = "center")
feature frequency rank docfreq group
brasil 622 1 94 all
nacional 586 2 80 all
governo 584 3 85 all
país 552 4 84 all
todos 460 5 89 all
estado 421 6 70 all
trabalho 392 7 76 all
estados 361 8 47 all
grande 337 9 79 all
política 315 10 78 all
povo 292 11 82 all
federal 272 12 32 all
vida 258 13 77 all
nação 246 14 73 all
serviços 241 15 36 all
lei 240 16 44 all
revolução 228 17 41 all
maior 228 17 65 all
rio 225 19 45 all
todas 222 20 71 all
ordem 215 21 64 all
organização 209 22 56 all
produção 206 23 42 all
sempre 202 24 76 all
obra 199 25 70 all

Percebemos que, no nosso corpus, a palavra Brasil aparece 622 vezes em 94 dos 100 discursos. Depois dela, Nacional é utilizada 586 vezes, aparecendo em 80 documentos. Povo aparece na 11ª posição, sendo utilizada 292 vezes, aparecendo em 82 discursos, o que faz todo o sentido, a partir do que se sabe sobre Vargas.

Podemos fazer a mesma análise de frequência de palavras agrupando por ano, e pegando as 5 palavras mais usadas em cada ano:

textstat_frequency(vargas_dfm, group = "ano", n = 5) %>% 
    kable() %>% 
  kable_styling(bootstrap_options = c("condensed", "hover", "striped"), 
                full_width = F, position = "center")
feature frequency rank docfreq group
povo 7 1 1 1930
revolução 7 1 1 1930
brasileiro 6 3 1 1930
nacional 6 3 1 1930
país 5 5 1 1930
governo 101 1 6 1931
país 92 2 6 1931
todos 76 3 6 1931
brasil 76 3 6 1931
estado 58 5 6 1931
governo 96 1 6 1932
país 67 2 7 1932
revolução 63 3 6 1932
nacional 43 4 6 1932
política 40 5 7 1932
país 142 1 18 1933
trabalho 127 2 16 1933
brasil 115 3 19 1933
nacional 112 4 18 1933
governo 102 5 19 1933
nacional 113 1 9 1934
brasil 110 2 12 1934
creou 85 3 5 1934
ministério 66 4 5 1934
regulou 63 5 1 1934
brasil 51 1 12 1935
todos 36 2 10 1935
povo 32 3 11 1935
argentina 30 4 7 1935
país 23 5 11 1935
governo 33 1 7 1936
todos 29 2 7 1936
social 27 3 7 1936
brasil 24 4 7 1936
vida 23 5 6 1936
nacional 129 1 8 1937
estado 118 2 7 1937
federal 114 3 4 1937
lei 102 4 3 1937
presidente 98 5 2 1937
governo 82 1 8 1939
país 76 2 9 1939
grande 71 3 10 1939
estado 70 4 8 1939
municípios 66 5 3 1939
brasil 69 1 7 1941
presidente 41 2 4 1941
povo 33 3 7 1941
américa 31 4 5 1941
governo 28 5 7 1941
brasil 29 1 6 1944
guerra 26 2 6 1944
todos 22 3 6 1944
governo 18 4 5 1944
povo 18 4 7 1944
justiça 6 1 1 1951
eleitoral 5 2 1 1951
presidente 3 3 1 1951
república 2 4 1 1951
povo 2 4 1 1951

Fazendo uma nuvem de palavras (wordcloud) dos 200 termos mais utilizados por Vargas, temos:

textplot_wordcloud(vargas_dfm,
  random_order = FALSE,
  rotation = 0.25,
  max_words = 200,
  color = RColorBrewer::brewer.pal(8, "Dark2"))

A nuvem de palavras é simplesmente um recurso gráfico da tabela de frequência de palavras: o tamanho da palavra indica a quantidade de vezes que ela é utilizada, e é proporcional às outras ali presentes.

O Estado Novo inicia em 1937, com o fim do Governo Constitucionalista (1934-1937), e vai até 1945. Será que houve alguma mudança nas palavras utilizadas por Vargas no primeiro ano de cada período de governo, ou seja, em 1931, 1934 e 1937?

tokens_subset(palavras_vargas, ano %in% c(1931, 1934, 1937)) %>% 
  dfm(groups = "ano") %>% 
  textplot_wordcloud(max_words = 400, comparison = T,
                     color = RColorBrewer::brewer.pal(3, "Dark2")) 

O que percebemos acima é que Vargas varia um pouco nas palavras utilizadas nos primeiros anos de seus governos: em 1931, percebemos o uso de palavras como governo, toneladas, papel, ouro, despesa, econômica, classes, tesouro; já em 1934, com o início do Governo Constitucionalista e promulgação da Constituição de 1934, palavras como fazenda, ministério, comércio, marinha, brasil, obras, públicas, cinema, saúde, ferro, café, naval se fazem presentes; em 1937, durante o Estado Novo, Vargas utilizou mais as palavras presidente, federal, lei,c onstituição, república, estado, nacional, segurança, câmara, tribunal, poder.

O quanteda é excelente pois traz consigo um conjunto de funções facilitadas, tornando muito mais fácil o cálculo de algumas estatísticas e a plotagem de alguns gráficos. Um outro exemplo é o gráfico de co-ocorrência, em rede, que indica quais palavras costumam ocorrer no mesmo documento, ou na mesma frase, a depender de como se configura. Ao analisarmos a co-ocorrência de palavras nos discursos de Vargas, temos, através da função textplot_network:

dfm_trim(vargas_dfm,
           min_termfreq = 25,
           termfreq_type = "rank") %>% 
  textplot_network(edge_size = 0.6)+
  labs(title = "Co-ocorrência de termos:",
       subtitle = "Discursos de Getúlio Vargas",
       x = "",  y = "")+
  theme_minimal()
## Registered S3 method overwritten by 'network':
##   method            from    
##   summary.character quanteda

O gráfico acima nos permite perceber que, por exemplo, país, governo, nacional, brasil,e stado, federal, todos são palavras com um alto grau de co-ocorrência com todas as outras. Talvez seja mais interessante observar as palavras que não co-ocorrem entre si: povo e nação, por exemplo, ou poder, povo, ordem e obra.

Um outro exemplo interessante de análise é a presença de determinado termo ou termos ao longo do documento, e em que posição aparecem. Isso é oferecido pela função textplot_xray. Observando em quais discursos a palavra democracia (ou democratas, democrata, democrático, democrática, etc) aparece, e em que posições do documento:

textplot_xray(kwic(discursos_vargas,  "Democra*")) +
  labs(
    subtitle = "Plot de dispersão lexical",
    title = "Discursos de Getúlio Vargas:",
    x = "Index de Token",
    y = "Documento"
  )

Democracia só aparece em 1 discurso em 1932, em 1 em 1933, em 2 em 1934, em 2 em 1935, em 4 em 1936, em 2 em 1937, em 1 em 1939, em 3 em 1941 e em 1 em 1944, de um total de 100 discursos existentes.

Mas qual seria o contexto da palavra nos discursos?

kwic(discursos_vargas, "Democra*", window = 3)
##                                                                       
##       [1932_01.pdf, 104]     falsos pregoeiros da |    democracia    |
##      [1933_04.pdf, 1445]          a decadência da |    democracia    |
##     [1934_05.pdf, 12734]  direito patrimonial das |   democracias    |
##      [1934_14.pdf, 2900] estabeleceu a verdadeira |    democracia    |
##       [1935_04.pdf, 204]               e da vossa |    democracia    |
##        [1935_09.pdf, 40]                A base da |    democracia    |
##       [1935_09.pdf, 167]                a base da |    democracia    |
##       [1935_09.pdf, 208]     alicerces das nossas |   democracias    |
##      [1936_02.pdf, 1677]             Na luta pela |    democracia    |
##      [1936_04.pdf, 1453]            de defender a |    democracia    |
##        [1936_05.pdf, 86]             econômico- A |    democracia    |
##       [1936_05.pdf, 786]                  , que a |    democracia    |
##       [1936_05.pdf, 809]                   Mas, a |    democracia    |
##       [1936_05.pdf, 887]                . Ordem e |    democracia    |
##       [1936_07.pdf, 604]        cidadãos da maior |    democracia    |
##      [1937_01.pdf, 2298]            dos marcos da |    democracia    |
##       [1937_04.pdf, 874]          atravessamos, a |    democracia    |
##    [1939_05-02.pdf, 741]          passámos de uma |    democracia    |
##    [1939_05-02.pdf, 751]               , para uma |    democracia    |
##  [1939_05-02.pdf, 10753]              da forma de |    democracia    |
##       [1941_02.pdf, 538] instituímos a verdadeira |    democracia    |
##       [1941_04.pdf, 221]              regime, uma |    democracia    |
##      [1941_04.pdf, 2290]              regime, uma |    democracia    |
##      [1941_04.pdf, 2304]    convenções legais das |   democracias    |
##      [1941_04.pdf, 2331]               É mais uma |    democracia    |
##       [1941_05.pdf, 233]     - Característicos da |    democracia    |
##      [1941_05.pdf, 1546]                 Novo e a |    democracia    |
##      [1941_05.pdf, 1571]        conciliação com a |    democracia    |
##      [1941_05.pdf, 1693]        , instituímos uma |    democracia    |
##      [1941_05.pdf, 1769]                  , é uma |    democracia    |
##      [1941_05.pdf, 2124]           forma comum da |    democracia    |
##      [1944_04.pdf, 1924]           rep sentantes, | democraticamente |
##                            
##  e os reacionários         
##  liberal e individualista  
##  . Mas essa                
##  entre nós.                
##  , a cujo                  
##  , agora como              
##  , agora como              
##  ; e vós                   
##  , estacionamento significa
##  , entregam-na,            
##  é o regime                
##  é o regime                
##  , no sentido              
##  que significam disciplina 
##  do mundo,                 
##  ativa, em                 
##  de partidos,              
##  aparente, de              
##  real, isto                
##  renovada em que           
##  - do povo                 
##  - As assembléias          
##  , mesmo porque            
##  parlamentares, esse       
##  econômica que política    
##  brasileira- A             
##  Peço, em                  
##  , tal como                
##  realista e funcional      
##  , distanciada dos         
##  parlamentar: perde-se     
##  , dentro da

Percebe-se que a palavra democracia, em muitos dos casos acima, é utilizada em um contexto negativo.

Uma ferramenta muito útil é a de topic modeling, que permite o cálculo de termos relacionados que possam indicar um assunto em comum, ou tópicos. Será que é possível identificar tópicos recorrentes nos discursos de Getúlio Vargas?

LDA(convert(vargas_dfm, to = "topicmodels"), k = 5) %>% 
  get_terms(10)
##       Topic 1      Topic 2        Topic 3     Topic 4    Topic 5     
##  [1,] "nacional"   "federal"      "brasil"    "trabalho" "governo"   
##  [2,] "brasil"     "presidente"   "todos"     "país"     "país"      
##  [3,] "creou"      "estado"       "país"      "brasil"   "estados"   
##  [4,] "todos"      "nacional"     "povo"      "nacional" "nacional"  
##  [5,] "governo"    "lei"          "governo"   "governo"  "brasil"    
##  [6,] "obras"      "governo"      "nacional"  "todos"    "municípios"
##  [7,] "país"       "brasil"       "política"  "grande"   "todos"     
##  [8,] "ministério" "república"    "vida"      "produção" "ano"       
##  [9,] "regulou"    "constituição" "revolução" "estados"  "serviços"  
## [10,] "marinha"    "estados"      "estado"    "estado"   "grande"

Calculei 5 tópicos possíveis nos discursos de Vargas e, de cada um, selecionei as 10 palavras que pudessem representar cada tópico. Por conta de todos os discursos versarem, na maioria das vezes, sobre as mesmas coisas, com uma grande quantidade de palavras repetidas, fica difícil identificar tópicos diferentes. Todavia, se ignorarmos as palavras repetidas e focarmos nas únicas, podemos perceber alguns temas: estado e social, lei e presidente, nação e revolução, obras e serviços, povo e trabalho.

Por fim, o quanteda também apresenta a ferramenta de collocations, que é o cálculo de palavras que sempre andam juntas, em bi-gramas (ou seja, pares). Quais serão os termos correlacionados nos discursos de Getúlio? Para essa análise, precisamos fazer novamente os tokens adicionando a opção de padding = TRUE, para que os espaços vazios (de palavras removidas, como stopwords) não sejam ocupados pelas palavras seguintes.

tokens(discursos_vargas,
    "word",
    remove_numbers = T,
    remove_symbols = T,
    remove_punct = T,
    remove_separators = T,
    remove_hyphens = F) %>% 
  tokens_remove(padding = TRUE, pattern = c(stopwords(language = "pt"),
    "á","ás","é",
    "ser","art", "assim", "sobre", "ainda", "pêlo", phrase(c("NOVA POLÍTICA DO BRASIL",
        "Presidência da República",
        "Casa Civil Secretaria de Administração",
        "Diretoria de Gestão de Pessoas Coordenação Geral de Documentação e Informação",
        "Coordenação de Biblioteca",
        "GOVERNO PROVISÓRIO",
        "decreto n", "A ATUALIDADE BRASILEIRA", "DISCURSO PRONUNCIADO", "EST UNIDOS", "TRABALHO INDÚSTRIA","NEGÓCIOS INTERIORES", "v exa", "parágrafo único")))) %>%
  tokens_replace(pattern = "darepdblica", "república") %>% 
  textstat_collocations(size = 2) %>%
  arrange(-count) %>% 
  head(30) %>% 
  select(-count_nested, -length) %>% 
    kable(col.names = c("Collocation", "Contagem", "Lambda", "Z")) %>% 
  kable_styling(bootstrap_options = c("condensed", "hover", "striped"), 
                full_width = F, position = "center")
Collocation Contagem Lambda Z
rio grande 103 6.867325 44.74950
povo brasileiro 72 6.610044 39.27389
distrito federal 61 9.571776 19.40694
forças armadas 53 9.380326 28.12028
governo federal 50 4.562804 28.16317
território nacional 45 5.692736 28.60144
conselho federal 44 6.349829 31.69511
corrente ano 41 7.429903 31.54572
supremo tribunal 40 9.336357 29.19332
cada vez 38 6.833547 31.51479
economia nacional 35 4.705244 24.23756
poder público 31 6.341018 27.94773
tribunal federal 30 6.275515 26.51959
minas gerais 29 8.825316 28.07120
mil contos 27 8.063822 28.06710
departamento nacional 27 5.630691 22.34334
estados unidos 27 7.403115 20.81919
outro lado 25 7.587065 26.76968
neste momento 25 6.458526 25.89873
desde logo 23 7.395579 24.99029
dois países 23 6.144544 24.76178
três anos 23 6.274641 24.48758
aliança liberal 23 11.344625 18.27368
poder legislativo 22 8.096323 19.76891
conselho nacional 22 4.517130 19.00168
movimento revolucionário 21 6.944471 24.47747
ordem econômica 21 5.112253 21.14479
governo revolucionário 21 5.375488 19.80902
vida nacional 21 3.587376 15.64678
grande parte 20 4.612094 19.00633

Rio Grande, Povo Brasileiro, Distrito Federal e Forças Armadas são os bigramas mais utilizados por Getúlio Vargas. O primeiro é óbvio: se refere ao Rio Grande do Sul, terra de Getúlio Vargas; Povo Brasileiro era como ele iniciava os discursos, se dirigindo à nação; Distrito Federal se refere à capital; Forças Armadas mostra as relações de Getúlio com os militares, fruto da própria Revolução de 30.

Bom, por hoje é só! Quero agradecer aos insights dos amigos Helio Cannone e Weslley Dias, que possuem relevantes pesquisas sobre Vargas e entendem profundamente do assunto.

Qualquer dúvida, correção ou sugestão pode ser encaminhada para

Avatar
Mateus C. Pestana
Doutorando e Mestre em Ciência Política

Interessado em ciência de dados, ciência política, política russa e métodos de impressão 3d.

Relacionados