Web semântica, sem enrolação

Hoje me pediram para explicar o que era a tal web semântica. A pegadinha é que se queria uma resposta “sem frescuras”, “sem enrolação de marketing” e com exemplos concretos. Esse artigo é uma tentativa de abordagem bem informal desse assunto.

A web que a gente conhece é feita para ser acessada por pessoas. A informação é organizada de forma que fique esteticamente agradável, num formato familiar aos usuários. Usabilidade é fundamental, mas cria um problema: o que é fácil de ser entendido por humanos não é compreendido por computadores.

Tome como exemplo as suas lojas preferidas na Internet. Os produtos, preços e condições de pagamento são mostrados de forma a chamar a sua atenção. Cada loja faz isso de uma forma diferente. Se você está comparando preços de uma dúza de lojas você vai ter que fazer uma dúzia de buscas, e manualmente copiar e colar isso numa planilha, para só então “digerir” esses dados.

Alguns sites fazem isso automaticamente, mas mesmo esses formatam os resultados para pessoas; escrever um programa que acompanha o preço de alguns produtos todos os dias acessando um site assim dá bastante trabalho (recentemente dei umas dicas para um amigo que fez isso).

A idéia da web semântica é ter toda essa informação disponível não apenas para pessoas, mas também num formato fácil de ser processado por computadores (imagine acessar os preços de todas as lojas da web como se acessa uma planilha eletrônica ou um banco de dados!).

No início acreditava-se que isso se tornaria realidade quando cada criador de conteúdo na web formatasse seus dados de forma estruturada. O HTML comum, usado com fins puramente visuais, daria lugar a linguagens e tecnologias mais rígidas (XML, RDF, OWL, etc.), e seriam disponibilizandas formas de acesso automatizado aos dados (semantic web services, por exemplo).

Só que o progresso nesse sentido tem sido lento: basicamente dá muito trabalho e ninguém tem muito interesse em fazer isso. Lojas não gostam quando seus preços são comparados com o das outras! :-). Há soluções específicas bastante bem-sucedidas, mas não são tão conhecidas do grande público.

Uma tentativa de atacar o problema por outro lado é usar software que consegue transformar informação formatada para pessoas em informação estruturada, automaticamente ou com ajuda do usuário.

Um exemplo desse último caso é o PiggyBank / Solvent, código livre desenvolvido no MIT.

Logo do Piggy Bank

O Solvent é uma extensão pro Firefox que deixa qualquer usuário médio criar (”quase” só visualmente) um código JavaScript que extrai informação de uma página (um scraper).

Com o Solvent (ou outras ferramentas parecidas) você pode capturar os produtos e preços de uma loja virtual, ou as notas de um jogo num site de reviews, ou endereços de agências na página do seu banco, por exemplo. Ele converte informação organizada visualmente para humanos em informação estruturada acessível por computadores.

O PiggyBank é um banco de dados estruturado para armazenar as informações extraídas pelo Solvent. Assim, se todo mundo contribui com scrapers para diferentes sites, o PiggyBank fica cheio de informação facilmente recuperável.

Ainda que para a web a coisa ainda não dê muito certo, isso numa intranet grande ou com fins específicos pode ser muito útil. Eu investiguei bastante a fundo esse tipo de ferramenta enquanto trabalhava para melhorar a busca e o atendimento aos usuários do portal do condado de Miami-Dade, na Flórida.

A partir do momento que as informações da web estão disponíveis num formato estruturado (num banco de dados, planilha ou arquivo XML, por exemplo), fica fácil pensar em um monte de aplicações interessantes.

Por exemplo, seria possível criar um agente inteligente que monitorasse milhares de lojas detectando variações de preço de produtos em que você está interessado. Poderíamos juntar informação geográfica das lojas com informação dos preços e das opiniões de usuários (cada um desses dados vindo de sites diferentes) e mostrar tudo isso no Google Maps, com gráficos feitos com a Google Visualization API - dando uma idéia de como um produto é aceito em diferentes locais, e como o preço influencia nisso.

Obviamente  a idéia central da web semântica não está restrita à implementação específica de um subconjunto dos aspectos dela que o PiggyBank / Solvent provê, nem a tecnologias específicas tradicionalmente associadas a ela. É muito mais um conceito do que uma implementação ou produto propriamente dito.

Os mashups - “misturas” inteligentes de informações de diferentes fontes para criar uma aplicação web ou site original - tão em moda hoje em dia, são materializações bem concretas do conceito de web semântica, sem necessariamente usar nenhuma das tecnologias tradicionalmente associadas a ela. Eles mostram que quando é possível ter acesso uniforme a diversas fontes de informação o resultado final pode ser surpreendente.

Um exemplo recente: misturando-se informação geográfica com pesquisas no Google de sintomas de gripe é possível criar um detector de epidemias de gripe que avisa com duas semanas de antecedência quando uma epidemia de gripe vai chegar em determinado local!

Internet, Linguagem Natural, Web 2.0 0 Comentários

TechCrunch 50!

Está rolando em San Francisco a TechCrunch 50, uma grande conferência onde startups se apresentam para a imprensa, investidores, empreendedores e outros formadores de opinião do Vale do Silício. É provavelmente o maior evento dedicado ao lançamento de novos produtos, sites e empresas inovadoras do mundo. As empresas selecionadas (52 de um total de mais de 1000 inscrições) têm que manter seus produtos em segredo até a conferência.

Como a conferência já começou, podemos anunciar que um dos produtos lançados foi desenvolvido todinho aqui no Labs, e está em beta atualmente. O StockMood.com é uma ferramenta para auxílio a pequenos investidores na bolsa dos EUA. O sistema usa processamento de linguagem natural e inteligência artificial para determinar o “tom” (positivo ou negativo) de artigos que saem na imprensa sobre uma empresa.

Correlacionando o tom dos artigos com o movimento do preço da ação ao longo do tempo, ele tenta quantificar o “humor” da ação, e gera alertas quando o humor e o tom dos artigos do dia chegam a valores muito altos ou muito baixos. Esses alertas indicam uma possível reversão dos preços. O sistema de classificação do tom de artigos está longe de ser perfeito, mas os usuários podem corrigir os erros do sistema pelo site, gerando alertas melhores e permitindo que o próprio classificador aprenda com os erros.

Brett Markinson presenting StockMood.com

A foto acima (by Andrew Mager) é do Brett, CEO da nova startup, durante a apresentação. A recepção ao StockMood.com foi geralmente bem positiva, como nesse artigo da Fortune. embora o modelo de negócios da empresa ainda esteja sendo refinado. O beta será limitado, por enquanto, a 1000 usuários cadastrados, então se você achou a idéia interessante e não tem medo do inglês, cadastre-se!

E, finalmente, parabéns a toda a equipe do StockMood.com, especialmente ao Fabrício Aguiar e ao Gustavo Gama, que vocês conhecem um pouco de posts aqui no blog.

Data Mining, Inovação, Inteligência Artificial, Internet, Linguagem Natural, Negócios, Web 2.0 8 Comentários

A regra de Pareto e as máquinas de busca

A declaração recente da Marissa Mayer, “Vice President of Search Product and User Experience at Google”, de que o Google já resolveu 90% do problema de busca, mas que os 10% ainda vão dar um bom trabalho, incomodou muita gente na webosfera.

Prá quem não conhece a moça, Marissa é certamente uma das executivas mais importantes da indústria atualmente, e talvez um dos pontos máximos que um profissional de usabilidade almejaria hoje em dia.

O que há por trás dessa declaração? Bem, podemos desfilar vários aspectos interessantes aqui.

Uma delas é que frequentemente, no desenvolvimento de software, fala-se sempre da regra do 80/20 ou a Regra de Pareto, que originalmente falava que 80% das consequências vinham de 20% das causas. Mas claro que a proporção foi ganhando outros usos, como “80% do desenvolvimento leva 20% do tempo e os 20% restantes levam os outros 80% do tempo”.

Em bom e claro Português, “o diabo vive nos detalhes” :-)

De fato, muito da busca na web chegou a um nível de refinamento e desempenho formidáveis, mas o que significa dizer que 80% ou 90% do problema já está resolvido? E é neste pé que os críticos da web resolveram pegar para criticar o argumento da Marissa.

Segundo a techcrunch por exemplo, o que resta das coisas a serem indexadas e buscadas ainda é muito grande. Ainda não temos resultados satisfatórios GENÉRICOS para buscas semânticas, buscas em imagens, buscas em filmes, e muitos et ceteras.

Podemos dizer, certamente, que existe um grande potencial em buscas de imagens, por exemplo, em contextos restritos, e este é um mercado que deve crescer rapida e intensamente nos próximos anos. Mas se você quer buscar pela foto do gato com o cachorro, a menos que vc tenha intervenções humanas de forma inteligente, não se resolveu ainda o problema computacional de definir o que é exatamente um cachorro. Mas se você souber formatos de armas, talvez consiga localizar, com algum bom grau de precisão, armas num recinto por exemplo.

E aí podemos estender para as buscas em linguagem natural e etc, e a conclusão é: ainda tem muito terreno a ser caminhado neste aspecto, e isso significa, em termos de inovação, que há muito o que explorar ainda nesta área. Será que 10% é achar uma agulha numa cena de 1 segundo no youtube?

Enquanto isso, silenciosamente, coisas acontecem no Yahoo.

Ninguém do porte desta moça dá declarações impensadas. Stay tuned.

Update 11/9: 2 dias depois, Marissa escreveu uma declaração, voltando atrás, e concordando basicamente com a opinião das pessoas (eu entre elas) que acham que ainda falta muito chão, inclusive citando nosso bom e velho Pareto ;-)

Ciências cognitivas, Data Mining, Inovação, Inteligência Artificial, Internet, Linguagem Natural, Teoria da Informação, Visão Computacional, Web 2.0 0 Comentários

Daphne Koller

é mais uma daquelas mentes brilhantes que trazem um certo orgulho aos brasileiros.

Daphne, aos 12 anos, começou a se interessar por computação (1981). De lá prá cá, teve uma carreira em rápida ascensão, e hoje, aos 39, é professora em Stanford (entrou no departamento de ciência da computação em Setembro de 95), onde faz parte do laboratório de robótica.

E virou notícia dia 28 de Abril (site da ACM) quando recebeu seu ACM-Infosys Foundation Award in Computing Sciences pelos seu trabalho integrando técnicas de IA com formas de resolver problemas do mundo real. Mais especificamente, a Infosys Foundation pagou para ela US$ 150.000, uma mixaria diante dos US$ 500.000 que ela havia recebido em 2004 pela Fundação MacArthur. E a notícia chegou aqui, via New York Times ontem, dia 4 de Maio.

Daphne tem uma vasta gama de interesses, principalmente em redes bayesianas (que ganharam popularidade com os filtros anti-spam), biologia computacional, visão computacional, robótica e percepção, aprendizado supervisionado, lógica probabilística, tomada de decisão e muitos et ceteras que muito nos interessam.

Ave Daphne, aqueles que se esforçam te saúdam. :-D

Biografia, Biotecnologia, Inovação, Inteligência Artificial, Linguagem Natural, Probabilidade 0 Comentários

Categorização de textos

Eu ia comentar um pouco no post do Murilo (”Computador, por favor encontre…“), mas achei que daria um artigo. Vamos lá…

Como descrito pelo Murilo, o processamento de linguagem natural (do inglês Natural Language Processing ou apenas NLP) é o campo da Inteligência Artificial que visa fazer com que os computadores entendam os seres humanos pela sua linguagem natural, sem que seja necessário aprender uma linguagem artificial utilizada pelas máquinas.

Para isso, existem basicamente duas técnicas: análise sintática e análise estatística.

O RelEx descrito pelo Murilo utiliza análise sintática para extrair informações semânticas dos textos. A outra técnica citada utiliza um conjunto de dados previamente conhecido para calcular valores estatísticos que são utilizados para processar um conteúdo desconhecido. Por exemplo, na análise estatística é possível calcular as probabilidades da palavra “manga” significar fruta ou parte de uma camisa, de acordo com as palavras que aparecem próximas à ela.

Com o crescimento e popularização da Web, é crescente também o conteúdo textual disponível para os usuários. Além da aplicação que o Murilo apresentou (sistema de busca mais ciente da semântica do conteúdo buscado), temos trabalhado aqui no Labs com categorização de textos utilizando a análise estatística.

Essa aplicação visa atribuir categorias para grandes quantidades de textos desconhecidos, sem que o usuário os tenha lido. Por exemplo, existem diversos sites de notícias que publicam várias notícias diariamente. Um categorizador de textos pode selecionar, dentre todas as notícias de todos os sites, quais as que o usuário mais se identifica e tem interesse em ler, poupando bastante tempo.

Outro uso bem conhecido de categorização de textos é o processamento de críticas de produtos em sites de comércio eletrônico ou de filmes, para notificar ao usuário, sem que o usuário as leia, se o produto ou filme é bom ou ruim.

A categorização também pode ser utilizada em máquinas de busca. Aqui no Labs, em parceria com a Novamente LLC, foi desenvolvida uma máquina de busca que utiliza o feedback do usuário para ordenar as páginas que aparecem na tela de resultados. A idéia é fazer com que os primeiros resultados sejam os mais relevantes para os usuários.

Existem diversas outras aplicações interessantes para NLP. Vejo um futuro bastante promissor nessa área……..

Inteligência Artificial, Linguagem Natural 0 Comentários

Computação pervasiva e casas que pensam

Tenho visto nas livrarias uma verdadeira inundação de livros editados ou re-editados na esteira do sucesso de Dan Brown. A excelente idéia de misturar fatos históricos com ciência e ficção de uma maneira sutil e homogênea, quando feita seguindo uma proporção mágica que apenas os bons autores conseguem inferir, pode realmente resultar em livros divertidos, leves e muito gostosos de se ler. Claro que isso é mais ou menos como cozinhar: os mesmos temperos misturados em proporções diferentes geram resultados em um amplo espectro que vai do sofrível ao meu-Deus-isso-é-uma-perdição!

Li há pouco tempo um livro que alguns amigos meus classificariam como “honesto”. O estilo da autora é meio vamos-no-trivial-pra-não-errar mas o pano de fundo é bem interessante. “A Origem Perdida” da Matilda Asensi, fala sobre línguas antigas das tribos indígenas sul-americanas com personagens ultra-modernos que desfiam um número impressionante de termos, gadgets e até mesmo gírias do obscuro mundo dos computeiros de profissão.

Eu me lembrei desse livro quando li o excelente post do Fabrício sobre Computação Ciente de Contexto . No livro um dos personagens tem uma casa espetacular com um computador de última geração que funciona ao mesmo tempo como secretária, governanta, conselheira e psicóloga. Tudo no feminino porque o tal personagem foi quem supostamente escreveu o software que roda na tal máquina e ele teve o compreensível e louvável bom-senso de colocar características femininas nas “interfaces” do sistema (o nome pelo qual ele se o chama, a voz no sintetizador, o “rosto” digital que aparece na tela etc.).

A casa é toda controlada por esse software de IA. Desde persianas nas portas e janelas até o sistema de aquecimento central, passando por streams de aúdio e vídeo direcionados a diversos canais disponíveis na casa e comandados por voz (não comandos “secos”, mas interpretação de linguagem natural). O tal sistema chegava ao ponto de “fritar o ovo”, dando ordens em linguagem natural a empregados domésticos (cozinheiras, copeiros etc) minutos antes de acordar o dono da casa para que seu café-da-manhã estivesse pronto e quentinho na hora certa em sua cama. Realmente invejável… O cara tinha toda a casa às suas ordens, mandava e desmandava o tempo todo, falava mais grosso para ressaltar prioridades, xingava horrores para dar feedbacks negativos que eram sempre humildemente ouvidos pelo sistema, que agradecia pela oportunidade de aprender com os próprios erros. Tudo isso sem sofrer o desgaste psicológico por estar sendo escroto com os empregados! (Opa… tem gente que me falaria que isso é um ponto negativo :-)).

Claro que a autora foi coerente e esse personagem sofre no livro porque não consegue arrumar mulher! :-)

Mas o que achei bacana é que tirando a parte do cérebro de IA que dava conselhos e interpretava/gerava linguagem natural, pouco há de ficção nessa casa inteligente. De fato, hoje temos um conjunto de sensores e atuadores (grande parte deles adaptados da automação industrial) que se usados em conjunto com técnicas apropriadas de computação ciente de contexto em uma arquitetura bem planejada podem perfeitamente compor um sistema residencial “inteligente”, ou pelo menos inteligente o suficiente para impressionar até mesmo um computeiro experimentado.

Eu acabei de ler um livro sobre casas inteligentes e vou postar em breve mais informações sobre isso. Na verdade minha intenção inicial era já colocar tais informações neste post mas acabou que falei pelos cotovelos e o texto já está bem grandinho, então fica para a próxima.

Automação, Inteligência Artificial, Linguagem Natural 0 Comentários

“Computador, por favor encontre…”

Jornada nas Estrelas, processamento de linguagem natural, e o que os computadores podem fazer para lhe ensinar a causa da Dengue

Numa cena antológica do filme Jornada nas Estrelas IV: A Volta para Casa, a tripulação da USS Enterprise volta no tempo para o longínquo ano de 1986. O engenheiro-chefe Scotty então se vê diante de um computador da época (um Mac Plus, da Apple), e, da forma mais natural do mundo, começa a falar com o micrinho, que se recusa a responder. O Dr. McCoy, então, gentilmente entrega a Scotty o mouse que estava em cima da mesa. Scotty sorri, pega o mouse como se fosse um microfone, e fala de novo: “Computador…” (veja essa cena no Youtube).

Scotty talks to Mac

A cena virou uma piada recorrente contada por todo mundo que sonha com computadores capazes de estabelecer um diálogo de forma natural com o usuário - como os computadores da ficção científica e dos quadrinhos (o Bat-computador não precisa de mouse ou teclado!). E, mesmo hoje em dia, não é incomum usuários inexperientes digitarem em serviços de busca como o Google frases completas, conversacionais (”em que ano o Rio de Janeiro foi capital do Brasil ?”).

Obviamente, não é assim que funciona; o próprio Google, considerado por muitos o serviço de busca mais sofisticado da Internet, não faz absolutamente nada referente ao que chamamos de Processamento de Linguagem Natural (em inglês, Natural Language Processing), as técnicas usadas para compreender frases escritas na língua do dia-a-dia dos humanos. Ao invés disso, o Google, como todos os outros serviços de busca tradicionais, simplesmente conta quantas vezes as palavras aparecem nas páginas e nas pesquisas dos usuários (uma abordagem simples, mas que dá bons resultados em muitos casos).

 Quer dizer que Processamento de Linguagem Natural é ficção científica ? Não, de jeito nenhum! Empresas como a californiana Powerset oferecem (em breve, para o público) um sistema de busca capaz de “compreender” linguagem natural.  E nossa equipe no Vetta Labs trabalha há vários anos em tecnologia capaz disso - com resultados surpreendentes.

O sistema que desenvolvo atualmente, o RelEx, Semantic Relation Extractor, extrai informações semânticas (isso é, relativas ao signficado) de um texto, baseando-se em técnicas sofisticadas de análise sintática (identificação de “sujeito”, “predicado”, como aprendemos no ensino fundamental), algoritmos semânticos construídos manualmente e uso intensivo de técnicas de aprendizado de máquina. E o mais interessante disso tudo é que praticamente todo o código é open source (ainda que árido para desenvolvedores não familiarizados com essa área).

E o que o RelEx faz ? Imagine que você quer saber, por exemplo, o que causa a dengue. Se uma página na internet tem a frase Dengue is caused by four closely related virus serotypes of the genus Flavivirus, mas você procura num serviço de busca tradicional dengue microbe, você não encontra coisa alguma.

Se procura Which virus causes Dengue ?, numa tentativa de busca com linguagem natural, também não dá em nada (porque a frase na página diz Dengue is caused by Flavivirus, não Flavivirus causes Dengue).

A tecnologia usada no RelEx interpreta tanto a frase na página quanto a sua pergunta, e consegue casar ambas por compreender, por exemplo, que Dengue é uma doença, vírus um agente patológico, e que vírus que dá dengue e dengue é causada por quê ? referem-se à mesma coisa.

Como uma imagem vale mais do que mil palavras, vejam só como o RelEx “enxerga” as frases do exemplo:

Which virus causes Dengue ?

 

 

Dengue is caused by four closely related virus serotypes of the genus Flavivirus

Fica simples então casar a variável (associada à palavra which) à palavra Dengue.

É claro que por trás  das imagens bonitinhas há muito mais coisas interessantes. Por exemplo, é trivial obter análise sintática tradicional:

(S Which virus (VP causes (NP Dengue)) ?)

E informação semântica específica também é produzida:

^1_Temporal_colocation:Event(present,cause)
^1_Temporal_colocation:Time(present,cause)
^1_Causation:Affected(cause,virus)
^1_Transitive_action:Agent(cause,virus)
^1_Causation:Effect(cause,Dengue)

Definitivamente, Processamento de Linguagem Natural não é ficção científica - mas pode ser tão divertida quanto! :-)

Inteligência Artificial, Linguagem Natural 3 Comentários