quinta-feira, 4 de novembro de 2010

Como funcionam Máquinas de busca


Máquinas de buscas servem para fazer consultas não exatas (diferente de bancos de dados) sobre uma coleção de documentos de qualquer tipo. O melhor exemplo de máquina de busca conhecido é o Google.

A explicação seguinte usará a web como exemplo, entretanto é essencial ter em mente que as máquinas de busca não servem somente para procurar páginas da web. Suas aplicações são diretamente proporcionais à criatividade de quem está desenvolvendo algum tipo de sistema "inteligente".
Você tem a web inteira, com trilhões de páginas sobre quaisquer assuntos imagináveis, mas em certo momento decidiu saber mais sobre máquinas de busca. Como fazer? Procurar no google. Mas como isso funciona? Olhando página por página é impraticável mesmo para todos os computadores do Google juntos, especialmente durante a consulta que você realizou. Para realizar este trabalho são efetuados algumas etapas fundamentais.

Antes de mais nada, é preciso "conhecer" de antemão toda a web (ou pelo menos suas páginas mais importantes), ou seja, todos os documentos que poderão ser respostas a quaisquer consultas que alguém possa fazer um dia. 
Este é o trabalho do Coletor, que percorre a web inteira guardando todo o conteúdo de suas páginas, ininterruptamente, à procura de novas páginas, ou mudanças em páginas antigas. É, na verdade, a parte mais complexa de uma máquina de busca da web, por apresentar inúmeros desafios, como descobrir quais novos sites foram criados, com que frequência são atualizados, entre muitos outros. É importante notar que a web pode ser tratada como um grafo, onde os links em cada página são arestas  que levam a outras páginas (vértices). Esta característica é o que permite que a web seja percorrida por robôs (coletores) e que eles possam encontrar novas páginas.

Após ter todo o conteúdo que pode ser buscado por alguém um dia em documentos armazenados localmente é preciso uma estrutura eficiente para se encontrar termos (palavras) contidos nestas páginas. Este é o trabalho do Indexador. Seu trabalho é criar índices invertidos (ou listas invertidas), onde são armazenadas listas de documentos em que cada termo aparece, de forma que quando for efetuada a consulta com os termos "máquina" e "busca" as listas invertidas desses termos serão acessadas para saber em quais documentos cada uma dessas palavras ocorre, juntamente com outras informações, como a frequência do termo em cada um dos documentos, visto que se um termo ocorre muito em um documento, aquele termo provavelmente descreve bem o documento. 

Contudo, somente as listas invertidas não são suficientes para que a consulta seja efetuada com qualidade, elas, assim como os coletores, apenas auxiliam o Processador de Consultas, que realizará cálculos que ajudem a mensurar a relevância de cada página para as consultas. Um dos modelos mais utilizados para cálculo de similaridade entre documento e consulta é o modelo vetorial. Seu funcionamento é simples e sua precisão é excelente. Este método "vê" os documentos e as consultas como vetores num espaço de n dimensões, onde n é o número de termos existentes na coleção de documentos. O cálculo de similaridade entre a consulta e cada documento é, então, o cálculo da distância entre estes dois vetores (usualmente o cosseno entre eles). Quanto maior o cosseno, maior a similaridade entre consulta e documento, portanto a ordenação das respostas é dada a partir destes valores, e são as páginas com maior cosseno (relevância) as que aparecem no topo das respostas sobre máquinas de busca da máquina de busca :)

Nenhum comentário:

Postar um comentário