Desenvolvimento e Aplicação de Agentes Web para a

Propaganda
Ano Lectivo 2010/2011
Desenvolvimento e aplicação de agentes Web
inteligentes para pesquisa de publicações científicas
nas áreas da biomedicina e bioinformática
Carlos André Machado Carvalhal
Número Mecanográfico: 19263
Projecto de Final de Curso
Engenharia Biomédica
Orientador: Professor Doutor Leonel Domingues Deusdado
Co-orientador: Professor Doutor Sérgio Alípio Domingues Deusdado
1
Agradecimentos
A elaboração deste projecto não seria possível sem a colaboração de algumas
pessoas que me auxiliaram e apoiaram ao longo desta etapa.
Em primeiro lugar, gostaria de agradecer aos meus orientadores. Ao Doutor Leonel
Deusdado pela sua disponibilidade, orientação e conselhos nos momentos certos. Ao
Doutor Sérgio Deusdado pela sua dedicação, encorajamento e ensinamento ao longo do
semestre.
Agradeço também ao Dr. Nuno Carvalho, que ofereceu o seu profissionalismo e
eficácia com a ajuda no servidor e base de dados do serviço, ao José Miguel Couto
pelos seus conselhos e experiência na Web, e não por último à minha família, amigos e
a Vânia Rodrigues por todo o carinho e apoio ao longo da minha licenciatura.
2
3
Resumo
Este projecto tem como principal objectivo disponibilizar um serviço Web que
permita aos seus utilizadores a criação e manutenção de agentes destinados a
automatizar as pesquisas bibliográficas online, orientando-se particularmente para as
áreas científicas da biomedicina e da bioinformática. O serviço tem como suporte uma
base de dados de agentes e de utilizadores, interligada com módulos de software,
implementados em JavaScript, PHP e Perl, que gerem os inputs e outputs do sistema.
No essencial, os agentes caracterizam-se por um conjunto de palavras-chave que são
submetidas como queries combinadas na pesquisa da PubMed - um dos maiores
repositórios mundiais de bibliografia científica na área onde este projecto é
desenvolvido. Durante o período de validade dos agentes, e com periodicidade semanal,
um módulo de software presente no servidor executa as pesquisas e notifica por e-mail
os utilizadores dos resultados obtidos. Deste modo, os utilizadores obterão maior
disponibilidade para outras tarefas, uma vez que contam com a automatização da
pesquisa bibliográfica.
Um protótipo funcional do serviço criado (ASAP – Automate Search with Agents in
Pubmed) está disponível em http://www.esa.ipb.pt/~agentes . Na concepção da interface
privilegiou-se a simplicidade e a usabilidade para os processos de gestão de utilizadores
e dos seus agentes.
Os testes efectuados permitiram validar as metodologias seguidas, tendo sido
obtidos resultados satisfatórios no tocante à eficácia e à eficiência do sistema
desenvolvido.
Palavras-chave: Agentes Web, PubMed, Crawler.
4
Abstract
This project has the primary objective of creating a Web service that allows its users
to create and edit Web agents aimed to automate online bibliographic search,
particularly targeting the scientific areas of biomedicine and bioinformatics. The service
is supported by a database of agents and users, interconnected with software modules
implemented in JavaScript, PHP and Perl, which manage the system’s inputs and
outputs. Essentially, the agents are characterized by a set of keywords that are submitted
as combined queries in a PubMed search – one of the world’s largest repositories of
scientific bibliography in the area on which this project was developed. During the valid
period of the agents, and with weekly periodicity, the software module present in the
server makes the search and notifies the users with the results. With this service, the
users will have more time to concentrate on other tasks, once they have the automated
bibliographic search.
A functional prototype of the created service (ASAP – Automate Search with
Agents in PubMed) is available in http://www.esa.ipb.pt/~agentes. The conception of
the interface was based in simplicity and usability for the management process of users
and agents.
The tests conducted to evaluate the service allowed the validation of the followed
methodologies, obtaining satisfying results relating to the system’s efficiency and
effectiveness.
Keywords: Web Agents, PubMed, Crawler.
5
Índice
Capítulo 1 - Introdução .............................................................................................. 8
1.1 Enquadramento ................................................................................................ 8
1.2 Estrutura do Relatório ...................................................................................... 9
Capítulo 2 – Fundamentos ....................................................................................... 10
2.1 A Pesquisa Científica na Web........................................................................ 10
2.2 Agentes Web e Crawlers ................................................................................ 11
2.3 Trabalho Anterior........................................................................................... 13
2.4 Linguagens de Programação .......................................................................... 15
2.5 Programas Utilizados ..................................................................................... 17
Capítulo 3 – O Serviço ASAP ................................................................................. 19
3.1 Conceito Inicial .............................................................................................. 19
3.2 Arquitectura dos Agentes ............................................................................... 21
3.3 O Crawler ...................................................................................................... 21
3.4 Aplicação do Crawler .................................................................................... 24
3.4.1 Base de Dados ......................................................................................... 24
3.4.2 O Site Web ASAP ................................................................................... 25
3.4.3 As Ligações Site / Base de Dados ........................................................... 26
3.5 ASAP – Pesquisa Autónoma com Agentes na PubMed ................................ 27
3.6 Resultados ...................................................................................................... 28
Capítulo 4 – Conclusões .......................................................................................... 30
4.1 Conclusão ....................................................................................................... 30
4.2 Trabalho Futuro ............................................................................................. 31
6
Índice de Figuras
Fig. 1 – Representação das tipologias de crawlers inseridas no crawler ASAP. .... 13
Fig. 2 – Representação esquemática das linguagens de programação aplicadas à
construção do projecto .................................................................................................... 17
Fig. 3 – Conceptualização inicial da estrutura do serviço ASAP. ........................... 19
Fig. 4 – Representação do funcionamento do crawler. ........................................... 22
Fig. 5 – Modelo ER (Entidade-relacionamento) da base de dados. ......................... 24
Fig. 6 – Protótipo da página inicial do serviço ASAP. ............................................ 25
Fig. 7 – Formulário de registo (protótipo). .............................................................. 26
Fig. 8 – Formulário de login (protótipo). ................................................................. 27
Fig. 9 – Formulário de criação de agente (protótipo). ............................................. 27
Fig. 10 – Diagrama do funcionamento geral do crawler e serviço ASAP. ............. 28
7
Capítulo 1 - Introdução
1.1 Enquadramento
As áreas da biomedicina e bioinformática têm desenvolvido, nos últimos anos, um
exponencial de investigação científica sem igual, demonstrado principalmente no
número de artigos científicos publicados desde a década de 90. Este crescimento,
acompanhado de grandes progressos nesta área, apresenta também dificuldades
relativamente à pesquisa, organização e actualização de novos artigos publicados.
Os artigos publicados disponíveis na World Wide Web nestas áreas aumentam a
cada dia que passa, e tipicamente, o investigador comum gasta uma porção significativa
de tempo e esforço para encontrar publicações relevantes na Web. Esta pesquisa, para
além de necessária para bibliografia de suporte à investigação, é feita também para
evitar a duplicação de trabalho já feito, o que várias vezes acaba por acontecer na
biomedicina e bioinformática, pois sendo áreas de investigação em rápida expansão, a
taxa de publicação de artigos na Web cresce impetuosamente catalisada por serviços que
facilitam a leitura e publicação destes artigos, como por exemplo a PubMed [1].
O objectivo deste trabalho é criar um serviço ou ferramenta de agentes Web que
permita aos investigadores automatizar a sua forma de pesquisar e actualizar
bibliografia científica de forma a torná-la mais rápida e fácil. O seu desenvolvimento
passa pela investigação na ligação de agentes externos aos repositórios de bibliografia
científica para elaboração de pesquisas, implementação de um serviço Web de raiz,
implicando a aprendizagem de vários assuntos relacionados com a Web e a informática,
e ao seu domínio, para aplicação no funcionamento do serviço.
Consequentemente, serviços como este poderão ajudar no progresso científico dos
investigadores da biomedicina e bioinformática e na organização da pesquisa
personalizada de cada investigador. Este tipo de investigação abre um leque alargado de
ideias relacionadas com o suporte à pesquisa e combate aos problemas expostos acima.
8
1.2 Estrutura do Relatório
Este relatório de projecto aborda os processos e temáticas inerentes ao
desenvolvimento do serviço, expondo as etapas subjacentes e o estudo analítico
envolvente na criação de ferramentas Web.
No capítulo 2 é abordada a actualidade das pesquisas na Web, e todo o trabalho
relacionado com o projecto que é utilizado como ferramenta de pesquisa pelos
investigadores hoje em dia.
No capítulo 3 são explicados todos os processos trabalhados na criação do crawler
de pesquisa na PubMed e sua implementação no ambiente Web, bem como os
resultados verificados na sequência de testes efectuada.
O quarto e último capítulo contém a análise conclusiva à elaboração deste projecto
e o trabalho futuro que pode ser feito para melhorar o serviço ASAP.
9
Capítulo 2 – Fundamentos
2.1 A Pesquisa Científica na Web
Desde o início da condução das publicações científicas para a Internet, de forma
independente ou auxiliada por repositórios científicos online, várias identidades têm
criado ferramentas de pesquisa, principalmente construídas como motores de busca para
suportar pesquisas direccionadas à comunidade científica. Algumas dessas ferramentas
estão bastante bem construídas e são utilizadas hoje em dia como o Google Scholar
(http://scholar.google.pt/), a Web of Knowledge (http://wokinfo.com/), para além dos
motores de busca já integrados nos repositórios científicos.
Estes motores de pesquisa usualmente oferecem uma caixa de texto onde podemos
escrever um conjunto de palavras-chave (query) filtradoras e selectivas dos artigos que
desejamos visualizar. Podem também disponibilizar em simultâneo um conjunto de
opções de refinamento da pesquisa como a data das publicações, pesquisa por autor ou
tema, entre outras. Estes serviços são os mais utilizados actualmente para pesquisa de
bibliografia científica, pela sua rapidez e eficiência a curto prazo.
Alguns destes mecanismos utilizam também uma abordagem de data mining, que se
define como a extracção de informação nova e útil relacionada com aquela que é
procurada. O seu mecanismo passa pela construção de programas que procuram nas
bases de dados a generalização e relacionamento de padrões conforme a informação que
é encontrada e o seu nível de correspondência com a informação que procuramos [2].
Um exemplo simples é a marcação de palavras da pesquisa em textos onde são
encontradas.
Mecanismos menos imediatos, mas mais úteis e eficazes utilizados na Web são os
crawlers ou agentes destinados a reunir informação ao serviço dos utilizadores. Apesar
do seu funcionamento não diferir totalmente dos motores de pesquisa habituais, a sua
automatização marca pela diferença, pois pode usufruir de duas aplicações diferentes: a
pesquisa mais alargada ao nível da quantidade e variedade de repositórios científicos
e/ou a actualização de resultados autónoma. Obviamente, todos os motores de pesquisa
10
populares usam crawlers que têm de cobrir o crescimento substancial da Web. No
entanto, devido à natural competitividade da comercialização destes motores, os
detalhes funcionais destes crawlers raramente se encontram disponíveis publicamente, e
se existem, são demasiado vagos para permitir a sua reprodutibilidade [3].
2.2 Agentes Web e Crawlers
Um agente define-se por aquele que pode agir em lugar de outro com permissão. No
contexto da informática, esta definição estende-se a que o agente é um programa ou
entidade de software que elabora um conjunto de operações em nome de um utilizador
ou outro programa com algum nível de independência ou autonomia. Complementando
esta definição à característica autónoma do agente, pode-se dizer que um agente
autónomo é um sistema que faz parte de um ambiente, analisando-o e agindo com base
nele num determinado período de tempo, em busca da sua própria agenda [4].
Embora a teoria por detrás dos agentes já exista há muito tempo, os agentes têm-se
tornado mais proeminentes com o crescimento da Internet. Muitas empresas vendem
actualmente software que torna possível a configuração pessoal de um agente para
procurar na Web certos tipos de informação. Na área da ciência dos computadores,
existe uma perspectiva que afirma que a mente humana consiste em milhares ou
milhões de agentes a trabalhar em paralelo. Para criar verdadeira inteligência artificial,
devemos construir sistemas computacionais que contenham igualmente muitos agentes
e sistemas para arbitrar entre vários possíveis resultados obtidos a partir destes agentes.
Um agente Web é então, um programa ou software de auxílio ao utilizador
construído especialmente para o ambiente da World Wide Web, de forma a apresentar-se
através de uma interface numa página Web.
Os Web crawlers – também conhecidos como robots, spiders, worms ou wanderers,
são quase tão antigos como a própria Web. O primeiro crawler criado, o wanderer de
Matthew Gray, foi escrito em 1993. Também vários artigos sobre Web crawling foram
apresentados nas duas primeiras conferências da World Wide Web. No entanto, nesses
dias a Web não tinha a magnitude que tem hoje, portanto esses sistemas não previam os
problemas inerentes à criação de um crawler hoje em dia, que como qualquer outro
software,
debruçam-se
principalmente
sobre
a
constante
actualização
de
acompanhamento no seu meio Web.[3]
11
Um crawler é no fundo um programa ou um conjunto de módulos de software que
reúne informação a partir de sites Web, através de tópicos de pesquisa ou queries
conjugadas com seguimentos de hiperligações que o permitem aceder a pontos de
informação. Têm também como característica o seu autonomismo, com que podem
manipular livremente a informação que obtêm.
Existem diferentes cenários em que os crawlers podem ser usados para aquisição de
informação. Seguem-se alguns exemplos de tipos de crawlers utilizados de diferentes
modos.
 Crawler de expansão: Para construir um motor de pesquisa ou repositório
com magnitude relativamente alta, crawlers de alta performance começam
com um pequeno conjunto de páginas e depois exploram outras pelo
intermédio de hiperligações de modo a expandirem o seu conteúdo;
 Crawler de segundo plano: Muita da informação existente através da Web
encontra-se em bases de dados e pode apenas ser obtida pela construção de
queries apropriadas ou preenchimento de formulários nas páginas. Este tipo
de crawlers tem sido mais desenvolvido recentemente para ganhar acesso a
esta informação, também chamada de “Deep Web” ou “Hidden Web”, pois a
sua criação normalmente apresenta uma série de desafios;
 Crawler de especialização: Alguns motores de pesquisa podem usar
políticas de procura que se concentrem apenas em certos tipos de páginas
com uma linguagem ou tema definidos. O objectivo deste crawler é
encontrar muitas páginas de interesse sem usar muita largura de banda. Ou
seja, não é necessário um crawler de alta performance, a não ser que se
deseje que este se torne uma base bibliográfica específica bastante mais
actualizada que um motor de expansão comum;
 Crawler de actualização: Depois das páginas serem inicialmente obtidas,
podem ser periodicamente retiradas para verificação de actualizações. Numa
situação simples, isto pode ser feito por um novo crawler copiado do
primeiro, ou pelo reprocessamento dos URL (Uniform Resource Locator)
desse crawler. Claro que este sistema pode ser optimizado pelo crescimento
da complexidade da programação do crawler, pois boas projecções de
crawlers de actualização são cruciais para uma pesquisa actualizada com
baixo processamento [5].
12
Neste projecto foi desenvolvido um crawler que conjuga simultaneamente os três
últimos tipos de crawlers descritos anteriormente de forma a conseguir o objectivo
inicialmente proposto. Uma ilustração esquemática das tipologias de crawlers é
apresentada na Fig. 1.
Fig. 1 – Representação das tipologias de crawlers inseridas no crawler ASAP.
2.3 Trabalho Anterior
À medida que as ferramentas deste serviço Web foram desenvolvidas, a pesquisa na
Web levou à descoberta de outros serviços semelhantes e outras ferramentas
relacionadas com este projecto.
O serviço desenvolvido neste projecto usa um dos maiores repositórios científicos
de bibliografia relacionada com as áreas da biomedicina e bioinformática, a PubMed,
mediada pelo NCBI (National Center for Biotechnology Information). Devido ao seu
forte impacto nestas áreas, o NCBI criou uma série de ferramentas que podem ser
exploradas por agentes inteligentes de software. Ferramentas denominadas eUtils,
acrónimo para Entrez Programming Utilities, são um conjunto de sete programas em
servidores paralelos que proporcionam uma ligação útil ao sistema de base de dados e
pesquisa da Entrez no NCBI.
Esta ferramenta usa uma sintaxe fixa de URL, que traduz um conjunto standard de
parâmetros de entrada nos valores necessários para componentes de software variados
do NCBI procurarem e obterem a informação pretendida. As eUtils são, então, um tipo
13
de interface estruturada para o sistema Entrez, que actualmente inclui 23 bases de dados
preenchidas de grande variedade de informação biomédica.
Existem sete ferramentas nas eUtils:
 EInfo – disponibiliza o número de registos indexados em cada campo de
uma certa base de dados, a data da última actualização da base de dados e
ligações disponíveis dessa base de dados a outras dentro da Entrez;
 EGQuery – retribui o número de registos observados em cada base de dados
Entrez de acordo com uma dada query;
 ESearch – retribui a lista de UID’s (identificadores únicos) numa certa base
de dados e a traduções dos termos dados de acordo com uma dada query;
 ESummary – retribui os sumários dos documentos de acordo a uma lista de
UDI’s;
 EPost – aceita uma lista de UDI’s, guarda o conjunto no servidor do
histórico, e retribui a chave da query correspondente e meio Web;
 EFetch – retribui os registos de informação correspondentes a uma lista de
UID’s;
 ELink – dada uma lista de UDI’s de uma base de dados, retribui uma lista de
ID’s relacionados na mesma base ou uma lista de ID hiperligados noutra
base de dados Entrez;
Construindo um software em Perl, Python, Java ou C++, é possível anexar os URL
das eUtils ao NCBI, obter os resultados e depois processar a informação livremente, o
que cria um potencial alargado à manipulação de dados deste repositório científico
processada em segundo plano [6].
Um serviço semelhante relacionado com este projecto é o PubCrawler
(http://www.pubcrawler.ie/), um serviço de alertas desenvolvido pelo departamento de
genética do Trinity College de Dublin, que efectua actualizações diárias às bases de
dados do NCBI, à PubMed e à GenBank. O PubCrawler consegue manter os
investigadores informados sobre os conteúdos destas bases de dados pela listagem de
novos artigos que se relacionam com as suas pesquisas [7].
Este serviço serviu de objecto de estudo, para tentar verificar o que poderia ser
melhorado e diferenciado num serviço como este. Podemos verificar muitas dessas
características na secção do trabalho futuro. Quanto ao trabalho efectuado neste
14
projecto, pode ser verificado, numa comparação ao PubCrawler, que a abordagem é
bastante mais simplificada para o utilizador, e diferencia-se principalmente na sua
facilidade de uso, apelatividade e eficiência da interface. Apesar de o PubCrawler ser
um serviço já completamente desenvolvido, tal não facilitou a tarefa a desenvolver no
projecto, pois como já vimos antes, os crawlers e agentes Web são um objecto de difícil
reprodutibilidade, e neste campo existem as mais variadas formas de alcançar os
mesmos objectivos. De tal forma, o mais importante nem sempre é o objectivo definido,
mas a forma como este é trabalhado e alcançado.
2.4 Linguagens de Programação
A maior parte da elaboração deste projecto centrou-se numa forma de trabalho que
se estendeu a todos os campos da parte prática: a programação. Só deste modo se
consegue desenvolver um sistema como o idealizado no início deste serviço. Para além
do suporte existente na Web, todas as linhas de código inerentes ao serviço criado foram
cuidadosamente implementadas de forma a elaborar o conceito e utilidade idealizadas
ao início do projecto.
As linguagens de programação servem para escrever programas que permitem a
comunicação entre o utilizador e a máquina. Programas especiais denominados de
compiladores convertem as instruções escritas em linguagens de programação em
instruções escritas em linguagem binária que a máquina consegue entender [8].
Ao decorrer da construção do serviço, foram utilizadas seis linguagens de
programação: Perl, PHP, MySQL, HTML, Javascript e CSS. Cada uma delas contribui
para diferentes e importantes aspectos na constituição dos agentes Web e sua aplicação
no serviço ASAP. Segue-se uma pequena descrição de cada uma das linguagens.
O Perl é uma linguagem para manipulação facilitada de texto, ficheiros e processos,
que oferece uma forma mais concisa e legível de efectuar muitas tarefas diferentes que
seriam mais complexas de desenvolver utilizando outras linguagens mais de base como
C. Esta linguagem é caracterizada pela sua simplicidade, rapidez, segurança,
versatilidade e a sua excelência como ferramenta na criação de novas aplicações. A sua
estrutura é semelhante à da linguagem C e por isso fácil de usar [9].
15
O HTML (HyperText Markup Language) é a linguagem da World Wide Web. Todos
os documentos da Web são escritos em HTML e todas as formatações de documentos,
hiperligações, imagens gráficas ou de multimédia foram também baseadas nesta
linguagem. HTML é portanto, o principal constituinte da Web, a base de todas as
páginas e inerentes que é possível encontrar na rede mundial, sendo neste projecto uma
linguagem obrigatória na aplicação dos agentes desenvolvidos [10].
O JavaScript, anteriormente conhecido como LiveScript, é uma linguagem que
permite o melhoramento e interactividade das páginas Web ou de algumas outras
aplicações. O objectivo do JavaScript passa muitas vezes por proporcionar o máximo de
interactividade e resposta sem ser necessário actualizar novas páginas Web. No decorrer
deste projecto são abordadas as limitações do JavaScript quanto à sua interactividade
com os agentes [11].
O CSS (Cascade Style Sheets) é uma linguagem com o objectivo de definir estilos
aos ficheiros HTML. É utilizada para modificar a estrutura visual das páginas Web,
formatando texto, espaçamentos e outras características.
O MySQL é um sistema de manipulação de bases de dados relacionais via SQL. A
sua linguagem é direccionada à criação e modificação de bases de dados online, para o
armazenamento de informação relacional na Web.
O PHP (Hypertext Preprocessor) é a linguagem de desenvolvimento Web paralela
ao servidor, compatível com a maior parte dos servidores Web. É também uma
linguagem que se consegue anexar facilmente ao HTML e a sua principal característica
é actuar como uma ligação das páginas Web a servidores de bases de dados,
especificidade para a qual foi usada no decorrer do projecto [12].
A figura 2 representa a utilização destas linguagens na estrutura do serviço, no qual
a HTML, CSS e Javascript se aliaram para a interface do site, o PHP formou a ligação à
base de dados MySQL que está por sua vez disponível para fornecer informação ao
crawler baseado em Perl.
16
Fig. 2 – Representação esquemática das linguagens de programação aplicadas à
construção do projecto
2.5 Programas Utilizados
Para a construção do serviço vários softwares foram utilizados como ferramentas de
auxílio à programação de código, sendo a maioria gratuitos.
Para a criação de páginas Web com HTML e o seu preenchimento com
complementos de JavaScript e CSS, foi usado o programa Adobe Dreamweaver
(http://www.adobe.com/products/dreamweaver.html), software de criação e edição que
apresenta utilidades do ponto de vista visual e a nível de código que permitem construir
Websites em vários sistemas.
O FileZilla FTP Client (http://filezilla-project.org/) é um programa utilizado para
transferência de ficheiros de e para o servidor, permitindo colocar conteúdo na Web.
O EngInSite Perl Editor LE (http://www.enginsite.com/Perl.htm) foi o editor
preferido de linguagem Perl utilizado neste projecto, contém uma interface direccionada
a este objectivo.
O Notepad++ (http://notepad-plus-plus.org/) é um programa que oferece um
ambiente favorável à programação de várias linguagens diferentes, e foi utilizado para
auxiliar a construção de módulos de software rascunho do serviço.
O Paint.Net (http://www.getpaint.net/) é um programa de imagem gratuito utilizado
para a construção de imagens a anexar na interface do site Web.
17
O Secure Shell Client (http://www.filewatcher.com/m/SSHSecureShellClient3.2.9.exe.5517312.0.0.html) foi o serviço usado para aceder ao servidor e testar o
crawler remotamente.
18
Capítulo 3 – O Serviço ASAP
3.1 Conceito Inicial
O conceito inicial deste projecto é a criação de um serviço Web, que seja acedido
através de um site a desenvolver, que permita aos utilizadores registados a activação e
configuração de agentes Web inteligentes criados para pesquisar autonomamente
bibliografia relacionada com a biomedicina e bioinformática de acordo com os seus
interesses, e notificá-los periodicamente das suas pesquisas. Apesar do conceito inicial
estar bem definido, o conceito do desenvolvimento operacional deste serviço foi
mudando ao longo da sua construção, pois verificou-se uma necessidade de adaptação
às regras e factores que envolvem a Web e a sua estrutura.
A Fig. 3 representa o conceito da estrutura que foi idealizada no início do projecto.
Esta estrutura baseia-se bastante no potencial de processamento oculto nas páginas Web,
de modo a promover a interacção com o utilizador juntamente com a troca de
informação através da Internet. Para este objectivo, foi confiada a tarefa de manipulação
de agentes ao potencial de processamento do JavaScript, o que levou a um estudo
intenso desta linguagem.
Fig. 3 – Conceptualização inicial da estrutura do serviço ASAP.
No conceito primário desta abordagem, o site ASAP seria, juntamente com a base
de dados, a base do serviço. Armazenando as informações dos utilizadores e seus
agentes na base de dados e criando a interface através do site Web, é possível criar um
sistema estável para aplicar o mecanismo de pesquisa dos agentes.
19
Para a manipulação de agentes, foi idealizada a construção de um conjunto de
módulos de software em JavaScript, que inseridos no código fonte das páginas do site
ASAP, trabalhariam em paralelo com o código fonte do site da PubMed, e por
processos de data mining obteriam os dados necessários para o utilizador.
Estes mecanismos de interacção entre o JavaScript e a PubMed seriam o principal
objecto de investigação deste projecto. Para o desenvolvimento destes mecanismos, a
investigação passou pela iniciação ao JavaScript através de tutoriais e módulos de
aprendizagem até ao seu domínio prático e estudo aprofundado das suas capacidades e
limitações. Nesse estudo foram descobertas algumas características determinantes para a
estrutura do serviço:
 O JavaScript é uma ferramenta ideal para activar a interacção de páginas
Web com os utilizadores e com elementos de formulário, característica
bastante útil para o serviço.
 Consegue controlar navegação multi-frame e outras aplicações, que
teoricamente levaria ao carregamento e processamento do código fonte
das páginas da PubMed.
 O JavaScript não é capaz de extrair o texto contido numa página HTML
ou os seus ficheiros do servidor, o que impede, portanto, a extracção dos
resultados das pesquisas na PubMed, criando uma barreira ao
desenvolvimento desta abordagem [11].
 A capacidade de expansão e utilidade do JavaScript está também
impedida pelas leis ou regras de privacidade e acesso a servidores, regras
que impediam também algum do desenvolvimento pretendido para o
nosso serviço.
Estas características foram fulcrais no conhecimento sobre esta linguagem aplicada
à construção do serviço ASAP. Os dois primeiros pontos descrevem as principais razões
pelas quais o JavaScript foi inicialmente escolhido para o mecanismo, enquanto que os
dois últimos representam a razão pela qual não foi possível progredir utilizando
unicamente esta linguagem, o que levou a mais investigação relacionada com a
reestruturação do mecanismo de pesquisa.
Após esta abordagem, foi decidido utilizar a linguagem JavaScript apenas para
enriquecimento do site ASAP, e começar uma nova conceptualização da ferramenta de
pesquisa baseada num crawler.
20
3.2 Arquitectura dos Agentes
A estrutura dos agentes Web está baseada na criação de uma base de dados,
composta por duas tabelas e os seus respectivos campos. Os campos essenciais são o
nome desse utilizador, o nome do agente, as keywords correspondentes à sua pesquisa, a
data de validade dos agentes e um número identificativo de cada agente. Os detalhes
podem ser vistos mais à frente na secção 3.4.1.
Esta estrutura permite aos utilizadores guardarem cada um dos seus agentes, com as
keywords definidas, e determinarem uma data para que o agente seja desactivado. A
programação da base de dados é feita em MySQL, e as informações são inseridas nela
através de PHP inserido no site ASAP. Desta forma conseguimos proporcionar uma
simples e rápida criação de agentes aos utilizadores, deixando todo o processo de
pesquisa e gestão para segundo plano, independente ao utilizador.
O restante processo de pesquisa periódica é efectuado por um software baseado na
tipologia de crawlers. No entanto, a criação do software não estava planeada desde o
início deste projecto. A sua construção foi originada na extensa investigação das
dificuldades que se depararam ao longo do seu desenvolvimento, como podemos
verificar no subcapítulo 3.1.
3.3 O Crawler
A criação do crawler advém da pesquisa efectuada a linguagens de programação
alternativas que ultrapassassem as restrições observadas no Subcapítulo 3.1 para o
JavaScript. Foi verificado que para realizar as acções que eram pretendidas, era
necessária uma linguagem de programação menos especializada, que tivesse a
capacidade de abranger mais aplicações e de trabalhar bem em ambiente de servidor. As
possibilidades a escolher mostraram-se variadas, desde o C++, Perl, Python, Java e
possivelmente entre outras. Para o mecanismo deste crawler, foi escolhida a linguagem
Perl, devido à sua predisposição de interacção com a Web e as restantes características
referidas no Subcapítulo 2.4.
A conceptualização idealizada do crawler criado é representada na Fig. 4, contendo
o seu conceito básico de funcionamento.
21
Fig. 4 – Representação do funcionamento do crawler.
O crawler, ao ser accionado periodicamente por um daemon ou programa de
activação periódica, extrai as keywords dos agentes definidos na base de dados, formula
a string da query, efectua a pesquisa na PubMed através da interface das eUtils e recebe
os resultados da pesquisa. Com esses resultados, envia um e-mail através do servidor
agentes para os utilizadores registados.
Para a interacção deste crawler com o servidor da NCBI, foram usadas as
ferramentas das eUtils, descritas no Subcapítulo 2.3. Estas ferramentas são ideais para a
criação de uma correlação entre o nosso serviço e o servidor na NCBI, e constituem um
factor determinante para o funcionamento deste projecto. Entre as sete ferramentas
disponíveis, foram usadas duas: O eSearch e o eFetch.
O eSearch permite obter uma série de identificativos (UID’s) de acordo com o
envio de uma query. O crawler foi programado então para compor a string da
query a partir das keywords armazenadas na base de dados, invocar o comando
eSearch e obter os identificativos, como podemos ver no Excerto 1:
my $utils = "http://www.ncbi.nlm.nih.gov/entrez/eutils";
my $db
= "Pubmed";
my $query
= join '',$keyword1,'+',$keyword2,'+',$keyword3;
my $esearch = "$utils/esearch.fcgi?" .
"db=$db&retmax=1&usehistory=y&term=";
22
my $esearch_result = get($esearch . $query);
print "\nESEARCH RESULT: $esearch_result\n";
Excerto 1: Código correspondente ao uso da ferramenta eSearch.
Respectivamente ao código em Perl, foi criada uma variável com a string
denominada Utils com a URL das eUtils, seguindo-se a variável db, com a string
relativa à base de dados PubMed. A variável query efectua uma concatenação das
strings keyword1, keyword2 e keyword3 que correspondem às palavras-chave de um
dos agentes da base de dados. Seguidamente na variável esearch complementa-se a
string da ferramenta eSearch no URL, e com a variável esearch_result guarda-se a
variável de instrução de comando dessa mesma ferramenta, concatenando as palavraschave, e a instrução é activada na última linha.
Após este passo, foi convocado o eFetch, que dados os identificativos, retribui as
informações correspondentes, como o título, o PMID (número de identificação do artigo
na PubMed) e o resumo da publicação. Na presença destes dados, o crawler envia-os
para cada utilizador correspondente, obtendo o endereço de e-mail da base de dados.
Também cada um destes comandos contém parâmetros específicos relativos às suas
especificações. Segue-se a programação relativa ao eFetch presente no Excerto 2.
my $retstart;
my $retmax=6;
for($retstart = 0; $retstart < 6; $retstart += $retmax) {
my $efetch = "$utils/efetch.fcgi?" .
"rettype=$report&retmode=text&retstart=$retstart&retmax=$retmax&" .
"mindate=$mindate&db=$db&query_key=$QueryKey&WebEnv=$WebEnv";
my $efetch_result = get($efetch);
if ($efetch_result == '') { $efetch_result='A pesquisa não devolveu
qualquer resultado para as palavras-chave indicadas.'; }
Excerto 2: Código correspondente à utilização da ferramenta eFetch.
A primeira e segunda variáveis são definidas para a criação de um ciclo na terceira
linha de código. A variável efetch contém uma string com a parte do URL relativa à
ferramenta eFetch, contendo os parâmetros acima definidos, incluindo a mindate,
relativa à data mínima de publicação dos artigos. A variável efetch_result guarda o
comando de chamada do eFetch, usada depois no envio do e-mail. A última linha do
23
Excerto 2 refere-se à possibilidade de a pesquisa não obter resultados na PubMed,
respondendo assim com uma frase descritiva desta situação.
3.4 Aplicação do Crawler
Para aplicação no nosso constituinte principal de investigação, o crawler do serviço
ASAP, é necessário elaborar toda a interface e suporte do serviço Web, nomeadamente
as páginas Web, a base de dados e as suas ligações. Para isso, foi aproveitada a estrutura
da primeira abordagem do projecto descrita no Subcapítulo 3.1, substituindo apenas o
processo de pesquisa em JavaScript pelo crawler criado.
3.4.1 Base de Dados
A Base de Dados do serviço ASAP é a base de armazenamento de dados constituída
por duas tabelas, agentes e users. A primeira contém o número identificativo do agente,
o nome do agente, o nome do utilizador que criou o agente, três palavras-chave, a data
mínima de publicação dos artigos e a data de validade do agente. A segunda contém os
números identificativos dos utilizadores, os nomes de utilizadores, palavras passe e
correios electrónicos. A ligação entre estas é o nome de utilizador (login), que
estabelecem os campos-chave, ligando o utilizador aos seus agentes. É a chave primária
das tabelas, pois não se repete permitindo assim a criação de vários agentes para o
mesmo utilizador, como podemos ver na Fig. 5.
Fig. 5 – Modelo ER (Entidade-relacionamento) da base de dados.
Esta base de dados foi construída na linguagem MySQL, que para além de ser das
mais utilizadas e acessíveis, permite uma ligação facilitada com o nosso crawler. Esta
ligação é feita graças a um módulo de software denominado DBD::mysql que é uma
24
“package” de instalação disponível em Perl, a qual serve de interface entre a linguagem
Perl e o MySQL, e juntamente com a DBI, uma “package” de ligação semelhante mas
menos específica, disponibilizam uma série de comandos que comunicam com a base de
dados através do crawler.
3.4.2 O Site Web ASAP
Para a aplicação do crawler desenvolvido, é imprescindível a criação de um local na
Web que sirva de plataforma à depuração do crawler e onde os investigadores possam
tirar partido da ferramenta criada. É necessária então a construção de um site Web, onde
o serviço possa ser disponibilizado à comunidade científica, e eventualmente onde se
possam desenvolver novas funcionalidades ao serviço, por meio do constante
melhoramento e actualização.
Fig. 6 – Protótipo da página inicial do serviço ASAP.
O Website ASAP foi construído na linha da simplicidade e eficiência, pretende
oferecer aos seus utilizadores um serviço de pesquisa com a simplicidade mais próxima
possível de um motor de busca. Obviamente, este serviço trabalha com um maior
conjunto de variáveis de personalização, portanto foi construído com base num sistema
25
de registo, uma forma de manter as pesquisas privadas e oferecer um espaço de
investigação apelativo ao utilizador. Desta forma foi criado um site Web com especial
foco na rapidez, eficiência, simplicidade e elegância com ênfase no utilizador e a sua
segurança, conforme uma série de premissas definidas [13].
Os rascunhos básicos da interface e funcionalidade do site foram inicialmente
desenvolvidos numa aproximação de programador construindo linha a linha o código
num software como o Notepad++. Mas cedo foi denotada, devido à dimensão da
interface, a necessidade de um software mais acessível na construção das páginas e que
fizesse a abordagem da sua construção também pela parte do seu design. O software
Dreamweaver mostrou-se uma ferramenta profissional mais adequada a esta tarefa, já
que é uma ferramenta bastante completa e que torna o processo de criação fácil e rápido.
3.4.3 As Ligações Site / Base de Dados
O PHP é uma linguagem direccionada para a Web, e foi utilizada neste projecto
para estabelecer a ligação do site Web com a base de dados. O site contém vários tipos
de formulários a serem preenchidos pelo utilizador, e estes vão servir para que o PHP
adicione ou modifique as informações aí submetidas na base de dados. Também é a
linguagem utilizada para manter o utilizador na sessão que iniciou e mantém as
informações em segurança.
No site Web existem três formulários essenciais à obtenção de informação essencial
do utilizador. O primeiro é, obviamente, o formulário de registo (ver Fig. 7), que
preenche a tabela utilizadores da base de dados com o nome, palavra passe e e-mail do
utilizador.
Fig. 7 – Formulário de registo (protótipo).
26
O segundo não preenche a base de dados pois é o formulário de identificação ou
login, apresentado na Fig. 8. Este deve ser preenchido cada vez que o utilizador deseja
iniciar sessão, confirmando o seu nome e palavra-passe.
Fig. 8 – Formulário de login (protótipo).
O terceiro formulário corresponde à criação de agentes de pesquisa, onde são
pedidas as informações necessárias a preencher a tabela agentes da base de dados (ver
Fig. 9).
Fig. 9 – Formulário de criação de agente (protótipo).
Com o preenchimento destes campos é possível manipular toda a informação
necessária ao utilizador, sendo quaisquer opções posteriormente adicionadas livres de
preenchimento obrigatório.
3.5 ASAP – Pesquisa Autónoma com Agentes na PubMed
Organizando toda a estrutura algorítmica do agente podemos caracterizar o seu
funcionamento pela Fig. 10.
27
Fig. 10 – Diagrama do funcionamento geral do crawler e serviço ASAP.
Pode-se aqui observar a esquemática geral do mecanismo de pesquisa em que o
serviço está baseado, e pode ser dividido numa sequência de quatro passos.
No primeiro passo, após o período definido, o crawler é activado por um programa
(daemon) anexo, começando assim o ciclo de pesquisa. O crawler vai então à base de
dados e estabelece uma ligação, recolhendo os dados necessários para a sua pesquisa,
constituindo o segundo passo. No terceiro passo, o crawler utiliza as eUtils e os
algoritmos de pesquisa para obter os resultados da pesquisa para cada um dos agentes
da base de dados, e no quarto passo, os resultados são publicados através de o envio de
um e-mail ao utilizador.
Para denominar este serviço foi escolhido, numa abordagem tanto “comercial”
como profissional, o título (ASAP – Automate Search with Agents in PubMed),
descrevendo o objectivo principal do serviço numa sigla já conhecida.
3.6 Resultados
Este projecto resultou não só no desenvolvimento de agentes de pesquisa na Web,
mas também na criação de um serviço suportado por um site Web, disponibilizando a
investigação efectuada no âmbito deste trabalho de forma aberta à comunidade. O
28
desenvolvimento de todos os componentes de forma cuidada e permanente permitiu a
estabilidade e abrangência de um serviço presente e funcional.
A fase de testes e depuração permitiu a correcção e melhoramento de vários
aspectos do crawler e do serviço em geral. O seu aperfeiçoamento foi composto por
uma série de tentativas de pesquisa e análise de diferentes resultados, resultando
também em novas ideias e aplicações no serviço.
Em termos de desempenho, o serviço mostrou-se eficaz e rápido, elaborando a
pesquisa e envio de resultados de cada agente em poucos segundos. Estes resultados são
compostos pelo resumo, PMID, número e URL dos artigos encontrados na pesquisa.
É de verificar que, como qualquer serviço Web, o melhoramento e actualização
constante do mesmo é essencial para o seu sucesso e expansão, o que dará origem
também na obtenção de novos desafios e resultados.
29
Capítulo 4 – Conclusões
4.1 Conclusão
Todo o trabalho efectuado no âmbito deste projecto culminou na criação do site
Web ASAP, um serviço ao dispor da comunidade do IPB e já em completo
funcionamento. A sua instalação efectuada num servidor dentro do Instituto Politécnico
de Bragança permite a sua exclusividade, funcionando internamente e disponível apenas
aos portadores de um webmail IPB. Este pode ser acedido em http://esa.ipb.pt/~agentes.
É uma ferramenta disponível a toda a comunidade do IPB, mas principalmente
dedicada aos investigadores, estudantes e professores a trabalhar nas áreas de
biomedicina e bioinformática. O propósito deste serviço é acelerar o trabalho de
investigação destas áreas, auxiliando também a componente da inovação do trabalho
dos investigadores e incentivando a actualização de informação necessária a áreas de
rápido desenvolvimento como estas.
O seu desenvolvimento proporcionou barreiras e novos desafios que resultaram em
duas abordagens diferentes ao problema, o que levou a uma melhor investigação e
conhecimento na área da manipulação de informação. A primeira abordagem envolveu
um profundo conhecimento do JavaScript e funcionalidades, enquanto que a segunda
expandiu os horizontes da aplicação desenvolvida, permitindo o desenvolvimento de um
crawler e revelando todas as possibilidades a ele associado. Este foi o maior marco no
decorrer deste projecto, solucionando um problema que se aparentava intransponível à
primeira vista.
A nível pessoal e profissional, este projecto permitiu a aprendizagem, em todo o
conjunto, de seis linguagens de programação, seis ferramentas de software, criação de
bases de dados, sites Web e crawlers, uma série de conhecimentos relacionados com a
informática e a concretização de um objectivo.
Em relação aos resultados do trabalho, conclui-se que esta foi uma etapa de
enriquecimento e de trabalho positivo, pois os objectivos foram concluídos e originaram
um variado e extenso seguimento de trabalho.
30
4.2 Trabalho Futuro
Existe uma infinidade de trabalho suplementar que este serviço pode suportar pois,
sendo um protótipo, a ferramenta criada está apenas a mostrar o seu mínimo potencial
como serviço Web. Esse potencial está prestes a crescer com a possível continuação da
sua expansão e funcionalidade, com o objectivo de tornar o ASAP uma ferramenta
abrangente, útil e mais eficiente.
Entre os complementos e alterações a efectuar neste serviço, verificam-se as
seguintes:
 Extensão do serviço às redes sociais (Facebook, Twitter, etc.), criando um
complemento que permita aos utilizadores fazerem pesquisas remotamente;
 Melhoramento da interface do site, já que o design é um aspecto importante
na apelatividade ao utilizador, a tentativa de actualizações periódicas ao
aspecto do site Web é imperativo, mantendo ainda assim a sua simplicidade;
 Diversificação do método de envio dos resultados das pesquisas, pondo em
hipótese o envio destas por notificação nas redes sociais, publicações,
mensagens de texto e outros;
 Melhoramento do método de actualização de resultados, criando um módulo
anexo de software que notifique o utilizador apenas quando a sua pesquisa
está a resultar em novos artigos acabados de ser publicados;
 Expansão do serviço a mais repositórios de investigação científica,
aumentando assim a diversidade de resultados;
 Aumento das definições de pesquisa ao utilizador, como o número de
resultados a ser enviados, a periodicidade das pesquisas, o método de
recepção de resultados, a definição do âmbito da pesquisa (autor, título,
resumo…) e outros. Tudo isto sem comprometer a dinâmica do serviço, ou
seja, disponibilizar estas opções mas apenas se o utilizador as requerer,
colocando-as numa página de definições de pesquisa à parte;
 Criação de um sistema de classificação onde os utilizadores possam dar a
sua opinião sobre os resultados ou artigos visualizados, com um “rating” de
qualidade de uma a cinco estrelas;
 Disponibilização de outros idiomas no site Web, permitindo o mais fácil
acesso a utilizadores estrangeiros;
31
 Possibilidades de expansão do serviço a utilizadores externos ao Instituto,
para que mais investigadores possam usufruir deste serviço;
 Aplicação de técnicas de data mining num processamento posterior à
obtenção de resultados e anterior ao seu envio.
32
Referências Bibliográficas
[1] K. D. Bollacker, S. Lawrence, e C. L. Giles, “CiteSeer: An Autonomous Web
Agent for Automatic Retrieval and Identification of Interesting Publications”.
[2] I. H. Witten e E. Frank, Data Mining : Pratical Machine Learning Tools and
Techniques, 2o ed. Morgan Kaufmann Publishers, Inc., 2005.
[3] A. Haydon e M. Najork, “Mercator: A scalable, extensible Web crawler”.
[4] S. Franklin e A. Graesser, “Is It an agent, or just a program?: A taxonomy for
autonomous agents”, in Intelligent Agents III Agent Theories, Architectures, and
Languages, vol. 1193, J. P. Müller, M. J. Wooldridge, e N. R. Jennings, Orgs.
Berlin/Heidelberg: Springer-Verlag, 1997, p. 21-35.
[5] V. Shkapenyuk e T. Suel, “Design and Implementation of a HighPerformanceDistributed Web Crawler”.
[6] E. Sayers e D. Wheeler, “Building Customized Data Pipelines Using the Entrez
Programming Utilities (eUtils) - NCBI Short Courses - NCBI Bookshelf”. [Online].
Available: http://www.ncbi.nlm.nih.gov/books/NBK1058/. [Accessed: 23-jun-2011].
[7] M. Palakal, S. Mukhopadhyay, J. Mostafa, R. Raje, M. N’Cho, e S. Mishra, “An
intelligent biological information management system”, Bioinformatics, vol. 18, no. 10,
p. 1283-1288, out. 2002.
[8] L. J. Aguilar, Fundamentos de programação, 3o ed. McGraw-Hill.
[9] L. Wall e R. L. Schwartz, Programming Perl. Tim O’Reilly, 1991.
[10] T. Evans, t l : si
les e r
i
. São Paulo: Makron, 199 .
[11] D. Goodman e B. Eich, Javascript Bible, 3o ed. IDG Books Worldwide.
[12] T. Converse, J. Park, e C. Morgan, PHP5 and MySQL Bible. Wiley Publishing
Inc.
[13] D. Gehrke e E. Turban, “Determinants of successful Website design: relative
importance and recommendations for effectiveness”, in Proceedings of the 32nd Annual
Hawaii International Conference on Systems Sciences. 1999. HICSS-32. Abstracts and
CD-ROM of Full Papers, Maui, HI, USA, p. 8.
33
Download