<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Brenda Silva on Medium]]></title>
        <description><![CDATA[Stories by Brenda Silva on Medium]]></description>
        <link>https://medium.com/@breudes?source=rss-4cb7be677cc9------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*l8ao_mztEeQW0s_CCm_o_w.png</url>
            <title>Stories by Brenda Silva on Medium</title>
            <link>https://medium.com/@breudes?source=rss-4cb7be677cc9------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 05 Jun 2026 15:14:11 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@breudes/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Twitter e o passaporte vacinal contra Covid-19: uma análise de redes com os perfis dos usuários]]></title>
            <link>https://medium.com/@breudes/twitter-e-o-passaporte-vacinal-contra-covid-19-uma-an%C3%A1lise-de-redes-com-os-perfis-dos-usu%C3%A1rios-af74a5acaf61?source=rss-4cb7be677cc9------2</link>
            <guid isPermaLink="false">https://medium.com/p/af74a5acaf61</guid>
            <category><![CDATA[twitter-data]]></category>
            <category><![CDATA[twitter]]></category>
            <category><![CDATA[covid19]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[vaccine-passport]]></category>
            <dc:creator><![CDATA[Brenda Silva]]></dc:creator>
            <pubDate>Fri, 18 Feb 2022 02:29:12 GMT</pubDate>
            <atom:updated>2022-02-19T01:27:28.483Z</atom:updated>
            <content:encoded><![CDATA[<p>Análise de redes focada nos usuários presentes na rede social Twitter que estão <em>tweetando </em>a respeito do passaporte vacinal contra a Covid-19.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*y59rSFoi8HuDOdmMs7ZUvw.jpeg" /></figure><p>Este projeto é a atividade avaliativa final da disciplina de Análise de Redes, ofertada no curso de Bacharelado em Tecnologia da Informação (IMD/UFRN), e ministrada pelo o docente <a href="https://github.com/ivanovitchm">Ivanovitch Silva</a>. A ideia desse projeto é apresentar um problema que possa ser definido com base na <strong>API do Twitter</strong>, e em seguida seja analisado utilizando métricas estudadas anteriormente na disciplina. Por fim, apresentar uma <strong>rede interativa</strong> que utiliza <em>clusters </em>(ou grupos) para fins de visualização de seus nós.</p><p>O problema proposto é <strong>definir quais são os perfis das pessoas que estão tweetando a respeito do passaporte vacinal contra Covid-19</strong> — um tema atual e popular não só no Brasil, mas em todo o mundo. Com a API, é possível analisar o conteúdo dos <em>tweets</em>, assim como também informações dos usuários que interagiram com esses <em>tweets</em>.</p><p>Caso deseje acessar o código implementado para este projeto, acesse o <a href="https://github.com/levirchianca/twitter_network_analysis"><strong>repositório no Github</strong></a>.</p><h3><strong>Tecnologias utilizadas</strong></h3><p>Nesse projeto utilizamos, principalmente, a linguagem de programação <a href="https://www.python.org/">Python</a>, a <a href="https://developer.twitter.com/en/docs">API do Twitter</a>, o ambiente em nuvem <a href="https://research.google.com/colaboratory/">Google Colaboratory</a>, uma biblioteca para Python, que permite um acesso mais rápido a API, chamada <a href="https://twython.readthedocs.io/en/latest/">Twython</a>; e por fim, o <a href="https://gephi.org/">Gephi</a>, para montar a visualização interativa da rede criada.</p><p>As demais tecnologias foram utilizadas no decorrer do projeto:</p><ul><li>Json</li><li>Matplotlib</li><li>NetworkX</li><li>Numpy</li><li>Nxviz</li><li>Pandas</li><li>Time</li></ul><h3><strong>API do Twitter</strong></h3><p>A API do Twitter é uma ferramenta que permite ao usuário ter acesso aos <em>tweets </em>produzidos em tempo real. E, obviamente, é necessário ter uma conta nessa rede social para assim poder solicitar sua <strong>conta de desenvolvedor</strong>. Solicite sua conta <a href="https://developer.twitter.com/en/docs/twitter-api/getting-started/getting-access-to-the-twitter-api">aqui</a>. Após a solicitação, será possível adicionar projetos a sua conta — desde que você explique de forma coerente qual a finalidade que irá utilizar os dados providos — e ter aplicações nestes projetos que utilizam serviços via API.</p><p>Já existe uma segunda versão dessa ferramenta, porém, utilizaremos a primeira versão padrão — além disso, apenas utilizaremos um serviço: o <a href="https://developer.twitter.com/en/docs/twitter-api/v1/tweets/search/api-reference/get-search-tweets"><em>Standard Search</em></a> (tradução livre: Pesquisa Padrão), é com este serviço — ou melhor, esse tipo de requisição — que poderemos acessar milhares de <em>tweets </em>de acordo com palavras-chave associadas ao problema citado anteriormente. Caso deseje saber mais sobre a documentação da API, acesse <a href="https://developer.twitter.com/en/docs/twitter-api/v1">aqui</a>.</p><h4><strong>Autenticação com credenciais</strong></h4><p>Após ter o acesso às credenciais do seu projeto, na conta de desenvolvedor, é possível utilizar os serviços da API. Para o <em>Standard Search</em> é necessário das seguintes credenciais:</p><ul><li>API_KEY</li><li>API_SECRET_KEY</li><li>AUTH_TOKEN</li><li>AUTH_SECRET_TOKEN</li></ul><p>As primeiras duas credenciais são referentes ao seu projeto e o aplicativo do projeto (seja de desenvolvimento ou produção) que você decidiu utilizar. Já as duas últimas credenciais são referente a autenticação realizada graças a um protocolo chamado <strong><em>Auth</em></strong>, que é responsável por autenticar usuários a ter acesso limitado a determinadas informações presentes na Internet.</p><p>Com elas é possível fazer a autenticação, como fizemos aqui:</p><pre># twython object</pre><pre>twitter = Twython(API_KEY, API_SECRET_KEY)</pre><pre># get authentication tokens</pre><pre>authentication_tokens = twitter.get_authentication_tokens()</pre><pre># result</pre><pre>print(authentication_tokens[&#39;auth_url&#39;])</pre><h3><strong>Dados que desejamos</strong></h3><p>Nosso problema é focado no usuário e nos possíveis perfis que esse usuário em específico pode ter, a ideia é montar uma rede que mostra um agrupamento de características e interações entre os usuários que escreveram no Twitter a respeito de passaporte vacinal contra covid-19. Logo, separamos algumas palavras chave para compor a requisição de tweets: ‘passaporte vacinal’, ‘passaporte’, ‘vacina’ e ‘covid-19’.</p><p>Além disso, iremos solicitar algumas características chaves a respeito de cada <em>tweet </em>encontrado:</p><ul><li>A data em que foi tweetado;</li><li>O usuário que tweetou;</li><li>O conteúdo do <em>tweet</em>;</li><li>Caso o <em>tweet </em>seja um <em>retweet</em>, retornar usuário que criou o <em>tweet </em>original;</li><li>Quantidade de <em>retweets</em>;</li><li>Quantidade de curtidas do <em>tweet</em>;</li><li>Caso o <em>tweet </em>seja um <em>retweet</em>, retornar a quantidade de curtidas do tweet original.</li></ul><p>Essas informações são providas pela própria requisição, considerando o objeto <em>Json </em>retornado dela.</p><h3><strong>Requisições da API</strong></h3><p>A API possui diferentes <a href="https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api">tipos de acesso</a>, o que utilizamos foi o acesso, a nível de usuário, chamado <em>Elevated. </em>Com ele é possível fazer requisições nas duas versões da API de forma gratuita. Agora, falaremos sobre a requisição utilizada.</p><p>Utilizamos a requisição Standard Search via Twython, e de acordo com a documentação dela existe um limite de 180 requisições disponíveis — esse limite é reiniciado em um intervalo de 15 minutos. Além disso, é importante a gente falar quais os parâmetros usados nessa requisição, existem vários, mas utilizamos estes aqui:</p><ul><li><em>count</em>: quantidade de tweet por página retornada;</li><li><em>result_type</em>: tipo de <em>tweet</em>, podendo ser popular ou recente, ou até misturado;</li><li><em>query</em>: conjunto de palavras-chave de busca;</li><li><em>lang</em>: idioma do <em>tweet</em>;</li><li><em>until</em>: data limite dos <em>tweets</em>, lembrando que a API limita os <em>tweets</em>, por padrão, a até 7 dias antes dessa data limite.</li></ul><p>Pensando em utilizar o máximo que a requisição permite, resolvemos fazer <strong>180 requisições por palavra-chave, onde cada requisição retorna 100 <em>tweets </em>(o máximo permitido) por página</strong>, ou seja, resultando em 18 mil <em>tweets </em>por palavra-chave. Veja uma fração do código implementado para isso:</p><pre># keywords based on theme &#39;vaccine passport&#39;</pre><pre>keywords = [&#39;passaporte vacinal&#39;, &#39;passaporte&#39;, &#39;vacina&#39;, &#39;covid-19&#39;]</pre><pre># maximum requests available for each keyword defined - there will be a sleep method to restart those resquests within 15 minutes</pre><pre>for keyword in keywords:</pre><pre>print(keyword)</pre><pre>for i in range(180): # requests rate from get_twitter_search</pre><pre>tweets = twitter.search(count=100, q=keyword, result_type=&#39;recent&#39;, until=&#39;2022-02-16&#39;, lang=&#39;pt&#39;)</pre><pre>if(keyword != keywords[3]):</pre><pre>sleep(901) # 15 minutes in seconds</pre><p>Note que a função ‘sleep’ é crucial para manter o intervalo que reinicia a quantidade de requisições disponíveis, do contrário, esse limite seria excedido e não haveria como reter mais <em>tweets</em>. Outra coisa, essa requisição retém <strong>apenas <em>tweets </em>feitos no intervalo de 7 dias</strong>, para reter dados com outros intervalos de tempo superiores a este é necessário utilizar outras requisições disponibilizadas pela API.</p><h4><strong>Criação de Data Frame</strong></h4><p>Como dito anteriormente, selecionamos algumas informações que achamos importantes para essa análise, logo, foi implementado um dicionário com essas características de acordo com os campos dos <em>tweets </em>que recebemos da requisição; e em seguida este dicionário foi convertido para um Data Frame. Segue um exemplo com os cinco primeiros <em>tweets</em>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*njlmm8CsKiblsY050j3ndg.png" /><figcaption>Cinco primeiros tweets do Data Frame.</figcaption></figure><h3>Análise Exploratória</h3><p>O Data Frame criado ficou com 72 mil <em>tweets </em>do intervalo de dias entre 09/02/2022 até 15/02/2022, foram 18 <em>tweet s </em>mil por palavra-chave. Entretanto, percebemos que os <em>tweets </em>com a palavra-chave ‘passaporte’ fugiam do tema original desse projeto, então desconsideramos os <em>tweets </em>associados a ela.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/394/1*GCZGDF6qJ9SnQ-hbUgsREQ.png" /><figcaption>Quantidade de tweets por palavra-chave.</figcaption></figure><p>Além disso, verificamos que 55080 tweets foram retweets, enquanto os demais foram tweets originais — o que nos dá a relação de <strong>76,5% dos tweets serem retweets</strong>, e 23,5% dos tweets serem tweets originais.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/393/1*1etPftj4zVN5sCcEq7Slng.png" /><figcaption>Quantidade de tweets originais e retweets.</figcaption></figure><p>Também verificamos os cinco primeiros <em>retweets </em>e vimos que foram <em>tweets </em>de um mesmo usuário, o ‘Jrodrigues1954’.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/553/1*8H81vLSpa080-HtMCJgQmw.png" /><figcaption>Cinco primeiros retweets.</figcaption></figure><p>Por fim, verificamos os cinco primeiros <em>tweets </em>originais e quais foram seus autores.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/565/1*1iqNTv6uRe3O9XZs4WBuow.png" /><figcaption>Cinco primeiros tweets originais.</figcaption></figure><p>Vimos que os <em>tweets </em>com a palavra-chave ‘passaporte’ acabava fugindo do tema deste projeto, logo, decidimos desconsiderar os <em>tweets </em>associados na etapa seguinte: construção da rede.</p><h3>Criação de Rede</h3><p>A rede foi criada considerando a relação de um usuário com outro por meio do <em>retweet </em>de um <em>tweet</em>. Logo, selecionamos todos os usuários que condizem com essa relação, utilizamos a quantidade de <em>retweets </em>como o peso nessas interações e assim montamos a rede. Portanto, temos uma rede direcionada e com peso, com 335 nós e 208 arestas — o que já mostra que aqueles milhares de <em>tweets </em>foram criados por um grupo pequeno de pessoas.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/967/1*Fz5XWwbNXSzLloDKlgE7fg.png" /><figcaption>Visualização circular da rede criada.</figcaption></figure><h3>Análise de Métricas</h3><p>Considerando como a rede foi criada, decidimos utilizar duas métricas para analisar a rede: centralidade de grau (Degree Centrality), que é a medida da quantidade de conexões (arestas) um nó possui com outros nós da rede; e a centralidade de autovetor (Eigenvector Centrality), que é uma medida da influência que um nó possui na rede.</p><h4>Degree Centrality</h4><p>O grafo resultante nos mostra que a rede possui nós com graus similares, ou seja, nesse contexto temos poucos retweets entre os usuários dessa base de dados. Temos assim, um grafo homogêneo.</p><p>Note que o núcleo do grafo possui poucos nós, e vale ressaltar o usuário citado anteriormente, o ‘Jrodrigues1954’, que foi o autor dos primeiros cinco retweets do Data Frame, esse usuário faz parte do núcleo desse grafo de centralidade de grau, sendo ele o que retém a maior quantidade de conexões na rede.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oYUUGFEQK0cKWtFxss6nIA.png" /><figcaption>Centralidade de Grau da rede.</figcaption></figure><p>Também pegamos o top 20 nós dessa métrica, podemos reconhecer melhor os nós do núcleo do grafo - de baixo para cima:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/348/1*2Skz5kPKlLGUVUDpuxULuA.png" /><figcaption>Top 20 nós de Centralidade de Grau.</figcaption></figure><h4>Eigenvector Centrality</h4><p>Esse grafo mostra o quão influente um nó se encontra dentro da rede, desse modo é possível visualizar que temos um grafo homogêneo. A maioria possuem uma influência balanceada, com algumas ressalvas, que podem ser reconhecidos como os nós vermelho escuro no grafo, esses em específico são os que possuem maior influência sobre seus nós vizinhos.</p><p>Esse resultado nos mostra que temos poucos usuários que possuem uma presença forte nessa discussão, ao menos nesse período de 7 dias, no Twitter; sendo assim, é possível que eles sejam pilares em um ou mais grupos de discussões sobre o tema do projeto.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zrb3bVU7KhMprdAyM--hsA.png" /><figcaption>Centralidade de vetor próprio da rede.</figcaption></figure><p>Também foi gerado um top 20 nós nessa métrica, sendo possível reconhecer os usuários mais influentes na rede. O resultado dessa métrica já nos dá uma prévia de como a rede está estruturada:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/348/1*2Skz5kPKlLGUVUDpuxULuA.png" /><figcaption>Top 20 nós de Centralidade de Autovetor.</figcaption></figure><h4>Histograma — Grau e Função <strong>Densidade de Probabilidade</strong></h4><p>Por fim, geramos um histograma que mostra a relação de frequência do grau com a função densidade de probabilidade. Assim como mostrado no grafo de Degree Centrality, é possível visualizar que a maioria dos nós possui poucos graus, variando entre 0 a 10 graus — e, consequentemente, a função densidade de probabilidade mostra que a maior probabilidade de grau para um nó é similar ao grau dessa maioria da rede.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/749/1*0bY_W_7CM4D5_-VjlaTVOw.png" /><figcaption>Histograma — Grau x Função Densidade de Probabilidade.</figcaption></figure><h3>Rede interativa via Gephi</h3><p>Com base nas métricas que analisamos, temos que a medida de grau é baixa porém balanceada, ou seja, temos a maioria dos usuários com poucas conexões sobre o tema. Apesar desse resultado, ainda é possível visualizar que existe uma <strong>estrutura de agrupamento sólida</strong> — com a medida de influência sobre vizinhos é possível ver que temos poucos usuários com uma alta influência, e isso os permite, de alguma forma, <strong>manusear a direção dos <em>tweets </em>selecionados</strong>, ao menos dentro dos agrupamentos que eles fazem parte. A visualização da rede foi criada considerando, nessa ordem: Classe de Modularidad e a métrica Centralidade de Autovetor.</p><p>Note que temos ao menos <strong>sete agrupamentos ressaltados</strong> na rede, e dentre os sete, dois deles possuem relação considerável entre si: o agrupamento do usuário ‘Jrodrigues1954’ e o do usuário ‘drpaulofaria22’.</p><p>Outra ressalta é o agrupamento associado ao usuário ‘<a href="https://twitter.com/mellziland"><strong>mellziland</strong></a>’, que é da biomédica, neurocientista e professora <strong>Mellanie Fontes-Dutra, </strong>que utiliza o Twitter para divulgação científica. Certamente a Mellanie foi um dos pilares na discussão sobre passaporte vacinal nessa semana!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*y59rSFoi8HuDOdmMs7ZUvw.jpeg" /><figcaption>Rede gerada.</figcaption></figure><p>Explore a rede!<br>Acessar a versão interativa da rede, que colocamos no Github, é uma boa forma de consolidar o estudo que trouxemos neste artigo. Além de ser uma boa visualização do todo, é bom explorar os grupos e membros pertinentes na rede. <a href="https://levirchianca.github.io/twitter_network_analysis/network/">Confira</a>!</p><h3><strong>Conclusão</strong></h3><p>Os resultados mostram poucos usuários entre as conexões, apesar da API retornar 72 mil <em>tweets </em>— isso ocorre por dois possíveis motivos: 1. os <em>tweets </em>podem possuir um ou mais palavras-chaves que escolhemos; 2. os usuários que estavam falando sobre o tema acabaram formando pequenos grupos ao redor do tema. Apesar do tratamento dos dados, mesmo limpando dados duplicados e similares, não é possível alterar o comportamento que os usuários mostraram nessa última semana no Twitter a respeito do passaporte vacinal.</p><p>Por fim, concluímos que apesar do intervalo curto de dias que retemos dados, é possível reconhecer agrupamentos e usuários chaves nessa discussão atual. Isso é apenas uma das diversas variáveis que podem ser analisadas em redes sociais como o Twitter.</p><h3><strong>Autores</strong></h3><p>Este post, gráficos e códigos utilizados foram feitos por <a href="https://github.com/breudes">Brenda Silva</a>, <a href="https://github.com/levirchianca">Levir Chianca</a> e <a href="https://github.com/paulovanzo">Paulo Vanzolini</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=af74a5acaf61" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Projeto Querido Diário e a transparência de dados municipais]]></title>
            <link>https://medium.com/@breudes/projeto-querido-di%C3%A1rio-e-a-transpar%C3%AAncia-de-dados-municipais-c69ed232d7b?source=rss-4cb7be677cc9------2</link>
            <guid isPermaLink="false">https://medium.com/p/c69ed232d7b</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[open-source]]></category>
            <dc:creator><![CDATA[Brenda Silva]]></dc:creator>
            <pubDate>Mon, 08 Nov 2021 23:26:01 GMT</pubDate>
            <atom:updated>2021-11-09T02:12:14.680Z</atom:updated>
            <content:encoded><![CDATA[<p>Diariamente somos bombardeados com notícias sobre acontecimentos na esfera pública. São denúncias de corrupção, publicação de novos decretos, reformas, compras suspeitas, nomeações, dentre outros.</p><p>Esses conteúdos estão disponíveis, em formato de jornais, através dos <strong>Diários Oficiais</strong>, que é o meio pelo qual os governantes nos níveis federal, municipal e estadual publicam seus atos oficiais. Isso é muito importante para a <strong>transparência da administração pública</strong>; porém tal trabalho é realizado por jornalistas que “mastigam” o conteúdo dessas publicações oficiais e produzem reportagens mais acessíveis ao grande público.</p><p>No entanto, a população tem direito de <strong>analisar da forma mais ampla e clara possível</strong> tais conteúdos, é aí o momento em que a <strong>ciência de dados</strong> entra para contribuir com tal proposta.</p><h4>Projeto Querido Diário</h4><figure><img alt="Texto escrito em laranja “Querido Diário”, acima do texto existe dois ícones referentes a diálogos sobrepostos, o primeiro na cor roxa com interior laranja, e o segundo na cor laranja com interior roxo." src="https://cdn-images-1.medium.com/max/1024/1*MN8JUrZm4f4j-pOzNF7AtA.jpeg" /><figcaption>Fonte: <a href="https://ok.org.br/projetos/querido-diario/">Open Knowledge Brasil</a>.</figcaption></figure><p>Uma iniciativa da <a href="https://ok.org.br/"><em>Open Knowledge Brasil</em></a> nesse sentido começou em 2016 — com o cientista de dados Irio Musskopf, uma equipe de amigos e centenas de voluntários. Eles criaram um projeto de tecnologia que usa inteligência artificial para auditar contas públicas e auxiliar no controle social. A ideia surgiu como forma de participar ativamente do processo democrático, fiscalizando os gastos públicos.</p><p>A partir daí foi criada a <a href="https://serenata.ai/"><strong>“Operação Serenata de Amor”</strong></a>, focada em fiscalizar, com auxílio de um robô chamado Rosie, os reembolsos efetuados pela <a href="https://www2.camara.leg.br/comunicacao/camara-noticias/camara-destaca/56a-legislatura/no-exercicio-do-mandato/cota-para-o-exercicio-da-atividade-parlamentar-ceap"><strong>Cota para Exercício da Atividade Parlamentar (CEAP) </strong></a>— verba que custeia alimentação, transporte, hospedagem e até despesas com cultura e assinaturas de TV dos parlamentares. Caso tenha interesse sobre como a Rosie trabalha nesta fiscalização de denúncias, <a href="https://medium.com/data-science-brigade/como-est%C3%A1-acontecendo-a-hackaton-de-den%C3%BAncias-da-opera%C3%A7%C3%A3o-serenata-de-amor-a8bd193e0c76">clique aqui</a>.</p><p>No entanto, esse projeto se limitava somente à esfera federal e logo surgiu a necessidade de também fiscalizar de alguma forma os estados e municípios. Tendo isso em vista, a <em>Open Knowledge Brasil </em>aproveitou a estrutura prévia da Operação Serenata de Amor, juntamente com um projeto já existente chamado <a href="https://okfn-brasil.github.io/queriDO/site/historico/">“Projeto Nosso Querido Diário Oficial”</a> e criou o <a href="https://queridodiario.ok.org.br/"><strong>“Querido Diário”</strong></a>.</p><p>Este é um <a href="https://github.com/okfn-brasil/querido-diario/"><strong>projeto de código aberto</strong></a> que tem o objetivo de liberar e centralizar as informações publicadas nos diários oficiais dos municípios — as quais atualmente estão disponíveis com acesso um tanto nebuloso: dispostos apenas em formato PDF. Em outras palavras, os dados dispostos pelos municípios são os chamados <a href="https://medium.com/@magusklutus/projeto-sobre-ci%C3%AAncia-de-dados-n%C3%A3o-estruturados-414696970b21"><strong>dados não estruturados</strong></a>.</p><h4>Coleta de Dados</h4><p>Para a coleta dos dados, os scripts do projeto utilizam o <em>framework </em><a href="https://scrapy.org/"><em>Scrapy</em></a>, ferramenta muito popular para <strong>raspagem de dados</strong>. No repositório do projeto é possível encontrar arquivos em <em>Python </em>(linguagem de programação)<em> </em>desenvolvidos pela comunidade para realizar a raspagem dos dados de cada município — tais arquivos são chamados de <a href="https://github.com/okfn-brasil/querido-diario/tree/main/data_collection/gazette/spiders"><em>spiders</em></a><em> (traduzido do inglês: aranhas)</em>.</p><p>Ainda existem outros três repositórios do projeto:</p><ol><li><a href="https://github.com/okfn-brasil/censo-querido-diario/"><strong>Censo Querido Diário</strong></a> — armazena informações dos municípios e os respectivos sites em que são publicados os diários oficiais;</li><li><a href="https://github.com/okfn-brasil/querido-diario-toolbox/"><strong>Querido Diário <em>ToolBox</em></strong></a><em> </em>— fornece para a comunidade um conjunto de ferramentas que permitem a análise, manipulação e tratamento dos dados extraídos de diários oficiais;</li><li><a href="https://github.com/okfn-brasil/querido-diario-api"><strong>Querido Diário API</strong></a> — mantém o código-fonte utilizado para construir a API que disponibiliza as gazetas rastreadas pelo o Querido Diário.</li></ol><p>É possível utilizar a <a href="https://queridodiario.ok.org.br/api/docs"><strong>API pública</strong></a> para consultar os dados disponíveis diretamente de forma acessível e automatizada, opção interessante para desenvolvedores e pesquisadores. Além disso, para o público geral é possível <strong>acessar diretamente a plataforma pelo </strong><a href="https://queridodiario.ok.org.br/"><strong><em>site</em></strong></a><em> </em>e realizar buscas por palavras-chave, filtrando por município e período da publicação.</p><h4>Níveis de Acesso dos Dados</h4><p>Idealmente, o projeto visa a coleta de dados do poder executivo dos 5570 municípios brasileiros. Entretanto, atualmente os municípios se encontram com diferentes níveis de acesso:</p><ul><li><strong>Nível 0 de acesso:</strong> o projeto não possui a fonte de publicação do diário oficial do município;</li><li><strong>Nível 1 de acesso: </strong>o projeto possui<strong> </strong>a fonte de publicação do diário oficial do município, cadastrada no Censo — existem 597 municípios neste nível;</li><li><strong>Nível 2 de acesso: </strong>o projeto possui um script para coletar os arquivos do município e armazená-los na base de dados — existem 2226 municípios neste nível;</li><li><strong>Nível 3 de acesso: </strong>o conteúdo dos diários oficiais deste município está disponível na plataforma Querido Diário — existem 16 municípios neste nível;</li></ul><h4>Transparência dos Dados</h4><p>Falar sobre este projeto abre um parênteses importante nessa discussão: a <strong>Lei de Acesso à Informação</strong> e a transparência de dados. Ter acesso às informações públicas é um direito nosso garantido pela <a href="http://www.planalto.gov.br/ccivil_03/_ato2011-2014/2011/lei/l12527.htm"><strong>Lei nº 12.527/2011</strong></a>, regulamentada pelo <a href="http://www.planalto.gov.br/ccivil_03/_ato2011-2014/2012/Decreto/D7724.htm">Decreto nº 7.724/2012</a>.</p><p>Em poucas palavras, esta lei nos dá <strong>direito ao acesso a informações públicas</strong> das principais entidades públicas (os 3 poderes da União, Estados, Municípios e Ministério Público, por exemplo) e também entidades privadas sem fins lucrativos, as privadas publicam informações referentes ao recebimento e destinação dos <strong>recursos públicos</strong> recebidos. Para saber mais sobre <a href="https://www.gov.br/acessoainformacao/pt-br">clique aqui</a>.</p><p>Agora pensando no Querido Diário, a transparência — à nível simples e claro — resultante deste trabalho é de grande importância, considerando que muitos dos cidadãos brasileiros não costumam ou não podem consumir, diariamente, os diários oficiais ou outros meios de mesmo contexto. Logo, este projeto acaba contribuindo com a <strong>democratização da informação </strong>pública; isto é, considerando o grande volume de dados disponíveis é crucial que as pessoas tenham <strong>acesso à informação de qualidade</strong>, de forma simples e objetiva, referente aos governantes que regem a política do país.</p><h4>Conclusão</h4><p>A plataforma Querido Diário foi lançada muito recentemente (20 de julho de 2021) e ainda está em desenvolvimento. Como trata-se de uma plataforma aberta, qualquer pessoa pode contribuir, seja com o desenvolvimento do código, cadastrando municípios ou com doações em dinheiro. Outra forma de contribuir é <strong>utilizando e divulgando a plataforma</strong>, dessa forma um projeto com Ciência de Dados é uma maneira muito interessante de fazer isso.</p><p>Os dados obtidos através dos raspadores (<em>spiders</em>) disponíveis, podem servir como base para diversos projetos relevantes para a sociedade envolvendo Ciência de Dados. Alguns exemplos podem ser:</p><ul><li>Investigar menções no diário oficial de palavras destacadas no <strong>debate sobre saúde pública</strong> (exemplo: buscar sobre a palavra “ivermectina”);</li><li>Analisar CNPJs mencionados no plano diretor dos municípios;</li><li>Comparar tendências do Twitter com os diários oficiais.</li></ul><p>Há inúmeras outras possibilidades de enfoque utilizando os dados obtidos dessa plataforma. Neste post falamos do Querido Diário, mas existem outros projetos com propostas legais também da Open Knowledge Brasil, para conhecer <a href="https://ok.org.br/eixos-de-atuacao/inovacao-civica/">acesse aqui</a>.</p><p>Nos próximos <em>posts</em> serão apresentadas as etapas do desenvolvimento de um projeto para a disciplina <strong>CIÊNCIAS DE DADOS </strong>do IMD/UFRN<strong> </strong>(código: IMD1151), utilizando dados coletados da plataforma “Querido Diário”.</p><p>Este artigo foi escrito de forma colaborativa por: <a href="https://github.com/breudes">Brenda Alexandra de Souza Silva</a>, <a href="https://github.com/ediego10">Diêgo Bruno Lima da Costa</a>, <a href="http://diegodantal@gmail.com">Diego Dantas Almeida</a>, <a href="https://github.com/luamoreno">Luara Moreno de Assis</a> e Marcos Filipe Garcia Dantas</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c69ed232d7b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Contagem de Tweets com Python]]></title>
            <link>https://medium.com/@breudes/contagem-de-tweets-com-python-db7ac9778504?source=rss-4cb7be677cc9------2</link>
            <guid isPermaLink="false">https://medium.com/p/db7ac9778504</guid>
            <category><![CDATA[python]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[twitter-data]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[twitter]]></category>
            <dc:creator><![CDATA[Brenda Silva]]></dc:creator>
            <pubDate>Wed, 15 Sep 2021 22:51:37 GMT</pubDate>
            <atom:updated>2021-11-11T13:53:29.151Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3zNh-hIcgYyNCcqD.png" /></figure><p>A API do Twitter é uma ferramenta (do próprio Twitter) que permite ao usuário ter acesso aos tweets produzidos em tempo real, esses tweets podem ser filtrados e analisados conforme o objetivo da pessoa que está utilizando a ferramenta. Neste artigo falaremos sobre contagem de tweets utilizando a API e a linguagem de programação Python.</p><h3>Conta de Desenvolvedor</h3><p>Mas antes de utilizar a API, é preciso checar se: 1. Você possui uma conta no Twitter; 2. Você possui perfil de desenvolvedor. Para ter esse perfil é necessário solicitar ao Twitter, solicite <a href="https://developer.twitter.com/en/apply-for-access">aqui</a> caso não o tenha.</p><p>Após ter acesso ao seu perfil de desenvolvedor, um painel como este será apresentado:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/1*AYtXVKF5ps7sL_smNPBCbA.png" /></figure><p>Para utilizar a API é necessário criar um projeto e uma aplicação vinculada ao projeto. Após a criação do projeto, você terá suas chaves de autenticação. E uma tela como esta mostrará tais chaves:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/880/1*sw3SSrlgVKod3lBGT99HgQ.png" /></figure><p>Agora, guarde suas chaves de autenticação e vamos utilizar a API!</p><h3>Conexão com a API</h3><p>Como dito no título deste artigo, utilizaremos Python. Caso não possua Python instalado em sua máquina, existem duas opções comuns para utilizá-lo: 1. Baixar o Python no <a href="https://www.python.org/downloads/">site oficial</a> e instalar na sua máquina; 2. Caso não queira instalar o Python, também é possível utilizá-lo via <a href="https://colab.research.google.com/">Google Colab</a>, basta ter uma conta Google para isso.</p><p>Certas bibliotecas precisam ser importadas via Python, são elas:</p><pre>import requests # módulo que realiza requisições HTTP/HTTPS import json # módulo para manuseio de objetos json import datetime # módulo para manuseio de datas e horas</pre><p>Na ordem que foi mostrado:</p><ul><li><strong>Requests </strong>é um módulo que fazer requisições HTTP/HTTPS;</li><li><strong>Json </strong>é um módulo para manuseio de objetos no formato JSON;</li><li><strong>Datetime </strong>é um módulo para manuseio de datas e horas.</li></ul><p>Agora, precisamos utilizar a chave de autenticação chamada de <strong>Bearer Token</strong>:</p><p>Para utilizá-la na requisição é necessário criar um cabeçalho com a chave. Neste exemplo, implementamos uma função que cria o cabeçalho:</p><p>Em seguida definir palavras-chave e a query para a requisição. Vale ressaltar que para contagem de tweets, utilizamos o endpoint da API chamado de <strong>Tweet Counts</strong>, para saber mais sobre ele acesse <a href="https://developer.twitter.com/en/docs/twitter-api/tweets/counts/introduction"><strong>este link</strong></a>.</p><p>O endpoint Tweet Counts é utilizado dado esta URL:</p><pre>url = &quot;https://api.twitter.com/2/tweets/counts/recent&quot;</pre><p>Agora, um exemplo de palavras chave e query (consulta) para requisição:</p><p>Finalmente, faremos a requisição à API, e para isso implementamos uma função que realiza a requisição e retorna a resposta em formato JSON:</p><p>Agora, basta imprimir a resposta da requisição:</p><p>Com esses resultados temos a contagem de tweets por palavras-chave. Esses resultados podem ser analisados, até mesmo responder esta pergunta: quantos tweets foram produzidos, nas últimas 24 horas, sobre o Covid-19?</p><h3>Conclusão</h3><p>Espero que tenha gostado deste artigo, a API do Twitter permite ao usuário fazer muitas coisas interessantes como, por exemplo, análise dos dados presentes nos tweets acessados. Este artigo foi feito com base <a href="https://github.com/breudes/contagem-de-tweets">neste projeto</a> que eu implementei para uma disciplina da faculdade.</p><p>É possível utilizar essa API por meio de diferentes tecnologias, Python foi apenas a tecnologia que achei mais confortável para isso.</p><p>Recomendo <a href="https://dev.to/lisandramelo/buscando-tweets-com-a-api-do-twitter-3g1b">esse artigo</a>, também relacionado a API do Twitter. Até a próxima!</p><p><em>Publicado originalmente em </em><a href="https://dev.to/breudes/contagem-de-tweets-com-python-2df9"><em>https://dev.to</em></a><em> no dia 15 de Setembro de 2021.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=db7ac9778504" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>