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