Extracção de Anúncios e Notificação de Utilizadores do Site do Emprego Científico da Fundação para a Ciência e a Tecnologia



Documentos relacionados
Tarefa Orientada 16 Vistas

Novo Formato de Logins Manual de Consulta

Escola Superior de Tecnologia de Setúbal. Projecto Final

Tarefa Orientada 15 Manipulação de dados

Manual técnico. v /10

Criação de Páginas Web - MS Word 2000

Manual de utilização do Moodle

Tarefa Orientada 2 Criar uma base de dados

AVALIAÇÃO DA SATISFAÇÃO DO CLIENTE NOS SERVIÇOS SAGRA ONLINE

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

Tarefa Orientada 14 Subconsultas

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Rock In Rio - Lisboa

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado

Java Mail Server. Manual do Utilizador

Manual do Usuário. E-DOC Peticionamento Eletrônico TST

Programação SQL. Introdução

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Manual de Utilização do Sítio da Disciplina

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

Descrição de um problema de integração: Sistema de vendas online

Um sistema SMS 1 simplificado

Aplicações de Escritório Electrónico

REDES DE COMPUTADORES I 2007/2008 LEIC - Tagus-Park TPC Nº 2. Avaliação sumária da matéria do Capítulo 2

02 - Usando o SiteMaster - Informações importantes

Aplicações de Escritório Electrónico

18/04/2006 Micropagamento F2b Web Services Web rev 00

UNIVERSIDADE CATÓLICA PORTUGUESA DSI

Google Sites. A g r u p a m e n t o C a m p o A b e r t o /

TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO

UNIDADE 1 TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Planificação Anual da disciplina de TIC 9ºANO

Com o smartmessage podemos de forma muito fácil e usando um qualquer cliente de , como por exemplo:

Microsoft Office FrontPage 2003

MAIL DINÂMICO O QUE É? . É UM MÓDULO DO SIGARRA QUE PRETENDE FACILITAR A COMUNICAÇÃO

Engenharia de Software

Índice. Enquadramento do curso 3 Estrutura Programática 4. Primeiros passos com o e-best Learning 6. Actividades e Recursos 11

3. DESCRIÇÃO DO PROTÓTIPO

A SÈTIMA. O nosso principal objectivo

Grupo de trabalho sobre a protecção das pessoas singulares no que diz respeito ao tratamento de dados pessoais. Recomendação 1/99

Oficina de Construção de Páginas Web

Manual SAGe Versão 1.2 (a partir da versão )

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

Sistema de Certificação de Competências TIC

Comunicação de Dados de Autenticação e Credenciais de Acesso para Resposta ao Inquérito

Plataforma. Manual de Utilização Acesso ao Procedimento Fornecedor. Electrónica BizGov

MANUAL DO UTILIZADOR

Guia de Acesso/Apresentação de Pedidos de Apoio Sistema de Informação RURAL

4.3 Ferramentas para criar conteúdos/recursos educativos

Plataforma de Benefícios Públicos Acesso externo

Gescom isales. Aplicação Mobile Profissional para Vendedores

Política WHOIS do Nome de Domínio.eu

Bases de Dados. Lab 1: Introdução ao ambiente

Iniciar o Data Adapter Configuration Wizard. Toolbox Data Duplo clique em OleDbDataAdapter. Botão next na caixa de diálogo


GUIA PARA O PREENCHIMENTO DOS FORMULÁRIOS ENTIDADE GESTORA ERP PORTUGAL

DocBWeb. Interface de Pesquisa WEB

CÂMARA MUNICIPAL DE LISBOA

Escola Secundária Eça de Queiroz

Disciplina: Unidade III: Prof.: Período:

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Procedimentos para a divulgação de eventos no site da ECUM

[Documentação de Utilização Correio Electrónico dos Estudantes da ESTM]

Sistemas Operativos /2006. Trabalho Prático v1.0

Bases de Dados 2007/2008. Aula 9

Disciplina: Unidade V: Prof.: Período:

1.1. Clique no botão Iniciar, seleccione Todos os programas, Microsoft Office e no submenu aberto escolha o programa Microsoft FrontPage.

Regulamento e datas importantes da Categoria JÚNIOR 9º ano

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação

Manual do Gestor da Informação do Sistema

Direcção Regional de Educação do Algarve

Prémio Santander Totta / Universidade Nova de Lisboa, de Jornalismo Económico. Regulamento

Universidade da Beira Interior

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Guia de utilização. Gestão de Mensagens. Março 2009

Modelo Lógico e Físico da Base de Dados

bit Tecnologia ao Serviço do Mundo Rural

Oficina de Construção de Páginas Web

Manual de Administração Intranet BNI

MANUAL DO UTILIZADOR

Tarefa Orientada 13 Agrupamento e sumário de dados

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

Perguntas mais frequentes

Aplicação da Qualidade. Manual do Utilizador. Versão

DOCUMENTO DE APOIO À APLICAÇÃO

Informática I. Aula 6. Aula 6-12/09/2007 1

AMBIENTE DE PROGRAMAÇÃO PYTHON

Grande conjunto de informação que existe em todo o Mundo alojada em centenas de milhares de computadores chamados servidores Web.

Programa de Parcerias e Submissão de Propostas 2014/15

Tutorial: Do YouTube para o PowerPoint

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Manual de Navegação. Para conhecer melhor a estrutura do novo site. V02

Programação com Acesso a Banco de Dados

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Transcrição:

Extracção de Conhecimento da Internet Mestrado em Inteligência Artificial e Computação Extracção de Anúncios e Notificação de Utilizadores do Site do Emprego Científico da Fundação para a Ciência e a Tecnologia Daniel Cardoso de Moura 29 de Maio de 2003

Índice 1. DESCRIÇÃO DO TRABALHO... 3 2. DESCRIÇÃO DO PROCESSO... 3 2.1. OBTENÇÃO DA PÁGINA... 3 2.2. EXTRACÇÃO DE ANÚNCIOS... 4 2.3. ACTUALIZAÇÃO DA BASE DE DADOS... 6 2.4. CLASSIFICAÇÃO DOS ANÚNCIOS PARA CADA UTILIZADOR... 6 2.5. NOTIFICAÇÃO DOS UTILIZADORES POR CORREIO ELECTRÓNICO... 7 3. IMPLEMENTAÇÃO... 7 3.1. FERRAMENTAS UTILIZADAS... 7 3.2. ESQUEMA DA BASE DE DADOS... 8 4. CONCLUSÕES... 8 5. MELHORIAS... 9 6. BIBLIOGRAFIA... 9 MIAC ECI 2

1. Descrição do Trabalho O principal objectivo deste trabalho consiste em analisar uma página da Internet onde são publicados anúncios de emprego de modo a extrair as principais informações associadas a cada um. Para tal, a aplicação utiliza conhecimento à priori relativo à estrutura do HTML da página. A informação extraída é mantida numa base de dados. A aplicação também possui um sistema de notificação de utilizadores responsável por detectar a publicação de novos anúncios e avisar os utilizadores interessados. A determinação da relevância de um dado anúncio para um utilizador está implementada de um modo relativamente básico uma vez que não é a componente em que este trabalho é focado. Sempre que são detectados novos anúncios os utilizadores são notificados via correio electrónico. A página que é alvo de análise pertence ao Site do Emprego Científico da FCT e pode ser acedida através do endereço: http://www.fct.mces.pt/pt/emprego/oportunidades/bdados/default.asp. 2. Descrição do Processo Na figura 1 são identificadas as fases do processo de análise da página e notificação de utilizadores. Obtenção da Página Extracção de Anúncios Actualização da BD Classificação dos Anúncios p/ cada Utilizador Notificação por e-mail Figura 1 Processo de análise da página e notificação de utilizadores 2.1. Obtenção da Página Esta fase consiste em enviar um pedido HTTP ao servidor web de modo a obter a página HTML com os anúncios. No entanto, esta operação não corresponde a um simples comando GET para obter a página. A página de anúncios não pode ser acedida directamente. Existe uma página de entrada (figura 2), onde deve ser indicado o ano de publicação dos anúncios, que invoca outra página com os anúncios do respectivo ano. Figura 2 Página de entrada do site de emprego científico MIAC ECI 3

Através da análise da página de entrada concluiu-se que para obter a página de anúncios seria necessário executar um comando HTTP POST enviando alguma informação anexada, nomeadamente o ano dos anúncios (figura 3). POST /pt/emprego/oportunidades/bdados/default.asp HTTP/1.0\n Content-Length: 25\n Content-Type: application/x-www-form-urlencoded\n \n ano=2003&submit=pesquisar\n \n Figura 3 Exemplo do comando HTTP para obter os anúncios do ano de 2003 Não é por isso possível obter a página de anúncios apenas pela indicação do seu URL. Por esta razão o método htmltreeparse do R não pôde ser usado para obter a página da Internet. Apenas foi utilizado para estruturar a informação da página após esta ter sido obtida através de um pedido HTTP e escrita num ficheiro local. 2.2. Extracção de Anúncios Esta fase consiste na extracção de informação da página relativa aos anúncios publicados. Para implementar a rotina de extracção de informação foi primeiro necessário estudar o HTML da página de modo a descobrir como poderia ser obtida a informação relevante. Graficamente, o aspecto da página está ilustrado na figura 4. A página é relativamente complexa principalmente se for tido em conta que não são usados frames. Existe por isso uma fracção considerável de informação a ignorar. A fracção que interessa corresponde a um conjunto de tabelas numeradas, uma tabela por anúncio. Na figura são visíveis as duas primeiras tabelas. Figura 4 Página de anúncios do site de emprego científico A estrutura do HTML utilizado nesta página é algo complexa. O conjunto de tabelas alvo está contido dentro de um tabela que por sua vez está contida noutra que MIAC ECI 4

por sua vez está contida em mais outra. Através da seguinte instrução conseguem-se isolar as tabelas onde estão contidos os anúncios: which(names(tp$children$html[['body']][['table']][['tr']] [['td']][[8]][[2]][['td']][['table']][['tr']][[2]])=='table') No entanto a primeira, a segunda e a última tabela não correspondem a anúncios, pelo que têm de ser retiradas. <table width="550" border="0" bgcolor="#e4e4e4" class="adds"> <tr bgcolor="#cccccc"> <td width="41"> <div align="left">1. </div> </td> <td width="499"><a href="" target="_blank"><b>instituto Politécnico de Saúde Lisboa - Escola Superior de Enfermagem de Francisco Gentil</b></a></td> </tr> <tr> <td colspan="2"> <b>posição:</b> professor-coordenador<br> <b>domínio científico:</b> Enfermagem de Saúde Comunitária<br> <b>número de vagas:</b> 1<br> <b>data de publicação no Diário da República:</b> 1/4/2003<br> <b>prazo de candidatura:</b> 30 dias úteis a partir da data de publicação no Diário da República<br> <a href="00conteudo/anuncio.asp?anuncioid=648" target="_blank">anúncio</a><img src="00conteudo/images/check2.gif" alt="concurso apurado" border="0"> <a href="00conteudo/anuncio.asp?anuncioid=648#juri" target="_blank">júri do Concurso</a> <a href="00conteudo/anuncio.asp?anuncioid=648#lista" target="_blank">lista de Candidatos</a> <a href="00conteudo/anuncio.asp?anuncioid=648#aprovados" target="_blank">lista de Candidatos Aprovados</a> </td> </tr> </table> Figura 5 HTML de um anúncio Na figura 5 pode ser observado o HTML da tabela com o primeiro anúncio. Através da sua análise tiram-se algumas conclusões importantes para a compreensão da sua estrutura: A tabela está dividida em duas linhas. A primeira tem o nome da instituição e a segunda a informação restante. Na segunda linha os títulos dos campos dos dados estão a bold e os respectivos dados aparecem imediatamente a seguir. Na primeira hiperligação da segunda linha da tabela pode ser obtido o código pelo qual o anúncio é referenciado pela base de dados da FCT e que é usado para obter o texto integral do anúncio. Esta informação é suficiente para que seja possível extrair toda a informação relevante relativa a um anúncio. No entanto, existe um problema que ainda não foi referido. Na figura 4 pode ser observado que a informação relativamente à data limite pode variar. Basicamente, pode assumir duas formas: (i) é apresentado um campo com a data limite ou (ii) são apresentados dois campos: a data de publicação do anúncio e um prazo em dias a partir desta data. MIAC ECI 5

A forma em que a data limite é expressa é facilmente detectada a partir de uma contagem do número de campos (na segunda forma é necessário mais um campo). A data limite é uma informação bastante importante para determinar se um utilizador pode ou não candidatar-se. Quando é dada com base num prazo tem, por isso, de ser calculada. Existe ainda a hipótese de o prazo ser dado em dias úteis. Neste caso, fins-desemana e feriados devem ser ignorados na contagem dos dias, se bem que a aplicação neste momento apenas ignora os fins-de-semana. 2.3. Actualização da Base de Dados Esta fase consiste em colocar na base de dados os anúncios novos desde a última actualização. Isto é conseguido verificando quais são os anúncios retirados da Internet que não estão na base de dados, como é possível ver a seguir: anuncios.db <- sqlquery(db, "SELECT * FROM anuncios") anuncios <- anuncios.web[is.element(anuncios.web$id, setdiff(anuncios.web$id, anuncios.db$id)),] O ID do anúncio é utilizado como chave primária. Nos casos em que a data limite tem de ser calculada o que é guardado é a data resultante do cálculo e não a data de publicação e o prazo em dias. Devido a problemas com a execução de métodos como o sqlsave, foram utilizados comandos SQL a partir do método sqlquery, o único que mostrou ter um comportamento estável e que permite realizar qualquer operação SLQ. Para actualizar a tabela de anúncios são, por isso, executadas instruções INSERT INTO que permitem adicionar os anúncios um a um. Apesar de não ser um método aparentemente muito eficiente não apresentou qualquer problema neste tópico, sendo as inserções rápidas. 2.4. Classificação dos Anúncios para cada Utilizador Esta fase consiste em determinar para cada utilizador quais os anúncios com potencial interesse em relação aos quais o utilizador ainda não foi notificado. Esta fase processase em duas etapas: 1. Identificação dos anúncios ainda não analisados para um dado utilizador; 2. Classificação dos anúncios não analisados como interessantes ou não. Para levar a cabo a primeira etapa, é mantida na base de dados informação que indica quais os anúncios que são analisados para cada utilizador. Confrontando os anúncios extraídos da página com os anúncios anteriormente analisados obtêm-se todos os anúncios ainda não analisados para um dado utilizador. Podiam ter sido usados apenas os anúncios classificados como novos da fase de extracção de anúncios da página, mas, deste modo, conseguem-se cobrir os casos em que são adicionados utilizadores novos e para os quais existem anúncios antigos ainda válidos e com interesse. Depois de determinado o conjunto de anúncios não analisados para um utilizador dá-se início à etapa de classificação. Para cada utilizador é possível definir uma expressão regular por campo de texto do anúncio. Os campos de texto são a Posição, o Domínio e a Instituição. Por exemplo, um utilizador ao definir a expressão para a Instituição como Universidade e a expressão do Domínio como Informática seria notificado sempre que aparecessem anúncios colocados por Universidades para o Domínio de Informática, independentemente do valor do campo Posição. Anúncios que não satisfaçam simultaneamente as expressões definidas para cada um dos campos são descartados. MIAC ECI 6

2.5. Notificação dos Utilizadores por Correio Electrónico Esta fase tem como objectivo notificar por correio electrónico todos os utilizadores para os quais foram encontrados anúncios com interesse. É guardada informação na base de dados que indica se um utilizador já foi notificado relativamente a um dado anúncio. De um modo geral esta fase é executada nos seguintes passos: 1. Para cada utilizador seleccionar os anúncios com interesse sobre os quais ainda não foi notificado e cuja data limite não tenha sido ultrapassada; 2. Enviar uma mensagem de correio electrónico com informação relativa a cada um dos anúncios do ponto 1 e com hiperligações para os anúncios completos disponibilizados pelo site da FCT; 3. Marcar os anúncios como processados pela fase de notificação. Na figura 6 está ilustrado um exemplo de uma mensagem de correio electrónico enviada pela aplicação. Este exemplo contém apenas um anúncio mas poderia ter vários. Figura 6 Exemplo de uma mensagem de notificação Através do exemplo pode-se observar um problema que não foi ultrapassado: os caracteres com acentos ou cedilhas são mal interpretados pelo R. 3. Implementação 3.1. Ferramentas Utilizadas É objectivo da cadeira usar a ferramenta R para a realização do trabalho. No entanto, esta ferramenta apesar de ser bastante completa no que diz respeito a tratamento de informação, não disponibiliza algumas funcionalidades de carácter tecnológico como por exemplo uma API para correio electrónico. Por isso, das fases descritas no capítulo anterior, a primeira (obtenção da página através de um comando POST ao servidor web) e a última (notificação dos utilizadores por correio electrónico) foram implementadas numa linguagem que ultrapassa estas faltas facilmente, o Java. De salientar que o R suporta Sockets pelo que estas duas fase poderiam ter sido implementadas sem recorrer ao Java. No entanto, para o envio de mensagens de correio electrónico seria necessário implementar um protocolo de envio de mensagens (ex. SMTP). Além disso é referido na documentação do R que as rotinas de leitura e escrita em sockets (read.socket e write.socket) fazem muito poucas verificações de erro tornando-se, por isso, pouco fiáveis. As fases de extracção de informação da página, actualização da base de dados e classificação dos anúncios para cada utilizador, foram totalmente implementadas em R. Relativamente à base de dados foi usado o Microsoft Access. Apesar de ser uma base de dados de uso pessoal serve perfeitamente para as necessidades deste trabalho. MIAC ECI 7

Houve uma tentativa de usar instruções SQL standard de modo a facilitar uma eventual mudança de base de dados. 3.2. Esquema da base de Dados Na figura 7 está ilustrado o esquema da base de dados utilizada neste trabalho. Figura 7 Esquema da Base de Dados Basicamente, a base de dados é constituída por três tabelas: anúncios, utilizadores (users) e outra que relaciona anúncios com utilizadores (anunciosusers). Na tabela anúncios são guardados todos os anúncios extraídos da página. A chave primária é o número identificador utilizado pela FCT e a data limite pode ser resultado de um cálculo ou não (mediante as características do anúncio). Na tabela users estão armazenados os utilizadores, os seus endereços de correio electrónico e informação relativa ao padrão que os anúncios devem respeitar de acordo com três parâmetros: a instituição a posição e o domínio. Por fim, sempre que um anúncio é analisado para um dado utilizador é criado um registo na tabela anúnciosusers. O campo match indica se o anúncio foi classificado como interessante ou não, e o campo dt indica a data em que o processo de notificação considerou o anúncio (este campo é nulo caso o processo de notificação ainda não tenha considerado o anúncio para envio por correio electrónico ou no caso de ter surgido um erro no envio da mensagem). 4. Conclusões O R mostrou ser uma ferramenta bastante prática para operações relacionadas com extracção de dados. Permite analisar a estrutura de uma página HTML de um modo relativamente intuitivo e depois utilizar a informação relativamente a essa estrutura facilmente. No entanto, os níveis de performance na extracção de informação relativa aos anúncios são relativamente baixos (cerca de 1 a 2 segundos por anúncio). Provavelmente, a complexidade da estrutura HTML da página e o seu tamanho relativamente elevado (cerca de 500 KB) foram os principais responsáveis por esta situação. As restantes operações, incluindo as de acesso à base de dados, atingiram níveis de performance bastante mais razoáveis. MIAC ECI 8

5. Melhorias Relativamente a melhorias à aplicação, as essenciais são: Disponibilização de um site para os utilizadores poderem definir os seus padrões de anúncio e a sua informação pessoal, e poderem visualizar os anúncios abertos com potencial interesse; Flexibilização do modo de definir padrões de anúncios; Permitir uma classificação quantitativa dos anúncios, ou uma classificação qualitativa com maior espectro (ex. Muito Interessante, Interessante, Eventualmente Interessante, Desinteressante) Corrigir o problema de interpretação de caracteres com acentuação do R; Permitir a definição de dias não úteis para além dos fins-de-semana; Verificar quando um anúncio é alterado de modo a corrigir a informação da base de dados. 6. Bibliografia jguru. JDBC 2.0 Fundamentals Short Course. Sun Microsystems. 2000. jguru. Fundamentals of the JavaMail API Short Course. Sun Microsystems. 2001. Luís Torgo. Programação, Análise de Dados e Sistemas de Apoio à Decisão usando o R. Faculdade de Economia, Universidade do Porto. Outubro de 2002. Luís Torgo. Data Mining with R: learning by case studies. Laboratório de Inteligência Artificial e Ciências dos Computadores, Universidade do Porto. Novembro de 2002. Luís Torgo, Pavel Brazdil, Alípio Jorge. Diapositivos da cadeira de Extracção de Conhecimento da Internet do Mestrado de Inteligência Artificial e Ciências de Computação. Laboratório de Inteligência Artificial e Ciências dos Computadores, Universidade do Porto. 2003. MIAC ECI 9