23.03.2013 Views

Desenvolvimento e aplicação de agentes Web - ESA - Instituto ...

Desenvolvimento e aplicação de agentes Web - ESA - Instituto ...

Desenvolvimento e aplicação de agentes Web - ESA - Instituto ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Ano Lectivo 2010/2011<br />

<strong>Desenvolvimento</strong> e <strong>aplicação</strong> <strong>de</strong> <strong>agentes</strong> <strong>Web</strong><br />

inteligentes para pesquisa <strong>de</strong> publicações científicas<br />

nas áreas da biomedicina e bioinformática<br />

Carlos André Machado Carvalhal<br />

Número Mecanográfico: 19263<br />

Projecto <strong>de</strong> Final <strong>de</strong> Curso<br />

Engenharia Biomédica<br />

Orientador: Professor Doutor Leonel Domingues Deusdado<br />

Co-orientador: Professor Doutor Sérgio Alípio Domingues Deusdado


Agra<strong>de</strong>cimentos<br />

A elaboração <strong>de</strong>ste projecto não seria possível sem a colaboração <strong>de</strong> algumas<br />

pessoas que me auxiliaram e apoiaram ao longo <strong>de</strong>sta etapa.<br />

Em primeiro lugar, gostaria <strong>de</strong> agra<strong>de</strong>cer aos meus orientadores. Ao Doutor Leonel<br />

Deusdado pela sua disponibilida<strong>de</strong>, orientação e conselhos nos momentos certos. Ao<br />

Doutor Sérgio Deusdado pela sua <strong>de</strong>dicação, encorajamento e ensinamento ao longo do<br />

semestre.<br />

Agra<strong>de</strong>ço também ao Dr. Nuno Carvalho, que ofereceu o seu profissionalismo e<br />

eficácia com a ajuda no servidor e base <strong>de</strong> dados do serviço, ao José Miguel Couto<br />

pelos seus conselhos e experiência na <strong>Web</strong>, e não por último à minha família, amigos e<br />

a Vânia Rodrigues por todo o carinho e apoio ao longo da minha licenciatura.<br />

2


Resumo<br />

Este projecto tem como principal objectivo disponibilizar um serviço <strong>Web</strong> que<br />

permita aos seus utilizadores a criação e manutenção <strong>de</strong> <strong>agentes</strong> <strong>de</strong>stinados a<br />

automatizar as pesquisas bibliográficas online, orientando-se particularmente para as<br />

áreas científicas da biomedicina e da bioinformática. O serviço tem como suporte uma<br />

base <strong>de</strong> dados <strong>de</strong> <strong>agentes</strong> e <strong>de</strong> utilizadores, interligada com módulos <strong>de</strong> software,<br />

implementados em JavaScript, PHP e Perl, que gerem os inputs e outputs do sistema.<br />

No essencial, os <strong>agentes</strong> caracterizam-se por um conjunto <strong>de</strong> palavras-chave que são<br />

submetidas como queries combinadas na pesquisa da PubMed - um dos maiores<br />

repositórios mundiais <strong>de</strong> bibliografia científica na área on<strong>de</strong> este projecto é<br />

<strong>de</strong>senvolvido. Durante o período <strong>de</strong> valida<strong>de</strong> dos <strong>agentes</strong>, e com periodicida<strong>de</strong> semanal,<br />

um módulo <strong>de</strong> software presente no servidor executa as pesquisas e notifica por e-mail<br />

os utilizadores dos resultados obtidos. Deste modo, os utilizadores obterão maior<br />

disponibilida<strong>de</strong> para outras tarefas, uma vez que contam com a automatização da<br />

pesquisa bibliográfica.<br />

Um protótipo funcional do serviço criado (ASAP – Automate Search with Agents in<br />

Pubmed) está disponível em http://www.esa.ipb.pt/~<strong>agentes</strong> . Na concepção da interface<br />

privilegiou-se a simplicida<strong>de</strong> e a usabilida<strong>de</strong> para os processos <strong>de</strong> gestão <strong>de</strong> utilizadores<br />

e dos seus <strong>agentes</strong>.<br />

Os testes efectuados permitiram validar as metodologias seguidas, tendo sido<br />

obtidos resultados satisfatórios no tocante à eficácia e à eficiência do sistema<br />

<strong>de</strong>senvolvido.<br />

Palavras-chave: Agentes <strong>Web</strong>, PubMed, Crawler.<br />

4


Abstract<br />

This project has the primary objective of creating a <strong>Web</strong> service that allows its users<br />

to create and edit <strong>Web</strong> agents aimed to automate online bibliographic search,<br />

particularly targeting the scientific areas of biomedicine and bioinformatics. The service<br />

is supported by a database of agents and users, interconnected with software modules<br />

implemented in JavaScript, PHP and Perl, which manage the system’s inputs and<br />

outputs. Essentially, the agents are characterized by a set of keywords that are submitted<br />

as combined queries in a PubMed search – one of the world’s largest repositories of<br />

scientific bibliography in the area on which this project was <strong>de</strong>veloped. During the valid<br />

period of the agents, and with weekly periodicity, the software module present in the<br />

server makes the search and notifies the users with the results. With this service, the<br />

users will have more time to concentrate on other tasks, once they have the automated<br />

bibliographic search.<br />

A functional prototype of the created service (ASAP – Automate Search with<br />

Agents in PubMed) is available in http://www.esa.ipb.pt/~<strong>agentes</strong>. The conception of<br />

the interface was based in simplicity and usability for the management process of users<br />

and agents.<br />

The tests conducted to evaluate the service allowed the validation of the followed<br />

methodologies, obtaining satisfying results relating to the system’s efficiency and<br />

effectiveness.<br />

Keywords: <strong>Web</strong> Agents, PubMed, Crawler.<br />

5


Índice<br />

Capítulo 1 - Introdução .............................................................................................. 8<br />

1.1 Enquadramento ................................................................................................ 8<br />

1.2 Estrutura do Relatório ...................................................................................... 9<br />

Capítulo 2 – Fundamentos ....................................................................................... 10<br />

2.1 A Pesquisa Científica na <strong>Web</strong> ........................................................................ 10<br />

2.2 Agentes <strong>Web</strong> e Crawlers ................................................................................ 11<br />

2.3 Trabalho Anterior ........................................................................................... 13<br />

2.4 Linguagens <strong>de</strong> Programação .......................................................................... 15<br />

2.5 Programas Utilizados ..................................................................................... 17<br />

Capítulo 3 – O Serviço ASAP ................................................................................. 19<br />

3.1 Conceito Inicial .............................................................................................. 19<br />

3.2 Arquitectura dos Agentes ............................................................................... 21<br />

3.3 O Crawler ...................................................................................................... 21<br />

3.4 Aplicação do Crawler .................................................................................... 24<br />

3.4.1 Base <strong>de</strong> Dados ......................................................................................... 24<br />

3.4.2 O Site <strong>Web</strong> ASAP ................................................................................... 25<br />

3.4.3 As Ligações Site / Base <strong>de</strong> Dados ........................................................... 26<br />

3.5 ASAP – Pesquisa Autónoma com Agentes na PubMed ................................ 27<br />

3.6 Resultados ...................................................................................................... 28<br />

Capítulo 4 – Conclusões .......................................................................................... 30<br />

4.1 Conclusão ....................................................................................................... 30<br />

4.2 Trabalho Futuro ............................................................................................. 31<br />

6


Índice <strong>de</strong> Figuras<br />

Fig. 1 – Representação das tipologias <strong>de</strong> crawlers inseridas no crawler ASAP. .... 13<br />

Fig. 2 – Representação esquemática das linguagens <strong>de</strong> programação aplicadas à<br />

construção do projecto .................................................................................................... 17<br />

Fig. 3 – Conceptualização inicial da estrutura do serviço ASAP. ........................... 19<br />

Fig. 4 – Representação do funcionamento do crawler. ........................................... 22<br />

Fig. 5 – Mo<strong>de</strong>lo ER (Entida<strong>de</strong>-relacionamento) da base <strong>de</strong> dados. ......................... 24<br />

Fig. 6 – Protótipo da página inicial do serviço ASAP. ............................................ 25<br />

Fig. 7 – Formulário <strong>de</strong> registo (protótipo). .............................................................. 26<br />

Fig. 8 – Formulário <strong>de</strong> login (protótipo). ................................................................. 27<br />

Fig. 9 – Formulário <strong>de</strong> criação <strong>de</strong> agente (protótipo). ............................................. 27<br />

Fig. 10 – Diagrama do funcionamento geral do crawler e serviço ASAP. ............. 28<br />

7


Capítulo 1 - Introdução<br />

1.1 Enquadramento<br />

As áreas da biomedicina e bioinformática têm <strong>de</strong>senvolvido, nos últimos anos, um<br />

exponencial <strong>de</strong> investigação científica sem igual, <strong>de</strong>monstrado principalmente no<br />

número <strong>de</strong> artigos científicos publicados <strong>de</strong>s<strong>de</strong> a década <strong>de</strong> 90. Este crescimento,<br />

acompanhado <strong>de</strong> gran<strong>de</strong>s progressos nesta área, apresenta também dificulda<strong>de</strong>s<br />

relativamente à pesquisa, organização e actualização <strong>de</strong> novos artigos publicados.<br />

Os artigos publicados disponíveis na World Wi<strong>de</strong> <strong>Web</strong> nestas áreas aumentam a<br />

cada dia que passa, e tipicamente, o investigador comum gasta uma porção significativa<br />

<strong>de</strong> tempo e esforço para encontrar publicações relevantes na <strong>Web</strong>. Esta pesquisa, para<br />

além <strong>de</strong> necessária para bibliografia <strong>de</strong> suporte à investigação, é feita também para<br />

evitar a duplicação <strong>de</strong> trabalho já feito, o que várias vezes acaba por acontecer na<br />

biomedicina e bioinformática, pois sendo áreas <strong>de</strong> investigação em rápida expansão, a<br />

taxa <strong>de</strong> publicação <strong>de</strong> artigos na <strong>Web</strong> cresce impetuosamente catalisada por serviços que<br />

facilitam a leitura e publicação <strong>de</strong>stes artigos, como por exemplo a PubMed [1].<br />

O objectivo <strong>de</strong>ste trabalho é criar um serviço ou ferramenta <strong>de</strong> <strong>agentes</strong> <strong>Web</strong> que<br />

permita aos investigadores automatizar a sua forma <strong>de</strong> pesquisar e actualizar<br />

bibliografia científica <strong>de</strong> forma a torná-la mais rápida e fácil. O seu <strong>de</strong>senvolvimento<br />

passa pela investigação na ligação <strong>de</strong> <strong>agentes</strong> externos aos repositórios <strong>de</strong> bibliografia<br />

científica para elaboração <strong>de</strong> pesquisas, implementação <strong>de</strong> um serviço <strong>Web</strong> <strong>de</strong> raiz,<br />

implicando a aprendizagem <strong>de</strong> vários assuntos relacionados com a <strong>Web</strong> e a informática,<br />

e ao seu domínio, para <strong>aplicação</strong> no funcionamento do serviço.<br />

Consequentemente, serviços como este po<strong>de</strong>rão ajudar no progresso científico dos<br />

investigadores da biomedicina e bioinformática e na organização da pesquisa<br />

personalizada <strong>de</strong> cada investigador. Este tipo <strong>de</strong> investigação abre um leque alargado <strong>de</strong><br />

i<strong>de</strong>ias relacionadas com o suporte à pesquisa e combate aos problemas expostos acima.<br />

8


1.2 Estrutura do Relatório<br />

Este relatório <strong>de</strong> projecto aborda os processos e temáticas inerentes ao<br />

<strong>de</strong>senvolvimento do serviço, expondo as etapas subjacentes e o estudo analítico<br />

envolvente na criação <strong>de</strong> ferramentas <strong>Web</strong>.<br />

No capítulo 2 é abordada a actualida<strong>de</strong> das pesquisas na <strong>Web</strong>, e todo o trabalho<br />

relacionado com o projecto que é utilizado como ferramenta <strong>de</strong> pesquisa pelos<br />

investigadores hoje em dia.<br />

No capítulo 3 são explicados todos os processos trabalhados na criação do crawler<br />

<strong>de</strong> pesquisa na PubMed e sua implementação no ambiente <strong>Web</strong>, bem como os<br />

resultados verificados na sequência <strong>de</strong> testes efectuada.<br />

O quarto e último capítulo contém a análise conclusiva à elaboração <strong>de</strong>ste projecto<br />

e o trabalho futuro que po<strong>de</strong> ser feito para melhorar o serviço ASAP.<br />

9


Capítulo 2 – Fundamentos<br />

2.1 A Pesquisa Científica na <strong>Web</strong><br />

Des<strong>de</strong> o início da condução das publicações científicas para a Internet, <strong>de</strong> forma<br />

in<strong>de</strong>pen<strong>de</strong>nte ou auxiliada por repositórios científicos online, várias i<strong>de</strong>ntida<strong>de</strong>s têm<br />

criado ferramentas <strong>de</strong> pesquisa, principalmente construídas como motores <strong>de</strong> busca para<br />

suportar pesquisas direccionadas à comunida<strong>de</strong> científica. Algumas <strong>de</strong>ssas ferramentas<br />

estão bastante bem construídas e são utilizadas hoje em dia como o Google Scholar<br />

(http://scholar.google.pt/), a <strong>Web</strong> of Knowledge (http://wokinfo.com/), para além dos<br />

motores <strong>de</strong> busca já integrados nos repositórios científicos.<br />

Estes motores <strong>de</strong> pesquisa usualmente oferecem uma caixa <strong>de</strong> texto on<strong>de</strong> po<strong>de</strong>mos<br />

escrever um conjunto <strong>de</strong> palavras-chave (query) filtradoras e selectivas dos artigos que<br />

<strong>de</strong>sejamos visualizar. Po<strong>de</strong>m também disponibilizar em simultâneo um conjunto <strong>de</strong><br />

opções <strong>de</strong> refinamento da pesquisa como a data das publicações, pesquisa por autor ou<br />

tema, entre outras. Estes serviços são os mais utilizados actualmente para pesquisa <strong>de</strong><br />

bibliografia científica, pela sua rapi<strong>de</strong>z e eficiência a curto prazo.<br />

Alguns <strong>de</strong>stes mecanismos utilizam também uma abordagem <strong>de</strong> data mining, que se<br />

<strong>de</strong>fine como a extracção <strong>de</strong> informação nova e útil relacionada com aquela que é<br />

procurada. O seu mecanismo passa pela construção <strong>de</strong> programas que procuram nas<br />

bases <strong>de</strong> dados a generalização e relacionamento <strong>de</strong> padrões conforme a informação que<br />

é encontrada e o seu nível <strong>de</strong> correspondência com a informação que procuramos [2].<br />

Um exemplo simples é a marcação <strong>de</strong> palavras da pesquisa em textos on<strong>de</strong> são<br />

encontradas.<br />

Mecanismos menos imediatos, mas mais úteis e eficazes utilizados na <strong>Web</strong> são os<br />

crawlers ou <strong>agentes</strong> <strong>de</strong>stinados a reunir informação ao serviço dos utilizadores. Apesar<br />

do seu funcionamento não diferir totalmente dos motores <strong>de</strong> pesquisa habituais, a sua<br />

automatização marca pela diferença, pois po<strong>de</strong> usufruir <strong>de</strong> duas aplicações diferentes: a<br />

pesquisa mais alargada ao nível da quantida<strong>de</strong> e varieda<strong>de</strong> <strong>de</strong> repositórios científicos<br />

e/ou a actualização <strong>de</strong> resultados autónoma. Obviamente, todos os motores <strong>de</strong> pesquisa<br />

10


populares usam crawlers que têm <strong>de</strong> cobrir o crescimento substancial da <strong>Web</strong>. No<br />

entanto, <strong>de</strong>vido à natural competitivida<strong>de</strong> da comercialização <strong>de</strong>stes motores, os<br />

<strong>de</strong>talhes funcionais <strong>de</strong>stes crawlers raramente se encontram disponíveis publicamente, e<br />

se existem, são <strong>de</strong>masiado vagos para permitir a sua reprodutibilida<strong>de</strong> [3].<br />

2.2 Agentes <strong>Web</strong> e Crawlers<br />

Um agente <strong>de</strong>fine-se por aquele que po<strong>de</strong> agir em lugar <strong>de</strong> outro com permissão. No<br />

contexto da informática, esta <strong>de</strong>finição esten<strong>de</strong>-se a que o agente é um programa ou<br />

entida<strong>de</strong> <strong>de</strong> software que elabora um conjunto <strong>de</strong> operações em nome <strong>de</strong> um utilizador<br />

ou outro programa com algum nível <strong>de</strong> in<strong>de</strong>pendência ou autonomia. Complementando<br />

esta <strong>de</strong>finição à característica autónoma do agente, po<strong>de</strong>-se dizer que um agente<br />

autónomo é um sistema que faz parte <strong>de</strong> um ambiente, analisando-o e agindo com base<br />

nele num <strong>de</strong>terminado período <strong>de</strong> tempo, em busca da sua própria agenda [4].<br />

Embora a teoria por <strong>de</strong>trás dos <strong>agentes</strong> já exista há muito tempo, os <strong>agentes</strong> têm-se<br />

tornado mais proeminentes com o crescimento da Internet. Muitas empresas ven<strong>de</strong>m<br />

actualmente software que torna possível a configuração pessoal <strong>de</strong> um agente para<br />

procurar na <strong>Web</strong> certos tipos <strong>de</strong> informação. Na área da ciência dos computadores,<br />

existe uma perspectiva que afirma que a mente humana consiste em milhares ou<br />

milhões <strong>de</strong> <strong>agentes</strong> a trabalhar em paralelo. Para criar verda<strong>de</strong>ira inteligência artificial,<br />

<strong>de</strong>vemos construir sistemas computacionais que contenham igualmente muitos <strong>agentes</strong><br />

e sistemas para arbitrar entre vários possíveis resultados obtidos a partir <strong>de</strong>stes <strong>agentes</strong>.<br />

Um agente <strong>Web</strong> é então, um programa ou software <strong>de</strong> auxílio ao utilizador<br />

construído especialmente para o ambiente da World Wi<strong>de</strong> <strong>Web</strong>, <strong>de</strong> forma a apresentar-se<br />

através <strong>de</strong> uma interface numa página <strong>Web</strong>.<br />

Os <strong>Web</strong> crawlers – também conhecidos como robots, spi<strong>de</strong>rs, worms ou wan<strong>de</strong>rers,<br />

são quase tão antigos como a própria <strong>Web</strong>. O primeiro crawler criado, o wan<strong>de</strong>rer <strong>de</strong><br />

Matthew Gray, foi escrito em 1993. Também vários artigos sobre <strong>Web</strong> crawling foram<br />

apresentados nas duas primeiras conferências da World Wi<strong>de</strong> <strong>Web</strong>. No entanto, nesses<br />

dias a <strong>Web</strong> não tinha a magnitu<strong>de</strong> que tem hoje, portanto esses sistemas não previam os<br />

problemas inerentes à criação <strong>de</strong> um crawler hoje em dia, que como qualquer outro<br />

software, <strong>de</strong>bruçam-se principalmente sobre a constante actualização <strong>de</strong><br />

acompanhamento no seu meio <strong>Web</strong>.[3]<br />

11


Um crawler é no fundo um programa ou um conjunto <strong>de</strong> módulos <strong>de</strong> software que<br />

reúne informação a partir <strong>de</strong> sites <strong>Web</strong>, através <strong>de</strong> tópicos <strong>de</strong> pesquisa ou queries<br />

conjugadas com seguimentos <strong>de</strong> hiperligações que o permitem ace<strong>de</strong>r a pontos <strong>de</strong><br />

informação. Têm também como característica o seu autonomismo, com que po<strong>de</strong>m<br />

manipular livremente a informação que obtêm.<br />

Existem diferentes cenários em que os crawlers po<strong>de</strong>m ser usados para aquisição <strong>de</strong><br />

informação. Seguem-se alguns exemplos <strong>de</strong> tipos <strong>de</strong> crawlers utilizados <strong>de</strong> diferentes<br />

modos.<br />

Crawler <strong>de</strong> expansão: Para construir um motor <strong>de</strong> pesquisa ou repositório<br />

com magnitu<strong>de</strong> relativamente alta, crawlers <strong>de</strong> alta performance começam<br />

com um pequeno conjunto <strong>de</strong> páginas e <strong>de</strong>pois exploram outras pelo<br />

intermédio <strong>de</strong> hiperligações <strong>de</strong> modo a expandirem o seu conteúdo;<br />

Crawler <strong>de</strong> segundo plano: Muita da informação existente através da <strong>Web</strong><br />

encontra-se em bases <strong>de</strong> dados e po<strong>de</strong> apenas ser obtida pela construção <strong>de</strong><br />

queries apropriadas ou preenchimento <strong>de</strong> formulários nas páginas. Este tipo<br />

<strong>de</strong> crawlers tem sido mais <strong>de</strong>senvolvido recentemente para ganhar acesso a<br />

esta informação, também chamada <strong>de</strong> “Deep <strong>Web</strong>” ou “Hid<strong>de</strong>n <strong>Web</strong>”, pois a<br />

sua criação normalmente apresenta uma série <strong>de</strong> <strong>de</strong>safios;<br />

Crawler <strong>de</strong> especialização: Alguns motores <strong>de</strong> pesquisa po<strong>de</strong>m usar<br />

políticas <strong>de</strong> procura que se concentrem apenas em certos tipos <strong>de</strong> páginas<br />

com uma linguagem ou tema <strong>de</strong>finidos. O objectivo <strong>de</strong>ste crawler é<br />

encontrar muitas páginas <strong>de</strong> interesse sem usar muita largura <strong>de</strong> banda. Ou<br />

seja, não é necessário um crawler <strong>de</strong> alta performance, a não ser que se<br />

<strong>de</strong>seje que este se torne uma base bibliográfica específica bastante mais<br />

actualizada que um motor <strong>de</strong> expansão comum;<br />

Crawler <strong>de</strong> actualização: Depois das páginas serem inicialmente obtidas,<br />

po<strong>de</strong>m ser periodicamente retiradas para verificação <strong>de</strong> actualizações. Numa<br />

situação simples, isto po<strong>de</strong> ser feito por um novo crawler copiado do<br />

primeiro, ou pelo reprocessamento dos URL (Uniform Resource Locator)<br />

<strong>de</strong>sse crawler. Claro que este sistema po<strong>de</strong> ser optimizado pelo crescimento<br />

da complexida<strong>de</strong> da programação do crawler, pois boas projecções <strong>de</strong><br />

crawlers <strong>de</strong> actualização são cruciais para uma pesquisa actualizada com<br />

baixo processamento [5].<br />

12


Neste projecto foi <strong>de</strong>senvolvido um crawler que conjuga simultaneamente os três<br />

últimos tipos <strong>de</strong> crawlers <strong>de</strong>scritos anteriormente <strong>de</strong> forma a conseguir o objectivo<br />

inicialmente proposto. Uma ilustração esquemática das tipologias <strong>de</strong> crawlers é<br />

apresentada na Fig. 1.<br />

Fig. 1 – Representação das tipologias <strong>de</strong> crawlers inseridas no crawler ASAP.<br />

2.3 Trabalho Anterior<br />

À medida que as ferramentas <strong>de</strong>ste serviço <strong>Web</strong> foram <strong>de</strong>senvolvidas, a pesquisa na<br />

<strong>Web</strong> levou à <strong>de</strong>scoberta <strong>de</strong> outros serviços semelhantes e outras ferramentas<br />

relacionadas com este projecto.<br />

O serviço <strong>de</strong>senvolvido neste projecto usa um dos maiores repositórios científicos<br />

<strong>de</strong> bibliografia relacionada com as áreas da biomedicina e bioinformática, a PubMed,<br />

mediada pelo NCBI (National Center for Biotechnology Information). Devido ao seu<br />

forte impacto nestas áreas, o NCBI criou uma série <strong>de</strong> ferramentas que po<strong>de</strong>m ser<br />

exploradas por <strong>agentes</strong> inteligentes <strong>de</strong> software. Ferramentas <strong>de</strong>nominadas eUtils,<br />

acrónimo para Entrez Programming Utilities, são um conjunto <strong>de</strong> sete programas em<br />

servidores paralelos que proporcionam uma ligação útil ao sistema <strong>de</strong> base <strong>de</strong> dados e<br />

pesquisa da Entrez no NCBI.<br />

Esta ferramenta usa uma sintaxe fixa <strong>de</strong> URL, que traduz um conjunto standard <strong>de</strong><br />

parâmetros <strong>de</strong> entrada nos valores necessários para componentes <strong>de</strong> software variados<br />

do NCBI procurarem e obterem a informação pretendida. As eUtils são, então, um tipo<br />

13


<strong>de</strong> interface estruturada para o sistema Entrez, que actualmente inclui 23 bases <strong>de</strong> dados<br />

preenchidas <strong>de</strong> gran<strong>de</strong> varieda<strong>de</strong> <strong>de</strong> informação biomédica.<br />

Existem sete ferramentas nas eUtils:<br />

EInfo – disponibiliza o número <strong>de</strong> registos in<strong>de</strong>xados em cada campo <strong>de</strong><br />

uma certa base <strong>de</strong> dados, a data da última actualização da base <strong>de</strong> dados e<br />

ligações disponíveis <strong>de</strong>ssa base <strong>de</strong> dados a outras <strong>de</strong>ntro da Entrez;<br />

EGQuery – retribui o número <strong>de</strong> registos observados em cada base <strong>de</strong> dados<br />

Entrez <strong>de</strong> acordo com uma dada query;<br />

ESearch – retribui a lista <strong>de</strong> UID’s (i<strong>de</strong>ntificadores únicos) numa certa base<br />

<strong>de</strong> dados e a traduções dos termos dados <strong>de</strong> acordo com uma dada query;<br />

ESummary – retribui os sumários dos documentos <strong>de</strong> acordo a uma lista <strong>de</strong><br />

UDI’s;<br />

EPost – aceita uma lista <strong>de</strong> UDI’s, guarda o conjunto no servidor do<br />

histórico, e retribui a chave da query correspon<strong>de</strong>nte e meio <strong>Web</strong>;<br />

EFetch – retribui os registos <strong>de</strong> informação correspon<strong>de</strong>ntes a uma lista <strong>de</strong><br />

UID’s;<br />

ELink – dada uma lista <strong>de</strong> UDI’s <strong>de</strong> uma base <strong>de</strong> dados, retribui uma lista <strong>de</strong><br />

ID’s relacionados na mesma base ou uma lista <strong>de</strong> ID hiperligados noutra<br />

base <strong>de</strong> dados Entrez;<br />

Construindo um software em Perl, Python, Java ou C++, é possível anexar os URL<br />

das eUtils ao NCBI, obter os resultados e <strong>de</strong>pois processar a informação livremente, o<br />

que cria um potencial alargado à manipulação <strong>de</strong> dados <strong>de</strong>ste repositório científico<br />

processada em segundo plano [6].<br />

Um serviço semelhante relacionado com este projecto é o PubCrawler<br />

(http://www.pubcrawler.ie/), um serviço <strong>de</strong> alertas <strong>de</strong>senvolvido pelo <strong>de</strong>partamento <strong>de</strong><br />

genética do Trinity College <strong>de</strong> Dublin, que efectua actualizações diárias às bases <strong>de</strong><br />

dados do NCBI, à PubMed e à GenBank. O PubCrawler consegue manter os<br />

investigadores informados sobre os conteúdos <strong>de</strong>stas bases <strong>de</strong> dados pela listagem <strong>de</strong><br />

novos artigos que se relacionam com as suas pesquisas [7].<br />

Este serviço serviu <strong>de</strong> objecto <strong>de</strong> estudo, para tentar verificar o que po<strong>de</strong>ria ser<br />

melhorado e diferenciado num serviço como este. Po<strong>de</strong>mos verificar muitas <strong>de</strong>ssas<br />

características na secção do trabalho futuro. Quanto ao trabalho efectuado neste<br />

14


projecto, po<strong>de</strong> ser verificado, numa comparação ao PubCrawler, que a abordagem é<br />

bastante mais simplificada para o utilizador, e diferencia-se principalmente na sua<br />

facilida<strong>de</strong> <strong>de</strong> uso, apelativida<strong>de</strong> e eficiência da interface. Apesar <strong>de</strong> o PubCrawler ser<br />

um serviço já completamente <strong>de</strong>senvolvido, tal não facilitou a tarefa a <strong>de</strong>senvolver no<br />

projecto, pois como já vimos antes, os crawlers e <strong>agentes</strong> <strong>Web</strong> são um objecto <strong>de</strong> difícil<br />

reprodutibilida<strong>de</strong>, e neste campo existem as mais variadas formas <strong>de</strong> alcançar os<br />

mesmos objectivos. De tal forma, o mais importante nem sempre é o objectivo <strong>de</strong>finido,<br />

mas a forma como este é trabalhado e alcançado.<br />

2.4 Linguagens <strong>de</strong> Programação<br />

A maior parte da elaboração <strong>de</strong>ste projecto centrou-se numa forma <strong>de</strong> trabalho que<br />

se esten<strong>de</strong>u a todos os campos da parte prática: a programação. Só <strong>de</strong>ste modo se<br />

consegue <strong>de</strong>senvolver um sistema como o i<strong>de</strong>alizado no início <strong>de</strong>ste serviço. Para além<br />

do suporte existente na <strong>Web</strong>, todas as linhas <strong>de</strong> código inerentes ao serviço criado foram<br />

cuidadosamente implementadas <strong>de</strong> forma a elaborar o conceito e utilida<strong>de</strong> i<strong>de</strong>alizadas<br />

ao início do projecto.<br />

As linguagens <strong>de</strong> programação servem para escrever programas que permitem a<br />

comunicação entre o utilizador e a máquina. Programas especiais <strong>de</strong>nominados <strong>de</strong><br />

compiladores convertem as instruções escritas em linguagens <strong>de</strong> programação em<br />

instruções escritas em linguagem binária que a máquina consegue enten<strong>de</strong>r [8].<br />

Ao <strong>de</strong>correr da construção do serviço, foram utilizadas seis linguagens <strong>de</strong><br />

programação: Perl, PHP, MySQL, HTML, Javascript e CSS. Cada uma <strong>de</strong>las contribui<br />

para diferentes e importantes aspectos na constituição dos <strong>agentes</strong> <strong>Web</strong> e sua <strong>aplicação</strong><br />

no serviço ASAP. Segue-se uma pequena <strong>de</strong>scrição <strong>de</strong> cada uma das linguagens.<br />

O Perl é uma linguagem para manipulação facilitada <strong>de</strong> texto, ficheiros e processos,<br />

que oferece uma forma mais concisa e legível <strong>de</strong> efectuar muitas tarefas diferentes que<br />

seriam mais complexas <strong>de</strong> <strong>de</strong>senvolver utilizando outras linguagens mais <strong>de</strong> base como<br />

C. Esta linguagem é caracterizada pela sua simplicida<strong>de</strong>, rapi<strong>de</strong>z, segurança,<br />

versatilida<strong>de</strong> e a sua excelência como ferramenta na criação <strong>de</strong> novas aplicações. A sua<br />

estrutura é semelhante à da linguagem C e por isso fácil <strong>de</strong> usar [9].<br />

15


O HTML (HyperText Markup Language) é a linguagem da World Wi<strong>de</strong> <strong>Web</strong>. Todos<br />

os documentos da <strong>Web</strong> são escritos em HTML e todas as formatações <strong>de</strong> documentos,<br />

hiperligações, imagens gráficas ou <strong>de</strong> multimédia foram também baseadas nesta<br />

linguagem. HTML é portanto, o principal constituinte da <strong>Web</strong>, a base <strong>de</strong> todas as<br />

páginas e inerentes que é possível encontrar na re<strong>de</strong> mundial, sendo neste projecto uma<br />

linguagem obrigatória na <strong>aplicação</strong> dos <strong>agentes</strong> <strong>de</strong>senvolvidos [10].<br />

O JavaScript, anteriormente conhecido como LiveScript, é uma linguagem que<br />

permite o melhoramento e interactivida<strong>de</strong> das páginas <strong>Web</strong> ou <strong>de</strong> algumas outras<br />

aplicações. O objectivo do JavaScript passa muitas vezes por proporcionar o máximo <strong>de</strong><br />

interactivida<strong>de</strong> e resposta sem ser necessário actualizar novas páginas <strong>Web</strong>. No <strong>de</strong>correr<br />

<strong>de</strong>ste projecto são abordadas as limitações do JavaScript quanto à sua interactivida<strong>de</strong><br />

com os <strong>agentes</strong> [11].<br />

O CSS (Casca<strong>de</strong> Style Sheets) é uma linguagem com o objectivo <strong>de</strong> <strong>de</strong>finir estilos<br />

aos ficheiros HTML. É utilizada para modificar a estrutura visual das páginas <strong>Web</strong>,<br />

formatando texto, espaçamentos e outras características.<br />

O MySQL é um sistema <strong>de</strong> manipulação <strong>de</strong> bases <strong>de</strong> dados relacionais via SQL. A<br />

sua linguagem é direccionada à criação e modificação <strong>de</strong> bases <strong>de</strong> dados online, para o<br />

armazenamento <strong>de</strong> informação relacional na <strong>Web</strong>.<br />

O PHP (Hypertext Preprocessor) é a linguagem <strong>de</strong> <strong>de</strong>senvolvimento <strong>Web</strong> paralela<br />

ao servidor, compatível com a maior parte dos servidores <strong>Web</strong>. É também uma<br />

linguagem que se consegue anexar facilmente ao HTML e a sua principal característica<br />

é actuar como uma ligação das páginas <strong>Web</strong> a servidores <strong>de</strong> bases <strong>de</strong> dados,<br />

especificida<strong>de</strong> para a qual foi usada no <strong>de</strong>correr do projecto [12].<br />

A figura 2 representa a utilização <strong>de</strong>stas linguagens na estrutura do serviço, no qual<br />

a HTML, CSS e Javascript se aliaram para a interface do site, o PHP formou a ligação à<br />

base <strong>de</strong> dados MySQL que está por sua vez disponível para fornecer informação ao<br />

crawler baseado em Perl.<br />

16


Fig. 2 – Representação esquemática das linguagens <strong>de</strong> programação aplicadas à<br />

2.5 Programas Utilizados<br />

construção do projecto<br />

Para a construção do serviço vários softwares foram utilizados como ferramentas <strong>de</strong><br />

auxílio à programação <strong>de</strong> código, sendo a maioria gratuitos.<br />

Para a criação <strong>de</strong> páginas <strong>Web</strong> com HTML e o seu preenchimento com<br />

complementos <strong>de</strong> JavaScript e CSS, foi usado o programa Adobe Dreamweaver<br />

(http://www.adobe.com/products/dreamweaver.html), software <strong>de</strong> criação e edição que<br />

apresenta utilida<strong>de</strong>s do ponto <strong>de</strong> vista visual e a nível <strong>de</strong> código que permitem construir<br />

<strong>Web</strong>sites em vários sistemas.<br />

O FileZilla FTP Client (http://filezilla-project.org/) é um programa utilizado para<br />

transferência <strong>de</strong> ficheiros <strong>de</strong> e para o servidor, permitindo colocar conteúdo na <strong>Web</strong>.<br />

O EngInSite Perl Editor LE (http://www.enginsite.com/Perl.htm) foi o editor<br />

preferido <strong>de</strong> linguagem Perl utilizado neste projecto, contém uma interface direccionada<br />

a este objectivo.<br />

O Notepad++ (http://notepad-plus-plus.org/) é um programa que oferece um<br />

ambiente favorável à programação <strong>de</strong> várias linguagens diferentes, e foi utilizado para<br />

auxiliar a construção <strong>de</strong> módulos <strong>de</strong> software rascunho do serviço.<br />

O Paint.Net (http://www.getpaint.net/) é um programa <strong>de</strong> imagem gratuito utilizado<br />

para a construção <strong>de</strong> imagens a anexar na interface do site <strong>Web</strong>.<br />

17


O Secure Shell Client (http://www.filewatcher.com/m/SSHSecureShellClient-<br />

3.2.9.exe.5517312.0.0.html) foi o serviço usado para ace<strong>de</strong>r ao servidor e testar o<br />

crawler remotamente.<br />

18


Capítulo 3 – O Serviço ASAP<br />

3.1 Conceito Inicial<br />

O conceito inicial <strong>de</strong>ste projecto é a criação <strong>de</strong> um serviço <strong>Web</strong>, que seja acedido<br />

através <strong>de</strong> um site a <strong>de</strong>senvolver, que permita aos utilizadores registados a activação e<br />

configuração <strong>de</strong> <strong>agentes</strong> <strong>Web</strong> inteligentes criados para pesquisar autonomamente<br />

bibliografia relacionada com a biomedicina e bioinformática <strong>de</strong> acordo com os seus<br />

interesses, e notificá-los periodicamente das suas pesquisas. Apesar do conceito inicial<br />

estar bem <strong>de</strong>finido, o conceito do <strong>de</strong>senvolvimento operacional <strong>de</strong>ste serviço foi<br />

mudando ao longo da sua construção, pois verificou-se uma necessida<strong>de</strong> <strong>de</strong> adaptação<br />

às regras e factores que envolvem a <strong>Web</strong> e a sua estrutura.<br />

A Fig. 3 representa o conceito da estrutura que foi i<strong>de</strong>alizada no início do projecto.<br />

Esta estrutura baseia-se bastante no potencial <strong>de</strong> processamento oculto nas páginas <strong>Web</strong>,<br />

<strong>de</strong> modo a promover a interacção com o utilizador juntamente com a troca <strong>de</strong><br />

informação através da Internet. Para este objectivo, foi confiada a tarefa <strong>de</strong> manipulação<br />

<strong>de</strong> <strong>agentes</strong> ao potencial <strong>de</strong> processamento do JavaScript, o que levou a um estudo<br />

intenso <strong>de</strong>sta linguagem.<br />

Fig. 3 – Conceptualização inicial da estrutura do serviço ASAP.<br />

No conceito primário <strong>de</strong>sta abordagem, o site ASAP seria, juntamente com a base<br />

<strong>de</strong> dados, a base do serviço. Armazenando as informações dos utilizadores e seus<br />

<strong>agentes</strong> na base <strong>de</strong> dados e criando a interface através do site <strong>Web</strong>, é possível criar um<br />

sistema estável para aplicar o mecanismo <strong>de</strong> pesquisa dos <strong>agentes</strong>.<br />

19


Para a manipulação <strong>de</strong> <strong>agentes</strong>, foi i<strong>de</strong>alizada a construção <strong>de</strong> um conjunto <strong>de</strong><br />

módulos <strong>de</strong> software em JavaScript, que inseridos no código fonte das páginas do site<br />

ASAP, trabalhariam em paralelo com o código fonte do site da PubMed, e por<br />

processos <strong>de</strong> data mining obteriam os dados necessários para o utilizador.<br />

Estes mecanismos <strong>de</strong> interacção entre o JavaScript e a PubMed seriam o principal<br />

objecto <strong>de</strong> investigação <strong>de</strong>ste projecto. Para o <strong>de</strong>senvolvimento <strong>de</strong>stes mecanismos, a<br />

investigação passou pela iniciação ao JavaScript através <strong>de</strong> tutoriais e módulos <strong>de</strong><br />

aprendizagem até ao seu domínio prático e estudo aprofundado das suas capacida<strong>de</strong>s e<br />

limitações. Nesse estudo foram <strong>de</strong>scobertas algumas características <strong>de</strong>terminantes para a<br />

estrutura do serviço:<br />

O JavaScript é uma ferramenta i<strong>de</strong>al para activar a interacção <strong>de</strong> páginas<br />

<strong>Web</strong> com os utilizadores e com elementos <strong>de</strong> formulário, característica<br />

bastante útil para o serviço.<br />

Consegue controlar navegação multi-frame e outras aplicações, que<br />

teoricamente levaria ao carregamento e processamento do código fonte<br />

das páginas da PubMed.<br />

O JavaScript não é capaz <strong>de</strong> extrair o texto contido numa página HTML<br />

ou os seus ficheiros do servidor, o que impe<strong>de</strong>, portanto, a extracção dos<br />

resultados das pesquisas na PubMed, criando uma barreira ao<br />

<strong>de</strong>senvolvimento <strong>de</strong>sta abordagem [11].<br />

A capacida<strong>de</strong> <strong>de</strong> expansão e utilida<strong>de</strong> do JavaScript está também<br />

impedida pelas leis ou regras <strong>de</strong> privacida<strong>de</strong> e acesso a servidores, regras<br />

que impediam também algum do <strong>de</strong>senvolvimento pretendido para o<br />

nosso serviço.<br />

Estas características foram fulcrais no conhecimento sobre esta linguagem aplicada<br />

à construção do serviço ASAP. Os dois primeiros pontos <strong>de</strong>screvem as principais razões<br />

pelas quais o JavaScript foi inicialmente escolhido para o mecanismo, enquanto que os<br />

dois últimos representam a razão pela qual não foi possível progredir utilizando<br />

unicamente esta linguagem, o que levou a mais investigação relacionada com a<br />

reestruturação do mecanismo <strong>de</strong> pesquisa.<br />

Após esta abordagem, foi <strong>de</strong>cidido utilizar a linguagem JavaScript apenas para<br />

enriquecimento do site ASAP, e começar uma nova conceptualização da ferramenta <strong>de</strong><br />

pesquisa baseada num crawler.<br />

20


3.2 Arquitectura dos Agentes<br />

A estrutura dos <strong>agentes</strong> <strong>Web</strong> está baseada na criação <strong>de</strong> uma base <strong>de</strong> dados,<br />

composta por duas tabelas e os seus respectivos campos. Os campos essenciais são o<br />

nome <strong>de</strong>sse utilizador, o nome do agente, as keywords correspon<strong>de</strong>ntes à sua pesquisa, a<br />

data <strong>de</strong> valida<strong>de</strong> dos <strong>agentes</strong> e um número i<strong>de</strong>ntificativo <strong>de</strong> cada agente. Os <strong>de</strong>talhes<br />

po<strong>de</strong>m ser vistos mais à frente na secção 3.4.1.<br />

Esta estrutura permite aos utilizadores guardarem cada um dos seus <strong>agentes</strong>, com as<br />

keywords <strong>de</strong>finidas, e <strong>de</strong>terminarem uma data para que o agente seja <strong>de</strong>sactivado. A<br />

programação da base <strong>de</strong> dados é feita em MySQL, e as informações são inseridas nela<br />

através <strong>de</strong> PHP inserido no site ASAP. Desta forma conseguimos proporcionar uma<br />

simples e rápida criação <strong>de</strong> <strong>agentes</strong> aos utilizadores, <strong>de</strong>ixando todo o processo <strong>de</strong><br />

pesquisa e gestão para segundo plano, in<strong>de</strong>pen<strong>de</strong>nte ao utilizador.<br />

O restante processo <strong>de</strong> pesquisa periódica é efectuado por um software baseado na<br />

tipologia <strong>de</strong> crawlers. No entanto, a criação do software não estava planeada <strong>de</strong>s<strong>de</strong> o<br />

início <strong>de</strong>ste projecto. A sua construção foi originada na extensa investigação das<br />

dificulda<strong>de</strong>s que se <strong>de</strong>pararam ao longo do seu <strong>de</strong>senvolvimento, como po<strong>de</strong>mos<br />

verificar no subcapítulo 3.1.<br />

3.3 O Crawler<br />

A criação do crawler advém da pesquisa efectuada a linguagens <strong>de</strong> programação<br />

alternativas que ultrapassassem as restrições observadas no Subcapítulo 3.1 para o<br />

JavaScript. Foi verificado que para realizar as acções que eram pretendidas, era<br />

necessária uma linguagem <strong>de</strong> programação menos especializada, que tivesse a<br />

capacida<strong>de</strong> <strong>de</strong> abranger mais aplicações e <strong>de</strong> trabalhar bem em ambiente <strong>de</strong> servidor. As<br />

possibilida<strong>de</strong>s a escolher mostraram-se variadas, <strong>de</strong>s<strong>de</strong> o C++, Perl, Python, Java e<br />

possivelmente entre outras. Para o mecanismo <strong>de</strong>ste crawler, foi escolhida a linguagem<br />

Perl, <strong>de</strong>vido à sua predisposição <strong>de</strong> interacção com a <strong>Web</strong> e as restantes características<br />

referidas no Subcapítulo 2.4.<br />

A conceptualização i<strong>de</strong>alizada do crawler criado é representada na Fig. 4, contendo<br />

o seu conceito básico <strong>de</strong> funcionamento.<br />

21


Fig. 4 – Representação do funcionamento do crawler.<br />

O crawler, ao ser accionado periodicamente por um daemon ou programa <strong>de</strong><br />

activação periódica, extrai as keywords dos <strong>agentes</strong> <strong>de</strong>finidos na base <strong>de</strong> dados, formula<br />

a string da query, efectua a pesquisa na PubMed através da interface das eUtils e recebe<br />

os resultados da pesquisa. Com esses resultados, envia um e-mail através do servidor<br />

<strong>agentes</strong> para os utilizadores registados.<br />

Para a interacção <strong>de</strong>ste crawler com o servidor da NCBI, foram usadas as<br />

ferramentas das eUtils, <strong>de</strong>scritas no Subcapítulo 2.3. Estas ferramentas são i<strong>de</strong>ais para a<br />

criação <strong>de</strong> uma correlação entre o nosso serviço e o servidor na NCBI, e constituem um<br />

factor <strong>de</strong>terminante para o funcionamento <strong>de</strong>ste projecto. Entre as sete ferramentas<br />

disponíveis, foram usadas duas: O eSearch e o eFetch.<br />

O eSearch permite obter uma série <strong>de</strong> i<strong>de</strong>ntificativos (UID’s) <strong>de</strong> acordo com o<br />

envio <strong>de</strong> uma query. O crawler foi programado então para compor a string da<br />

query a partir das keywords armazenadas na base <strong>de</strong> dados, invocar o comando<br />

eSearch e obter os i<strong>de</strong>ntificativos, como po<strong>de</strong>mos ver no Excerto 1:<br />

my $utils = "http://www.ncbi.nlm.nih.gov/entrez/eutils";<br />

my $db = "Pubmed";<br />

my $query = join '',$keyword1,'+',$keyword2,'+',$keyword3;<br />

my $esearch = "$utils/esearch.fcgi?" .<br />

"db=$db&retmax=1&usehistory=y&term=";<br />

22


my $esearch_result = get($esearch . $query);<br />

print "\nESEARCH RESULT: $esearch_result\n";<br />

Excerto 1: Código correspon<strong>de</strong>nte ao uso da ferramenta eSearch.<br />

Respectivamente ao código em Perl, foi criada uma variável com a string<br />

<strong>de</strong>nominada Utils com a URL das eUtils, seguindo-se a variável db, com a string<br />

relativa à base <strong>de</strong> dados PubMed. A variável query efectua uma concatenação das<br />

strings keyword1, keyword2 e keyword3 que correspon<strong>de</strong>m às palavras-chave <strong>de</strong> um<br />

dos <strong>agentes</strong> da base <strong>de</strong> dados. Seguidamente na variável esearch complementa-se a<br />

string da ferramenta eSearch no URL, e com a variável esearch_result guarda-se a<br />

variável <strong>de</strong> instrução <strong>de</strong> comando <strong>de</strong>ssa mesma ferramenta, concatenando as palavras-<br />

chave, e a instrução é activada na última linha.<br />

Após este passo, foi convocado o eFetch, que dados os i<strong>de</strong>ntificativos, retribui as<br />

informações correspon<strong>de</strong>ntes, como o título, o PMID (número <strong>de</strong> i<strong>de</strong>ntificação do artigo<br />

na PubMed) e o resumo da publicação. Na presença <strong>de</strong>stes dados, o crawler envia-os<br />

para cada utilizador correspon<strong>de</strong>nte, obtendo o en<strong>de</strong>reço <strong>de</strong> e-mail da base <strong>de</strong> dados.<br />

Também cada um <strong>de</strong>stes comandos contém parâmetros específicos relativos às suas<br />

especificações. Segue-se a programação relativa ao eFetch presente no Excerto 2.<br />

my $retstart;<br />

my $retmax=6;<br />

for($retstart = 0; $retstart < 6; $retstart += $retmax) {<br />

my $efetch = "$utils/efetch.fcgi?" .<br />

"rettype=$report&retmo<strong>de</strong>=text&retstart=$retstart&retmax=$retmax&" .<br />

"mindate=$mindate&db=$db&query_key=$QueryKey&<strong>Web</strong>Env=$<strong>Web</strong>Env";<br />

my $efetch_result = get($efetch);<br />

if ($efetch_result == '') { $efetch_result='A pesquisa não <strong>de</strong>volveu<br />

qualquer resultado para as palavras-chave indicadas.'; }<br />

Excerto 2: Código correspon<strong>de</strong>nte à utilização da ferramenta eFetch.<br />

A primeira e segunda variáveis são <strong>de</strong>finidas para a criação <strong>de</strong> um ciclo na terceira<br />

linha <strong>de</strong> código. A variável efetch contém uma string com a parte do URL relativa à<br />

ferramenta eFetch, contendo os parâmetros acima <strong>de</strong>finidos, incluindo a mindate,<br />

relativa à data mínima <strong>de</strong> publicação dos artigos. A variável efetch_result guarda o<br />

comando <strong>de</strong> chamada do eFetch, usada <strong>de</strong>pois no envio do e-mail. A última linha do<br />

23


Excerto 2 refere-se à possibilida<strong>de</strong> <strong>de</strong> a pesquisa não obter resultados na PubMed,<br />

respon<strong>de</strong>ndo assim com uma frase <strong>de</strong>scritiva <strong>de</strong>sta situação.<br />

3.4 Aplicação do Crawler<br />

Para <strong>aplicação</strong> no nosso constituinte principal <strong>de</strong> investigação, o crawler do serviço<br />

ASAP, é necessário elaborar toda a interface e suporte do serviço <strong>Web</strong>, nomeadamente<br />

as páginas <strong>Web</strong>, a base <strong>de</strong> dados e as suas ligações. Para isso, foi aproveitada a estrutura<br />

da primeira abordagem do projecto <strong>de</strong>scrita no Subcapítulo 3.1, substituindo apenas o<br />

processo <strong>de</strong> pesquisa em JavaScript pelo crawler criado.<br />

3.4.1 Base <strong>de</strong> Dados<br />

A Base <strong>de</strong> Dados do serviço ASAP é a base <strong>de</strong> armazenamento <strong>de</strong> dados constituída<br />

por duas tabelas, <strong>agentes</strong> e users. A primeira contém o número i<strong>de</strong>ntificativo do agente,<br />

o nome do agente, o nome do utilizador que criou o agente, três palavras-chave, a data<br />

mínima <strong>de</strong> publicação dos artigos e a data <strong>de</strong> valida<strong>de</strong> do agente. A segunda contém os<br />

números i<strong>de</strong>ntificativos dos utilizadores, os nomes <strong>de</strong> utilizadores, palavras passe e<br />

correios electrónicos. A ligação entre estas é o nome <strong>de</strong> utilizador (login), que<br />

estabelecem os campos-chave, ligando o utilizador aos seus <strong>agentes</strong>. É a chave primária<br />

das tabelas, pois não se repete permitindo assim a criação <strong>de</strong> vários <strong>agentes</strong> para o<br />

mesmo utilizador, como po<strong>de</strong>mos ver na Fig. 5.<br />

Fig. 5 – Mo<strong>de</strong>lo ER (Entida<strong>de</strong>-relacionamento) da base <strong>de</strong> dados.<br />

Esta base <strong>de</strong> dados foi construída na linguagem MySQL, que para além <strong>de</strong> ser das<br />

mais utilizadas e acessíveis, permite uma ligação facilitada com o nosso crawler. Esta<br />

ligação é feita graças a um módulo <strong>de</strong> software <strong>de</strong>nominado DBD::mysql que é uma<br />

24


“package” <strong>de</strong> instalação disponível em Perl, a qual serve <strong>de</strong> interface entre a linguagem<br />

Perl e o MySQL, e juntamente com a DBI, uma “package” <strong>de</strong> ligação semelhante mas<br />

menos específica, disponibilizam uma série <strong>de</strong> comandos que comunicam com a base <strong>de</strong><br />

dados através do crawler.<br />

3.4.2 O Site <strong>Web</strong> ASAP<br />

Para a <strong>aplicação</strong> do crawler <strong>de</strong>senvolvido, é imprescindível a criação <strong>de</strong> um local na<br />

<strong>Web</strong> que sirva <strong>de</strong> plataforma à <strong>de</strong>puração do crawler e on<strong>de</strong> os investigadores possam<br />

tirar partido da ferramenta criada. É necessária então a construção <strong>de</strong> um site <strong>Web</strong>, on<strong>de</strong><br />

o serviço possa ser disponibilizado à comunida<strong>de</strong> científica, e eventualmente on<strong>de</strong> se<br />

possam <strong>de</strong>senvolver novas funcionalida<strong>de</strong>s ao serviço, por meio do constante<br />

melhoramento e actualização.<br />

Fig. 6 – Protótipo da página inicial do serviço ASAP.<br />

O <strong>Web</strong>site ASAP foi construído na linha da simplicida<strong>de</strong> e eficiência, preten<strong>de</strong><br />

oferecer aos seus utilizadores um serviço <strong>de</strong> pesquisa com a simplicida<strong>de</strong> mais próxima<br />

possível <strong>de</strong> um motor <strong>de</strong> busca. Obviamente, este serviço trabalha com um maior<br />

conjunto <strong>de</strong> variáveis <strong>de</strong> personalização, portanto foi construído com base num sistema<br />

25


<strong>de</strong> registo, uma forma <strong>de</strong> manter as pesquisas privadas e oferecer um espaço <strong>de</strong><br />

investigação apelativo ao utilizador. Desta forma foi criado um site <strong>Web</strong> com especial<br />

foco na rapi<strong>de</strong>z, eficiência, simplicida<strong>de</strong> e elegância com ênfase no utilizador e a sua<br />

segurança, conforme uma série <strong>de</strong> premissas <strong>de</strong>finidas [13].<br />

Os rascunhos básicos da interface e funcionalida<strong>de</strong> do site foram inicialmente<br />

<strong>de</strong>senvolvidos numa aproximação <strong>de</strong> programador construindo linha a linha o código<br />

num software como o Notepad++. Mas cedo foi <strong>de</strong>notada, <strong>de</strong>vido à dimensão da<br />

interface, a necessida<strong>de</strong> <strong>de</strong> um software mais acessível na construção das páginas e que<br />

fizesse a abordagem da sua construção também pela parte do seu <strong>de</strong>sign. O software<br />

Dreamweaver mostrou-se uma ferramenta profissional mais a<strong>de</strong>quada a esta tarefa, já<br />

que é uma ferramenta bastante completa e que torna o processo <strong>de</strong> criação fácil e rápido.<br />

3.4.3 As Ligações Site / Base <strong>de</strong> Dados<br />

O PHP é uma linguagem direccionada para a <strong>Web</strong>, e foi utilizada neste projecto<br />

para estabelecer a ligação do site <strong>Web</strong> com a base <strong>de</strong> dados. O site contém vários tipos<br />

<strong>de</strong> formulários a serem preenchidos pelo utilizador, e estes vão servir para que o PHP<br />

adicione ou modifique as informações aí submetidas na base <strong>de</strong> dados. Também é a<br />

linguagem utilizada para manter o utilizador na sessão que iniciou e mantém as<br />

informações em segurança.<br />

No site <strong>Web</strong> existem três formulários essenciais à obtenção <strong>de</strong> informação essencial<br />

do utilizador. O primeiro é, obviamente, o formulário <strong>de</strong> registo (ver Fig. 7), que<br />

preenche a tabela utilizadores da base <strong>de</strong> dados com o nome, palavra passe e e-mail do<br />

utilizador.<br />

Fig. 7 – Formulário <strong>de</strong> registo (protótipo).<br />

26


O segundo não preenche a base <strong>de</strong> dados pois é o formulário <strong>de</strong> i<strong>de</strong>ntificação ou<br />

login, apresentado na Fig. 8. Este <strong>de</strong>ve ser preenchido cada vez que o utilizador <strong>de</strong>seja<br />

iniciar sessão, confirmando o seu nome e palavra-passe.<br />

Fig. 8 – Formulário <strong>de</strong> login (protótipo).<br />

O terceiro formulário correspon<strong>de</strong> à criação <strong>de</strong> <strong>agentes</strong> <strong>de</strong> pesquisa, on<strong>de</strong> são<br />

pedidas as informações necessárias a preencher a tabela <strong>agentes</strong> da base <strong>de</strong> dados (ver<br />

Fig. 9).<br />

Fig. 9 – Formulário <strong>de</strong> criação <strong>de</strong> agente (protótipo).<br />

Com o preenchimento <strong>de</strong>stes campos é possível manipular toda a informação<br />

necessária ao utilizador, sendo quaisquer opções posteriormente adicionadas livres <strong>de</strong><br />

preenchimento obrigatório.<br />

3.5 ASAP – Pesquisa Autónoma com Agentes na PubMed<br />

Organizando toda a estrutura algorítmica do agente po<strong>de</strong>mos caracterizar o seu<br />

funcionamento pela Fig. 10.<br />

27


Fig. 10 – Diagrama do funcionamento geral do crawler e serviço ASAP.<br />

Po<strong>de</strong>-se aqui observar a esquemática geral do mecanismo <strong>de</strong> pesquisa em que o<br />

serviço está baseado, e po<strong>de</strong> ser dividido numa sequência <strong>de</strong> quatro passos.<br />

No primeiro passo, após o período <strong>de</strong>finido, o crawler é activado por um programa<br />

(daemon) anexo, começando assim o ciclo <strong>de</strong> pesquisa. O crawler vai então à base <strong>de</strong><br />

dados e estabelece uma ligação, recolhendo os dados necessários para a sua pesquisa,<br />

constituindo o segundo passo. No terceiro passo, o crawler utiliza as eUtils e os<br />

algoritmos <strong>de</strong> pesquisa para obter os resultados da pesquisa para cada um dos <strong>agentes</strong><br />

da base <strong>de</strong> dados, e no quarto passo, os resultados são publicados através <strong>de</strong> o envio <strong>de</strong><br />

um e-mail ao utilizador.<br />

Para <strong>de</strong>nominar este serviço foi escolhido, numa abordagem tanto “comercial”<br />

como profissional, o título (ASAP – Automate Search with Agents in PubMed),<br />

<strong>de</strong>screvendo o objectivo principal do serviço numa sigla já conhecida.<br />

3.6 Resultados<br />

Este projecto resultou não só no <strong>de</strong>senvolvimento <strong>de</strong> <strong>agentes</strong> <strong>de</strong> pesquisa na <strong>Web</strong>,<br />

mas também na criação <strong>de</strong> um serviço suportado por um site <strong>Web</strong>, disponibilizando a<br />

investigação efectuada no âmbito <strong>de</strong>ste trabalho <strong>de</strong> forma aberta à comunida<strong>de</strong>. O<br />

28


<strong>de</strong>senvolvimento <strong>de</strong> todos os componentes <strong>de</strong> forma cuidada e permanente permitiu a<br />

estabilida<strong>de</strong> e abrangência <strong>de</strong> um serviço presente e funcional.<br />

A fase <strong>de</strong> testes e <strong>de</strong>puração permitiu a correcção e melhoramento <strong>de</strong> vários<br />

aspectos do crawler e do serviço em geral. O seu aperfeiçoamento foi composto por<br />

uma série <strong>de</strong> tentativas <strong>de</strong> pesquisa e análise <strong>de</strong> diferentes resultados, resultando<br />

também em novas i<strong>de</strong>ias e aplicações no serviço.<br />

Em termos <strong>de</strong> <strong>de</strong>sempenho, o serviço mostrou-se eficaz e rápido, elaborando a<br />

pesquisa e envio <strong>de</strong> resultados <strong>de</strong> cada agente em poucos segundos. Estes resultados são<br />

compostos pelo resumo, PMID, número e URL dos artigos encontrados na pesquisa.<br />

É <strong>de</strong> verificar que, como qualquer serviço <strong>Web</strong>, o melhoramento e actualização<br />

constante do mesmo é essencial para o seu sucesso e expansão, o que dará origem<br />

também na obtenção <strong>de</strong> novos <strong>de</strong>safios e resultados.<br />

29


Capítulo 4 – Conclusões<br />

4.1 Conclusão<br />

Todo o trabalho efectuado no âmbito <strong>de</strong>ste projecto culminou na criação do site<br />

<strong>Web</strong> ASAP, um serviço ao dispor da comunida<strong>de</strong> do IPB e já em completo<br />

funcionamento. A sua instalação efectuada num servidor <strong>de</strong>ntro do <strong>Instituto</strong> Politécnico<br />

<strong>de</strong> Bragança permite a sua exclusivida<strong>de</strong>, funcionando internamente e disponível apenas<br />

aos portadores <strong>de</strong> um webmail IPB. Este po<strong>de</strong> ser acedido em http://esa.ipb.pt/~<strong>agentes</strong>.<br />

É uma ferramenta disponível a toda a comunida<strong>de</strong> do IPB, mas principalmente<br />

<strong>de</strong>dicada aos investigadores, estudantes e professores a trabalhar nas áreas <strong>de</strong><br />

biomedicina e bioinformática. O propósito <strong>de</strong>ste serviço é acelerar o trabalho <strong>de</strong><br />

investigação <strong>de</strong>stas áreas, auxiliando também a componente da inovação do trabalho<br />

dos investigadores e incentivando a actualização <strong>de</strong> informação necessária a áreas <strong>de</strong><br />

rápido <strong>de</strong>senvolvimento como estas.<br />

O seu <strong>de</strong>senvolvimento proporcionou barreiras e novos <strong>de</strong>safios que resultaram em<br />

duas abordagens diferentes ao problema, o que levou a uma melhor investigação e<br />

conhecimento na área da manipulação <strong>de</strong> informação. A primeira abordagem envolveu<br />

um profundo conhecimento do JavaScript e funcionalida<strong>de</strong>s, enquanto que a segunda<br />

expandiu os horizontes da <strong>aplicação</strong> <strong>de</strong>senvolvida, permitindo o <strong>de</strong>senvolvimento <strong>de</strong> um<br />

crawler e revelando todas as possibilida<strong>de</strong>s a ele associado. Este foi o maior marco no<br />

<strong>de</strong>correr <strong>de</strong>ste projecto, solucionando um problema que se aparentava intransponível à<br />

primeira vista.<br />

A nível pessoal e profissional, este projecto permitiu a aprendizagem, em todo o<br />

conjunto, <strong>de</strong> seis linguagens <strong>de</strong> programação, seis ferramentas <strong>de</strong> software, criação <strong>de</strong><br />

bases <strong>de</strong> dados, sites <strong>Web</strong> e crawlers, uma série <strong>de</strong> conhecimentos relacionados com a<br />

informática e a concretização <strong>de</strong> um objectivo.<br />

Em relação aos resultados do trabalho, conclui-se que esta foi uma etapa <strong>de</strong><br />

enriquecimento e <strong>de</strong> trabalho positivo, pois os objectivos foram concluídos e originaram<br />

um variado e extenso seguimento <strong>de</strong> trabalho.<br />

30


4.2 Trabalho Futuro<br />

Existe uma infinida<strong>de</strong> <strong>de</strong> trabalho suplementar que este serviço po<strong>de</strong> suportar pois,<br />

sendo um protótipo, a ferramenta criada está apenas a mostrar o seu mínimo potencial<br />

como serviço <strong>Web</strong>. Esse potencial está prestes a crescer com a possível continuação da<br />

sua expansão e funcionalida<strong>de</strong>, com o objectivo <strong>de</strong> tornar o ASAP uma ferramenta<br />

abrangente, útil e mais eficiente.<br />

Entre os complementos e alterações a efectuar neste serviço, verificam-se as<br />

seguintes:<br />

Extensão do serviço às re<strong>de</strong>s sociais (Facebook, Twitter, etc.), criando um<br />

complemento que permita aos utilizadores fazerem pesquisas remotamente;<br />

Melhoramento da interface do site, já que o <strong>de</strong>sign é um aspecto importante<br />

na apelativida<strong>de</strong> ao utilizador, a tentativa <strong>de</strong> actualizações periódicas ao<br />

aspecto do site <strong>Web</strong> é imperativo, mantendo ainda assim a sua simplicida<strong>de</strong>;<br />

Diversificação do método <strong>de</strong> envio dos resultados das pesquisas, pondo em<br />

hipótese o envio <strong>de</strong>stas por notificação nas re<strong>de</strong>s sociais, publicações,<br />

mensagens <strong>de</strong> texto e outros;<br />

Melhoramento do método <strong>de</strong> actualização <strong>de</strong> resultados, criando um módulo<br />

anexo <strong>de</strong> software que notifique o utilizador apenas quando a sua pesquisa<br />

está a resultar em novos artigos acabados <strong>de</strong> ser publicados;<br />

Expansão do serviço a mais repositórios <strong>de</strong> investigação científica,<br />

aumentando assim a diversida<strong>de</strong> <strong>de</strong> resultados;<br />

Aumento das <strong>de</strong>finições <strong>de</strong> pesquisa ao utilizador, como o número <strong>de</strong><br />

resultados a ser enviados, a periodicida<strong>de</strong> das pesquisas, o método <strong>de</strong><br />

recepção <strong>de</strong> resultados, a <strong>de</strong>finição do âmbito da pesquisa (autor, título,<br />

resumo…) e outros. Tudo isto sem comprometer a dinâmica do serviço, ou<br />

seja, disponibilizar estas opções mas apenas se o utilizador as requerer,<br />

colocando-as numa página <strong>de</strong> <strong>de</strong>finições <strong>de</strong> pesquisa à parte;<br />

Criação <strong>de</strong> um sistema <strong>de</strong> classificação on<strong>de</strong> os utilizadores possam dar a<br />

sua opinião sobre os resultados ou artigos visualizados, com um “rating” <strong>de</strong><br />

qualida<strong>de</strong> <strong>de</strong> uma a cinco estrelas;<br />

Disponibilização <strong>de</strong> outros idiomas no site <strong>Web</strong>, permitindo o mais fácil<br />

acesso a utilizadores estrangeiros;<br />

31


Possibilida<strong>de</strong>s <strong>de</strong> expansão do serviço a utilizadores externos ao <strong>Instituto</strong>,<br />

para que mais investigadores possam usufruir <strong>de</strong>ste serviço;<br />

Aplicação <strong>de</strong> técnicas <strong>de</strong> data mining num processamento posterior à<br />

obtenção <strong>de</strong> resultados e anterior ao seu envio.<br />

32


Referências Bibliográficas<br />

[1] K. D. Bollacker, S. Lawrence, e C. L. Giles, “CiteSeer: An Autonomous <strong>Web</strong><br />

Agent for Automatic Retrieval and I<strong>de</strong>ntification of Interesting Publications”.<br />

[2] I. H. Witten e E. Frank, Data Mining : Pratical Machine Learning Tools and<br />

Techniques, 2 o ed. Morgan Kaufmann Publishers, Inc., 2005.<br />

[3] A. Haydon e M. Najork, “Mercator: A scalable, extensible <strong>Web</strong> crawler”.<br />

[4] S. Franklin e A. Graesser, “Is It an agent, or just a program?: A taxonomy for<br />

autonomous agents”, in Intelligent Agents III Agent Theories, Architectures, and<br />

Languages, vol. 1193, J. P. Müller, M. J. Wooldridge, e N. R. Jennings, Orgs.<br />

Berlin/Hei<strong>de</strong>lberg: Springer-Verlag, 1997, p. 21-35.<br />

[5] V. Shkapenyuk e T. Suel, “Design and Implementation of a High-<br />

PerformanceDistributed <strong>Web</strong> Crawler”.<br />

[6] E. Sayers e D. Wheeler, “Building Customized Data Pipelines Using the Entrez<br />

Programming Utilities (eUtils) - NCBI Short Courses - NCBI Bookshelf”. [Online].<br />

Available: http://www.ncbi.nlm.nih.gov/books/NBK1058/. [Accessed: 23-jun-2011].<br />

[7] M. Palakal, S. Mukhopadhyay, J. Mostafa, R. Raje, M. N’Cho, e S. Mishra, “An<br />

intelligent biological information management system”, Bioinformatics, vol. 18, n o . 10,<br />

p. 1283-1288, out. 2002.<br />

Inc.<br />

[8] L. J. Aguilar, Fundamentos <strong>de</strong> programação, 3 o ed. McGraw-Hill.<br />

[9] L. Wall e R. L. Schwartz, Programming Perl. Tim O’Reilly, 1991.<br />

[10] T. Evans, t l : si les e r i . São Paulo: Makron, 199 .<br />

[11] D. Goodman e B. Eich, Javascript Bible, 3 o ed. IDG Books Worldwi<strong>de</strong>.<br />

[12] T. Converse, J. Park, e C. Morgan, PHP5 and MySQL Bible. Wiley Publishing<br />

[13] D. Gehrke e E. Turban, “Determinants of successful <strong>Web</strong>site <strong>de</strong>sign: relative<br />

importance and recommendations for effectiveness”, in Proceedings of the 32nd Annual<br />

Hawaii International Conference on Systems Sciences. 1999. HICSS-32. Abstracts and<br />

CD-ROM of Full Papers, Maui, HI, USA, p. 8.<br />

33

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!