“Computador, por favor encontre…”

9:14 am Inteligência Artificial, Linguagem Natural

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! :-)

4 Respostas
  1. Yuri :

    Date: abril 8, 2008 @ 6:58 pm

    Murilo,

    Você pode explicar se essa tecnologia poderia ajudar a tornar a Web Semântica mais viável, nem que seja pela geração automática de ontologias?

    Abraço,

    – Yuri

  2. muriloq :

    Date: abril 9, 2008 @ 10:09 am

    Oi Yuri, essa é exatamente a idéia.

    É possível inclusive integrar ontologias já existens a um sistema como o RelEx, que então identificaria as relações semânticas encontradas no texto utilizando os conceitos dessas ontologias.

    Já discutimos algo parecido com o Jimmy Wales (fundador da Wikipedia) e da Wikia.

  3. muriloq » Blog Archive » “Computador, por favor encontre…” :

    Date: abril 30, 2008 @ 1:36 pm

    [...] Artigo que escrevi para o Tecnologia Inteligente sobre o sistema de processamento de linguagem natural em que trabalho. [...]

  4. CeticismoAberto, agora em 459 tags! E muito mais! | CeticismoAberto :

    Date: fevereiro 21, 2010 @ 4:19 am

    [...] multiplicando em quase dez vezes o número de tags anterior. É uma aplicação fantástica do processamento de linguagem natural, que inclui mesmo o aprendizado de máquina: para que o programa da Vetta Labs pudesse determinar [...]