Fork me on GitHub

Viagens, opiniões e afins

by Andre Fonseca


Inteligência Coletiva (Parte 2)

Como disse num post anterior estou lendo um livro sobre como podemos programar aproveitando a Inteligência Coletiva. Inteligência Coletiva, no contexto de tecnologia e internet, é o conhecimento ou dados existente disponíveis na grande rede. Exemplos: Blogs, wikis, páginas de redes sociais, sites, portais, jornais, etc. Como todo o conjunto de informação, este dados podem ser agrupados, aproximados, indexados, ordenados (por uso, por relevância, etc).
Ao aplicarmos processos que misturam estatística e inteligência artificial nessas massas de conteúdo, podemos obter resultados interessante sob diferentes ponto de vistas (marketing, científico, tecnológico, etc) . Tais processos,a advém de anos de estudos e pesquisas que vem sendo desenvolvidas e aos poucos descobertas pelo pessoal de desenvolvimento como uma forma de inovar, cada vez mais, em ferramentas para Web.
Exemplos destes tipos de inovações existem embora, o melhor de todos e mais conhecidos de “ leigos e entendidos” de internet seja o Google. O buscador Google, foi um dos grandes pioneiros em tirar teorias do mundo acadêmico a aplicá-las para gerar ferramentas vanguardistas. No próprio livro (“Programando a Inteligência Coletiva“) eles citam que grande parte do sucesso do buscador deve-se ao famoso algoritmo PageRank (criado pelos fundadores da Google e seu nome é uma homenagem a Larry Page).
Uma boa aplicação não vive de só um recurso, ela, em geral, é uma reunião de metodologias, soluções e interações. E sistemas que visem trabalhar com a massa de dados global não pode ser diferente. A quantidade de teorias, processos, metodologias, algoritmos, matemática disponível é grande e seu crescimento continuo. A cada dia alguém dá “mais um passo” e assim novos formas ou melhorias nas já existentes vão surgindo.
Para os interessados, caso não venham de uma formação com base matemática forte, a estudar um pouco estatística, pois ela tem se mostrado uma ferramenta genial para este tipo de objetivo. Além disso, ter noção de IA (inteligencia artificial) será um ponto forte. Para a questão do IA, sugiro o livro do Peter Norvig – Inteligencia Artifical, uma abordagem moderna.

Um primeiro exemplo
Vamos supor que você queira fazer um site que a pessoa possa buscar os horários dos filmes ou, caso ele já não esteja mais no cinema, simplesmente a sinopse.
De certa forma, isso soa até que simples para ser implementado : Teríamos um sistema que teria o nome do filme e um sinopse dele. Caso estivesse no cinema colocaria os dados de local e sessão (algo parecido com o http://movie.google.com).
A grande sacada e o diferencial de qualquer outro sistema seria, você no final da tela, indicasse para o seu visitante outros filmes para ele baseando-se no princípio de similaridade.
Esse principio de similaridade é uma forma de vermos o quando algo está “próximo” do outro. Algo que seria representado pela frase: “você também gostará dos seguintes filmes….”… Para isso não basta apenas ter uma funcionalidade de guardar o perfil das pessoas e os pontos que elas dão para cada filme. Existe algo mais interessante, que é verificar o que pessoas de perfil parecido com o seu também gostam e te recomendar.
Tal coisa é feita pela coleta dos dados, tratamento por algoritmos de metricas e proximidades (Distancia euclidiana, Pearson, TAnimoto, coeficiente de jaccar, etc)

Leia mais sobre o assunto clicando nos links abaixo:
* Artigo sobre match de arquivos xml (analise léxica e similaridade) – ir para artigo
* Wiki sobre similaridade léxica – wiki

Published by Andre Fonseca, on julho 30th, 2009 at 8:10 pm. Filled under: InformáticaNo Comments

Código ruby de robot para twitter

Quem nunca passou pela situação onde estava no trabalho e achou algo super legal para baixar e não tinha como. Bem agora, com a ajuda do twitter isso é possível de forma automática: você notificar o seu computador de casa para que ele “comece” a pegar o arquivo para você. Você pensar que seria algo inútil, mas imagine isso quando pensamos em torrent: você manda o endereço do arquivo, o sistema baixa-o e em seguida começa baixar o arquivo e, quando você chega em casa, o arquivo está bonitinho.
Para resolver isso para mim, recorri ao Ruby – linguagem de programação e uma api para acessar ao twitter (abaixo verão o código fonte do programa). Notem o quão simples foi fazer isso:

require 'rubygems'
require  'twitter'

#Criando um cliente a partir das configurações contidas no arquivo YAML
cliente  = Twitter::Client::from_config('config_twitter.yml','dev')
timeline = cliente.timeline_for(:me) do |status|
        pattern = /(pega|wget) (http:\/\/.*$)/
        texto = status.text
        command = 'wget '
        if(pattern =~ texto)
      command << $~[2]
    system command
             end
end

Depois, como utilizo o ubuntu, foi colocar a execução do arquivo no cron (configurei para executar a cada 30 min),. Se tiver Windows basta criar uma tarefa agendada.
Pronto !.
Agora você tem um sistema que irá ler o seu twiter ou qualquer que queira e assim que aparecer um texto com “pega(ou wget)” seguido de uma url, ele irá realizar o download da url e se este for um torrent, baixar o arquivo do torrent. Genial e simples não.

Published by Andre Fonseca, on julho 26th, 2009 at 5:48 pm. Filled under: InformáticaNo Comments

Inteligência Coletiva – Uma visão geral

A pouco dias atrás, numa visita a livraria, acabei comprando, sem grande pretensões, o livro “Programando Inteligência Coletiva” (Editora O’REILLY /Altas BOOKS, autor Toby Segaran). Confesso que após as primeira palavras lidas, não consegui mais largar… “devorei-o”. O assunto da edição é super atual e, acredito, que todos que gostariam ou trabalharam com internet hoje deveriam ao menos folheá-lo, pois este é um conhecimento básico para saber entender e aproveitar o fenômeno que é a grande rede.
Antes de mais nada é interessante conceituar oque é Inteligência Coletiva
Muitos podem pensar que trata de algo paranormal ou de cunho psicológico, mas quando falamos dentro de um contexto tecnológico, inteligência coletiva é um conjunto de dados, comportamentos, preferências, etc. Isso não é algo que só tenha surgido com a internet; o conceito é anterior a isso, a questão que isso era feito ou disponibilizado de outras formas (censos, bibliotecas, etc).
Restringindo ainda mais o conceito, podemos dizer que ela representa os dados disponíveis na grande rede em diversos formatos ou mídias: blogs, sites de social, menseger, wikis, etc.

Terabytes de dados

Teras e mais Teras de dados a espera de uso…
Se pensarmos, atualmente, dentro da esfera da internet, temos uma quantidade absurda, até então inimaginável, de conteúdo “bruto” (por analisar) disponível. Esses dados se trabalhados por meio de algorítmicos ( que se apóiam em estatística básica e avançada) podem levar a conclusões, no mínimo, são geniais e interessantes. Não é a toa que diversos grandes “jogadores” (empresas) da WWW vem aos poucos trabalhando nessa questão. Quando digo “trabalhando” quero dizer milhões de dólares e.
Sistemas ditos inexpressivos, podem se tornar, em instantes, excelentes fontes de dados para definir padrões de comportamento de compradores, criar bases para sugestão de temas afins, etc. Ex: delicios, zebo, etc

Como trabalhar essa massa colossal de dados?
Como a promessa de uma web semântica (web 3.0) ainda está em fase embrionária, os recursos para “interligar” os conhecimentos (conteúdos) ainda é escasso. Com isso, precisamos contar com manipulações estatísticas, algoritmos baseados em inteligência artificial, etc.
Alguns poderiam dizer que poderíamos usar a questão das tags (meta tags que podem ser adicionadas ao html), mas só isso não é suficiente para categorizarmos, agruparmos, fazer inferências, entre outras coisas, de forma eficaz e eficiente.
Por meio de aplicações de modelos estatisticos (distribuição gaussianas, entropias, etc) é possível agrupar os dados em grupos de semelhantes e com isso tirar conclusões de tendências, comportamentos, etc. Além disso, se ainda utilizarmos recursos como redes neurais, algoritmos genéticos., etc é possível detectar padrões e por eles fazer inferências e tornar essa massa de dados um grande conjunto ativo de inteligência.

Quais são as possibilidades?
As possibilidades são infinitas e suas aplicações também. Podemos citar, apenas como exemplo, utilidades como: sugestão de produtos em sites de compras; determinar a melhor oferta para um determinado perfil de visitante do site; bases de conhecimentos; buscas semânticas; etc.

Quem são os jogadores(players) disso?
O maior de todos e mais conhecido é o Google. Alguns garantem que seu sucesso, inclusive, se deve a invenção do algoritmo PageRank (homenagem a Larry Page).

Conclusões
Em próximos post irei mostrar algumas aplicações práticas que fiz extrapolando os exemplos passados pelo livro. Posso adiantar que já tenho um prontinha quase “saindo do forno”.

Leia mais

http://www.readwriteweb.com/archives/linked_data_is_blooming_why_you_should_care.php

http://www.readwriteweb.com/archives/understanding_the_new_web_era_web_30_linked_data_s.php

Published by Andre Fonseca, on julho 26th, 2009 at 12:11 pm. Filled under: Informática,inteligencia coletivaNo Comments

Inovar para superar a crise

Muito se tem falado sobre crise mundial e como ela impactou diretamente os planos de muitos. Embora alguns ainda acreditem que nada aconteceu ao nosso país e que saímos sem “nenhum arranhão” desta turbulência, a verdade que muita coisa foi atingida e de uma forma bastante significativa. As industrias lutam para manter seus investimentos e algumas já demitem em massa seu pessoal como forma de se manterem saudáveis do ponto de vista financeiro. Claro que existe diversos setores que ao contrário até cresceram mas a grande maioria sofreu com cortes de projetos, etc.
A realizada que vejo nesse suposto pós caos é que ainda não voltamos a crescer e que, talvez, nem tenhamos chego ao fundo do poço. Sei que pareço caótico mas tente procurar por emprego ou oportunidades de projeto e verá que as coisa não estão tão grandes coisas como anunciam. Mas não estou aqui para “tocar a trombeta do apocalipse” e sim para falarmos de como podemos aproveita este caos para crescer.
Umas das primeiras coisas que todos fazem em épocas como esta é reduzir custos e o preferido são os projetos. Logo todos param os projetos pois a principio não precisam dele. Como, de certa forma, empresário que também sou entendo isso pois o nosso maior desejo é evitar demissões e partimos em busca do que é realmente essencial e numa rápida análise, projetos não são algo primordial para a vida de uma industria, por exemplo.
Porém, é nesse ponto, dos cortes de projeto, que proponho a nossa primeira quebra de paradigma: “Ao invés de parar tudo, porque não investir mais?”. Alguns podem achar que estou louco mas calma, deixe-me mostrar o meu ponto de vista e depois julguem: não existe crise eterna e esta é uma crise de confiança e não de capital. O capital, de certa forma, ainda está ai e em breve o mercado vai voltar a comprar… não no mesmo patamar mas vai. Outro aspecto é que será o líder do mercado que sair desta crise pronto para o crescimento ou com a tecnologia suficiente para ser mais competitivo. Épocas de baixa produção são excelentes oportunidades para uma mudança de processos, melhoria de tecnologia, treinamentos, etc.
Investir em projeto, aqui, não significa somente a questão da expansão de capacidade ou algo similar, e sim num investimento de inovação e melhoria. Projetos onde novas máquinas serão instaladas para ficarem desligadas não faz sentido, mas outros onde novas máquinas irão substituir velhas no intuito de agregar valor ao produto e reduzir custos, isso vale a pena.
Como diz o SunTzu: “Na paz prepare-se para a guerra e na guerra prepare-se para a Paz”.

Published by Andre Fonseca, on julho 21st, 2009 at 5:35 pm. Filled under: atualidadesNo Comments