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 ...
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