Yuri Malheiros

Professor e pesquisador da UFPB - Campus IV


Análise dos posts do grupo "Fui Assaltado - Grande João Pessoa"

O grupo do Facebook "Fui Assaltado - Grande João Pessoa" é utilizado pelos usuários para relatar assaltos e outros crimes violentos ocorridos na capital da Paraíba. Com o crescimento da violência, fiquei curioso para saber quais bairros ou outros pontos de referência da cidade são os maiores alvos dos criminosos.

Assim, eu resolvi coletar todos os posts do grupo do Facebook e procurar nomes de bairros e lugares conhecidos de João Pessoa para ter uma ideia geral de onde os crimes estão acontecendo.

O primeiro passo foi coletar as mensagens do Facebook usando a biblioteca Facebook SDK para Python. As mensagens foram coletadas no dia 21 de Julho de 2015 às 10:40. Em seguida, eu escrevi um programa para procurar o nome de todos os bairros da cidade, além de pontos conhecidos como UFPB, Lagoa, Manaíra Shopping, etc. Por fim, com esses dados em mãos, eu gerei o gráfico a seguir, com o nome dos bairros e lugares no eixo X e a quantidade de ocorrências no eixo Y. (Clique na imagem para abrir uma versão maior)

Número de ocorrências por bairro

Sabíamos que a violência nos Bancários vem crescendo muito, mas a diferença apresentada no gráfico é assustadora. Entretanto, tenho que deixar claro que tal diferença pode ser causada por um viés na amostragem, ou seja, no grupo do Facebook talvez exista muito mais pessoas morando na zona sul da cidade, o que acarretaria mais posts sobre a região. Mesmo com essa possibilidade, o número de crimes reportados é muito grande. Ainda na análise, procurei o número de posts por mês no grupo e como pode ser visto no gráfico abaixo, ele passou a ser usado mais frequentemente apenas nos dois últimos meses. Se considerarmos apenas junho e julho, temos 59 crimes nos Bancários, o que dá quase 1 crime por dia. Isso apenas de acordo com os posts do grupo, se fosse possível somar com outros assaltos que não são reportados no Facebook, o número seria ainda maior.

Número de posts por mês

Espero que esse post sirva de alerta para que uma mudança na segurança seja feita, não apenas em um bairro, mas em toda cidade, estado e país.

AI Notebooks - KNN

Os IPython Notebooks se proliferaram nas últimas conferências da linguagem Python. Para apresentações onde o foco é o código, como em tutoriais, a ferramenta se encaixa muito bem. O IPython Notebook é como um shell interativo no browser "on steroids" (com textos explicativos, imagens, gráficos, etc). Eles podem ser distribuídos para que outras pessoas repitam os seus passos, experimentem novas possibilidades e visualizem os resultados dessas modificações.

Percebendo o potencial da ferramenta para disponibilização de material explicativo sobre assuntos que envolvam programação, eu resolvi criar um notebook e disponibilizá-lo no Github. Eu criei um notebook sobre o algoritmo de classificação KNN (K-Nearest Neighbors) para testar a ferramenta.

Vocês podem visualizá-lo diretamente no IPython Notebook Viewer ou podem clonar o repositório no Github e rodar o IPython Notebook no seu computador:

ipython notebook --pylab=inline

Estou pretendendo no futuro disponibilizar mais notebooks dessa forma sobre assuntos de inteligência artificial. O que acham? Gostaria do feedback de vocês.

5 estrelas dos dados abertos

Vários países têm aberto inúmeros dados importantes tornando o governo mais transparente para a população, dando poder para as pessoas conseguirem analisar os dados e poderem criar as mais diversas aplicações e visualizações.

As possibilidades são grandes e as vantagens para a população também, mas para que seja possível fazer algo, o governo precisa colaborar primeiro. Não adianta ter desenvolvedores, designers e cientistas juntos se não existir a base para o trabalho, ou seja, os dados.

Tim Berners-Lee, o pai da web, criou um modelo para classificar dados abertos publicados. Este modelo é conhecido como o modelo das 5 estrelas, onde dados com 1 estrela estão na forma mais pobre e simples e dados com 5 estrelas são mais ricos e complexos.

A classificação proposta pelo Berners-Lee é a seguinte:

  • ★ : dados disponíveis na web (não importa o formato) sob uma licença aberta. Por exemplo, um PDF.
  • ★ ★ : dados disponíveis de forma estruturada. Por exemplo, um arquivo Excel.
  • ★ ★ ★ : dados disponíveis em formatos não-proprietários. Por exemplo, um CSV.
  • ★ ★ ★ ★ : use URIs para denotar os dados, assim outras pessoas podem criar links para eles. Por exemplo, um RDF.
  • ★ ★ ★ ★ ★ : link os seus dados a outros. Por exemplo, um RDF que tenha links para outros RDF.

O trabalho de publicar os dados até a terceira estrela é simples e o esforço é praticamente o mesmo. Faz pouco sentido publicar dados num arquivo .xlsx, quando o próprio Excel pode salvar como .csv. Então, quem estiver publicando dados abertos, por favor, faça com que eles tenham pelo menos 3 estrelas. As pessoas que estiverem usando vão agradecer e mais aplicações serão criadas usando esses dados.

Para publicar dados com 4 ou 5 estrelas é necessário ter um conhecimento extra. Criar um RDF já não é tão simples quanto criar um arquivo CSV. E, para criar RDFs com links é necessário também conhecer outras fontes de dados. Não é por acaso que ainda temos muitos dados abertos com no máximo 3 estrelas.

Por outro lado, RDFs com links fornecem um poder muito maior para quem os utiliza, pois, além de ter os dados, também é possível navegar por eles e descobrir informações e relações totalmente novas. Por exemplo, você pode ter um RDF com dados de todos os prefeitos do seu estado e que um dos dados disponíveis para cada prefeito é a sua cidade natal. O RDF pode trazer um link fazendo referência à cidade, que se for seguido, fornecerá dados sobre ela, por exemplo, o estado que ela pertence e a sua população. Dessa forma, apenas publicando os dados do prefeito e seus respectivos links, seria possível ter informação suficiente para separar os prefeitos que são nascidos no mesmo estado da cidade que governa ou saber se a maioria dos prefeitos são de cidades grandes (com mais de 1 milhão de habitantes), entre muitas outras possibilidades.

RDFs com links (dados ligados) são a base da web semântica.

Infelizmente ainda é difícil conseguir dados abertos em várias cidades do Brasil, mesmo com apenas 1 estrela. Entretanto, temos bons exemplos de dados ligados em outras áreas. Uma das maiores bases de dados é o Freebase, mantido pelo Google. Naveguem nele para sentir um pouco do poder de ter dados 5 estrelas. Outra opção é a DBpedia.

Mapeamento sistemático para hackers

Nesses últimos dias eu estava coletando vários trabalhos para realizar um mapeamento sistemático. Esse tipo de mapeamento é feito quando se deseja ter uma visão geral de uma área que está sendo pesquisada. Assim, é possível identificar os principais trabalhos numa área, aprender o que já foi feito e o que merece contribuição, descobrir falhas que você pode resolver, etc.

Para organizar minha biblioteca de artigos eu utilizo o Mendeley, um software gratuito, bastante eficiente nas suas tarefas e que possui um API para que programadores consigam criar soluções usando os seus serviços.

Num mapeamento sistemático é importante extrair informações do tipo: quantos artigos foram publicados em cada ano, ou quais autores possuem mais artigos, ou ainda quais meios de publicação foram mais utilizado pelos pesquisadores nessa área.

Isso pode ser feito manualmente, mas com todos esses dados disponíveis no Mendeley, eu não aceitaria facilmente fazer isso assim.

Algumas horas depois de começar a explorar a API do Mendeley eu tinha o primeiro protótipo do Mendeley Stats, uma ferramenta para extrair automaticamente informações importantes para um mapeamento sistemático. Com um pouco mais de trabalho eu organizei tudo o que tinha e disponibilizei o repositório no Github.

O funcionamento do Mendeley Stats é simples. Ele é uma ferramenta de linha de comando que extrai informações de uma pasta no Mendeley. Dessa forma, é só colocar todos os papers do seu mapeamento sistemático numa pasta e executar o Mendeley Stats.

A ferramenta tem duas funcionalidades principais: gerar gráficos e gerar arquivos .csv. Gráficos são ótimos para que se entenda alguns dados facilmente, mas em certos casos, os dados não podem ser apresentados adequadamente em gráficos, então é melhor usar a alternativa de gravar num .csv.

Além de escolher o tipo de output (gráfico ou .csv), o usuário também precisa escolher que dados ele quer analisar. Por enquanto o Mendeley Stats suporta ano, tipo (se o paper é de conferência, de revista, etc.), autores, palavras-chaves e meio de publicação. Ao escolher, por exemplo, a análise por anos, o Mendeley Stats retornará a quantidade de artigos por ano que estão contidas na pasta especificada.

Exemplo de uso:

mendeleystats --info year --output chart --folder datamining

Nesse caso, a ferramenta retornará em forma de gráfico (--output chart), quantos artigos por ano (--info year) existem na pasta datamining no Mendeley (--folder datamining).

No geral, a ferramenta suporta os seguintes parâmetros:

mendeleystats --info {year,type,authors,keywords,publishedin}
              --output {chart,csv} --folder FOLDER

Espero que essa simples ferramenta seja útil para outras pessoas também e fiquem a vontade para dar sugestões ou para contribuir com o projeto.

Reboot

Há meses não escrevo nada no blog. Alguns amigos já estavam me cobrando, mas eu não sentia vontade de escrever por aqui. Eu até tinha feito algumas mudanças recentes no blog, colocado um tema diferente e começado a escrever algumas coisas, mas nao publiquei nada.

Olhando bem o conjunto de textos do blog, eu não sentia que tudo o que estava armazenado refletia o que eu queria expor hoje. Eu tenho posts que escritos em 2006! Eu também não estava querendo escrever por escrever, muito pelo contrário, cada vez mais tento produzir textos melhores. Tudo isso somado causou uma pausa, que tentarei quebrar a partir de agora.

Então eu pensei bem e resolvi fazer um "reboot". Entre aspas pois não apaguei tudo, alguns textos eu considero excelentes, e vocês já podem encontrar parte deles aqui. Futuramente talvez eu reviva outros posts que gosto e que mereçam um novo compartilhamento.

Os temas abordados aqui não serão muito diferentes dos últimos 2 ou 3 anos.

Por fim, joguei o WordPress fora e estou usando Jekyll. Me sinto melhor escrevendo dessa forma.