CENTRO UNIVERSITÁRIO DE JOÃO PESSOA - UNIPÊ PRÓ-REITORIA ACADÊMICA - PROAC CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

JOSÉ WILLIAM BARROS DA SILVA

ANÁLISE DE DADOS COLETADOS NO TWITTER SOBRE OS CANDIDATOS À PRESIDÊNCIA DO BRASIL NAS ELEIÇÕES DE 2018.

JOÃO PESSOA – PB

2018

JOSÉ WILLIAM BARROS DA SILVA

ANÁLISE DE DADOS COLETADOS NO TWITTER SOBRE OS CANDIDATOS À PRESIDÊNCIA DO BRASIL NAS ELEIÇÕES DE 2018.

Monografia apresentada ao Curso de Bacharelado em Ciência da Computação do Centro Universitário de João Pessoa - UNIPÊ, como pré-requisito para a obtenção do grau de Bacharel em Ciência da Computação, sob orientação do Prof. Ms. Fábio Falcão de França.

JOÃO PESSOA- PB

2018

S586a Silva, José William Barros da. Análise de dados coletados no Twitter sobre os candidatos à presidência do Brasil nas Eleições de 2018. / José William Barros da Silva. - João Pessoa, 2018. 43f.

Orientador (a): Prof. Me. Fábio Falcão de França. Monografia (Curso de Ciências da Computação) – Centro Universitário de João Pessoa – UNIPÊ.

1. Eleições. 2. Análise de Opinião. 3. Twitter. 4. Presidente. I. Título.

UNIPÊ / BC CDU - 657.372.2:004

JOSÉ WILLIAM BARROS DA SILVA

ANÁLISE DE DADOS COLETADOS NO TWITTER SOBRE OS CANDIDATOS À PRESIDÊNCIA DO BRASIL NAS ELEIÇÕES DE 2018.

Monografia apresentada ao Curso de Bacharelado em Ciência da Computação do Centro Universitário de João Pessoa - UNIPÊ, como pré-requisito para a obtenção do grau de Bacharel em Ciência da Computação, apreciada pela Banca Examinadora composta pelos seguintes membros:

Aprovada em ______/______/2018.

BANCA EXAMINADORA

______Prof. Me. Fábio Falcão de França (UNIPÊ)

______Prof. Me. Ricardo Roberto de Lima (UNIPÊ)

______Prof. Dr. Hilário Tomaz Alves de Oliveira (UNIPÊ)

A todos que contribuíram direta e indiretamente na realização deste estudo.

AGRADECIMENTOS

À Deus, por ter me guiado nos caminhos corretos durante minha jornada até este momento;

Aos meus pais, pela educação que me foi dada na infância.

À minha esposa e filho, pela motivação em me tornar alguém melhor.

Aos professores do Unipê, por todo conhecimento compartilhado, em especial ao meu orientador Fábio Falcão pela parceria neste último ano.

Aos meus amigos Bruno César, Felipe Ermeson, Gabriel Araújo e Matheus Araújo, a quem tive o prazer de conviver durante estes quatro anos de curso.

RESUMO

A adesão de usuários às redes sociais vem crescendo em meio à população mundial. Milhares de comentários, publicações e opiniões são postados nessas redes diariamente, o que gera um elevado número de dados. Extrair, classificar e analisar as opiniões contidas nestas redes sociais, auxiliam as mais diversas áreas em sua melhoria contínua, como por exemplo: analisar o quão uma marca é bem vista em determinado local, prever desastres econômicos e traçar meios de reduzir os impactos gerados por eles, como também avaliar a opinião da população brasileira a respeito de uma eleição. Este estudo pretende analisar as publicações da população brasileira postados no Twitter a respeito das Eleições de 2018 para Presidente do Brasil, usando- se como parâmetros, citações do nome de usuário dos candidatos , , Ciro Gomes e Geraldo Alckmin. Através desta análise, serão comparadas duas bases de dados elaborados em períodos distintos da campanha eleitoral, com o resultado do primeiro turno desta mesma eleição, levando em conta a polaridade contida nestas publicações com relação ao candidato citado. Estas informações serão extraídas das redes sociais através de recursos diretos e indiretos do próprio Twitter, em conjunto com bibliotecas disponibilizadas na linguagem Python e algoritmos de aprendizado de máquina, que foram treinados com uma base de dados previamente polarizada e disponibilizada de forma aberta pela Companhia de Tecnologia da Informação do Estado de Minas Gerais.

Palavras-Chave: Eleições. Análise de Opinião. Twitter. Presidente.

ABSTRACT

The accession of users to social networks has been growing among the world population. Thousands of comments, posts and opinions are posted on these networks daily, which generates a high number of data. To extract, classify and analyze the opinions contained in these social networks, they help the most diverse areas in their continuous improvement, for example: analyzing how well a brand is seen in a certain place, predicting economic disasters and outlining ways to reduce the impacts generated by them, as well as evaluate the opinion of the Brazilian population regarding an election. This study intends to analyze the publications of the Brazilian population posted on Twitter regarding the 2018 Elections for President of , using as parameters, quotes of the username of candidates Jair Bolsonaro, Fernando Haddad, Ciro Gomes and Geraldo Alckmin. Through this analysis, two databases will be compared in different periods of the electoral campaign, with the result of the first round of this same election, considering the polarity contained in these publications in concerning to the mentioned candidate. This information will be extracted from social networks through the direct and indirect resources of Twitter itself, together with libraries made available in the Python language and machine learning algorithms, which were trained with a database previously polarized and made available in an open way by the State of Minas Gerais Information Technology Company.

Keywords: Elections. Opinion Analysis. Twitter. President.

LISTA DE ILUSTRAÇÕES

Figura 1 – Exemplo de Árvore de Decisão...... 20

Figura 2 – Visão Geral da Solução ...... 25

Figura 3 – Twitter Developer Plataform...... 26

Figura 4 – Instalação da biblioteca Tweepy ...... 27

Figura 5 – Delimitadores de um tweet ...... 27

Figura 6 – Nuvem de tags da semana de 24 a 30 setembro de 2018 ...... 30

Figura 7 – Nuvem de tags da semana de 01 a 07 de outubro de 2018 ...... 30

Figura 8 – Percentual de tweets da semana de 24 a 30 ...... 31

Figura 9 – Percentual de tweets da semana de 01 a 07 ...... 32

Figura 10 – Percentual de tweets da semana de 24 a 30 sem tweets neutros ...... 32

Figura 11 – Percentual de tweets da semana de 01 a 07 sem tweets neutros ...... 32

Figura 12 – Percentual de tweets classificados como positivos de 24 a 30...... 35

Figura 13 – Percentual de tweets classificados como positivos de 01 a 07...... 35

Figura 14 – Percentual de tweets classificados como positivos de 24 a 07...... 36

Figura 15 – Resultado oficial do 1º turno das eleições para presidente ...... 36

LISTA DE QUADROS

Quadro 1 – Exemplos de Tweets Pré-Processados ...... 29

Quadro 2 – NLTK Tokenizer X TweetTokenizer ...... 33

LISTA DE ABREVIATURAS E SIGLAS

API – Application Programming Interface

CRISP-DM – Cross Industry Standard Process for Data Mining

CSV – Comma-separated values

HTML – Hyper Text Markup Language

IA – Inteligência Artificial

KDD – Knowledge-discovery in databases

MDP – Makrov Decision Process

NLTK – Natural Language Toolkit

PHP – Hypertext Preprocessor

TSE – Tribunal Superior Eleitoral

XML – eXtensible Markup Language

SUMÁRIO

1 INTRODUÇÃO ...... 11 1.1 RELEVÂNCIA DO ESTUDO ...... 11 1.2 OBJETIVO GERAL ...... 12 1.3 OBJETIVOS ESPECÍFICOS ...... 12 1.4 INDICAÇÃO DA METODOLOGIA ...... 12 1.5 ORGANIZAÇÃO DO TRABALHO ...... 13 1.6 TRABALHOS RELACIONADOS ...... 14 1.6.1 ANÁLISE DE SENTIMENTOS UTILIZANDO A IMPLEMENTAÇÃO DO ALGORITMO NAIVE BAYES DA BIBLIOTECA NLTK...... 14 1.6.2 ANÁLISE DOS SENTIMENTOS EXPRESSOS NA REDE SOCIAL TWITTER EM RELAÇÃO AOS FILMES INDICADOS AO OSCAR 2017 ...... 14 1.6.3 PREDIÇÃO DOS RESULTADOS DAS ELEIÇÕES 2014 PARA PRESIDENTE DO BRASIL USANDO DADOS DO TWITTER ...... 15 2 INTELIGÊNCIA ARTIFICAL E SUAS TECNOLOGIAS ...... 16 2.1 INTELIGÊNCIA ARTIFICAL ...... 16 2.2 APRENDIZADO DE MÁQUINA ...... 17 2.3 APRENDIZADO SUPERVISIONADO ...... 17 2.3.1 NAIVE BAYES ...... 18 2.3.2 ÁRVORES DE DECISÃO ...... 19 2.4 APRENDIZADO NÃO SUPERVISIONADO ...... 20 2.5 APRENDIZADO POR REFORÇO ...... 21 2.6 MINERAÇÃO DE DADOS ...... 22 2.6.1 WEB SCRAPING ...... 23 2.7 NATURAL LANGUAGE TOOLKIT (NLTK) ...... 24 3 ANÁLISE DE TWEETS SOBRE A ELEIÇÃO ...... 25 3.1 VISÃO GERAL DA SOLUÇÃO ...... 25 3.2 ARQUITETURA DE COLETA DE DADOS ...... 26 3.3 PRÉ-PROCESSAMEMTO DOS TWEETS ...... 28 3.4 PRIMEIRA ANÁLISE DOS TWEETS ...... 31 3.5 CLASSIFICAÇÃO DA POLARIDADE DOS TWEETS ...... 33 3.6 RESULTADOS DA CLASSIFICAÇÃO ...... 34 3.7 VALIDAÇÃO DOS RESULTADOS ...... 37 4 CONSIDERAÇÕES FINAIS ...... 39 REFERÊNCIAS ...... 41 APÊNDICE A – MÉTRICAS DE VALIDAÇÃO DO MODELO...... 42 11

1 INTRODUÇÃO

Com o aumento do uso de tecnologias como computadores, smartphones, tablets entre outros equipamentos eletrônicos, a população tornou-se cada vez mais conectada à rede mundial de computadores, gerando um elevado número de informação em formato digital, ou seja, milhares de dados circulando em tempo real no mundo todo. Através do uso de redes sociais, a população passou a ter um novo meio de expressar seus sentimentos a respeito de um determinado assunto, como por exemplo: torcer pelo seu time favorito, reclamar sobre situações que não os agradam, reivindicar seus direitos e, de certa forma, esta informação gera influência sob aqueles que as leem. Supondo-se uma eleição, onde a população expressa seus sentimentos sobre determinado candidato através de uma rede social. Opiniões positivas e negativas relacionadas a estes candidatos são postadas e compartilhadas diariamente por outros usuários. Entretanto, sem o devido tratamento, estas opiniões se tornam irrelevantes para um contexto geral, ou seja, são apenas opiniões e sentimentos expressos de forma individual. Porém, poderá ser possível reunir estes sentimentos, organizá-los e classifica-los em uma base de dados e com isso, avaliar estas opiniões?

1.1 RELEVÂNCIA DO ESTUDO

Segundo Amaral (2016), Big Data é um fenômeno normalmente associado a grandes quantidades de dados produzidos com volume, velocidade e variedade, levando também em consideração, sua veracidade e valor. Utilizando-se de técnicas de inteligência artificial, é possível extrair, classificar e analisar este elevado número de dados e, com isto, evitar possíveis imprevistos, analisar resultados futuros e traçar melhorias para redução de prejuízos. Classificar essa grande quantidade de dados de forma manual é uma tarefa um tanto complexa e que demanda bastante tempo. Através de algoritmos de aprendizado de máquina, é possível classificar este elevado número de dados de forma mais rápida e eficaz. Entretanto, utilizar apenas um desses classificadores não é suficiente para resultar em uma informação precisa, pois existem vantagens e desvantagens para cada método. De acordo com Pang e Lee (2008), descobrir o pensamento das pessoas sempre foi objeto de interesse. Com o aumento do uso das redes sociais e o número imenso de dados que por elas trafegam de forma subjetiva, passou-se a dar foco a como identificar a polaridade e classificar 12 a emoção contida nesses textos. O processo para realizar esta tarefa ficou conhecido como análise de sentimento. Este estudo pretende coletar dados do Twitter e avaliar a opinião da população brasileira nas Eleições de 2018 contidas nestes dados, ou seja, analisar as publicações dos eleitores expostas na rede social, classifica-las como positivas, negativas ou neutras, a fim de avaliar a polaridade positiva e compará-la com o resultado oficial da eleição.

1.2 OBJETIVO GERAL

Analisar as publicações da população brasileira no Twitter sobre as Eleições de 2018 para Presidente do Brasil, validá-los com o resultado do primeiro turno desta mesma eleição, a fim de encontrar possíveis associações com a frequência das citações aos candidatos escolhidos para este estudo.

1.3 OBJETIVOS ESPECÍFICOS

Ao decorrer do estudo, serão realizados os seguintes passos:  Coletar os tweets em dois períodos distintos;  Construir uma base de dados para cada período de captura;  Definir a polaridade de cada tweet com relação ao candidato citado;  Analisar o resultado obtido das duas bases de dados;  Validar o estudo com base nos resultados do primeiro turno das Eleições de 2018 para Presidente do Brasil.

1.4 INDICAÇÃO DA METODOLOGIA

O estudo consiste em um levantamento de dados de forma exploratória, por se tratar de uma busca relacionada a um tema determinado (ANDRADE, 2003), ou seja, as Eleições de 2018, e descritiva (CERVO; BERVIAN, 2005), pois através deste levantamento, pretende-se determinar a polaridade dos sentimentos expostos por essa população, em relação a determinados candidatos. Serão utilizados métodos de abordagens indutivos, pois induzem a um tema específico (ANDRADE, 2003), de forma que serão consideradas postagens relacionadas apenas aos candidatos escolhidos, ou seja: @jairbolsonaro, @cirogomes, 13

@Haddad_Fernando e @geraldoalckmin onde induzem a coleta de dados ao termo escolhido, e procedimentos estatísticos e comparativos (CERVO; BERVIAN, 2005), pois serão realizados métodos estatísticos para determinar o percentual de cada polaridade (sentimentos negativos, positivos e neutros) nestes tweets e serão analisados em dois períodos distintos. A população e amostragem se darão através de dados extraídos das postagens feitas por usuários do Twitter, resultando em uma amostragem intencional, pois será levada em consideração apenas as postagens relacionadas aos candidatos. Os dados compostos pelas publicações de usuários destas redes sociais, serão coletados através da biblioteca Tweepy utilizada no Python e armazenados em uma base de dados para avaliação da polaridade contida nestas publicações. Serão documentados de forma direta extensiva, com a análise das publicações dos usuários. A coleta de dados ocorrerá em dois pontos distintos da campanha eleitoral à presidência, sendo o primeiro período de 24 a 30 de setembro de 2018 e o segundo período de 01 a 07 de outubro do mesmo ano. Eles serão coletados através da biblioteca Tweepy, serão armazenados em uma base de dados e após a aplicação de técnicas classificatórias, como por exemplo o Naive Bayes, será realizada uma análise quantitativa a respeito das opiniões positivas, negativas e neutras a acerca dos candidatos e posteriormente comparados com os dados oficiais da eleição.

1.5 ORGANIZAÇÃO DO TRABALHO

Após esse capítulo introdutório, o conteúdo deste trabalho organiza-se da seguinte forma: • Capítulo 2 – INTELIGÊNCIA ARTIFICIAL E SUAS TECNOLOGIAS apresentará quais teorias e respectivos autores mais contribuíram para a realização do estudo e as bases teóricas para a realização deste trabalho; • Capítulo 3 – ANÁLISE DE TWEETS SOBRE A ELEIÇÃO apresentará o desenvolvimento da pesquisa juntamente com a solução proposta e sua aplicabilidade; • Capítulo 4 – CONSIDERAÇÕES FINAIS apresentará de forma conclusiva, respostas aos objetivos específicos propostos pelo trabalho, apresentando também limitações desta pesquisa e trabalhos futuros;

14

1.6 TRABALHOS RELACIONADOS

Devido à grande quantidade de dados e informações que podem ser extraídas das redes sociais, outros estudiosos se utilizaram destes meios para desenvolver trabalhos científicos relacionados à área. Em seguida serão apresentados trabalhos relacionados ao tema deste estudo.

1.6.1 Análise de sentimentos utilizando a implementação do algoritmo Naive Bayes da biblioteca NLTK.

Neste estudo de (CARAÇA, 2018), é utilizado o algoritmo Naive Bayes para solucionar problemas de classificação no campo de PLN (Processamento de Linguagem Natural). O estudo pretende implementar, treinar e validar um modelo de análise de sentimento, baseando-se na base de dados SAR14 e posteriormente aplica-lo em dados obtidos através de reviews de clientes em serviços de hospedagem e no serviço de transporte UBER. Caraça utiliza-se da linguagem de programação Python em conjunto com a biblioteca NLTK (Natural Language Toolkit) e outras bibliotecas que serão utilizadas para processar os dados, dentre elas o scikit-learn, numpy, pandas e wordcloud. É utilizado o idioma inglês, pois segundo o autor, a maioria de bases de dados já classificadas disponíveis encontra-se neste idioma. O autor conclui que o algoritmo de Naive Bayes avalia suficientemente bem os problemas de análise de sentimento, com exceção de quando avaliam textos contendo ironia ou sarcasmo e devido a isto, espera-se resultados falsos principalmente em textos de tom negativo.

1.6.2 Análise dos sentimentos expressos na rede social Twitter em relação aos filmes indicados ao Oscar 2017

Neste estudo de (CORRÊA, 2017), é realizada uma análise de sentimentos através de dados coletados do Twitter com relação aos filmes indicados à categoria de Melhor Filme do Oscar 2017. Diferentes abordagens para classificação dos dados foram estudadas e após avalia- 15 los, foi escolhido o Naive Bayes multinomial para esta tarefa. O autor também escolheu o idioma inglês para realizar o estudo. Corrêa conclui que este método é para realizar estas análises e que pode ser bastante provável predizer qual filme seria o vencedor do evento. Contudo, ele afirma que não foram encontradas associações matemáticas entre o resultado do Oscar 2017 e os resultados da análise. Corrêa também observou que as publicações eram mais a favor do filme que os usuários torciam, do que contra os filmes que eles não torciam, e que eventos desse porte, rendem uma grande quantidade de comentários.

1.6.3 Predição dos resultados das eleições 2014 para presidente do Brasil usando dados do

Twitter

Neste estudo de (ATTUX, 2017), foram coletados os dados de publicações do Twitter referente aos principais candidatos, considerando os dados de pesquisas eleitorais para esta escolha. Estes dados passaram por um pré-processamento e em seguida foram classificados de acordo com a polaridade contida em cada publicação, que poderia ser positiva, negativa ou neutra. O estudo pretende provar a eficácia destes métodos com resultados plausíveis, demonstrando o poder que estas redes sociais têm para comprovar o sentimento da população. Attux conclui que a quantidade de regiões do Brasil sem acesso à internet, impactam diretamente nos resultados das predições, pois não é possível realizar a análise dos dados dessas regiões pois usuários não utilizam a rede social. Ele exemplifica esta questão no Capítulo 4 do seu estudo. Ele conclui também que quanto maior a quantidade de usuários, melhores serão os resultados obtidos e por fim afirma que para esta área de pesquisa ainda há muito a ser desenvolvido e que é uma área bastante promissora.

16

2 INTELIGÊNCIA ARTIFICAL E SUAS TECNOLOGIAS

Neste capitulo serão apresentadas algumas definições sobre inteligência artificial, tais como aprendizado de máquina e algoritmos utilizados na classificação e agrupamento dos dados utilizados no aprendizado, como também explanará a mineração de dados e algoritmos que realizam está tarefa.

2.1 INTELIGÊNCIA ARTIFICAL

Segundo Russell e Norvig (2013), a Inteligência Artificial (IA) pode ser definida de quatro modos distintos: pensando como um humano, pensando racionalmente, agindo como os seres humanos e agindo racionalmente. O teste de Turing, projetado por Alan Turing em 1950 e exemplo da máquina de forma humana, foi desenvolvido para que houvesse uma definição operacional de inteligência que fosse satisfatória. O computador passava por um interrogatório realizado por um humano e o teste só seria satisfatório se o interrogador não consegui distinguir se as respostas eram vindas de um computador ou de um humano. Era um processo que exigia bastante trabalho, pois o computador precisaria ter: processamento de linguagem natural, representação de conhecimento, raciocínio automatizado e aprendizado de máquina. Para os mesmos autores, a IA pensando de forma humana implica primeiramente definir como os humanos pensam através de introspecção, experimentos psicológicos e observando o cérebro em ação através de imagens cerebrais. De posse dessas informações é possível expressar esta teoria como um programa de computador. Com o auxílio da ciência cognitiva, foram reunidas técnicas da psicologia e modelos computacionais para tentar construir teorias mais precisas a respeito do funcionamento da mente humana. A IA pensando racionalmente remete ao estudo da lógica, onde são usadas tradições logísticas dentro da IA, para desenvolver programas que criem sistemas inteligentes. De acordo com Russell e Norvig (2013), este enfrenta dois obstáculos: não é fácil trazer o conhecimento informal para a notação lógica e há uma enorme diferença entre resolver um problema teoricamente e resolvê-lo na prática, pois estes problemas podem esgotar os recursos computacionais de qualquer computador. Já para a IA agindo racionalmente, espera-se que o agente opere sob controle autônomo, agindo para alcançar o melhor resultado para um problema, ou o melhor resultado possível quando não se há certeza de que aquele resultado é o 17 melhor. Todos os processos realizados no teste de Turing, também remetem ao agente ter a capacidade de raciocínio, o que o permite tomar boas decisões.

2.2 APRENDIZADO DE MÁQUINA

Considera-se que um agente está aprendendo, quando ele consegue melhorar o desempenho em tarefas futuras de aprendizagem, após o mesmo realizar observações sobre o mundo. Qualquer componente de um agente pode ser melhorado utilizando-se do processo de aprendizagem a partir de dados inseridos em sua base de conhecimento, sendo levados em consideração quatro fatores primordiais: a escolha do componente a ser melhorado, o conhecimento que o agente já possui, que representação está sendo usada para os dados e para os componentes, qual tipo de feedback será utilizado no processo de aprendizagem (RUSSELL e NORVIG, 2013). Para Luger (2013), os algoritmos de aprendizado começam com diversos exemplos positivos e normalmente negativos de uma classe-alvo, com isso busca-se inferir um conhecimento prévio ao agente, possibilitando ao mesmo reconhecer ocorrências futuras desta classe. Russell e Norvig (2013) completa afirmando que existem três formas de feedback e que eles são responsáveis por determinar os principais tipos de aprendizagem: supervisionado, não supervisionado e por reforço.

2.3 APRENDIZADO SUPERVISIONADO

Conforme Russell e Norvig (2013) no aprendizado supervisionado, o agente recebe alguns exemplos de pares de entrada e saída, ou seja, um breve ensinamento do que ele deverá realizar automaticamente no futuro. Através destes dados, ele aprende uma função que realiza o mapeamento das entradas para as saídas. Tais entradas podem ser percepções, no qual a saída virá de um supervisor que diga “ligue” ou “desligue”, podem ser por imagens no qual na saída o supervisor dizendo “isto é um lápis”, entre outras formas de entrada. Russell e Norvig (2013) ainda afirmam que o processo de aprendizagem supervisionada inicia-se com a inserção de um conjunto de treinamento de N pares de exemplos de entrada e saída, ou seja, (x1, y1), (x2, y2), ... (xn, yn), onde para cada yj foi gerado por uma função 18 qualquer definida como y = f(x), para descobrir uma função h que esteja o mais próximo possível da função verdadeira f. Nos pares dados, à x e y pode ser atribuído qualquer valor, independentemente de ser números ou palavras. A função h é definida como uma hipótese. A precisão de uma hipótese é medida inserindo um conjunto distinto daquele que foi inserido como conjunto de treinamento. Quando a saída y carrega um conjunto finito de valores, diz-se que o problema da aprendizagem é uma classificação ou classificação binária ou booleana quando existirem apenas 2 valores de saída. Já quando os valores contidos em y for números o problema da aprendizagem é definido como uma regressão, onde espera-se encontrar um valor médio para y pois a probabilidade de achar o valor real deste número é zero (RUSSELL e NORVIG, 2013).

2.3.1 Naive Bayes

O Naive Bayes, algoritmo baseado na teoria de Thomas Bayes, considera a inexistência de dependência entre os dados obtidos. Constrói-se uma tabela de probabilidades avaliando o quanto o valor de cada dado contribuiu na classificação da instância em positiva ou negativa (AMARAL, 2016). Dito isto, Luger (2013) define o teorema de Bayes como o relacionamento da causa e efeito, e que compreendendo o efeito, pode-se descobrir a probabilidade de causas resultantes neste efeito. Russell e Norvig (2013) dizem que a aprendizagem bayesiana realiza o cálculo da probabilidade de cada hipótese, levando em consideração os dados, e faz previsões de acordo com ela. As previsões são realizadas fazendo uso de todas as hipóteses, realizando a ponderação de suas probabilidades e não apenas escolhendo a melhor hipótese. Este processo resulta em uma inferência probabilística. A previsão bayesiana geralmente concorda com a hipótese verdadeira e isto é uma característica desse tipo de aprendizagem. O processo para se chegar à equação de Bayes ou regra de Bayes, segundo Russell (2013), vem primeiramente da definição da regra do produto, ou seja:

푷(풂 ^ 풃) = 푷(풂 | 풃)푷(풃) Ou 푷(풂 ^ 풃) = 푷(풃 | 풂)푷(풂)

Deste modo, Russell e Norvig (2013) afirmam que é possível igualar os dois membros da direita e dividi-los por P(a), o que resulta na regra de Bayes: 19

퐏(퐚 | 풃)푷(풃) 푷 (풃 |풂)= 퐏(퐚)

Ainda o mesmo autor diz que para o caso mais geral de variáveis multivaloradas, a regra pode ser escrita em notação de P e que posteriormente poderá ser definida utilizando causa e efeito, ou seja:

퐏(퐗 | 풀)푷(풀) 푷 (풀 |푿)= 퐏(퐗)

퐏(퐞퐟퐞퐢퐭퐨 | 풄풂풖풔풂)푷(풄풂풖풔풂) 푷 (풄풂풖풔풂 | 풆풇풆풊풕풐)= 퐏(퐞퐟퐞퐢퐭퐨) onde, P(efeito | causa) quantifica a direção da causa e P(causa | efeito) implica na direção do diagnóstico.

2.3.2 Árvores de Decisão

Segundo Amaral (2016), as árvores de decisão estão relacionadas com as tarefas de classificação no processo de aprendizagem de máquina. Tais árvores constroem um modelo onde a árvore é composta por nodos, e são divididos em nodo raiz, nodos internos e nodos folha, onde é definida a classificação. Árvores de decisão utilizam algoritmos para definir qual atributos farão parte de um nodo, e como serão particionados. Este processo se dá através testes executados por uma expressão lógica. Em um atributo nominal, por exemplo, o teste será algo do tipo, se cor=preto, siga pelo nodo da direita, se ano=2018, siga pelo nodo da esquerda. Russell e Norvig (2013) afirmam que as árvores de decisão representam uma função que recebem valores de entrada e retornam apenas um valor como saída, denominado de decisão. São uma das formas mais simples de aprendizado de máquina, ainda sim, uma das mais bem- sucedidas. A sua decisão é alcançada através de uma sequência de testes, de modo que cada nó interno, corresponde a um teste dos valores de entrada e suas ramificações, os valores possíveis do atributo. Os nós-folha especificam os valores retornados pelas funções. Este método soa 20 mais natural aos seres humanos, pois boa parte dos manuais e tutorias estão organizados utilizando uma única árvore de decisão. A Figura 1 mostra um exemplo de árvore de decisão que indica se um cliente ao chegar em um restaurante, irá ou não esperar por uma mesa. Este exemplo leva em consideração diversos fatores para a tomada de decisão do indivíduo, ou seja, se existem cliente no restaurante escolhido, qual o tempo de espera e se existe alternativa caso o restaurante encontre-se cheio, se o indivíduo está ou não com muita fome, se existe algum lugar próximo para que o mesmo possa se alimentar, entre outras opções de escolha contidas na árvore. Nota-se que cada escolha predecessora é de extrema importância para as opções seguintes de escolha.

Figura 1 – Exemplo de Árvore de Decisão

Fonte: Russell e Norvig (2013).

2.4 APRENDIZADO NÃO SUPERVISIONADO

Considera-se que o aprendizado é não supervisionado, quando o agente aprende padrões de entrada sem que seja fornecido feedback algum de forma explícita, no qual sua principal tarefa é denominada de agrupamento (RUSSELL e NORVIG, 2013). Ainda conforme Russell e Norvig (2013), o agrupamento nada mais é que a percepção de grupos de exemplos de entrada que sejam significativamente úteis. Levando em consideração um agente meteorológico, um exemplo desta percepção se dá através do agente poder ao longo do tempo, criar um conceito de “dia ensolarado” e de “dia chuvoso” e assim, poder distingui-los sem nunca ter passado por um supervisor que lhe tenha passado exemplos deste tipo de entrada. O problema de distinguir várias categorias em uma coleção de objetos é denominado de formação não supervisionada de agrupamentos. O problema recebe este nome por não ser 21 fornecido nenhum rótulo de categoria ao agente. Levando em consideração um grupo composto por várias pessoas e que seja necessário classificar o gênero dessas pessoas. Certamente as opções serão masculinas e femininas, porém tais pessoas não possuem rótulos para que seja possível distingui-las. Neste caso, houve a necessidade de formar um agrupamento não supervisionado (LUGER, 2013). A formação de agrupamentos não supervisionados se dá através de dados e pressupõe- se que os dados são gerados a partir da distribuição de mistura P. Esta distribuição é composta por k componentes de forma que cada componente sozinho já é considerado uma distribuição, gerando uma amostra através da escolha de um ponto de dados que foi previamente gerado pela escolha de um determinado componente (RUSSELL e NORVIG, 2013).

2.5 APRENDIZADO POR REFORÇO

Russell e Norvig (2013) explanam que a aprendizagem por reforço acontece quando o agente aprende a partir de recompensas ou punições. Usando como exemplo um agente veicular, quando o mesmo recebe uma multa de trânsito por excesso de velocidade, dá a entender que algo não saiu como deveria. Quando este mesmo agente, ao detectar um pedestre dando sinal para atravessar a faixa, o mesmo reduz a velocidade do veículo e o coloca em inércia para que o pedestre possa atravessar em segurança. Ao final disto o agente recebe uma resposta positiva a esta ação e então percebe que fez a coisa certa. Diante destas informações, cabe ao agente avaliar quais ações passadas, que ocorreram antes do reforço, foram responsáveis por ocasionar um reforço positivo ou negativo. Diferente dos demais aprendizados, no aprendizado por esforço não se tem conhecimento prévio do ambiente e da função de recompensa. Supondo-se um novo jogo onde não se conhece as regras e que ao realizar um movimento qualquer neste jogo, ele bate em um fio de eletricidade e recebe a mensagem que perdeu. Trata-se de um aprendizado por reforço, e na próxima vez que o jogador passar pelo mesmo ponto não baterá neste mesmo fio de eletricidade (RUSSELL e NORVIG, 2013). Russell e Norvig (2013) ainda afirmam que é considerável que o aprendizado por esforço abrange toda a IA, ou seja, o agente é posto em um ambiente qualquer e tem que aprender a se comportar neste ambiente de maneira satisfatória. Porém se o agente não tem conhecimento do ambiente e não sabe que ações tomar, onde os resultados de suas ações serão probabilidades, o agente irá interagir com um MDP (Markov Decision Process). 22

2.6 MINERAÇÃO DE DADOS

Amaral (2016) diz que a mineração de dados envolve uma série de processos que vão de compreender o negócio até a implementação do mesmo. Os dois principais padrões de mineração mais conhecidos quando se trata de mineração de dados são o CRISP-DM e o KDD. O CRISP-DM é um acrônimo para Cross Industry Standard Process for Data Mining, podendo ser traduzido como Processo Padrão Genérico para Mineração de Dados. Este padrão envolve seis fases de processo, sendo elas o entendimento do negócio, entendimento dos dados, preparação dos dados, modelagem, avaliação e implementação (AMARAL, 2016). Conforme Amaral (2016), na etapa de entendimento do negócio, ocorre a compreensão das características do negócio em que a mineração de dados será implementada. Esta etapa é de extrema importância para o sucesso da implementação. Na etapa de entendimento dos dados, os dados são avaliados conforme sua estrutura, relacionamento, qualidade, quantidade e acesso. Na etapa de preparação dos dados, para que os algoritmos de aprendizado de máquina funcionem, requer-se dados organizados e é nesta etapa que ocorre o processo de discretização de dados. Na modelagem, o aprendizado de máquina cria um modelo que será utilizado para classificar novas instâncias e posteriormente terá seu desempenho avaliado na etapa de avaliação. Por fim, na etapa de implementação o processo de mineração de dados é implantado no negócio. Amaral ainda afirma que o KDD1 é acrônimo para Knowledge-discovery in databases, ou seja, descoberta de conhecimento em banco de dados. O KDD é dividido em 5 fases e são elas o entendimento do negócio, o pré-processamento no qual se equivale ao entendimento de dados do CRISP-DM, a transformação que equivale à preparação dos dados no CRISP-DM, a mineração de dados compreendendo a modelagem no CRISP-DM, e a interpretação e avaliação que se equivalem aos processos de avaliação e implementação do CRISP-DM. Na subseção abaixo, será apresentado o Web Scraping, exemplo de técnica de mineração de dados, ou ‘raspagem’, contidos em páginas desenvolvidas na linguagem HTML.

1 Informações sobre o KDD em http://www.revistaespacios.com/a16v37n06/16370624.html. 23

2.6.1 Web Scraping

Para Silva e Meireles (2015), analisar páginas web demanda muito tempo. Supondo-se que se deseja analisar as páginas relacionadas com política de um jornal eletrônico qualquer, como por exemplo a Folha de São Paulo, e que neste jornal existam 10 mil páginas relacionadas a este tema. Será necessário armazenar toda esta informação em um banco de dados, ou seja, serão 10 mil aberturas de páginas, 10 mil cópias de conteúdo, 10 mil colagens de conteúdo no software que realizará a armazenagem dos dados e por fim 10 mil fechamentos de página. Resumindo, será necessário no mínimo 50 mil operações apenas para se montar o banco de dados para futuramente ser analisado e sem nenhum tratamento para estes dados. Ainda conforme Silva e Meireles (2015), na busca de uma solução para este problema, foi desenvolvido um método para automatizar este processo de coleta, denominado de Web Scraping. O Web Scraping nada mais é que um agrupamento de técnicas para mineração de páginas web, ou seja, formas de extrair dados de páginas da internet, disponibilizados através de páginas HTML (Hyper Text Markup Language) e XML (eXtensible Markup Language). Para utilizar o Web Scraping, é indispensável o uso de uma linguagem que leia o conteúdo de outras linguagens como por exemplo o PHP, o Java, o Python, entre outras. Dentre as principais vantagens desse método de coleta de dados estão: o fato de ser um meio não-invasivo, os alvos observados não sofrem influência por métodos relacionados com a coleta de dados e evita a parcialidade dos dados coletados. Além destes três pontos importantes para evitar a influência do pesquisador na coleta de dados, ainda existe outros pontos importantes como a diminuição ou até mesmo a eliminação de erros ocasionados pelo homem através de imputações e um aumento significativo na replicabilidade do estudo (SILVA; MEIRELES, 2015). No próximo capítulo, serão apresentados os processos realizados para a realização da coleta de dados, bem como API’s e algoritmos para realizar este processo, o pré-processamento destes dados coletados e a análise de sentimento das postagens e comentários obtidos por esta coleta através de aprendizado de máquina.

24

2.7 NATURAL LANGUAGE TOOLKIT (NLTK)

Segundo Russell e Norvig (2013), a linguagem é o que separa o homem das demais espécies existentes no globo terrestre. A capacidade de fala, desenvolvida em torno de 100.000 anos atrás, e capacidade de escrita por volta dos 7.000 anos atrás, deram ao homem capacidade de se comunicar. Existem dois motivos para querer que um agente processe linguagem natural, o primeiro, para que haja comunicação com os humanos e o segundo, para obter informação a partir da linguagem escrita. O NLTK2 ou Natural Language Toolkit, é uma biblioteca desenvolvida para a linguagem de programação Python e tem como sua principal função, atender aos motivos relacionados anteriormente por Russell e Norvig (2013), ou seja, o Processamento de Linguagem Natural (PLN). Foi desenvolvido no ano de 2001 como parte da disciplina de linguística computacional no Departamento de Computação e Ciência da Informação da Universidade da Pensilvânia e recebe contribuição de dezenas de pessoas desde então. Dentre os principais módulos do NLTK, pode-se listar o nltk.corpus, que é a interface padrão para córpora e léxicos; o nltk.tokenize e nltk.stem, responsáveis por tokenização e stemmers de termos, que segundo Corrêa (2017), stemming é o processo de reduzir um termo ao seu radical, ou seja, as palavras “computação”, “computador” e “computado”, após o processo de stemming, resultariam em seu radical “comput”; o nltk.classify e nltk.cluster responsáveis por processos de classificação e agrupamento utilizando algoritmos de inteligência artificial, tais como árvores de decisão, k-means e Naive Bayes; o nltk.chunk, responsável pelo processamento de expressões regulares, n-grama e named-entity; entre outros módulos disponíveis. Em conjunto com a biblioteca NLTK, são recomendadas a utilização de outras bibliotecas como a Numpy, utilizada para a computação científica, e a Matplotlib, utilizada na geração de gráficos 2D para uma melhor visualização dos resultados obtidos através do PLN. Outros módulos do NLTK serão abordados no Capítulo 3 deste estudo, onde ocorrerão etapas de pré-processamento dos textos coletados das publicações no Twitter, que utilizarão Processamento de Linguagem Natural para execução de tal tarefa.

2 Documentação completa em http://www.nltk.org. 25

3 ANÁLISE DE TWEETS SOBRE A ELEIÇÃO

Uma das abordagens realizadas atualmente, é o uso de métricas objetivas para análise de comportamento, como por exemplo, o que é usado na Psicometria, que segundo Pasquali (2009, apud HEIKI, 2018), é o campo científico da Psicologia que busca construir e mesurar variáveis de ordem psicológica através de análises estatísticas e refinamento matemático. Entretanto, este estudo utilizou-se apenas de algumas métricas, podendo ser expandido em trabalho futuros. Como visto no capítulo anterior, a coleta de dados é um dos processos a ser realizado na mineração de dados, vindo logo após ao entendimento do negócio, processo este representado pelo entendimento do problema, ou seja, analisar a polaridade contida nos tweets relacionados aos candidatos à presidência do Brasil nas Eleições de 2018. Nas seções seguintes, serão apresentados os algoritmos utilizados para a obtenção destes dados, ou seja, os tweets sobre os candidatos, desenvolvidos em Python e o pré-processamento destes dados.

3.1 VISÃO GERAL DA SOLUÇÃO

A solução consiste na coleta de dados através de API’s utilizadas em algoritmos desenvolvidos em Python. Após a coleta dos dados, é realizado o pré-processamento nos mesmos para eliminar dados que não sejam relevantes para o estudo e em seguida, os dados são persistidos e posteriormente classificados por algoritmos de classificação e desta forma avaliada a polaridade do tweet em positivo, negativo ou neutro. A Figura 2 mostra o fluxograma da solução desde a coleta de dados, até o sentimento classificado.

Figura 2 – Visão Geral da Solução

Fonte: Elaborada pelo Autor (2018). 26

Concluído este processo, é possível avaliar, de forma clara, qual a polaridade contida nos tweets da população brasileira com relação aos candidatos citados nos mesmos.

3.2 ARQUITETURA DE COLETA DE DADOS

O processo de coleta de dados se dará através da biblioteca Tweepy, onde primeiramente é preciso gerar um token de acesso e uma consumer_key no Twitter Developer Plataform para ter acesso externo às aplicações do Twitter, que será utilizado juntamente com o algoritmo desenvolvido em Python. Para gerar o token de acesso, é necessário primeiramente, realizar o cadastro como desenvolvedor nesta plataforma, gerar um aplicativo fictício para ter acesso ao tweets e posteriormente, permitir que a biblioteca se utilize desta conta para extrair as informações pertinentes a este estudo, ou seja, os tweets. Na Figura 3, é possível ver a página inicial da plataforma e o token de acesso e consumer_key que será utilizado para acessar os tweets da rede social através do algoritmo.

Figura 3 – Twitter Developer Plataform

Fonte: Twitter Developer Plataform3 (2018).

3 Disponível em: < https://developer.twitter.com> Acesso em out. 2018. 27

Após a obtenção do token, será possível utilizar a biblioteca Tweepy no python, mas antes disso deverá ser instalada esta biblioteca utilizando o comando pip, responsável por gerenciar pacotes python. A instalação pode ser feita utilizando o comando apresentado na Figura 4.

Figura 4 – Instalação da biblioteca Tweepy

Fonte: Elaborado pelo Autor (2018).

Após a instalação da biblioteca Tweepy, é possível utilizá-la através da linguagem Python, utilizando o comando import tweepy para realizar a importação da biblioteca. O código utilizado neste estudo realiza a captura dos tweets relacionados aos nomes de usuário dos candidatos no Twitter, sendo eles @jairbolsonaro, @Haddad_Fernado, @cirogomes e @geraldoalckmin. Quando executada a captura de um tweet através da biblioteca Tweepy, o conteúdo originado possui diversos delimitadores, mas que para o estudo serão considerados apenas os delimitadores id_str, created_at, screen_name e text conforme apresentado na Figura 5.

Figura 5 – Delimitadores de um tweet

Fonte: Elaborado pelo Autor (2018).

Deste modo, é possível criar a base de dados composta pelos tweets de acordo com os usuários dos candidatos informados no algoritmo, exportando as informações coletadas para um arquivo ou banco de dados. 28

3.3 PRÉ-PROCESSAMEMTO DOS TWEETS

Após realização da coleta dos tweets, os dados foram armazenados em um arquivo csv e posteriormente importados em um dataframe utilizando a biblioteca pandas do python. Através da biblioteca pandas, foi possível manipular estes dados a fim de realizar nos mesmos o pré-processamento. De princípio, foi realizada a identificação do candidato referenciado no tweet em questão, ou seja, foi criada a coluna id_candidato e nos tweets que fossem encontradas referências ao usuário do candidato, o algoritmo inseria o número de campanha do candidato na linha correspondente ao tweet. Desse modo o id_candidato contém os números “12” para Ciro Gomes, “13” para Fernando Haddad, “17” para Jair Bolsonaro, “45” para Geraldo Alckmin e “0” para quando não for detectada menção a nenhum dos quatro candidatos. Além da coluna id_candidato, foi criada a coluna esq_dir e após a definição do id do candidato citado no tweet, foi inserida nas linhas desta coluna a orientação do partido do candidato citado, ficando “1” para partido de esquerda, “2” para partido de centro, “3” para partido de direita e “0” para quando não for detectada menção a nenhum dos candidatos abordados neste estudo. Na coluna porc_ultima_votacao, foi inserida a votação do candidato ou partido no primeiro turno das eleições de 2014, resultando na inserção de 41.59% para os tweets relacionados à Fernando Haddad onde este valor foi o percentual de votos obtidos pela candidata do mesmo partido Dilma Rousseff, a inserção de 33.55% para os tweets relacionados à Geraldo Alckmin onde este valor foi o percentual de votos obtidos pelo candidato do mesmo partido Aécio Neves, a inserção de 0% para os tweets relacionado a Ciro Gomes e Jair Bolsonaro pois os mesmos não tiveram representação partidária e nem foram candidatos à presidência nas Eleições de 2014. O tweet capturado, em sua maior parte, é composto por dados que podem ser considerados irrelevantes para o estudo, ou seja, links, pontuações, palavras que não tem valor científico, entre outros. Para remover estes dados indesejados, foi realizado o pré- processamento dos mesmos, onde neste pré-processamento, foi removido os links contidos nos tweets que eram usados para redirecionar para alguma notícia ou complemento àquele tweet, foi removido as pontuações, pois estas diferenciavam palavras iguais como por exemplo “agora” e “agora!” são a mesma palavra mas consideradas distintas devido a pontuação, e foi 29 removida as palavras consideradas stopwords da língua portuguesa, ou seja, “de”, “da”, “o”, “a”, “que”, “com”, entre outras palavras que não agregam valor a classificação. Para a remoção das stopwords, foi utilizada a base de stopwords contidas na biblioteca NLTK (Natural Language Toolkit) utilizada no python e através do algoritmo foi percorrido tweet a tweet e executada esta remoção. O Quadro 1, demonstra exemplos de tweets sem a realização do pré-processamento e após a realização do pré-processamento.

Quadro 1 – Exemplos de Tweets Pré-Processados ANTES DO PRÉ-PROCESSAMENTO APÓS O PRÉ-PROCESSAMENTO @luciano_hang: reunião agora a noite @luciano_hang reunião agora noite com empresários de brusque, sc, todos empresários brusque sc todos trabalhando a favor do brasil e juntos trabalhando favor brasil juntos com o @jairbolsonaro @jairbolsonaro

@jairbolsonaro depois de tudo que a @jairbolsonaro tudo lava jato mostrou lava jato mostrou o partido do partido condenado ter intenção votos condenado ter esta intenção de votos assustador assustador https://t.co/xyxtmdyotd

@wadih_damous: um lindo cenário, com @wadih_damous lindo cenário @haddad_fernando e @dilmabr, no @haddad_fernando @dilmabr início início da construção de um @obrasilfeliz construção @obrasilfeliz novo de novo, reconstruindo a n reconstruindo

Fonte: Elaborado pelo Autor (2018).

Após realizar o pré-processamento, a frase resultante do tweet original foi inserida em outra coluna de nome tweet_stop para posteriormente ser usada na geração de uma nuvem de tags apenas com os termos que realmente tem valor científico. No entanto, para avaliar a polaridade do tweet, não será realizado a remoção das stopwords contidas neste tweet, pois afeta diretamente o sentido da frase, ou seja, para a frase “Eu não gostei desse celular.”, a frase resultante da remoção das stopwords resultaria na frase “gostei desse celular”, o que mudaria totalmente a polaridade da frase que anteriormente era negativa, passando a ser positiva, o que tornaria impreciso o resultado deste estudo. A nuvem de tags é uma representação visual da quantidade de vezes que um termo se repete em determinado texto, ou seja, para a frase “Este carro é bonito, porém aquele outro carro é melhor” as palavras que estariam em evidência na nuvem de tags seriam “carro” e “é” e por isso é importante a remoção das stopwords, pois sem esta remoção, palavras como “de”, 30

“da”, “o”, “a”, “que”, “com”, apareceriam em evidência na nuvem, gerando poluição visual na imagem. Foram geradas duas nuvens de tags, uma para a semana de 24 à 30 de setembro de 2018 e outra para a semana de 01 à 07 outubro do mesmo ano. Para gerar a nuvem de tags, foi utilizada a biblioteca WordCloud e matplotlib.pyplot, novamente em python, e as Figuras 6 e 7 apresentam o resultado gerado pelo algoritmo através das palavras contidas nos tweets de ambas as semanas.

Figura 6 – Nuvem de tags da semana de 24 a 30 setembro de 2018.

Fonte: Elaborado pelo Autor (2018).

Figura 7 – Nuvem de tags da semana de 01 a 07 de outubro de 2018.

Fonte: Elaborado pelo Autor (2018). 31

Nota-se que na semana de 24 a 30 de setembro, os termos em evidência em ordem decrescente foram “jairbolsonaro”, “geraldoalckmin”, “haddad_fernando” e “cirogomes” e que para a semana de 01 a 07 de outubro, foram “jairbolsonaro”, “cirogomes”, “haddad_fernando” e “geraldoalckmin”.

3.4 PRIMEIRA ANÁLISE DOS TWEETS

Após a detecção dos candidatos mencionados em cada tweet, é possível gerar uma análise prévia destes dados, sem levar em consideração a polaridade contida nos tweets, esta análise será apresentada nos parágrafos seguintes. Para a semana de 24 a 30 de setembro, foram coletados 13315 tweets e de acordo com os valores obtidos da coluna id_candidato, o número de tweets relacionados a cada candidato foi de 6446 tweets para Jair Bolsonaro, 2007 tweets para Geraldo Alckmin, 1210 tweets para Fernando Haddad, 1079 tweets para Ciro Gomes e 2573 tweets neutros, pois a biblioteca tweepy extrai alguns tweets que não contém a palavra-chave designada no algoritmo e para a semana de 01 a 07 de outubro, foram coletados 21072 tweets, sendo o número de tweets relacionados a cada candidato de 9440 tweets para Jair Bolsonaro, 4634 tweets para Ciro Gomes, 2614 tweets para Fernando Haddad, 838 tweets para Geraldo Alckmin e 3556 tweets neutros, ou seja, sem menção a nenhum dos candidatos. As Figuras 8 e 9 demonstram os dados anteriores.

Figura 8 – Percentual de tweets da semana de 24 a 30.

PERCENTUAL DE TWEETS DE 24 A 30

TWEETS PORCENTAGEM 48,41%

6446 19,32% 15,07% 9,09% 8,10% 2007 2573 1210 1079

BOLSONAROGERALDOHADDADCIRONEUTRO

Fonte: Elaborado pelo Autor (2018). Figura 9 – Percentual de tweets da semana de 01 a 07. 32

PERCENTUAL DE TWEETS DE 01 A 07

TWEETS PORCENTAGEM 44,80%

21,99% 9440 12,41% 16,83% 3,98% 4634 2614 3546 838 JAIR GERALDO FERNANDO CIRO GOMES NEUTRO BOLSONARO ALCKMIN HADDAD

Fonte: Elaborado pelo Autor (2018).

Eliminando os valores contidos em neutro, obtemos a porcentagem real de tweets para cada candidato. As Figuras 10 e 11 demonstram esse resultado.

Figura 10 – Percentual de tweets da semana de 24 a 30 sem tweets neutros.

PERCENTUAL DE TWEETS DE 24 A 30

TWEETS PORCENTAGEM

60,01%

18,68% 6446 11,26% 10,04% 2007 1210 1079 BOLSONAROGERALDOHADDADCIRO

Fonte: Elaborado pelo Autor (2018).

Figura 11 – Percentual de tweets da semana de 01 a 07 sem tweets neutros.

PERCENTUAL DE TWEETS DE 01 A 07

TWEETS PORCENTAGEM 53,86% 4,78% 14,91% 26,44% 9440 838 2614 4634 JAIR GERALDO FERNANDO CIRO GOMES BOLSONARO ALCKMIN HADDAD

Fonte: Elaborado pelo Autor (2018). 33

3.5 CLASSIFICAÇÃO DA POLARIDADE DOS TWEETS

Após a realização do pré-processamento dos dados, será realizada a classificação dos tweets em positivo, negativo ou neutro, através de algoritmo de aprendizado de máquina supervisionado e posteriormente uma nova análise destes dados levando em consideração a polaridade obtida para cada tweet. Para realização desta etapa, foi utilizado a biblioteca scikit-learn, que é utilizada em tarefas de aprendizado de máquina, de código aberto e utilizada em python. A scikit-learn possui um conjunto de bibliotecas nas quais foram utilizadas neste estudo a nltk.tokenize para a tokenização dos tweets, a feature_extraction.text para a vetorização em frequência das palavras usadas no treinamento, o algoritmo Naive Bayes para o aprendizado supervisionado e a model_selection para realização de validação cruzada. O Naive Bayes foi treinado utilizando uma base de dados disponibilizada pela PRODEMGE (Companhia de Tecnologia da Informação do Estado de Minas Gerais) ao site Minerando Dados, e é composta por 8199 tweets relacionados ao governo do próprio estado, nos quais 2453 tweets são classificados como neutros, 3300 como positivos e 2446 como negativos. Esta base de dados foi importada através da biblioteca pandas e em seguida foi realizado o pré-processamento dos dados da mesma forma que foi realizado com os dados coletados para este estudo. Detalhes desta base de treinamento e validações do modelo, estão disponíveis no Apêndice A. Para a realização da tokenização dos tweets, foi utilizado uma classe da nltk.tokenize que foi projetada para extrair tokens exclusivamente do Twiter, esta classe é chamada de TweetTokenizer e o diferencial dela em relação ao tokenizador padrão do NLTK é que caracteres como “@”, “#”, “:”, “)”, são considerados tokens isolados no tokenizador padrão, enquanto para o TweetTokenizer, palavras precedidas de “@” ou “#” como por exemplo “@williamsilva” são considerados um token único e não dois tokens conforme a tokenização padrão. O Quadro 2 exemplifica os tokenizadores para o tweet “@jairbolsonaro #presidente”.

Quadro 2 – NLTK Tokenizer X TweetTokenizer Tokenizador Padrão TweetTokenizer ['@', ['@jairbolsonaro', 'jairbolsonaro', '#presidente'] '#', 'presidente'] Fonte: Elaborado pelo Autor (2018). 34

Para que o algoritmo Naive Bayes seja treinado, é necessário primeiramente vetorizar os tweets e transformá-los em uma matriz, onde cada token desses tweets torna-se uma coluna dessa matriz e as linhas são formadas pela frequência de cada token no tweet. A classe responsável pela vetorização é chamada de CounterVectorizer, e são passadas como parâmetro para esta classe o tipo de analisador, que foi definido como “word” (palavra) e o tipo de tokenizador, que para este estudo é o TweetTokenizer, e posteriormente armazenados em uma instancia. Em seguida, é gerada a matriz de frequência utilizando a instancia gerada anteriormente e passando como parâmetro para esta instancia os tweets, resultando na matriz. De posse dos dados vetorizados, agora é possível gerar o modelo e executar o treinamento do Naive Bayes, passando como parâmetro para a classe MultinomialNB da biblioteca sklearn.naive_bayes a matriz gerada pelo vetorizador e as classes de cada tweet da base de treinamento. Com o modelo treinado, é possível realizar a classificação dos dados coletados para este estudo e posteriormente analisar seus resultados. Para a classificação dos tweets coletados para este estudo, os mesmos foram primeiramente transformados em uma matriz vetorial, com a utilização do CounterVectorizer, e em seguida foi utilizada o método predict do modelo criado anteriormente, recebendo como parâmetro a matriz gerada a partir dos tweets coletados, resultando na classificação de cada tweet pelo Naive Bayes. Em seguida, serão apresentados os resultados obtidos pela classificação realizada pelo Naive Bayes e estes serão comparados entre as duas semanas de coleta e posteriormente validá- los com o resultado real do primeiro turno da eleição.

3.6 RESULTADOS DA CLASSIFICAÇÃO

Ao realizar a classificação dos tweets coletados para este estudo, foi observado que para a semana de 24 a 30 de setembro, 1780 tweets foram classificados como positivos, sendo 593 para Jair Bolsonaro, 213 para Fernando Haddad, 174 para Ciro Gomes, 336 para Geraldo Alckmin e 464 para tweets sem menção a nenhum candidato; 3342 tweets foram classificados como negativos, sendo 2620 para Jair Bolsonaro, 127 para Fernando Haddad, 117 para Ciro Gomes, 216 para Geraldo Alckmin e 262 para tweets sem menção a nenhum candidato; e 8193 tweets classificados como neutros, sendo 3233 para Jair Bolsonaro, 870 para Fernando Haddad, 788 para Ciro Gomes, 1455 para Geraldo Alckmin e 1847 para tweets sem menção a nenhum 35 candidato. A Figura 12 mostra o gráfico de tweets positivos relacionados aos candidatos para esta semana. Figura 12 – Percentual de tweets classificados como positivos de 24 a 30

TWEETS POSITIVOS DE 24 A 30

TWEETS PORCENTAGEM

45,06%

25,53% 593 16,19% 13,22% 336 213 174

JAIR BOLSONARO GERALDO ALCKMIN FERNANDO CIRO GOMES HADDAD

Fonte: Elaborado pelo Autor (2018).

Para a semana de 01 a 07 de outubro foi observado que, 2818 tweets foram classificados como positivos, sendo 835 para Jair Bolsonaro, 498 para Fernando Haddad, 828 para Ciro Gomes, 101 para Geraldo Alckmin e 556 para tweets sem menção a nenhum candidato; 4695 tweets foram classificados como negativos, sendo 3689 para Jair Bolsonaro, 231 para Fernando Haddad, 282 para Ciro Gomes, 112 para Geraldo Alckmin e 381 para tweets sem menção a nenhum candidato; e 13558 tweets classificados como neutros, sendo 4916 para Jair Bolsonaro, 1885 para Fernando Haddad, 3523 para Ciro Gomes, 625 para Geraldo Alckmin e 2609 para tweets sem menção a nenhum candidato. A Figura 13 mostra o gráfico de tweets positivos relacionados aos candidatos para esta semana.

Figura 13 – Percentual de tweets classificados como positivos de 01 a 07

TWEETS POSITIVOS DE 01 A 07

TWEETS PORCENTAGEM

36,91% 36,60%

22,02% 835 828 4,47% 498 101 JAIR BOLSONARO GERALDO ALCKMIN FERNANDO CIRO GOMES HADDAD

Fonte: Elaborado pelo Autor (2018). 36

Em seguida foram unidos os resultados classificados como positivos da primeira e segunda semana de coleta dos tweets e foi observado que totalizaram 4688 tweets, sendo 1428 para Jair Bolsonaro, 711 para Fernando Haddad, 1002 para Ciro Gomes 437 para Geraldo Alckmin e 1110 para tweets sem menção a nenhum candidato. A Figura 14 mostra o gráfico de tweets positivos relacionados aos candidatos neste período.

Figura 14 – Percentual de tweets classificados como positivos de 24 a 07

TWEETS POSITIVOS DE 24 A 07

TWEETS PORCENTAGEM 39,91% 28,00% 19,87% 1428 12,21% 1002 711 437

JAIR BOLSONARO GERALDO ALCKMIN FERNANDO CIRO GOMES HADDAD

Fonte: Elaborado pelo Autor (2018).

O TSE (Tribunal Superior Eleitoral), divulgou no dia 09 de outubro, o resultado do primeiro turno das Eleições 2018 para presidente no site oficial do órgão. O total de votos computados para os candidatos relacionados neste estudo foi de 99.059.782, sendo 49.277.010 votos para o candidato Jair Bolsonaro, 31.342.051 para Fernando Haddad, 13.344.371 para Ciro Gomes e 5.096.350 para Geraldo Alckmin. A Figura 15 monstra o percentual de votos obtidos por cada candidato de acordo com o resultado divulgado pelo TSE e será utilizada na validação dos resultados do algoritmo utilizado neste estudo.

Figura 15 – Resultado oficial do 1º turno das eleições para presidente.

RESULTADO DO 1º TURNO DAS ELEIÇÕES 2018

TWEETS PORCENTAGEM

46,03% 4,76% 26,28% 12,47% 99.059.782 13.344.371 5.096.350 49.277.010 JAIR BOLSONARO GERALDO ALCKMIN FERNANDO CIRO GOMES HADDAD

Fonte: Tribunal Superior Eleitoral (2018). 37

3.7 VALIDAÇÃO DOS RESULTADOS

Conforme divulgado pelo TSE, os candidatos que se tornaram aptos a disputar o segundo turno das eleições foram Jair Bolsonaro com 46,03% dos votos válidos e Fernando Haddad com 26,28% dos votos válidos e comparando este resultado com os resultados obtidos através da classificação dos tweets coletados, é possível verificar se os mesmos condizem com o resultado real das eleições e validá-lo. Para os dados obtidos na primeira semana de coleta, o resultado obtido pelo classificador foi que Jair Bolsonaro, com 45,06% de tweets positivos, e Geraldo Alckmin, com 25,53% de tweets positivos, disputariam o segundo turno da eleição, o que não condiz com os dados oficiais, com exceção do candidato Jair Bolsonaro. Para os dados obtidos na segunda semana de coleta, o resultado obtido pelo classificador foi que Jair Bolsonaro, com 36,91% de tweets positivos, e Ciro Gomes, com 36,60% de tweets positivos, disputariam o segundo turno da eleição, o que também não condiz com os dados oficiais, com exceção do candidato Jair Bolsonaro. Ao realizar a união dos dados obtidos na primeira e segunda semana, o resultado obtido pelo classificador foi que Jair Bolsonaro, com 39,91% de tweets positivos, e Ciro Gomes, com 28,00% de tweets positivos, disputariam o segundo turno da eleição, o que também não condiz com os dados oficiais, com exceção do candidato Jair Bolsonaro. Para a primeira semana, o que pode ter causado esta imprecisão no resultado, foi a mudança de candidato oficial, pois o candidato Luiz Inácio Lula da Silva, que até então disputava as eleições representando o Partido dos Trabalhadores, teve sua candidatura caçada por se encontrar preso, o que fez com que seu candidato à vice-presidência Fernando Haddad assumisse a disputa como candidato à presidência em seu lugar. Já para a segunda semana, um movimento gerado nas redes sociais denominado de “Tsunami Ciro” pode ter impactado no resultado, pois devido a este movimento, a quantidade de tweets relacionados ao candidato Ciro Gomes pode ter aumentado consideravelmente. Outro fato que pode ter causado esta imprecisão para ambas as semanas, foi o classificador Naive Bayes atribuir o rótulo de “neutro” a uma quantidade elevada de tweets e não ter classificado estes tweets em positivo ou negativo, o que impactaria diretamente neste resultado. Outro ponto importante que pode ser levado em consideração para que Fernando Haddad não tivesse tanta expressão no Twitter e nos resultados deste estudo, é o fato do candidato ser 38 mais influente no Facebook e que boa parte dos eleitores deste candidato não possui acesso as redes sociais, e mesmo que tenham, dificilmente usariam o Twitter.

39

4 CONSIDERAÇÕES FINAIS

Este estudo teve como objetivo, analisar dois datasets distintos contendo tweets da população brasileira acerca das Eleições de 2018 no Twitter e validá-los com o resultado do primeiro turno para presidente desta mesma eleição. Foi realizada a coleta de tweets relacionados aos candidatos Jair Bolsonaro, Fernando Haddad, Ciro Gomes e Geraldo Alckmin nos períodos de 24 a 30 de setembro de 2018 e 01 a 07 de outubro do mesmo ano. Os dados inicialmente foram armazenados em arquivos Commo- separated values (CSV) através de algoritmo desenvolvido em Python e após importados em um dataframe utilizando a biblioteca pandas através do programa Jupyter Notebook. Após a coleta, os tweets foram classificados em positivos, negativos e neutros, através do algoritmo de Naive Bayes treinado utilizando uma base de dados disponibilizada pelo PRODEMGE e posteriormente foram analisados levando em consideração os tweets classificados como positivos. Por fim, os dados foram comparados com o resultado oficial disponibilizado pelo TSE e, por motivos que poderão ser investigados em trabalhos futuros, não foram iguais ao resultado oficial da disponibilizado pelo TSE. Dentre as principais dificuldades encontradas, estão a tentativa de utilização da técnica de Web Scraping, onde não foram obtidos resultados satisfatórios, devido o Facebook mascarar seu código HTML, impedindo a mineração através desta técnica. Posteriormente o não acesso aos dados públicos do Facebook via Graph API Explorer, que seria utilizada anteriormente neste estudo para capturar dados do Facebook, resultando na mudança da rede social utilizada para o Twitter. Outros pontos importantes foram a falta de conhecimento na manipulação das bibliotecas utilizadas no python e ter que aguardar a conclusão do primeiro turno das eleições para poder dar início aos trabalhos apresentados neste estudo. Para trabalhos futuros a partir do estudo apresentado, podem ser elencadas as seguintes propostas:

 A melhoria do modelo utilizado para a classificação, resultando em um número menor de tweets classificados como neutro.  Utilizador uma abordagem diferente para polarizar os tweets, através de um dicionário léxico, em que cada palavra já possui uma polaridade previamente definida e o resultado 40

da polaridade do tweet pode ser dada pela média das polaridades das palavras contidas no mesmo.  A possibilidade de predição dos resultados de uma determinada eleição através destas técnicas.  Utilização da Psicometria para aumentar a possibilidade de predição dos resultados.  Adicionar métricas referentes ao alcance das publicações, afim de aumentar a possibilidade de predição dos resultados de uma determinada eleição.  Utilização de outras redes sociais em conjunto com o Twitter, visto que alguns candidatos são mais influentes em outras redes, como por exemplo o Facebook.

41

REFERÊNCIAS

AMARAL, F. Introdução à ciência de dados: mineração de dados e Big Data. Rio de Janeiro: Alta Books, 2016.

ANDRADE, Mª. M. Introdução a metodologia do trabalho científico: elaboração de trabalhos na graduação. São Paulo: Atlas, 2003.

ATTUX, R. C. Predição dos resultados das eleições 2014 para presidente do Brasil usando dados do Twitter. Uberlândia: UFU, 2017.

BIRD, S.; KLEIN, E.; LOPER, E. NLTK Book. Disponível em: https://www.nltk.org/book/, Acesso em: 03 de dezembro de 2018.

CERVO, A. L.; BERVIAN, P. A. Metodologia Científica. 6. ed. São Paulo: Pearson Prentice Hall, 2007.

CARAÇA, L. Z. Análise de sentimentos utilizando a implementação do algoritmo Naive Bayes da biblioteca NLTK. São Paulo: UFABC, 2018.

CORRÊA, I. T. Análise de sentimentos expressos na rede social Twitter em relação aos filmes indicados ao Oscar 2017. Uberlândia: UFU, 2017.

HEIKI, L. O que é Psicometria? Distrito Federal: IBPAD, 2018

LUGER, G. F. Inteligência Artificial. 6. ed. São Paulo: Pearson Education do Brasil, 2013.

PANG, B; LEE, L. Opinion Mining and Sentiment Analysis. Vol. 2. pp. 1-135. Foundation and Trends in Information Retrieval, 2008.

RUSSELL, S. J.; NORVIG, P. Inteligência Artificial. 3. ed. Rio de Janeiro: Elsevier, 2013.

SILVA, D; MEIRELES, F. Ciência Política na era do Big Data: automação na coleta de dados digitais. Revista Política Hoje 2. ed. Vol. 24. , 2015.

TRIBUNAL SUPERIOR ELEITORAL. Concluída a totalização de votos do 1º turno das Eleições 2018. Disponível em: http://www.tse.jus.br/imprensa/noticias- tse/2018/Outubro/concluida-totalizacao-de-votos-do-1o-turno-das-eleicoes-2018, Acesso em: 09 de outubro de 2018.

42

APÊNDICE A – MÉTRICAS DE VALIDAÇÃO DO MODELO

 Descrição da base de treinamento.

43

 Métricas de Validação do Modelo