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)

Visualizando software como cidades

Richard Wettel é um estudante de doutorado na Suíça, e desenvolveu uma tecnologia bem interessante para visualização de bases de código. O CodeCity usa a metáfora de cidades para apresentar os componentes de uma base de código orientada por objetos de forma tridimensional, bem bonitinha. Classes são prédios e pacotes são os bairros. Diversas métricas, como tamanho, complexidade e outras podem ser representadas como características dos prédios (altura, cor, e assim por diante).

Não sei se serve pra alguma coisa útil, mas que é bonitim é. Abaixo, o CodeCity visualizando o próprio código:

CodeCity

Visualização Cientifica 2 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)