Analisando o Twitter usando Árvore de Palavras

Nesse artigo vou comentar sobre mais um projeto de processamento de linguagem natural que desenvolvemos aqui na Vetta Labs: um analisador de textos baseado em árvore de palavras.

Comecemos do princípio: uma concordância é um tipo especial de índice, onde se mostram junto de cada palavra algumas palavras que aparecem antes e depois dela. A primeira concordância foi criada no século XII, para a Bíblia em latim, e é mais ou menos desse jeito:

Ocorrências de "alegria" na Bíblia

Ocorrências de "alegria" na Bíblia (clique para aumentar)

Uma concordância era algo incrivelmente útil – basicamente o equivalente ao Google daquela época! – e extremamente caro de se fazer: a primeira da Bíblia em latim exigiu o trabalho de 500 monges e a primeira concordância da Bíblia Hebraica levou 10 anos para ser concluída. Hoje em dia, é claro, ninguém mais dá tanta importância a esse tipo de índice porque é muito mais fácil realizar a busca eletronicamente.

Mas concordâncias ainda têm muita utilidade prática. A Fernanda Viégas, da IBM, fez uma palestra interessantíssima na TEDx São Paulo chamada Revolução Visual, onde ela demonstra uma forma de visualização de textos baseada em concordâncias e numa estrutura de dados bem conhecida na Ciência da Computação, a árvore de sufixos (introduzida nos anos 1970). Chamada WordTree, esta visualização tem como ênfase a exploração interativa de textos curtos (no máximo do tamanho da Bíblia), e está publicamente disponível no site ManyEyes.

Veja um exemplo, criado por mim:

WordTree da letra de "Construção", de Chico Buarque

WordTree da letra de "Construção", de Chico Buarque (clique para aumentar)

A implementação da WordTree no ManyEyes me chamou a atenção, mas não se mostrou útil para mim por uma série de razões:

  • a quantidade máxima de texto suportada é centenas de vezes menor do que a que gostaria de processar
  • a WordTree não permite que voltemos ao trecho original do texto
  • qualquer texto e visualização submetida é obrigatoriamente público, o que impede o processamento de dados confidenciais
  • o uso é sempre interativo, não sendo possível o processamento em lote ou automático
  • não é permitido o uso do ManyEyes em aplicações comerciais
Resolvi, então, criar minha própria implementação de concordância baseada em árvore de sufixos. A idéia não é simplesmente explorar visualmente um texto específico, mas gerar automaticamente árvores de palavras a partir de itens do Twitter.

A motivação é simples: um dos mecanismos mais interessantes do Twitter é o Re-Tweet, ou RT, que é o gesto de alguém repetir o que foi postado por outra pessoa, como forma de manifestação de apoio (ao fazer RT de um item no Twitter você está divulgando aquele item para as pessoas para seus seguidores). Quanto maior o número de RTs mais divulgação um determinado item teve.

O sistema monitora o Twitter em tempo real, buscando itens com as palavras chave determinadas pelo usuário. Todos os dias (ou, por exemplo, a cada 1000 twits encontrados) uma nova árvore é gerada, que ilustra de forma bem interessante o que tem sido discutido a respeito daquele assunto. Veja um exemplo, gerado enquanto escrevia esse artigo a partir de twits a respeito do Campeonato Mineiro (nada contra o time do Atlético!):

Árvore gerada por twits do Cruzeiro

Árvore gerada por twits do Cruzeiro

Como a quantidade de textos processada é enorme – dezenas de milhares de itens por dia! – árvores de palavras geradas de forma ingênua são gigantescas. Para exibir apenas as informações relevantes, utilizamos técnicas de processamento de linguagem natural para podar a árvore.

Por exemplo, podemos exigir que determinados nós sempre contenham verbos, ou apenas sentenças em que a palavra escolhida funcione como sujeito sejam consideradas. Tudo isso, é claro, configurável e acessível através de uma interface web, com tudo a que o usuário tem direito (feeds RSS, interface AJAX, exibição de estatísticas a respeito de como a árvore foi construída, links para os itens originais…).

E como o assunto da vez são as Eleições 2010, vejam alguns exemplos, também produzidos nesse exato momento:

Árvore produzida por menções a Aécio Neves no Twitter

Árvore produzida por menções a Aécio Neves no Twitter

Também podemos gerar árvores reversas, que mostram o que precede determinada palavra, e árvores com maior profundidade, como exemplificado abaixo:

Árvore reversa (Aécio Neves no Twitter)
Árvore reversa (Aécio Neves no Twitter)

O mais interessante (e divertido!) disso tudo é que essa técnica de visualização permite ter uma avaliação instantânea do que “está rolando no Twitter”, em poucos segundos. Uma árvore de palavras condensa informação de milhares de itens e a exibe de forma intuitiva e direta – algo realmente raro num mundo em que a sobrecarga de informação é cada vez maior.

Data Mining, Internet, Linguagem Natural, Redes Sociais, Usabilidade, Visualização Cientifica, Web 2.0 11 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 4,75 out of 5)

Interfaces telepáticas: quando o Mundo do Amanhã chega hoje mesmo

Recentemente, surgiu aqui no Labs um anteprojeto de um projeto para talvez, quem sabe, trabalharmos com a identificação automática de fases do sono em “polissonografias”, que são dados neurofisiológicos e cardio-respiratórios coletados de pessoas dormindo. A parte neurofisiológica da coisa serviu de inspiração para eu escrever este artigo acerca das “interfaces telepáticas”, como as chamo. Alguns diriam que “interfaces neurais” talvez seja um termo melhor, mas gosto das imagens de pulp scifi que “telepáticas” evoca. :)

Aliás, o tema de interfaces capazes de ler diretamente a mente do usuário é recorrente na ficção científica. A mais antiga referência _scifi_ sobre interfaces telepáticas de que me lembro está no clássico inesquecível O Planeta Proibido. Numa das cenas desse filme de 1956, um dos personagens usa um aparelho que é capaz de ler e interpretar sua mente, inclusive mostrando as imagens em que ele está pensando. No filme, essa tecnologia é alienígena e apresentada como algo centenas de milhares de anos à frente da ciência humana – o que é bastante curioso, considerando-se que o filme se passa séculos no futuro, em uma época onde os humanos viajam pelo espaço em discos voadores antigravitacionais e cruzam anos-luz em tempos razoáveis passando pelo “hiperespaço”.

Ou seja, esse parece ser mais um dos casos muito freqüentes em que a ficção científica acerta acerca de uma previsão sobre o futuro, mas erra feio a ordem do que virará realidade primeiro. Alguns experimentos com resultados inesperados e algumas teorias exóticas até dão alguma esperança de que um dia teremos antigravidade de disco voador ou saltos hiperespaciais como no filme, mas na melhor das hipóteses isso está num futuro imprevisivelmente distante. Já as interfaces telepáticas estão bem próximas. Mais precisamente, elas já estão aqui!

Lembro de pesquisas sobre leitura e interpretação de sinais cerebrais desde os anos 90. Inicialmente, essas pesquisas visavam ajudar pessoas com deficiências físicas, possibilitando a sinais de seus cérebros “contornar” paralisias e outras condições. A pesquisa de anos atrás sobre a movimentação do ponteiro de um mouse usando a mente é emblemática dessa era. Porém, como era de se esperar, essas pesquisas começam aos poucos a ser aplicadas ao mercado muito mais vasto de consumidores em geral…

Assim, há alguns meses surgiu a demonstração de uma interface de “subvocalização” para celulares, que capta os impulsos nervosos que o cérebro envia para a garganta e interpreta as palavras sem que a pessoa tenha de efetivamente verbalizá-las – ideal para ter conversas telefônicas privadas mesmo em ambientes cheios de gente. Também apareceu recentemente, e já está disponível comercialmente, um controle telepático para videogames.

Essas aplicações envolvem análise de sinais eletroencefalográficos ou atividade de conjuntos de nervos superficiais específicos – o que certamente já rende um bom número de aplicações divertidas, como exemplificado. Porém, esse meio de aquisição de certa forma capta apenas comandos que o cérebro emite “propositalmente”. Mas a verdadeira fronteira final das interfaces telepáticas, que vai além da captação de comandos diretos do cérebro, envolve a observação direta da atividade cerebral, que potencialmente poderia levar à possibilidade de saber o que uma pessoa está realmente pensando. Uma pesquisa divulgada poucas semanas atrás por exemplo descobriu que as mesmas áreas cerebrais tendem a se ativar quando pessoas diferentes estão pensando na mesma palavra, um princípio que se bem desenvolvido poderia levar a um “leitor universal de pensamentos”. Outra aplicação relativamente recente é o detetor de mentiras com 90% de acerto. Esta última, a propósito, cai no que muitos vêem como o “lado negro” das tecnologias de telepatia artificial, já que levanta uma série de questões éticas e legais.

É claro que, ao contrário do que acontece com as interfaces “eletroencefalográficas”, que no fim das contas usam simples eletrodos, essas aplicações bem mais ousadas observam a atividade cerebral por fMRI (do Inglês para Imagem por Ressonância Magnética Funcional), ou seja, usam máquinas enormes e caras, tornando difícil imaginar uma popularização desses métodos. Porém, avanços também recentes em magnetômetros atômicos acenam com a possibilidade de máquinas de fMRI portáteis e baratas em um futuro não muito distante. Mais espantosamente, magnetômetros atômicos poderiam em tese ser sensíveis o suficiente para monitorar o magnetismo até de neurônios individuais, podendo registrar a atividade cerebral com um nível de detalhe impensável hoje em dia. Talvez, quem sabe, até o suficiente para alcançar o “upload” tão almejado pelo movimento Trans-Humanista. Mas isso já é outra viagem, que talvez um dia eu tenha coragem de encarar em um artigo futuro. :)

Ciências cognitivas, Inovação, Memória, Usabilidade 0 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

A famigerada taxa de acerto

Na semana passada saiu uma notícia no site da Folha que achei muito engraçada. OK não era assim tão engraçada mas era, no mínimo, curiosa. O avião onde voava o Tony Blair foi interceptado por caças israelenses por engano (veja a nota publicada no site da Folha). Além do fato em si soar meio bizarro, o que achei particularmente divertido foi o teor contido nas entrelinhas da explicação dada para o ocorrido:

“Um novo sistema teria sido implantado nos últimos meses para identificar aviões suspeitos, e as forças israelenses estão em alerta depois que o grupo radical islâmico palestino Hamas utilizou uma aeronave para derrubar um muro na fronteira com o Egito, há cinco meses. A imprensa britânica lembrou que o sistema de defesa aérea de Israel é um dos mais rigorosos do mundo, e que seus aviões de guerra respondem muitas vezes a alarmes falsos.”

Posso até estar enganado mas gosto muito da idéia de imaginar que eles têm um sistema capaz de identificar aviões hostis ou que representam risco. Um sistema desses obviamente seria heurístico e estaria sujeito à famigerada taxa de acerto. Ou seja, ele funciona bem e identifica corretamente aviões suspeitos com uma taxa de acerto de X%. No caso do avião do Tony Blair, o sistema teria dado um falso positivo.

Quando se está tentando resolver um problema do “mundo real” usando técnicas de inteligência artificial ou heurísticas é muito comum se negligenciar o aspecto da taxa de acerto esperada no funcionamento do sistema e das conseqüencias dos erros esperados quando eles acontecerem (e eles vão acontecer). Na minha opinião esse tipo de negligência é mais ou menos como desenvolver um software convencional sem se preocupar com a qualidade de sua interface ou com sua usabilidade. Ou seja, você corre o risco de desenvolver um sistema que tem um bom conteúdo mas que não serve para nada na prática!

Tomando esse exemplo hipotético do sistema de defesa israelense, suponha que os responsáveis pelo seu desenvolvimento tivessem duas alternativas para o método de reconhecimento. Uma cujo funcionamento esperado fosse:

  • Se a aeronave for realmente hostil, a probabilidade do alarme ser disparado é 99,9%
  • Se a aeronave não for hostil, a probabilidade do alarme ser disparado é 1%

E outra cujo funcionamento esperado fosse:

  • Se a aeronave for realmente hostil, a probabilidade do alarme ser disparado é 80%
  • Se a aeronave não for hostil, a probabilidade do alarme ser disparado é 0,01%

Qual método é melhor?

A resposta para essa pergunta não faz sentido se você não considerar a estratégia geral da defesa israelense e seus objetivos com o sistema bem como os custos relacionados ao disparo de um alarme dessa natureza (tirar 2 ou 3 caças do chão para interceptar uma aeronave custa dinheiro além de pontos negativos de publicidade no caso de um falso alarme). Desconsiderar essas questões podem invalidar completamente a escolha do método, por melhor que sejam os argumento científicos que embasam a escolha.

É esse tipo de coisa que torna difícil transformar novidade científica em inovação. Por definição a inovação tem de estar incluída dentro de um contexto de uso no mundo real, fora de um laboratório de pesquisa. Meu exemplo hipotético pode parecer óbvio mas esse padrão pode se repetir em diversas situações onde a escolha não é tão simples, e nesses casos ser sensível a esse tipo de variável é o que muitas vezes diferencia uma empresa de inovação que tem um produto de sucesso de outra que não tem.

Inovação, Usabilidade 7 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Fold-it: um jogo online em prol da ciência

Lembram do meu último post sobre dois artigos que descrevem a criação bio-computacional de enzimas artificiais? Pois é, o David Baker, autor daqueles papers, lançou uma nova “moda”. Um jogo online chamado fold-it. O objetivo é competir para criar conformações, ou enovelamentos (ou ainda foldings), mais prováveis pra uma proteína. Quanto melhor for o enovelamento, mais pontos o jogador ganha.

A pergunta que voces devem estar fazendo agora é: o que um cientista renomado quer lançando um jogo online? É claro que não é só pela diversão ;-) .

David Baker há anos vem estudando maneiras de computar o enovelamento de proteínas. O motivo é que o enovelamento, ou conformação final de uma proteína, influencia criticamente em sua função.

E criar uma enzima nova requer descobrir exatamente o folding dessa enzima a partir de sua seqüência de aminoácidos. O problema é que essa não é uma tarefa fácil – calcular o enovelamento de um proteína requer efetuar até trilhões de cálculos.

A idéia do jogo começou com o Rosetta, um algoritmo que usa o método de Monte Carlo para predizer a melhor conformação de uma proteína. Já existe há anos um programa de rede distribuída chamado Rosetta@home, que usa computadores voluntários do mundo inteiro com o objetivo de rodar o Rosetta, enquanto ociosos – um screen saver é aberto e mostra como o programa tenta descobrir o enovelamento de diversas proteínas.

Mas os usuários verificavam que esse programa fazia coisas visivelmente idiotas – o que era meio de se esperar, por ser um algoritmo força bruta. A idéia do David Baker foi de, ao invés de usar uma marreta pra solucionar o problema, usar a capacidade de resolver problemas 3D do cérebro humano, usando um jogo.

E o pior é que funciona – houve situações em que o jogador conseguiu achar corretamente a conformação uma proteína, com forma já conhecida, mais rápido que o computador! ;-)

Mas a grande “jogada” do David Baker é fazer com que os jogadores criem conformações novas para proteínas ainda não conhecidas. Essas conformações poderão servir para a síntese de drogas e enzimas ainda não conhecidas, de maneira mais rápida… e divertida ;-)

A pergunta que voces devem estar fazendo agora é: o que um cientista renomado quer lançando um jogo online? É claro que não é só pela diversão ;-) .

David Baker há anos vem estudando maneiras de computar o enovelamento de proteínas. O motivo é que o enovelamento, ou conformação final de uma proteína, influencia criticamente em sua função.

E criar uma enzima nova requer descobrir exatamente o folding dessa enzima a partir de sua seqüência de aminoácidos. O problema é que essa não é uma tarefa fácil – calcular o enovelamento de um proteína requer efetuar até trilhões de cálculos.

A idéia do jogo começou com o Rosetta, um algoritmo que usa o método de Monte Carlo para predizer a melhor conformação de uma proteína. Já existe há anos um programa de rede distribuída chamado Rosetta@home, que usa computadores voluntários do mundo inteiro com o objetivo de rodar o Rosetta, enquanto ociosos – um screen saver é aberto e mostra como o programa tenta descobrir o enovelamento de diversas proteínas.

Mas os usuários verificavam que esse programa fazia coisas visivelmente idiotas – o que era meio de se esperar, por ser um algoritmo força bruta. A idéia do David Baker foi de, ao invés de usar uma marreta pra solucionar o problema, usar a capacidade de resolver problemas 3D do cérebro humano, usando um jogo.

E o pior é que funciona – houve situações em que o jogador conseguiu achar corretamente a conformação uma proteína, com forma já conhecida, mais rápido que o computador! ;-)

Mas a grande “jogada” do David Baker é fazer com que os jogadores criem conformações novas para proteínas ainda não conhecidas. Essas conformações poderão servir para a síntese de drogas e enzimas ainda não conhecidas, de maneira mais rápida… e divertida ;-)



--> Biotecnologia, Inovação, Usabilidade, Visualização Cientifica 4 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)