Extração Inteligente de Palavras-Chave

7:07 pm Inteligência Artificial, Linguagem Natural

Aqui na Vetta Labs desenvolvemos algumas tecnologias baseadas no processamento de linguagem natural, como já comentei em outro artigo. Hoje vou falar de uma nova aplicação que produzimos recentemente, que tem duas características bem interessantes: uma é suportar tanto textos em inglês quanto em português (o que é bastante incomum, já que as particularidades de nossa língua nem sempre são compatíveis com as técnicas mais conhecidas); a outra é que os resultados produzidos são muito fáceis de serem utilizados na prática, de forma simples, em por exemplo blogs e portais de conteúdo.

É comum sites associarem aos seus artigos frases ou palavras-chave relacionadas ao conteúdo. Essas palavras-chave podem funcionar como resumos do que é discutido, levar o usuário a outros artigos que tratam dos mesmos assuntos e também ajudar na categorização e indexação dos textos. Normalmente essas frases ou palavras-chave são escolhidas pelo próprio autor, ou então definidas pelos visitantes, de forma colaborativa (o que exige um grande número de visitas e “votos” para evitar resultados de baixa qualidade ou sem sentido).

O problema é que muitas vezes já temos uma grande coleção de textos sem palavras-chave definidas, e escolhê-las manualmente  é uma tarefa extremamente árdua.  Existem algumas ferramentas simples para detecção automática de palavras-chave, mas praticamente todas elas usam uma abordagem ingênua que dificilmente funciona bem: são usados dicionários, tabelas com palavras-chave pré-definidas, e  a aplicação simplesmente verifica se a palavra-chave na lista aparece no artigo. Essa alternativa é inútil se os artigos em questão são sobre assuntos pouco comuns, ou se as palavras-chave que desejamos são termos menos conhecidos.

Esse exatamente era o problema de dois dos nossos clientes: a h+ Magazine, uma revista eletrônica sobre trans-humanismo, singularidade e outras tendências tecnológicas e culturais, e o Ceticismo Aberto, um dos maiores sites do Brasil sobre ceticismo e divulgação científica.

Keywords through cyberspace (Digital Composite)

A solução que desenvolvemos utiliza técnicas de processamento estatístico de linguagem natural e aprendizado de máquina para extrair automaticamente frases e palavras-chave de milhares de artigos desses sites. As palavras-chave encontradas incluem neologismos, expressões, nomes próprios e termos obscuros que jamais apareceriam nos resultados de uma abordagem baseada em listas, e são automaticamente inseridas nos sistemas de gestão de conteúdo dos sites (baseados em WordPress e Drupal), permitindo seu uso imediato.

Nosso sistema inicialmente identifica frases ou palavras-chave candidatas criando sequências de até três ou quatro palavras. Cada candidata então é analisada, extraindo-se características como:

  • frequência no uso geral (palavras extremamente comuns não são importantes)
  • frequência no texto (palavras repetidas no artigo têm peso maior)
  • posição no texto (palavras no início ou no final do texto costumam ser mais representativas)
  • categoria gramatical (substantivos têm mais peso que preposições, por exemplo)
  • função sintática (frases sintaticamente incorretas ou incompletas são rejeitadas)
  • entidades ou lugares representados (o sistema identifica nomes próprios como Albert Einstein, Zumbi dos Palmares, Belo Horizonte ou São Luís do Paraitinga)

Note que combinar todas as essas informações extraídas e decidir se determinada candidata é ou não uma frase ou palavra-chave é uma tarefa complicadíssima. Para resolver esse problema, usamos um método de aprendizado supervisionado: utilizamos um pequeno número de artigos (em torno de 50 ou 100) que já tinham suas palavras-chave definidas manualmente pelos autores como exemplos positivos. Um algoritmo de aprendizado supervisionado analisa as informações acima dos exemplos positivos dados e aprende a identificar as palavras-chave, automaticamente. O interessante é que o modelo obtido é capaz de generalização, ou seja, apesar de ter aprendido “estudando” apenas 100 artigos ele é capaz de aplicar de forma correta as mesmas regras para artigos inéditos.

E os resultados são surpreendentes – às vezes é difícil convencer as pessoas de que as palavras-chave foram escolhidas automaticamente e não por uma pessoa capaz de ler e interpretar cada um dos artigos!

Notas

A nova versão do Ceticismo Aberto, já com as palavras-chave extraídas pelo sistema da Vetta Labs, entrou no ar no domingo 21 de Fevereiro, e a versão em inglês, para a h+ Magazine, deve ser disponibilizada publicamente em breve.

O projeto foi desenvolvido por Fabrício Aguiar (que já fez com a gente outras aplicações interessantes baseadas em linguagem natural), a partir de código escrito por Murilo Queiroz (que também coordenou o desenvolvimento) e diversos projetos de software livre, incluindo o WekaKEAOpenNLP, CoGrooRembrandt e OpenCalais.

Os arquivos de treinamento usados na versão para português foram criados  por Kentaro Mori, do Ceticismo Aberto, e muitas das idéias foram sugeridas inicialmente pelo Dr. Ben Goertzel.

7 Respostas
  1. Pascal :

    Date: fevereiro 20, 2010 @ 9:51 pm

    awesome !

    A algum tempo atrás eu estava imaginando algo do genero, vou seguir as dicas :D

    A nível de curiosidade, a implementação foi feita usando que tecnologias ?

  2. Murilo Queiroz :

    Date: fevereiro 20, 2010 @ 10:35 pm

    @Pascal:

    O sistema foi implementado em Java, e usa os componentes de software livre que menciono no artigo.

  3. Fabio Lima :

    Date: fevereiro 21, 2010 @ 12:22 am

    Já ouvi falar em um sistema semelhante quando eu pesquisava sobre catalogação automática de artigos, há alguns meses.

    Achei bastante interessante esse projeto brasileiro!

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

    Date: fevereiro 21, 2010 @ 4:21 am

    [...] textos, escolhendo manualmente as palavras-chave. A partir daí e um tanto de magia, ou melhor, tecnologia explicada melhor pelos autores aqui, um trabalho que levaria centenas de horas foi realizado em alguns [...]

  5. Murilo Queiroz :

    Date: fevereiro 21, 2010 @ 8:46 am

    @fabiolimace

    Sim, é uma aplicação semelhante a catalogação automática de artigos – aliás, a versão inicial do software que usamos nós desenvolvemos exatamente para isso (no caso, artigos de medicina).

  6. Você gosta do “Google Trends”? « De Gustibus Non Est Disputandum :

    Date: fevereiro 23, 2010 @ 9:32 am

    [...] Posted by claudio under Uncategorized Leave a Comment  Então vai gostar deste artigo. Devo dizer que conheço por alto alguns dos membros da Vetta, além de um conhecido mais familiar [...]

  7. muriloq » Blog Archive » Extração Automática de Palavras-Chave :

    Date: fevereiro 23, 2010 @ 11:52 am

    [...] fim-de-semana um artigo no Tecnlogia Inteligente sobre um projeto que desenvolvemos na Vetta Labs: extração automática de palavras-chave usando processamento de linguagem natural e aprendizado de [...]