• Nenhum resultado encontrado

Agentes inteligentes para pesquisas na WEB

N/A
N/A
Protected

Academic year: 2021

Share "Agentes inteligentes para pesquisas na WEB"

Copied!
68
0
0

Texto

(1)

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA – INE

CIÊNCIA DA COMPUTAÇÃO

Agentes inteligentes para pesquisas na Internet

Florianópolis 2004

(2)

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA – INE

CIÊNCIA DA COMPUTAÇÃO

Agentes inteligentes para pesquisas na Internet

Monografia submetida à Universidade Federal de Santa Catarina como parte dos requisitos para a obtenção do grau de Bacharel em Ciência da Computação.

Autor: Rafael Gaebler

Orientador: Benjamin Luiz Franklin. Co-Orientador: Mauro Roisenberg Banca Examinadora: Jovelino Falqueto.

Florianópolis 2004

(3)

Monografia defendida por Rafael Gaebler para a

obtenção do bacharelado no curso de Ciências da Computação da Universidade Federal de Santa Catarina, referente ao tema

Agentes Inteligentes para Pesquisas na Internet, em Florianópolis, no ano de 2004.

_________________________________________ Benjamin Luiz Franklin

Orientador belfra@uol.com.br _________________________________________ Mauro Roisenberg Co-Orientador mauro@inf.ufsc.br _________________________________________ Jovelino Falqueto

Membro da Banca Examinadora falqueto@inf.ufsc.br

(4)

À beira de um precipício só há uma maneira de andar para frente: é dar um passo atrás.

(5)

Dedico este trabalho aos meus pais, sem eles nada disso seria possível.

(6)

Agradecimentos

Agradeço antes de tudo, aos meus pais, Rudi Gaebler e Dinorá Marçal Gaebler, que confiaram em mim durante todo este tempo em que cursei a faculdade. Foram também as pessoas que, com carinho e atenção, me motivaram a superar momentos difíceis e com quem compartilhei muita das minhas alegrias.

Agradeço ao meu irmão Robson e a minha irmã Elisângela pelos momentos de descontração que passamos juntos, e aos amigos que fiz na faculdade, amizades que espero que sejam para o resto da vida. Vocês foram muito importantes para mim nestes últimos anos.

Agradeço ao pessoal da banca por terem aceitado o convite de fazer parte do projeto, em especial ao meu orientador Benjamin L. Franklin, que sempre se demonstrou interessado e disposto a me orientar neste trabalho.

(7)

RESUMO

Este projeto propõe a criação de um sistema de pesquisas na Internet. Um sistema que realize estas pesquisas automaticamente sem a necessidade da interação humana. Criando uma base de dados que estará sendo constantemente atualizada com as informações obtidas por agentes que varrem a Internet atrás de informações.

A proposta dos agentes de informação é amenizar de alguma forma o problema específico de sobrecarga de informações. A grande utilidade dos agentes de informação seria então a criação de uma interface com o usuário para pesquisa e recuperação de informações tão simples para que as pessoas usassem de uma forma bem natural.

(8)

ABSTRACT

This project considers the creation of a system of research in the Internet. A system that automatically carries through these research without the necessity of the interaction human being. Creating a database that will be being constantly brought up to date with the information gotten for agents who sweep the Internet behind information.

The proposal of the information agents is to brighten up of some form the specific problem of overload of information. The great utility of the information agents would be then the creation of an interface with the user for research and recovery of so simple information so that the people used of a well natural form.

(9)

Sumário

SUMÁRIO...9 1. INTRODUÇÃO...11 1.1 JUSTIFICATIVAS...11 1.2 PROBLEMA...12 1.3 OBJETIVO...12 1.4 ESTRUTURA...12 2. AGENTES INTELIGENTES ...13 2.1 DEFINIÇÃO DE AGENTES...13 2.2 TIPOS DE AGENTES...14 2.3 AGENTE RACIONAL...14 2.4 MEDIDAS DE DESEMPENHO...16

2.5 ESTRUTURA DE AGENTES INTELIGENTES...17

3. PROGRAMAS DE AGENTES...18

3.1 TIPOS DE PROGRAMA DE AGENTES...19

3.1.1 Agentes Reativos...19

3.1.2 Agentes Reativos Baseados em Modelo...19

3.1.3 Agentes Baseados em Objetivos ...20

3.1.4 Agentes Baseados em Utilidade...21

4. AMBIENTES ...22

4.1 PROPRIEDADE DOS AMBIENTES...22

4.2 PROGRAMAS DE AMBIENTES...22

5. PROGRAMAÇÃO O.O. X PROGRAMAÇÃO ORIENTADA A AGENTES ...24

6. AGENTES DE INTERNET ...25

6.1 PROPOSTAS DOS AGENTES DE INTERNET...26

6.2 ELEMENTOS DE UM AGENTE DE INTERNET...27

7. A INTELIGÊNCIA DO AGENTE...28

7.1 APRENDIZADO DE AGENTES INTELIGENTES...28

7.2 PROCESSO DE EXTRAÇÃO DE CONHECIMENTO DE DADOS...29

8. ALGORITMOS DE PESQUISA ...32

8.1 SOBRE ALGUNS TIPOS DE PESQUISA...32

9. CONSTRUINDO UM AGENTE ...35

9.1 MÉTRICAS DE DESEMPENHO PARA AGENTES DE INFORMAÇÃO...40

10. MECANISMOS DE PESQUISA VERSUS AGENTES DE INTERNET...42

11. APLICAÇÕES ...45

11.1 RESPONSABILIDADE NA PESQUISA...45

11.2 CRITÉRIOS PARA AVALIAR FONTES DE INFORMAÇÕES NA INTERNET...46

12. IMPLEMENTAÇÃO...48 12.1 JADE ...48 12.2 HTMLPARSER...48 12.3 OPROJETO...49 12.3.1 Pacote de Comportamentos ...49 12.3.2 Pacote de Agentes...50 12.3.3 Pacote Internet e XML...51

(10)

COMO OS RESULTADOS SÃO SALVOS...52

12.4 COMO É FEITA A AVALIAÇÃO...53

12.5 TELAS DO SISTEMA...55

12.5.1 Tela de pesquisa: ...55

12.5.2 Tela de resultados:...56

12.5.3 Tela de detalhes:...57

13. DESEMPENHO DO AGENTE E MELHORIAS ...59

14. BUSCAS FUTURAS ...61

(11)

1.

Introdução

Neste projeto o conceito de Agentes será aplicada na área da Internet, mais especificamente na realização de buscas e pesquisas, e no monitoramento de páginas da Internet.

Esta área de acesso e gerenciamento da informação é de grande atividade, tendo em vista a rápida popularização da Internet e a explosão da informação disponível a seus usuários. Aqui agentes podem ser empregados não apenas na pesquisa e filtragem de informação, mas também na categorização, priorização, disseminação seletiva, anotação e no compartilhamento cooperativo de documentos e informações.

1.1 Justificativas

Quando realizo uma pesquisa na Internet, os mecanismos de busca retornam inúmeros resultados e, em alguns casos, isto não é interessante, pois logo em seguida preciso fazer um refinamento desta pesquisa. Isto é, é necessário fazer uma busca em cima dos resultados de uma pesquisa.

Além disso, existem grandes motivos para a pesquisa na área de agentes de informação:

Primeiro, porque existe uma demanda ainda reprimida por ferramentas que possibilitem o gerenciamento da explosão de informações na Internet. “Parece ser sensato pensar que num futuro bem próximo, por melhor que a Internet possa ser organizada, não haverá outra forma de pesquisar informações contidas na Internet a não ser através do uso de agentes de informação, vai chegar o momento em que não se terá alternativa em função deste espantoso crescimento no volume de informações armazenadas na Internet” [1].

“Existe um potencial econômico muito grande a ser explorado por detrás desta tecnologia, vale lembrar também que em termos de marketing este rótulo de agentes vende muito bem” [1].

(12)

1.2 Problema

“O armazenamento e recuperação de dados por pessoas e organizações passaram por modificações substanciais ao longo dos últimos anos até a recente popularização da Internet, que transformou a visão clássica de base de dados, de uma coleção centralizada de dados homogêneos em coleções de informação distribuídas e heterogêneas. Um dado não é mais uma entidade estruturada e pode ser quase qualquer tipo de objeto representável, por exemplo, um desenho, um som, um texto, um registro, etc. A disseminação das redes de computadores tornou informações desse tipo disponíveis a qualquer um e qualquer um pode representar simultaneamente o papel de produtor ou consumidor dessa informação.” [1]

1.3 Objetivo

Elaboração de um sistema responsável por lançar agentes na Internet. Estes agentes têm por objetivo percorrer páginas da web buscando links para novas páginas, e assim o farão até um certo ponto quando encontrarão um endereço eletrônico relevante e o mandarão para uma base de dados.

1.4 Estrutura

Os primeiros capítulos introduzem o conceito de Agentes, quais os tipos de programas de agente e seus ambientes. Nos capítulos seguintes é dada uma maior ênfase sobre agentes de Internet, quais são suas propostas e como ele é composto.

A seguir, noções de como construir um agente são apresentadas e complementadas pela apresentação da implementação do sistema desenvolvido, mostrando suas características e desempenho.

(13)

2.

Agentes Inteligentes

2.1 Definição de Agentes

As pesquisas sobre Agentes é no momento um campo bastante popular. Entretanto o termo Agente não possui uma definição que é aceita por todo mundo, devido principalmente aos inúmeros enfoques sob os quais é aplicado. Possíveis definições são as que seguem:

“Um agente é uma entidade que percebe o seu ambiente através de sensores, e atua sobre este ambiente através de seus atuadores. Um agente humano tem olhos, ouvidos e outros órgãos como seus sensores, e outras partes do corpo como atuadores. Um robô agente pode possuir câmeras e sensores infravermelhos como sensores e vários motores como atuadores. Um agente de software possui bits decodificados como seus sensores e atuadores”. [2]

“É uma peça de software que executa uma determinada tarefa empregando informação extraída de seu ambiente para agir de forma adequada no sentido de completar sua tarefa de modo bem sucedido. O software deve ser capaz de adaptar-se a eventuais modificações ocorridas em seu ambiente de modo a que o resultado pretendido seja independentemente alcançado”. [4]

(14)

Então podemos dizer que, conceitualmente, entende-se por Agente um sistema fundamentado em uma base de conhecimento, que percebe um ambiente, seja este um mundo físico, representação gráfica, uma coleção de outros agentes ou ambientes complexos; raciocina para interpretar estas percepções; desenvolve inferências; resolve problemas e determina ações, agindo sobre o ambiente para realizar um conjunto de metas ou tarefas para as quais foi projetado.

2.2 Tipos de Agentes

Vários autores costumam classificar os agentes encontrados baseando-se nas suas aplicações. A baseando-seguir é aprebaseando-sentada alguma dessas classificações definidas por Nwana [4], mais precisamente para agentes com instruções baseadas na web, que é o enfoque do trabalho.

• Agentes inteligentes – segundo o autor, este tipo de agente é mais o que os pesquisadores desejam do que a própria realidade;

• Agentes de informação – são caracterizados por aquilo que “fazem” e não por aquilo que “são”. São responsáveis pelo gerenciamento, manipulação e ordenação da informação obtida de diferentes fontes;

• Agentes móveis – são processos de software que conseguem se locomover por uma rede de computadores. Porém esta mobilidade não é uma condição necessária e nem suficiente para caracterizar um agente.

• Agentes híbridos – são oriundos da combinação de mais de um tipo de agente.

• Agentes colaborativos – colaboram com outros agentes para realizar uma determinada tarefa.

2.3 Agente Racional

“Para cada seqüência em sua história perceptiva, um agente racional ideal deve realizar qualquer ação que maximize sua medida de desempenho,

(15)

levando em consideração as evidências proporcionadas pela seqüência perceptiva, e qualquer outro conhecimento que o agente tenha disponível”. [2]

Stuart Russell e Peter Norvig [2] ainda afirmam que a racionalidade de um agente depende de pelo menos quatro fatores:

• A medida de desempenho que define o grau de sucesso;

• Tudo o que o agente percebeu, a sua memória perceptiva;

• O que o agente sabe sobre o ambiente em que atua;

• As ações que o agente pode executar.

“Através destas afirmações, percebe-se claramente que os agentes dependem da sua seqüência perceptiva. Estas seqüências são os critérios usados para definir a ação que um agente deve executar, é ideal criar um mapeamento que relacione o que o agente ”percebeu“ com o que o agente deve fazer. E, se estas tabelas de mapeamento descrevem agentes, um agente ideal é descrito por um mapeamento ideal.

Para se projetar um agente racional é muito importante que o mapeamento das ações do agente sejam feitas da melhor maneira possível. Porém, está não é a única característica que define um agente racional. É necessário que o agente também tenha autonomia para aprender sozinho.

Pode parecer estranho que um agente com pouca, ou nenhuma experiência, possa aprender sozinho. Por isso, é provável que no início ele precise do auxílio do projetista. Assim como um animal, que quando é pequeno aprende a caçar para que possa sobreviver, o agente necessita de um conhecimento inicial, assim como a habilidade de aprender.” [2]

Outras características de um bom agente, citadas por [5], são as seguintes:

• Direção: capaz de receber diretrizes de usuários e outros agentes;

(16)

• Confiabilidade: desempenho de acordo com expectativas;

• Antecipação: antecipar necessidades, resultados, informações, aprendizagem;

• Atividade: capaz de iniciar solução de problemas, fusão de informação, etc;

• Cooperação: entre sistemas e outros agentes; resolução de conflitos; conflitos, etc;

• Flexibilidade: estruturas heterogêneas de agentes e fontes de informação;

• Adaptação: acomodação de modificações de objetivos, tarefas, aprendizagem.

2.4 Medidas de Desempenho

A medida de desempenho de um agente dever ser objetiva. Como e

quando o sucesso deve ser avaliado depende do projetista do agente e do

objetivo do agente em questão.

“Por exemplo, para avaliar um agente responsável pela limpeza de uma sala, os prováveis fatores que deveriam ser avaliados, o “Como”:

• a limpeza do chão;

• a quantidade de sujeira retirada;

• a quantidade de eletricidade consumida;

• o barulho produzido;

• o tempo gasto para a limpeza.

O “Quando” não é menos importante, se quisermos avaliar os agentes que começam a trabalhar mais cedo, devemos verificar a quantidade de sujeira limpa na primeira hora do dia. Porém esta escolha do quando deve ser tomada com cuidado, pois podemos estar punindo agentes que estão fazendo o seu trabalho direito. Seguindo o nosso exemplo, os agentes que trabalham constantemente durante o dia todo poderiam estar sendo mal avaliados, nas

(17)

horas iniciais do dia a sala pode não estar completamente limpa, porém mais tarde ela estará.” [2]

Outros cuidados devem ser tomados no momento em que avaliamos um agente:

• “Racionalidade Onisciência: Considere o seguinte exemplo: você está andando em uma avenida movimentada, e vê uma nota de $100 do outro lado da rua. Neste momento não está passando nenhum veículo e você decide atravessar para pegar o dinheiro. Mas quando está na metade do caminho um pedaço de um avião que havia se desprendido cai sobre sua cabeça. É claro que apesar do insucesso, a sua ação foi racional, as chances de atravessar a rua eram enormes, você evitou ser atropelado por um, carro porém não tinha como notar o que estava vindo do céu. Em outras palavras, não podemos punir um agente que falhou por um fator que ele não pode perceber.

• Racionalidade Perfeição: Racionalidade maximiza a desempenho esperada, enquanto a perfeição maximiza a desempenho atual”. [2]

2.5 Estrutura de Agentes Inteligentes

Esta é uma estrutura apresentada por [2]:

Agente = Arquitetura + Programa

• Programa – Implementa a função que mapeia as percepções com suas devidas ações. Tem como entrada as percepções atuais e como saída a ação que deve ser efetuada;

• Arquitetura – Roda o programa, é o dispositivo físico, e que caso seja necessário possui os atuadores e sensores.

(18)

3.

Programas de Agentes

As versões mais novas dos programas de agentes possuem um simples formato, e são descritas por [2] da seguinte maneira:

Estes programas possuem uma estrutura de dados interna que é atualizada toda vez que uma nova percepção chega. Estas estruturas de dados são operadas pelos procedimentos de escolha de um agente para decidir uma ação, que é então passada para a arquitetura para ser executada.

Devemos notar duas coisas neste pseudocódigo de agentes. Primeiro, apesar do mapeamento de ações ser definido por uma seqüência de percepções, o programa recebe apenas uma percepção como entrada.

Segundo, o objetivo ou as medidas de desempenho não faz parte do esqueleto do programa. Isto porque a medida de desempenho é aplicada externamente para que o agente seja julgado, e porque é possível obter bons desempenhos sem ter conhecimento das medidas de desempenho.

A escolha de qual ação o agente deve escolher não deve ser somente olhar para uma tabela de seqüência de percepções. Não é muito difícil notar que isto tende a falhar:

• A tabela necessária para o agente realizar uma tarefa muito fácil pode tornar-se imensa;

• Pode-se levar muito tempo para projetar uma tabela;

• O agente não será realmente autônomo. E uma mudança de cenário pode deixar o agente perdido;

(19)

• Mesmo que o agente ganhe um mecanismo de aprendizado para se tornar autônomo, ele poderia não aprender os valores corretos de todas as tabelas de entrada.

3.1 Tipos de Programa de Agentes

Os tipos de programas de agentes podem variar de acordo com a aplicação de cada um, [2] classificam alguns tipos de agente da seguinte maneira:

3.1.1 Agentes Reativos

Para resolver problemas com tabelas de percepções muito grandes, é possível resumir partes da tabela notando certas associações de entrada e saída que ocorrem freqüentemente. Por exemplo, estamos dirigindo nosso carro por uma estrada e o carro da frente freia, as luzes de freio do carro se acendem, então o motorista deve notar isto e começar a frear. Em outras palavras, o processo “começar a frear” pode ser desencadeado quando se observa o processo “o carro da frente está freando”.

Este tipo de agente tem uma estrutura fácil de entender. A função INTERPRET-INPUT gera uma descrição abstrata do estado atual da percepção, e a função RULE-MATCH retorna a primeira regra de um conjunto de regras que se encaixa com o estado descrito.

3.1.2 Agentes Reativos Baseados em Modelo

O agente anterior só irá funcionar baseado na percepção atual. Considere o seguinte caso: de tempo em tempo o motorista olha pelo retrovisor

(20)

para verificar onde estão os veículos próximos. Quando o motorista não está olhando pelo retrovisor os carros tornam-se “invisíveis”, pois neste momento ele não sabe onde eles se encontram, e isto é um problema caso ele queira trocar de pista.

Este problema ocorre pois os sensores não têm acesso ao completo estado do ambiente. Em alguns casos, o agente precisa manter informações do estado atual, para que possa distinguir entre estados do ambiente que geram a mesma entrada de percepção, mas que são ligeiramente diferentes.

Atualização do estado interno requer conhecimento sobre:

• Que informação perceptiva é relevante?

• Como o ambiente reage independentemente do agente?

• Quais serão os efeitos da ação do agente?

A parte interessante do agente apresentado acima é a função UPDATE-STATE, que é responsável por criar uma descrição do novo estado interno. Isto dará ao agente conhecimento necessário sobre coisas que não estão totalmente visíveis a ele.

3.1.3 Agentes Baseados em Objetivos

Saber o estado atual do ambiente não é o suficiente para saber o que é preciso fazer. Por exemplo, quando dirigimos e chegamos em um trevo, podemos virar a esquerda ou à direita, ou ainda seguir em frente. A decisão

(21)

correta vai depender de onde estamos querendo chegar. Em outras palavras, tanto quanto saber a descrição do estado atual, o agente necessita de informações dos seus objetivos. O programa de agente pode combinar isto com informações sobre resultados das possíveis ações para escolher aquela que vai levá-lo ao seu objetivo. Isto pode ser uma tarefa fácil, mas também pode torna-se bem complicada, quando o agente tem que tomar várias decisões para chegar ao destino. Pesquisa e planejamento são dois subcampos da IA destinados a encontrar seqüência de ações que atingem o objetivo dos agentes.

3.1.4 Agentes Baseados em Utilidade

Objetivos não são suficientes para que possamos obter um comportamento de alta qualidade. Seguindo o exemplo, quando chegamos ao cruzamento mais de um caminho pode nos levar ao objetivo, mas algum é mais rápido, mais seguro, mais barato, ou mais confiável que o outro. Por isso, é preciso saber qual o caminho mais útil para o agente.

Uma descrição completa de uma função de um Utility-Based Agents permite que decisões racionais sejam tomadas quando ocorrer dois tipos problemas com os objetivos. Primeiro, quando houver conflito de objetivos, por exemplo, o que se deseja: segurança ou rapidez. Segundo, quando vários objetivos podem ser alcançados, neste caso a função vai decidir qual deles tem mais importância para a solução do problema.

(22)

4.

Ambientes

Os ambientes onde rodam os agentes foram classificados por [2], e são apresentados abaixo.

4.1 Propriedade dos Ambientes

• Acessíveis x Inacessíveis – Um ambiente é acessível quando todos os seus aspectos estão disponíveis ao agente, eles são convenientes para os agentes que precisam manter um estado interno de todo o ambiente.

• Determinístico x Não-determinístico – Se o próximo estado do ambiente é completamente determinado pelo estado atual e pelas ações selecionadas pelo agente, então dizemos que este é um ambiente determinístico.

• Episódico x Não-Episódico – Em um ambiente episódico, a experiência de um agente é dividida em episódios. Cada episódio consiste na percepção e na ação do agente. A qualidade da ação vai depender do episódio em si, pois episódios subseqüentes não dependem dos episódios anteriores.

• Estático x Dinâmico – Um ambiente é dito dinâmico se suas propriedades mudam com o passar do tempo.

• Discreto x Contínuo – Se existe um número limitado de opções de percepções e opções de ações, nós dizemos que este é um ambiente discreto.

4.2 Programas de Ambientes

(23)

O procedimento RUN-ENVIROMENT coloca corretamente um agente no ambiente. Para se obter uma maior quantidade de informações quanto ao desempenho do agente foi inserido um código para medir o desempenho. A função RUN-EVAL-ENVIRONMENT faz isto.

(24)

5. Programação O.O.

X Programação Orientada a Agentes

A programação orientada a agentes usa simultaneamente objetos e agentes. Em algumas situações os agentes podem ser pensados como meta-objetos, pois também são caracterizados por estado e comportamento. Porém, diferentemente dos objetos, os agentes possuem metas pré-estabelecidas e orientam seu trabalho com o intuito de satisfazê-las. Os métodos de um objeto são simplesmente procedimentos codificados para lidar com diferentes mensagens e são usualmente estáticos. Um agente, entretanto, consegue sintetizar planos para lidar com situações não previstas inicialmente e também aprender a partir da experiência.[1]

(25)

6. Agentes de Internet

Os agentes de Informação, surgiram pela necessidade das pessoas de possuírem ferramentas de gerenciamento de informações num dado momento histórico em que existe um aumento explosivo na quantidade de informações disponível. Este aumento se justifica em grande parte justamente em função da popularização da Internet e parece que continuará sendo uma tendência irreversível nos próximos anos. Os agentes de Informação tem a função de gerenciar, manipular e consolidar informações de muitas fontes de informação distribuídas. [4]

Existe uma certa dificuldade em se diferenciar precisamente o que sejam agentes de informação, agentes de interface ou agentes colaborativos. Inicialmente os agentes de interface e os colaborativos tinham funções bem distintas, mas com a popularização da Internet e devido a sua ampla aplicabilidade nesta gigantesca rede, existe hoje em dia uma grande sobreposição de funções entre os três tipos de agentes. Por exemplo, como classificaríamos um agente colaborativo que atue na área específica de “informação”, ou um agente de filtragem de news que ajudasse na filtragem e seleção de artigos do fluxo contínuo de mensagens de noticias da rede Usenet. Esta dificuldade ocorre porque os Agentes de Internet ou de Informação são definidos usando-se critérios diferentes. Eles são definidos pelo que eles fazem, em contraste com os agentes colaborativos e de interface que são definidos pelo que eles são, ou seja por seus atributos. Um agente com ênfase na autonomia e aprendizado seria um agente de interface, mas se este fosse utilizado em funções na Internet, então esse agente seria um agente de informação, em um certo sentido. [1]

Uma recente e bem fundamentada taxonomia para agentes autônomos é apresentada em [8], onde um conceito amplo de agência é adotado. Na figura abaixo se representa uma especialização dessa taxonomia, conduzindo a agentes de informação.

(26)

6.1 Propostas dos Agentes de Internet

“A disponibilidade de informações na Internet, que à primeira vista aparenta ser o seu maior apelo, é ao mesmo tempo o seu maior ponto fraco: a quantidade de informação disponível é tamanha que muitas vezes a tarefa de localizar uma informação específica se torna inviável. A informação procurada (muito provavelmente) se encontra disponível em algum lugar, mas pode ser recuperada apenas em parte, ou a fonte não é confiável, ou até mesmo algumas vezes nada pode ser diretamente obtido. Os métodos de pesquisa convencionais não parecem capazes de lidar com tais problemas. A questão é que tais métodos partem do princípio de que se conhece de antemão qual informação está disponível (e qual não está) e onde exatamente esta informação pode ser encontrada. Para tornar isto possível, índices gigantescos são construídos sobre bases de dados alimentando grandes sistemas de informações. Por meio de tais índices é possível saber a qualquer momento que informação está disponível e onde tal informação se encontra. Esta

(27)

estratégia, entretanto, falha por completo ao lidar com a complexidade da Internet.” [2]

O problema tem a ver com o “senso comum”. Como um sistema vai saber qual informação é relevante para cada usuário? Resposta: Ele não vai saber. Quem pode qualificar informação para um outro usuário é um outro usuário com um interesse parecido. Daí o sistema pode cruzar as informações – gerar um perfil por IA etc, além de servir como ferramenta para as empresas que criam conteúdo. Um sistema faz uma busca geral e apresenta para usuários o resultado desta busca que, por sua vez, qualificam a informação para outros usuários. Daí algo como um informativo é gerado.

6.2 Elementos de um agente de Internet

No caso de agentes para pesquisa na Internet, o ambiente é a World Wide Web para a pesquisa e o computador para interação com o usuário. As percepções do agente são as palavras de um documento HTML (Hypertext Markup Language) adquiridas através do uso de sensores de software que se conectam a Web utilizando HTTP (Hypertext Transfer Protocol). As ações dos agentes são o que determinam se o website é o alvo da pesquisa (contém as palavras-chave, por exemplo) ou não, e determinam também os próximos caminhos para os quais a pesquisa deve prosseguir. O agente atua no ambiente usando métodos de saída para atualizar constantemente o status da pesquisa ou o resultado final da mesma. [9]

(28)

7.

A inteligência do agente

Achar uma definição para o que é “ser inteligente” sempre foi, e continua sendo, um grande debate na área da Inteligência Artificial. Porém, para evitar entrar nesta infinita discussão, podemos definir como agente de informação inteligente aquele que toma uma decisão racional no momento de fazer uma escolha. Esta decisão deve ser tomada levando em conta o que o agente percebeu durante sua pesquisa atual e suas pesquisas anteriores. Em outras palavras, tendo um objetivo, ele irá tomar decisões para seguir o curso das ações que o conduzam ao seu objetivo. Além disso, a ação “inteligente” que deve ser feita quando um problema é encontrado é aquela que se dirige em direção à solução e não aquela que foge dela. [9]

7.1 Aprendizado de Agentes Inteligentes

O aprendizado de um agente inteligente é considerado um processo constante e complexo pois, necessita em coletar um extensivo conhecimento de um determinado domínio. Um modelo de aprendizagem interessante para agentes inteligentes, é o que consiste em realizar a extração de conhecimento a partir da base de dados, utilizando técnicas de data mining (mineração de dados). Com isso, o agente é capaz de adquirir conhecimento para tomar decisões em busca de seu objetivo.[12]

Data mining é um dos passos do processo de extração de dados, permitindo ao usuário explorar e inferir informações úteis a partir dos dados extraídos, pois revela os relacionamentos que estão encapsulados. Para a exploração dos dados existem inúmeras técnicas, tais como: redes neurais, indução de regras e indução de árvores de decisão. [12]

No projeto de um agente consta o que ele deve analisar e, a partir da análise tomar decisões que não estão definidas incialmente no projeto, sendo realizadas de forma autônoma e mais flexível possível, partindo da análise da base de dados. O agente promove uma ação autônoma e flexível, identificando

(29)

o meio onde está alocado e percebendo todas as alterações realizadas ao seu redor, ação essa totalmente impossível de ser realizada por uma máquina comum. [12]

A ação promovida pelo agente inteligente é flexível, podendo ser subdivida em três categorias [13]:

reatividade: possui a percepção do meio, e responde às mudanças que ocorrem no meio, a fim de satisfazer os seus objetivos;

pró-atividade: exibe comportamento objetivo-direção, tomando a iniciativa para satisfazer os objetivos;

habilidade social: capaz de interagir com outros agentes (e possivelmente com humanos) para satisfazer os objetivos.

O aprendizado de agentes inteligentes é uma área multidisciplinar de pesquisa, que compreende mecanismos pelos quais o conhecimento é adquirido através de experiências. Duas das principais abordagens para o aprendizado de agentes baseiam-se nos paradigmas simbolista e conexionista da Inteligência Artificial. [12]

O aprendizado de um agente é classificado em duas categorias distintas, aprendizado isolado (isolated learning) e aprendizado interativo (interactive learning) [13]. O aprendizado é dito isolado quando os processos de aprendizagem são executados isoladamente, não requerendo nenhuma interação com outros agentes. Por outro lado, o aprendizado interativo necessita de comunicação entre os outros agentes para realizar o processo de aprendizagem. [12]

7.2 Processo de Extração de Conhecimento de Dados

O processo de extração de conhecimento de dados (Knowledge Discovery in Database -KDD) tem como objetivo revelar informações "escondidas" em dados, facilitando assim um processo de tomada de decisão [14]. Esse processo é interativo e iterativo, constituído de cinco etapas que

(30)

começam a partir dos dados em um estado bruto e culminam num conhecimento [15]:

• seleção: seleciona ou segmenta os dados de acordo com algum critério;

• pré-processamento: limpeza dos dados, no qual certas informações podem ser removidas quando julgadas desnecessárias;

• transformação: transformação dos dados para um modelo entendível por um sistema de aprendizado;

data mining: a extração de padrões (ou modelos) a partir dos dados, podendo ser realizada com a aplicação de sistemas de aprendizado;

• interpretação e Avaliação: análise dos padrões extraídos pelo sistema de aprendizado, podendo ser usados para suporte à tomada de decisão.

A etapa Data Mining apresenta -se como um conjunto de técnicas e ferramentas inteligentes, capazes de cooperar amplamente na resolução de alguns dos problemas de extração de conhecimento em grandes bases de dados[12]. Essa etapa é bastante complexa, pois é responsável em encontrar padrões e regularidades nos dados [15]. Dentre as técnicas existentes, destaca-se:

Redes Neurais: é uma técnica que possui um alto poder de mineração de dados, porém é a de mais difícil compreensão. As redes neurais tentam construir uma representação interna de modelos ou padrões encontrados nos dados, porém essas representações não são apresentadas para o usuário. Com as redes neurais o processo de descoberta de padrões é tratado pelos programas de data mining, por meio de um processo de “caixa preta”.

Indução de Regras: refere-se à detecção de tendências dentro de grupos de dados, ou de “regras” sobre o dado. As regras são, então, apresentadas aos usuários como uma lista “não encomendada”. A tradução das regras para um modelo aproveitável é feita pelo usuário ou por uma interface de árvore de decisão.

(31)

Visualização: também pode ser encontrada como “complexas ferramentas de visualizações” ou “geração de gráficos”. A visualização mapeia um dado sendo minerado de acordo com as dimensões especificadas. Nenhuma análise é executada pelo programa de data mining além da manipulação estatística básica. O usuário, por sua vez, interpreta os dados num espaço amostral. O analista pode pesquisar a ferramenta novamente para obter diferentes visões ou outras dimensões.

Indução de Árvores de Decisão: a árvore de decisão cresce a partir da aproximação de uma análise de Detecção de Iteração Automática. Essa análise tem a finalidade de realizar testes automáticos, com todos os valores do atributo, para identificar aqueles que são fortemente associados com o item de saída selecionado para o exame. As árvores de decisão são utilizadas quase sempre em conjunto com a indução de regras, apresentando os resultados da indução de regras num formato com priorização. Logo, a regra mais importante é apresentada na árvore com o primeiro nó e as regras menos relevantes são representadas como nós subseqüentes. A utilização de regras contidas em árvores de decisão pode ser feita por diversos sistemas que necessitem da utilização dessa técnica de data mining. [12]

Além dessas técnicas de data mining apresentadas, existem também alguns métodos de meta aprendizagem que, em geral, têm um comportamento melhor do que o uso de apenas um algoritmo de aprendizagem para a extração de padrões. Isto porque esses métodos fornecem um conjunto de padrões identificados [12]. Dentre esses métodos, destacam-se Bagging, Stacking e Boosting [16].

(32)

8. Algoritmos de Pesquisa

Nos estudos de inteligência artificial, os problemas podem ser freqüentemente reduzidos a uma pesquisa. Um agente pode gerar constantemente todos os resultados possíveis de um evento, mas então ele precisará procurar entre estes resultados aquele que poderá ajudá-lo a completar sua tarefa, executar o caminho (seqüência de passos) definido por este resultado, começando pelo inicial, ou estado atual, para tentar chegar ao estado desejado. Em nosso caso, o agente fará da sua pesquisa uma navegação através da World Wide Web como o intuito de alcançar seu objetivo. Existem inúmeros algoritmos de pesquisa, livros e artigos publicados que tratam deste assunto.[9]

Existem duas classes básicas de algoritmos de pesquisa: não-informados e não-informados. Não-não-informados ou cegas são aquelas pesquisas que não possuem informações a respeito da quantidade de passos ou o custo necessário para se chegar ao objetivo partindo de um determinado estado inicial. Estas pesquisas incluem: first, breadth-first, uniform-cost, depth-limiting, e iterative deepening search. Informed, ou heurística, são pesquisas que possuem informações do alvo da pesquisa; esta informação, conhecida como heurística, geralmente é o custo ou número de passos para se chegar até ele. Isto permite que este último tipo de pesquisa tenha uma desempenho melhor que as pesquisas uninformed e, permitem também, que estas pesquisas sejam feitas de uma maneira mais “racional”. Nesta categoria se incluem: best-first, hill-climbing, beam, A*, e IDA* (iterative deepening A*) searches.[9]

8.1 Sobre alguns tipos de pesquisa

Breadth-first é um dos dois algoritmos de busca mais comuns que todos os estudantes de ciência da computação aprendem (o outro é o depth-first). O breadth-first propõe que a pesquisa inicie com um fila contendo listas de nodos para serem visitados. Um nodo é um estado ou valor; geralmente é

(33)

implementado como sendo uma estrutura que contém informações particulares a respeito do ambiente ou do domínio do problema. Em nosso caso, o nodo é uma página da Internet.

O algoritmo inicia colocando o estado inicial do problema no começo da fila. O próximo passo da busca é visitar o primeiro nodo e adicionar à fila todos os nodos conectados a ele. Quando vista como uma árvore de um grafo, a busca pode ser feita da esquerda para a direita a partir do nodo atual, e sempre adicionando à fila os nodos conectados a ele. Os nodos iniciais da fila que já foram visitados são removidos e a busca prossegue para o próximo nodo. Este processo continua até que os alvos da busca sejam alcançados ou até que se chegue a um ponto em que não haja mais nodos para se visitar.[9]

(34)

O tipo de busca uniform-cost é similar ao breadth-first, porém, após ser adicionado um nodo na fila, o próximo nodo a ser visitado é o que tiver o menor custo.[9]

Para pesquisas heurísticas, a busca best-first é similar ao uniform-cost, exceto pelo fato de que o nodo é sorteado usando heurística. É uma busca rápida, mas não garante que a solução seja encontrada. Uma busca A* é uma melhora do best-first. Elas trabalham da mesma maneira, porém no sorteio do próximo nodo além da heurística o custo também é levado em conta.[9]

Pesquisa é uma ferramenta de grande valor em muitas aplicações, e é a componente chave para a construção de um agente inteligente dedicado a Internet.

(35)

9.

Construindo um agente

O que é necessário para construir um agente de busca inteligente deve ser esclarecido. Devemos deixar claro também que os conhecidos robots, spiders, ou web crawlers são espécies de agentes, um pouco mais sofisticados que o apresentado aqui. Alguns autores classificam o tipo de agente tratado neste trabalho como “Web Hunters”, esta é uma boa descrição, pois é justamente o que eles fazem. Além disso um agente completo também possui mecanismos para buscas de múltiplas palavras-chave não importando se estão combinadas ou não, e a habilidade de procurar novos lugares para sua busca quando um o espaço de pesquisas já foi todo analisado. [9]

Após ser indicado um alvo, o agente deve prosseguir por todos os caminhos que forem possíveis. Este agente será baseado por palavras-chave. O método utilizado é iniciar por um endereço que o usuário forneceu e procurar todos os outros endereços obtidos a partir dele. Buscas cegas baseadas em números randômicos de IP podem ser longas e entediantes, porém, apesar de ser um método exaustivo, é uma alternativa de busca completa pela Internet.

Existem alguns parâmetros que devem ser definidos para que a pesquisa seja realizada. É preciso saber o alvo (palavra-chave ou frase), onde iniciar, quantas iterações devem ser feitas (quanto mais URLs melhor), quanto tempo a pesquisa deve durar, e que método deve ser utilizado no momento de se definir um caminho a ser seguido.

O desenvolvimento desse agente de informação consiste de quatro fases principais, que são: inicialização, percepção, ação, e efeito.

• Na fase de inicialização o agente deve “setar” todas as variáveis, estruturas, e “arrays”. É necessário também resgatar toda a informação básica para conduzir a busca – o objetivo, a página inicial (uma boa busca depende muito do lugar por onde ela começa), e o método de busca.

(36)

• A fase de percepção é centrada no uso do conhecimento que o agente possui para conectar a um site e retornar a informação deste lugar. Ele precisa, também, identificar se o alvo da busca está presente e os outros caminhos para novas páginas.

• Na fase da ação, a agente toma toda a informação que ele possui e determina se o objetivo foi alcançado e se a busca deve continuar. Caso a busca prossiga, o agente deve decidir para qual caminho ele deve prosseguir. Esta é a inteligência do agente, e o método da pesquisa dita o quanto “esperto” o agente será.

• A fase do efeito consiste em listar as localizações do alvo e dar um resultado final ao usuário. Bases de dados também podem ser atualizadas nesta fase.

Durante a inicialização, uma estrutura de dados que irá conter as informações das páginas visitadas deve ser criada. Os nodos dessa estrutura devem conter informações sobre a URL, o diretório que a página está localizada, o custo para chegar até ela, e outros possíveis valores heurísticos utilizados durante a busca.

O primeiro nodo a ser criado deve conter os critérios iniciais da busca, portanto, é neste momento que é indicado por onde a pesquisa deve ser iniciada. Este atributo pode ser um número de IP aleatório porém, neste caso, não será possível saber de imediato se a pesquisa iniciou por uma página adequada, e provavelmente poucos resultados serão encontrados ao fim da busca. È recomendável sempre iniciar a pesquisa em uma página com um mecanismo de busca (Google, HotBot) ou uma URL conhecida e que contenha links do assunto desejado. [9]

A seguir, um objetivo para a busca deve ser claramente definido e um alvo deve ser estabelecido. Por simplicidade, iniciamos uma busca por palavras

(37)

chave. Deve ficar claro também o que o usuário deseja, se é uma simples busca de uma única página ou se ele deseja monitorar várias páginas e guardar os resultados da busca para consultas posteriores. Para tanto, o agente deve ser flexível tanto para realizar uma busca agressiva, trazendo a maior quantidade de páginas no menor tempo possível, quanto para realizar uma pesquisa mais profunda e criteriosa. Dadas as características da pesquisa, o comportamento do agente poderá ser “setado” e a busca pode começar.

Estando com o agente configurado, deve-se estabelecer uma conexão com a página inicial da pesquisa. Neste trabalho foi utilizado o pacote “java.net” da API do JAVA, ele oferece classes e métodos que facilitam o trabalho para se fazer uma conexão em páginas da WEB.

Quando a conexão for estabelecida, a página em questão deve ser capturada para que seja feita uma análise sobre ela. Esta análise consiste em fazer um “parser” das TAG´s que mais interessam. As TAG´s denominadas META podem dizer muito de uma página, nela podem estar contida toda a informação da página, como o autor, as palavras-chave e a descrição. Veja um exemplo dessas TAGs retiradas do site do UOL (Universo On-line – www.uol.com.br):

<meta name=description content="O Universo Online é o maior provedor de acesso à Internet do Brasil. É também o maior provedor de conteúdo em língua portuguesa do mundo.">

<meta name=keywords content="Esporte, esporte, Jornais, Revistas, Biblioteca, Folha Online, Classificados, Compras, Computador, Corpo e Saúde, Crianças, Diversão e Arte, Economia, Internet, Jogos, Novelas, Rádios e TVs, Tempo e Trânsito, Últimas Notícias, Viagem, jornalismo, informação, notícia, jornais, revistas, cultura, entretenimento, lazer, opinião, análise, jogos, internet, televisão, fotografia, arte, imagem, som, áudio, rádio">

(38)

Porém, a grande maioria das pessoas que colocam suas páginas na WEB não tem o costume de criar este tipo de TAG. Neste caso, torna-se mais difícil classificar a página em que está sendo feito o parser, pois as palavras-chave devem ser procuradas em outros lugares do texto, e talvez não se têm informações que dêem confiabilidade à página, como quem é o autor e qual a data de atualização.

O próximo passo é encontrar referências para outras páginas. Deve-se buscar pelas palavras “HREF=” e “SRC=” no documento, o link estará entre aspas logo após estas palavras. Caso o objetivo da busca seja a coleta de imagens deve-se seguir a referência contida na TAG do tipo “SRC=”, caso o objetivo sejam outras páginas, a TAG “HREF=” deve ser analisada. Por exemplo:

1. <a href="http://java.sun.com/products/servlet">Sun's Servlet Site</a><br> 2. <img src="tomcat.gif" alt="The Mighty Tomcat - MEOW!">

A descrição do destino do link também pode ser obtida nesta TAG:

1. <a href="http://java.sun.com/products/servlet">Sun's Servlet Site</a><br> 2. <img src="tomcat.gif" alt="The Mighty Tomcat - MEOW!">

Caso o site em que o agente permanece já foi analisado e foi considerado fora dos critérios, não é interessante percorrer outras páginas do mesmo host e sim partir para novas fontes. O agente pode tomar estas decisões analisando a URL contida na TAG. Por exemplo, sabe-se que o site X (www.xis.com.br/index.htm) não interessa ao agente, assim, as TAGs que contém o HOST atual (www.xis.com.br) e os links relativos podem ser descartadas:

1. <a href="http://www.xis.com.br/diretorio/pagina2.htm">descrição</a><br> 2. <a href="/diretorio2/outra_pagina.htm">descrição</a><br>

(39)

Após o agente ter capturado a página é extraído as informações consideradas mais importantes, está no momento de “pensar” e agir. Se o objetivo foi alcançado então a busca está acabada, caso contrário, uma decisão sobre qual será o próximo passo deve ser tomada. O ponto fundamental da decisão é a escolha de qual algoritmo utilizar. Os nodos capturados do documento atual serão adicionados à fila, o método de procura irá ditar a ordem de preferência na fila e quanto mais informada for esta nova pesquisa, melhores serão as chances de alcançar algum resultado satisfatório.

Um fator que pode ser usado para fazer esta medição de custos são os tipos de domínios existentes, como ``COM'', ``NET'', ``EDU'', ``ORG'' e ``GOV'', uma busca baseada em sites nacionais (“BR”) pode penalizar com altos custos sites estrangeiros, isso também por serem possivelmente de uma língua desconhecida pelo usuário. Existem muitas outras possibilidades para heurísticas e custos, que implementadas corretamente garantem uma maior confiabilidade no agente. [9]

Após a busca ter inserido e/ou deletado algum nodo, é necessário ordená-los por ordem de algum critério. A escolha de como eles serão ordenados é de certa importância, pois com certeza a escolha correta garantirá maior desempenho ao agente. Após a fila dos nodos ter acabado, o agente poder começar uma nova pesquisa por outra página inicial fornecida pelo usuário, ou simplesmente acabar suas tarefas. Ainda nesta fase, o estado da pesquisa e o seu resultado final são fornecidos ao usuário.

O agente move-se da fase de inicialização para um ciclo de tarefas que consiste das fases de percepção, ação e efeito, e permanece neste ciclo até que o objetivo seja alcançado ou até um momento pré-definido pelo usuário.

(40)

9.1 Métricas de Desempenho para Agentes de Informação

Um agente implementado não terá a mesma desempenho como um mecanismo de busca comercial que usam bases de dados criadas por agentes web similares, chamadas spiders.

(41)

Testar a velocidade das pesquisas de um determinado alvo é uma boa métrica. Avaliar o loop de fases percepção-ação-efeito em uma função de tempo, testar a velocidade das buscas utilizando diferentes técnicas de pesquisa e conhecimento do agente sobre o objetivo também são importantes. [9]

Entretanto, é necessário verificar qual o objetivo final do agente, se ele deve procurar única página com o assunto dado pelo usuário, ou estar constantemente atualizando uma base de dados. Neste último caso, a velocidade não é tão importante, e o que deve ser avaliado é se o agente está monitorando corretamente o assunto pelo qual foi designado a trabalhar. A métrica que pode ser usada então, é a quantidade de páginas que o agente encontrou e a qualidade da sua pesquisa.

O que deve ser levado muito em conta é a página inicial da pesquisa, pois algumas páginas iniciais são melhores que outras. Utilizar mais de uma página inicial para realizar uma mesma pesquisa pode melhorar a desempenho do agente. O programa pode também determinar a sua própria página inicial, ou através de um IP qualquer, gerado aleatoriamente, ou verificando pesquisas feitas anteriormente que obtiveram sucesso e que se assemelhem à pesquisa atual. [9]

(42)

10.

Mecanismos de Pesquisa

versus Agentes de Internet

Segue a tabela [1]:

Mecanismos de Pesquisa Agentes de Informação Inteligentes

1 .

Uma pesquisa é realizada com base em uma ou mais palavras-chaves fornecidas pelo usuário. Isto pressupõe que o usuário é capaz de formular o conjunto mais adequado de palavras-chaves para a recuperação da informação desejada. Consultas realizadas com palavras-chaves erradas, a mais ou a menos irão produzir a recuperação de informação irrelevante (ruído) ou não irão recuperar informação relevante.

Agentes conseguem pesquisar informações de modo mais inteligente, por exemplo com o uso de ferramentas (tais como um thesaurus) que os habilitam a realizar a pesquisa baseados em termos relacionados ou até mesmo em conceitos. Os agentes também podem empregar tais ferramentas para refinar ou até corrigir consultas, com base em um modelo do usuário ou outras informações

2 .

O mapeamento da informação é realizado pela coleta de (meta-)informação sobre a informação e documentos disponíveis na Internet. Este método consome tempo demasiado, além de ocasionar o tráfego de grandes quantidades de dados. Falta-lhe eficiência e uma melhor adequação à natureza dinâmica da Internet e à da informação que nela pode ser encontrada.

Agentes de informação individuais podem criar sua própria base de conhecimento sobre fontes de informação disponíveis na Internet, a qual é atualizada e expandida após cada pesquisa. Quando a informação (um documento) houver sido removida para um outro local o agente deve ser capaz de encontrá-la e atualizar sua base de conhecimento.

3 .

A pesquisa por informações é muitas vezes limitada a apenas alguns

Agentes de informações podem assumir os detalhes protocolares de

(43)

serviços da Internet, como o WWW. Pesquisar informações oferecidas por outros serviços (p. ex.: uma base de dados com acesso via telnet) é um trabalho usualmente executado de forma manual pelo usuário.

conexão com os diversos serviços e também a localização da informação, deixando para o usuário apenas a formulação da consulta: o que exatamente deve ser procurado, sem se preocupar com onde possa estar.

4 .

Os mecanismos de pesquisa nem sempre estão disponíveis. O servidor onde um serviço reside pode ter caído ou então estar sobrecarregado. Os usuários regulares então terão de procurar um serviço alternativo, provavelmente com características e forma de operação diferentes.

O agente pessoal de informações está sempre à disposição de seu usuário e pode ser executado em paralelo com outras tarefas ao longo das 24 horas do dia. Além disso pode ser programado para detectar e evitar horas de pico em diferentes fusos horários.

5 .

Mecanismos de pesquisa atuam de forma independente de domínio no modo de tratar a informação coletada e no modo com que a oferece ao usuário. Os termos nos documentos coletados são extraídos de seu contexto e tratados como se fossem mera lista de palavras-chaves.

Agentes inteligentes serão capazes de pesquisar por informação com base em contextos. Irão deduzir tal contexto a partir do modelo que possuem do usuário ou por meio de outros serviços como, por exemplo, um thesaurus.

6 .

A informação na Internet comporta-se de forma extremamente dinâmica e muitas vezes os mecanismos de pesquisa referem-se a informações que foram transferidas para locais desconhecidos, ou simplesmente desapareceram. Os coletores de informações não aprendem com tais

Os agentes podem ajustar-se às preferências e desejos de seus usuários individuais. Idealmente isto poderá conduzir a agentes em permanente ajuste quanto ao que deve ser procurado com base nas reações de seus usuários ao resultado de pesquisas anteriores. Além disso os

(44)

tentativas fracassadas e portanto não se auto ajustam para evitar falhas futuras. Além disso, como realizam sua pesquisa em intervalos regulares o usuário não tem notícia de atualizações realizadas nesse ínterim.

agentes são capazes de pesquisar a Internet de modo contínuo em busca de nova informação sobre tópicos em que seu usuário costuma estar interessado.

(45)

11.

Aplicações

Ultimamente, talvez o maior impacto dos agentes advém de sua habilidade para monitorar bases de dados heterogêneas, tais como aquelas na Internet. Qualquer coisa que for colocada num site Web pode rapidamente ser descoberta. Mais ainda, qualquer navegador na Internet pode fornecer informações para sites na Web sobre interesses dos usuários.

Os agentes podem monitorar mudanças num site da web, e sites na web podem usar agentes para monitorar usuários com o objetivo de criar perfis dos interesses dos usuários. Já foram desenvolvidas algumas ferramentas que permitem a geração de agentes projetados para encontrar mudanças em sites na web, facilitando várias tarefas tais como obter análise de novidades e de notícias (news).

Após a criação do agente, ele não ficará preso somente a um tipo de aplicação. Um sistema de buscas completo pode ser criado, incluindo na aplicação, além do agente, um gerador de números de IP para uma busca exaustiva pela Internet. Os resultados podem ser armazenados em uma base de dados para consultas posteriores. Este agente também pode ser modificado para fazer pesquisas em diferentes tipos de ambiente, como documentos de texto, e não somente em páginas da web.

11.1 Responsabilidade na pesquisa

Velocidade foi mencionada inicialmente como uma importante característica de uma busca, porém algumas pesquisas podem estar bombardeando os servidores com repetidas solicitações. Deve-se limitar a velocidade em que repetidas consultas são feitas em um mesmo servidor através da introdução de um “tempo de espera”. [9]

O problema é que este tempo de espera pode comprometer a desempenho de um agente que tenha por objetivo fazer pesquisas rápidas.

(46)

Uma maneira de se manter a velocidade da pesquisa, é visitar diferentes servidores enquanto se espera para fazer uma nova requisição no primeiro servidor visitado. Porém é interessante sempre procurar por novos sites, caso contrário, corre-se o risco de ficar preso em um loop de espera por servidores e comprometer a produtividade da busca.

Uma outra característica de uma pesquisa responsável, é criar agentes que provém uma maneira de se identificar da mesma maneira que as páginas da web fazem. Se o agente estiver realizando constantes atividades em um determinado servidor, ele poderá identificar-se com o administrador do sistema que está sofrendo a pesquisa.

Outro item que deve ser levado em conta são os arquivos /robots.txt presentes em alguns websites. Os agentes sempre devem checar a existência desses arquivos, pois eles sempre contêm informações direcionadas especialmente aos agentes da web. Além disso, páginas HTML podem incluir Tags do tipo <META NAME=``ROBOTS'' CONTENT=``NOFOLLOW''> que especificam que o dono da página deseja que não seja feito o seu “parser”.

A Internet é um espaço imenso, com muitos lugares a serem pesquisados e com muita informação a ser descoberta. Porém é interessante tomar uma aproximação conservacionista, usar os recursos adequadamente, ser cortes e ser seguro.[9]

11.2 Critérios para avaliar fontes de informações na Internet

O que a URL pode dizer

• É uma página pessoal?

Páginas pessoais não são necessariamente ruins, mas o autor deve ser investigado com cuidado. Em páginas pessoais não existe ninguém respondendo pelas informações encontradas na página.

(47)

• Qual o tipo de domínio?

O domínio é apropriado ao seu interesse? Qual o tipo de fonte de informação é mais confiável? (edu, gov, org)

Analisando o perímetro da página

• Quem escreveu a página?

É interessante apresentar ao menos o e-mail do responsável pela página.

• A página é datada?

E alguns casos uma data antiga na página indica que o autor perdeu interesse por ela e seu conteúdo está desatualizado.

Indicadores de qualidade da informação

• As fontes são documentadas com links?

Links que não funcionam, que levam para páginas que não estão relacionadas ao assunto mostram que a página tem uma fonte com pouca credibilidade.

• È uma informação reproduzida?

Pode-se verificar procurando por um “copyright” na pagina.

• Existem links para outras fontes de informação?

Verificar se os links funcionam, se as páginas para qual eles são redirecionadas são confiáveis.

O que os outros dizem

• Quem possui um link para a página?

Verificar se muitas páginas e que tipo de páginas referenciam a página em questão.

(48)

12.

Implementação

Antes de falar do sistema de agentes desenvolvido, será apresentado um framework e um pacote de classes que facilitaram esta implementação.

12.1 JADE

JADE (Java Agent Development Framework) é um framework que facilita o desenvolvimento de sistemas multi-agentes. Ele está disponível gratuitamente no site do projeto: http://jade.tilab.com/.

JADE foi escrito na linguagem JAVA e é constituido por vários pacotes desta linguagem, o que oferece a este framework alguns atrativos, como: serialização de objetos, API reflexiva e invocação de métodos remota (RMI).

Neste trabalho algumas das suas principais características foram bastante exploradas:

• O ambiente criado pelo JADE, onde “vivem” os agentes;

• Duas classes que foram extendidas:

o Agent.java o Behaviour.java

O JADE também oferece facilidades para a comunicação entre agentes, porém este trabalho não explorou esta funcionalidade. E este é um dos fatores que podem melhorar o desempenho do agente, bem como facilitar sua implementação.

12.2 HTMLParser

Este é um pacote que auxilia a leitura de páginas HTML. O que levou o uso destas classes neste trabalho foi a simplicidade de seu uso e a documentação que facilita o seu aprendizado.

(49)

O pacote e sua documentação estão disponíveis em http://htmlparser.sourceforge.net/.

Para usar a sua biblioteca, basta adicionar os arquivos htmllexer.jar e htmlparser.jar no projeto durante a sua compilação.

12.3 O Projeto

O projeto tem como base os seguintes conjunto de classes:

12.3.1

Pacote de Comportamentos

Este pacote apresenta a implementação de alguns comportamentos essenciais do agente. Todas as classes estendem a classe Behaviour do JADE, facilitando assim, relacionar os comportamentos com os agentes criados.

Os principais comportamentos são os seguintes:

• Inicialização (BhvInicializacao.java)

Momento onde o agente recebe toda a informação básica para conduzir a sua busca. Neste instante é instanciado um objeto chamado “Criterios” (Criterios.java), onde ficam salvas todas as informações para eventuais consultas dos agentes.

• Percepção (BhvPercepcao,java)

É neste momento que o agente conecta-se às páginas para buscar toda a informação necessária para a sua avaliação. O agente fica preso a este comportamento até o momento que todas as páginas que ele possui em sua lista forem examinadas.

• Ação (BhvAcao.java e Avaliador.java)

Estas classes são responsáveis por refinar a busca, isto é, dentre as páginas lidas, escolher as que supostamente são os alvos da busca.

(50)

Neste instante, o agente salva em um arquivo XML toda a informação captada e termina a sua tarefa.

12.3.2

Pacote de Agentes

Neste pacote está disponível a implementação dos agentes. Eles estendem a classe Agent.java do JADE e basicamente tem a função de instanciar um agente e identificá-lo no ambiente. O que ele vai fazer depende do comportamento que ele está recebendo, como neste exemplo:

Quando ele recebe um comportamento, ele passa a executar o que foi implementado no método action() desta classe de comportamento. Depois de realizada a tarefa, o método done() ou onEnd() é chamado e o agente pode receber novos comportamentos ou finalizar seu trabalho.

(51)

12.3.3 Pacote Internet e XML

A classe principal deste pacote estende algumas classes do pacote HtmlParser e é responsável por fazer a conexão do agente com a Web. A partir dela, também é feita a leitura das páginas que fazem parte da pesquisa.

Esta classe, possui todos os seus métodos encapsulados, para fazer a conexão e o parser, basta chamar seu único método público e passar como parâmetro a URL da página desejada. O método irá retornar, então, um Bean Página, contendo as informações necessárias para que uma avaliação seja feita.

(52)

A conexão que deve ser feita para capturar as informações de uma página é implementada com as classes do HtmlParser e do pacote java.net da API do JAVA.

Um exemplo de como as informações são capturadas das páginas pode ser visto abaixo, neste caso a sistema está buscando os links da página:

1. Classe do HtmlParser que possui um método de conexão encapsulado; 2. Indicando o endereço da página;

3. Obtendo links e salvando em um array;

6. Evita que um mesmo link seja salvo mais de uma vez; 9. Salvando informações;

Como os resultados são salvos

Os resultados da pesquisa são salvos em um arquivo XML. Esta escolha foi feita porque os dados salvos desta maneiras podem ser recuperados facilmente, não necessita configurar nenhum tipo de banco de dados e é altamente flexível.

Duas classes merecem destaque nesta função, e ambas são baseadas em funções já disponíveis no pacote do JAVA (java.beans.XMLDecoder, java.beans.XMLEncoder):

• Encoder.java – responsável por escrever em um arquivo.

(53)

A estrutura de um aquivo XML, quando uma página é salva é a seguinte:

Através deste exemplo podemos notar a estrutura do objeto salvo. Neste caso, uma instância da classe Pagina.java com os seus atributos: url, links, title, etc.

12.4 Como é feita a avaliação

Para avaliar uma página, foram criados métodos que atribuem uma nota por cada característica apresentada por ela. Estas avaliações são baseadas nas características solicitadas pelo usuário no início da pesquisa, como palavras-chave, idioma e outros fatores que possam indicar a veracidade das informações contidas na página (autor, data, etc).

Referências

Documentos relacionados

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

Os autores relatam a primeira ocorrência de Lymnaea columella (Say, 1817) no Estado de Goiás, ressaltando a importância da espécie como hospedeiro intermediário de vários parasitos

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

O candidato poderá obter informações e orientações sobre o Simulado Virtual, tais como Editais, processo de inscrição, horário de prova, gabaritos, ranking e resultados

Resumidamente a forma de comercialização dos apartamentos FLAT e operação de locação dos apartamentos do HOTEL para uma bandeira hoteleira proposta a seguir objetiva a

Este trabalho tem como objetivo geral avaliar a quantidade de água pluvial que pode ser aproveitada após infiltrar em um pavimento permeável de concreto

Modelo : Tiny Tower ou SLIM Desk (SFF) disponíveis nas cores Preto/Prata, Preto, ou Cool Gray; Opção para Tool-Free (não requer uso de ferramentas para abertura de gabinete, remoção

Quando a árvore está na forma de árvore é sua forma manifestada e quando está na forma de semente é sua forma ainda não manifestada.. Se não existisse, como é