Hoje o site PollingData começou a
acompanhar as eleições Brasileiras de 2016. As dificuldades logísticas para
conseguir consolidar todas as pesquisas publicadas na mídia brasileira são
enormes. Muito maiores do que em 2014, ano que o site foi lançado, pois nesse
ano ocorrem mais de 5500 eleições municipais. Ou seja, temos que acompanhar
muito mais eleições do que as 28 eleições de 2014 (Presidente + 27
governadores). Nesse post vou contar como estávamos nos preparando para esse
ciclo eleitoral, e como acabamos tendo nossa vida tremenda facilitada pelo Blog do Fernando
Rodrigues (fomos salvos por ele, novamente!!!)
Como mencionado acima, a
dificuldade logística de coletar os dados em 2016 é muito maior do que foi 2014.
Já há alguns anos tenho uma ideia de como buscar essas pesquisas
automaticamente na internet, porém ainda não havia tentado implementá-la. Esse
ano senti que seria imprescindível fazer isso para manter o site atualizado.
O algoritmo básico é razoavelmente
simples, e depende essencialmente do registro das pesquisas. Em ano de eleição toda
pesquisa que for publicada na mídia têm que ser antes registrada no site
do TSE, e além disso, na divulgação da pesquisa é obrigatório incluir no
texto o número de identificação criado pelo TSE. Com essa combinação de
fatores, tenho uma lista atualizada com todas as pesquisas que têm potencial de
serem publicadas, e também tenho como buscá-las no Google usando o id do TSE.
Claro que existem muitos detalhes
complicados nesse algoritmo, entre eles como determinar quais sites encontrados
pelo Google de fato têm de fato o resultado da pesquisa desejada e como extrair
o resultado da pesquisa do texto do site. Lembrando que essas etapas são
complicadas ainda mais pela existência de simulações de segundo turno, pela
existência de voto estimulado e voto espontâneo, e por existirem inicialmente muitos
cenários com candidatos diferentes, visto que os candidatos que concorrerão as
eleições só serão definidos em Agosto.
A primeira dificuldade real que
encontrei foi o site do TSE. Ele foi desenvolvido de uma forma que torna
extremamente difícil para um programa extrair as informações necessárias do
site. Não vou entrar em detalhes aqui, porém existem sites que são feitos para facilitar
o acesso de computadores ao seu conteúdo, e outros que são desenhados pensando
apenas na interação com os humanos. O site do TSE foi desenvolvido apenas
pensando nos humanos. E para conseguir extrair automaticamente suas
informações, tive que utilizar um programa cuja finalidade original é testar
sites, para ver se estão funcionando corretamente. Por causa do objetivo desse
programa, ele têm vários efeitos colaterais negativos para automatizar a busca
de informações em um site. Apesar disso, consegui criar um programa que entra
no site do TSE, clica em todas as pesquisas e guarda os resultados.
Feito isso, o próximo passo foi
criar um programa que entra no Google e faz uma busca avançada, procurando pelo
número de registro da pesquisa e controlando alguns outros detalhes. Essa parte
é relativamente fácil, o difícil é decidir quais sites são os mais relevantes e
extrair a informação necessária de dentro do site. Para facilitar o
desenvolvimento, fiquei trabalhando apenas em extrair as informações de um site
em específico. Após conseguir extrair as informações desse site, resolvi testar
o algoritmo de extração nos outros hits do Google.
Foi nessa hora que tive uma grande (e boa!) surpresa. Um dos primeiros resultados que encontrei era do Blog do
Fernando Rodrigues. Foi ai que descobri que ele havia atualizado seu site para
incluir pesquisas de 2016. Como nesse blog existiam diversas pesquisas
consolidadas, resolvi parar de desenvolver o algoritmo de extração baseado no
site do TSE, e comecei a desenvolver um novo programa para extrair especificamente
as pesquisas do blog do Fernando Rodrigues. Após terminar o algoritmo de
extração do TSE, darei mais detalhes sobre ele num post futuro.
Apesar de inicialmente parecer
mais fácil ter um site com todas as pesquisas já consolidadas do que buscar
cada uma individualmente na net, tive mais um grande obstáculo: extrair as informações
automaticamente do Blog, pois as pesquisas de cada eleição estão localizadas
numa tabela dentro de um arquivo em pdf. Após pesquisar bastante, encontrei um
programa muito bom, chamado “tabula”.
Consegui executar esse programa de dentro do R (que é o programa que uso para
fazer o PollingData) e pronto – consegui de forma automática extrair os
resultados das pesquisas!
Depois de todo esse trabalho,
estava finalmente pronto para usar os dados da pesquisa e estimar os modelos de
previsão do PollingData. E adivinhem?
Mais uma dificuldade, pois com poucas pesquisas e muitos cenários com diferentes candidatos, o
modelo que eu tradicionalmente uso não conseguia rodar (missing data!!!). Mas para não cansar
demais quem está lendo esse post, deixo pra contar sobre as dificuldades de
modelagem em um outro post.
Finalizando, gostaria novamente de agradecer publicamente ao Fernando Rodrigues. Acho o trabalho que ele faz no seu blog espetacular,e além de tudo torna minha vida muito mais fácil! Sem falar que pelo site dele consigo pesquisas fora dos anos de eleição, como em 2015. Isso não seria possível com meu algoritmo pois ele depende do registro das pesquisas.
No comments:
Post a Comment