universidade de departamento de electrónica, telecomunicações … · 2013. 9. 4. ·...

93
Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática Emanuel Marques Matos Wikifier Biomédico

Upload: others

Post on 06-Nov-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

Universidade de Aveiro 2010

Departamento de Electroacutenica Telecomunicaccedilotildees

e Informaacutetica

Emanuel

Marques Matos

Wikifier Biomeacutedico

Universidade de Aveiro 2010

Departamento de Electroacutenica Telecomunicaccedilotildees

e Informaacutetica

Emanuel

Marques Matos

Wikifier Biomeacutedico

Dissertaccedilatildeo apresentada agrave Universidade de Aveiro para cumprimento

dos requisitos necessaacuterios agrave obtenccedilatildeo do grau de Mestre em

Engenharia de Computadores e Telemaacutetica realizada sob a orientaccedilatildeo

cientiacutefica do Dr Joseacute Luiacutes Oliveira Professor Associado do

Departamento de Electroacutenica Telecomunicaccedilotildees e Informaacutetica da

Universidade de Aveiro

ii

iii

o juacuteri

presidente Prof Dr Joaquim Arnaldo Martins

Professor Catedraacutetico da Universidade de Aveiro

Prof Dr Rui Pedro Lopes

Professor Coordenador do Departamento de Informaacutetica e

Comunicaccedilotildees do Instituto Politeacutecnico de Braganccedila

Prof Dr Joseacute Luiacutes Guimaratildees Oliveira

Professor Associado da Universidade de Aveiro

iv

v

agradecimentos

Quero agradecer ao meu orientador Prof Doutor Joseacute Luiacutes Oliveira

todo o apoio e ensinamentos transmitidos ao longo destes meses de

desenvolvimento deste trabalho

Agradeccedilo ao Pedro Lopes pela colaboraccedilatildeo disponibilidade e paciecircncia

demonstrada

Agradeccedilo a todos os meus colegas do IEETA que proporcionaram um

ambiente de trabalho onde reina a alegria e a entreajuda

Quero tambeacutem agradecer a todos os meus amigos que me

acompanharam durante a vida acadeacutemica Todos contribuiacuteram de alguma

forma para que eu atingisse esta meta

Quero tambeacutem agradecer agrave minha famiacutelia Sem o seu suporte seria muito

mais difiacutecil superar todos os obstaacuteculos que surgiram ao longo destes

anos Este eacute o culminar de uma fase muito importante da minha vida A

todos eles o meu muito obrigado

Por fim quero agradecer agrave Miriam pelo apoio que sempre me deu a

paciecircncia nos momentos menos bons e a forccedila que me transmite para eu

continuar a seguir o meu caminho

vi

vii

palavras-chave bioinformaacutetica wiki wikifier Internet base de dados web

service anotaccedilatildeo Java Java Script

resumo Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem

vindo a ganhar uma importacircncia crescente relativamente agrave

organizaccedilatildeo em arquivos estruturados

Vaacuterios factores tecircm contribuiacutedo para este crescimento

nomeadamente o sucesso da Internet como rede de conteuacutedos

documentais dos motores de busca e das enciclopeacutedias online

O objectivo desta dissertaccedilatildeo consiste em desenvolver um

Wikifier biomeacutedico Este sistema deve ser capaz de fazer a

extracccedilatildeo e marcaccedilatildeo dos conceitos relevantes no contexto desta

aacuterea cientiacutefica a Biomedicina

Foram desenvolvidas estrateacutegias para identificaccedilatildeo e anotaccedilatildeo de

termos com base num dicionaacuterio O conteuacutedo deste seraacute

construiacutedo recorrendo a bases de dados cientiacuteficas e os termos

seratildeo associados com informaccedilotildees provenientes de vaacuterias fontes

numa interface simples e clara que permita enriquecer os

documentos

Os resultados obtidos foram satisfatoacuterios sendo que o sistema

atingiu como iremos ver um desempenho bastante interessante e

um comportamento estaacutevel e proporcional agrave quantidade de

informaccedilatildeo analisada

viii

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 2: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

Universidade de Aveiro 2010

Departamento de Electroacutenica Telecomunicaccedilotildees

e Informaacutetica

Emanuel

Marques Matos

Wikifier Biomeacutedico

Dissertaccedilatildeo apresentada agrave Universidade de Aveiro para cumprimento

dos requisitos necessaacuterios agrave obtenccedilatildeo do grau de Mestre em

Engenharia de Computadores e Telemaacutetica realizada sob a orientaccedilatildeo

cientiacutefica do Dr Joseacute Luiacutes Oliveira Professor Associado do

Departamento de Electroacutenica Telecomunicaccedilotildees e Informaacutetica da

Universidade de Aveiro

ii

iii

o juacuteri

presidente Prof Dr Joaquim Arnaldo Martins

Professor Catedraacutetico da Universidade de Aveiro

Prof Dr Rui Pedro Lopes

Professor Coordenador do Departamento de Informaacutetica e

Comunicaccedilotildees do Instituto Politeacutecnico de Braganccedila

Prof Dr Joseacute Luiacutes Guimaratildees Oliveira

Professor Associado da Universidade de Aveiro

iv

v

agradecimentos

Quero agradecer ao meu orientador Prof Doutor Joseacute Luiacutes Oliveira

todo o apoio e ensinamentos transmitidos ao longo destes meses de

desenvolvimento deste trabalho

Agradeccedilo ao Pedro Lopes pela colaboraccedilatildeo disponibilidade e paciecircncia

demonstrada

Agradeccedilo a todos os meus colegas do IEETA que proporcionaram um

ambiente de trabalho onde reina a alegria e a entreajuda

Quero tambeacutem agradecer a todos os meus amigos que me

acompanharam durante a vida acadeacutemica Todos contribuiacuteram de alguma

forma para que eu atingisse esta meta

Quero tambeacutem agradecer agrave minha famiacutelia Sem o seu suporte seria muito

mais difiacutecil superar todos os obstaacuteculos que surgiram ao longo destes

anos Este eacute o culminar de uma fase muito importante da minha vida A

todos eles o meu muito obrigado

Por fim quero agradecer agrave Miriam pelo apoio que sempre me deu a

paciecircncia nos momentos menos bons e a forccedila que me transmite para eu

continuar a seguir o meu caminho

vi

vii

palavras-chave bioinformaacutetica wiki wikifier Internet base de dados web

service anotaccedilatildeo Java Java Script

resumo Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem

vindo a ganhar uma importacircncia crescente relativamente agrave

organizaccedilatildeo em arquivos estruturados

Vaacuterios factores tecircm contribuiacutedo para este crescimento

nomeadamente o sucesso da Internet como rede de conteuacutedos

documentais dos motores de busca e das enciclopeacutedias online

O objectivo desta dissertaccedilatildeo consiste em desenvolver um

Wikifier biomeacutedico Este sistema deve ser capaz de fazer a

extracccedilatildeo e marcaccedilatildeo dos conceitos relevantes no contexto desta

aacuterea cientiacutefica a Biomedicina

Foram desenvolvidas estrateacutegias para identificaccedilatildeo e anotaccedilatildeo de

termos com base num dicionaacuterio O conteuacutedo deste seraacute

construiacutedo recorrendo a bases de dados cientiacuteficas e os termos

seratildeo associados com informaccedilotildees provenientes de vaacuterias fontes

numa interface simples e clara que permita enriquecer os

documentos

Os resultados obtidos foram satisfatoacuterios sendo que o sistema

atingiu como iremos ver um desempenho bastante interessante e

um comportamento estaacutevel e proporcional agrave quantidade de

informaccedilatildeo analisada

viii

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 3: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

ii

iii

o juacuteri

presidente Prof Dr Joaquim Arnaldo Martins

Professor Catedraacutetico da Universidade de Aveiro

Prof Dr Rui Pedro Lopes

Professor Coordenador do Departamento de Informaacutetica e

Comunicaccedilotildees do Instituto Politeacutecnico de Braganccedila

Prof Dr Joseacute Luiacutes Guimaratildees Oliveira

Professor Associado da Universidade de Aveiro

iv

v

agradecimentos

Quero agradecer ao meu orientador Prof Doutor Joseacute Luiacutes Oliveira

todo o apoio e ensinamentos transmitidos ao longo destes meses de

desenvolvimento deste trabalho

Agradeccedilo ao Pedro Lopes pela colaboraccedilatildeo disponibilidade e paciecircncia

demonstrada

Agradeccedilo a todos os meus colegas do IEETA que proporcionaram um

ambiente de trabalho onde reina a alegria e a entreajuda

Quero tambeacutem agradecer a todos os meus amigos que me

acompanharam durante a vida acadeacutemica Todos contribuiacuteram de alguma

forma para que eu atingisse esta meta

Quero tambeacutem agradecer agrave minha famiacutelia Sem o seu suporte seria muito

mais difiacutecil superar todos os obstaacuteculos que surgiram ao longo destes

anos Este eacute o culminar de uma fase muito importante da minha vida A

todos eles o meu muito obrigado

Por fim quero agradecer agrave Miriam pelo apoio que sempre me deu a

paciecircncia nos momentos menos bons e a forccedila que me transmite para eu

continuar a seguir o meu caminho

vi

vii

palavras-chave bioinformaacutetica wiki wikifier Internet base de dados web

service anotaccedilatildeo Java Java Script

resumo Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem

vindo a ganhar uma importacircncia crescente relativamente agrave

organizaccedilatildeo em arquivos estruturados

Vaacuterios factores tecircm contribuiacutedo para este crescimento

nomeadamente o sucesso da Internet como rede de conteuacutedos

documentais dos motores de busca e das enciclopeacutedias online

O objectivo desta dissertaccedilatildeo consiste em desenvolver um

Wikifier biomeacutedico Este sistema deve ser capaz de fazer a

extracccedilatildeo e marcaccedilatildeo dos conceitos relevantes no contexto desta

aacuterea cientiacutefica a Biomedicina

Foram desenvolvidas estrateacutegias para identificaccedilatildeo e anotaccedilatildeo de

termos com base num dicionaacuterio O conteuacutedo deste seraacute

construiacutedo recorrendo a bases de dados cientiacuteficas e os termos

seratildeo associados com informaccedilotildees provenientes de vaacuterias fontes

numa interface simples e clara que permita enriquecer os

documentos

Os resultados obtidos foram satisfatoacuterios sendo que o sistema

atingiu como iremos ver um desempenho bastante interessante e

um comportamento estaacutevel e proporcional agrave quantidade de

informaccedilatildeo analisada

viii

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 4: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

iii

o juacuteri

presidente Prof Dr Joaquim Arnaldo Martins

Professor Catedraacutetico da Universidade de Aveiro

Prof Dr Rui Pedro Lopes

Professor Coordenador do Departamento de Informaacutetica e

Comunicaccedilotildees do Instituto Politeacutecnico de Braganccedila

Prof Dr Joseacute Luiacutes Guimaratildees Oliveira

Professor Associado da Universidade de Aveiro

iv

v

agradecimentos

Quero agradecer ao meu orientador Prof Doutor Joseacute Luiacutes Oliveira

todo o apoio e ensinamentos transmitidos ao longo destes meses de

desenvolvimento deste trabalho

Agradeccedilo ao Pedro Lopes pela colaboraccedilatildeo disponibilidade e paciecircncia

demonstrada

Agradeccedilo a todos os meus colegas do IEETA que proporcionaram um

ambiente de trabalho onde reina a alegria e a entreajuda

Quero tambeacutem agradecer a todos os meus amigos que me

acompanharam durante a vida acadeacutemica Todos contribuiacuteram de alguma

forma para que eu atingisse esta meta

Quero tambeacutem agradecer agrave minha famiacutelia Sem o seu suporte seria muito

mais difiacutecil superar todos os obstaacuteculos que surgiram ao longo destes

anos Este eacute o culminar de uma fase muito importante da minha vida A

todos eles o meu muito obrigado

Por fim quero agradecer agrave Miriam pelo apoio que sempre me deu a

paciecircncia nos momentos menos bons e a forccedila que me transmite para eu

continuar a seguir o meu caminho

vi

vii

palavras-chave bioinformaacutetica wiki wikifier Internet base de dados web

service anotaccedilatildeo Java Java Script

resumo Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem

vindo a ganhar uma importacircncia crescente relativamente agrave

organizaccedilatildeo em arquivos estruturados

Vaacuterios factores tecircm contribuiacutedo para este crescimento

nomeadamente o sucesso da Internet como rede de conteuacutedos

documentais dos motores de busca e das enciclopeacutedias online

O objectivo desta dissertaccedilatildeo consiste em desenvolver um

Wikifier biomeacutedico Este sistema deve ser capaz de fazer a

extracccedilatildeo e marcaccedilatildeo dos conceitos relevantes no contexto desta

aacuterea cientiacutefica a Biomedicina

Foram desenvolvidas estrateacutegias para identificaccedilatildeo e anotaccedilatildeo de

termos com base num dicionaacuterio O conteuacutedo deste seraacute

construiacutedo recorrendo a bases de dados cientiacuteficas e os termos

seratildeo associados com informaccedilotildees provenientes de vaacuterias fontes

numa interface simples e clara que permita enriquecer os

documentos

Os resultados obtidos foram satisfatoacuterios sendo que o sistema

atingiu como iremos ver um desempenho bastante interessante e

um comportamento estaacutevel e proporcional agrave quantidade de

informaccedilatildeo analisada

viii

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 5: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

iv

v

agradecimentos

Quero agradecer ao meu orientador Prof Doutor Joseacute Luiacutes Oliveira

todo o apoio e ensinamentos transmitidos ao longo destes meses de

desenvolvimento deste trabalho

Agradeccedilo ao Pedro Lopes pela colaboraccedilatildeo disponibilidade e paciecircncia

demonstrada

Agradeccedilo a todos os meus colegas do IEETA que proporcionaram um

ambiente de trabalho onde reina a alegria e a entreajuda

Quero tambeacutem agradecer a todos os meus amigos que me

acompanharam durante a vida acadeacutemica Todos contribuiacuteram de alguma

forma para que eu atingisse esta meta

Quero tambeacutem agradecer agrave minha famiacutelia Sem o seu suporte seria muito

mais difiacutecil superar todos os obstaacuteculos que surgiram ao longo destes

anos Este eacute o culminar de uma fase muito importante da minha vida A

todos eles o meu muito obrigado

Por fim quero agradecer agrave Miriam pelo apoio que sempre me deu a

paciecircncia nos momentos menos bons e a forccedila que me transmite para eu

continuar a seguir o meu caminho

vi

vii

palavras-chave bioinformaacutetica wiki wikifier Internet base de dados web

service anotaccedilatildeo Java Java Script

resumo Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem

vindo a ganhar uma importacircncia crescente relativamente agrave

organizaccedilatildeo em arquivos estruturados

Vaacuterios factores tecircm contribuiacutedo para este crescimento

nomeadamente o sucesso da Internet como rede de conteuacutedos

documentais dos motores de busca e das enciclopeacutedias online

O objectivo desta dissertaccedilatildeo consiste em desenvolver um

Wikifier biomeacutedico Este sistema deve ser capaz de fazer a

extracccedilatildeo e marcaccedilatildeo dos conceitos relevantes no contexto desta

aacuterea cientiacutefica a Biomedicina

Foram desenvolvidas estrateacutegias para identificaccedilatildeo e anotaccedilatildeo de

termos com base num dicionaacuterio O conteuacutedo deste seraacute

construiacutedo recorrendo a bases de dados cientiacuteficas e os termos

seratildeo associados com informaccedilotildees provenientes de vaacuterias fontes

numa interface simples e clara que permita enriquecer os

documentos

Os resultados obtidos foram satisfatoacuterios sendo que o sistema

atingiu como iremos ver um desempenho bastante interessante e

um comportamento estaacutevel e proporcional agrave quantidade de

informaccedilatildeo analisada

viii

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 6: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

v

agradecimentos

Quero agradecer ao meu orientador Prof Doutor Joseacute Luiacutes Oliveira

todo o apoio e ensinamentos transmitidos ao longo destes meses de

desenvolvimento deste trabalho

Agradeccedilo ao Pedro Lopes pela colaboraccedilatildeo disponibilidade e paciecircncia

demonstrada

Agradeccedilo a todos os meus colegas do IEETA que proporcionaram um

ambiente de trabalho onde reina a alegria e a entreajuda

Quero tambeacutem agradecer a todos os meus amigos que me

acompanharam durante a vida acadeacutemica Todos contribuiacuteram de alguma

forma para que eu atingisse esta meta

Quero tambeacutem agradecer agrave minha famiacutelia Sem o seu suporte seria muito

mais difiacutecil superar todos os obstaacuteculos que surgiram ao longo destes

anos Este eacute o culminar de uma fase muito importante da minha vida A

todos eles o meu muito obrigado

Por fim quero agradecer agrave Miriam pelo apoio que sempre me deu a

paciecircncia nos momentos menos bons e a forccedila que me transmite para eu

continuar a seguir o meu caminho

vi

vii

palavras-chave bioinformaacutetica wiki wikifier Internet base de dados web

service anotaccedilatildeo Java Java Script

resumo Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem

vindo a ganhar uma importacircncia crescente relativamente agrave

organizaccedilatildeo em arquivos estruturados

Vaacuterios factores tecircm contribuiacutedo para este crescimento

nomeadamente o sucesso da Internet como rede de conteuacutedos

documentais dos motores de busca e das enciclopeacutedias online

O objectivo desta dissertaccedilatildeo consiste em desenvolver um

Wikifier biomeacutedico Este sistema deve ser capaz de fazer a

extracccedilatildeo e marcaccedilatildeo dos conceitos relevantes no contexto desta

aacuterea cientiacutefica a Biomedicina

Foram desenvolvidas estrateacutegias para identificaccedilatildeo e anotaccedilatildeo de

termos com base num dicionaacuterio O conteuacutedo deste seraacute

construiacutedo recorrendo a bases de dados cientiacuteficas e os termos

seratildeo associados com informaccedilotildees provenientes de vaacuterias fontes

numa interface simples e clara que permita enriquecer os

documentos

Os resultados obtidos foram satisfatoacuterios sendo que o sistema

atingiu como iremos ver um desempenho bastante interessante e

um comportamento estaacutevel e proporcional agrave quantidade de

informaccedilatildeo analisada

viii

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 7: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

vi

vii

palavras-chave bioinformaacutetica wiki wikifier Internet base de dados web

service anotaccedilatildeo Java Java Script

resumo Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem

vindo a ganhar uma importacircncia crescente relativamente agrave

organizaccedilatildeo em arquivos estruturados

Vaacuterios factores tecircm contribuiacutedo para este crescimento

nomeadamente o sucesso da Internet como rede de conteuacutedos

documentais dos motores de busca e das enciclopeacutedias online

O objectivo desta dissertaccedilatildeo consiste em desenvolver um

Wikifier biomeacutedico Este sistema deve ser capaz de fazer a

extracccedilatildeo e marcaccedilatildeo dos conceitos relevantes no contexto desta

aacuterea cientiacutefica a Biomedicina

Foram desenvolvidas estrateacutegias para identificaccedilatildeo e anotaccedilatildeo de

termos com base num dicionaacuterio O conteuacutedo deste seraacute

construiacutedo recorrendo a bases de dados cientiacuteficas e os termos

seratildeo associados com informaccedilotildees provenientes de vaacuterias fontes

numa interface simples e clara que permita enriquecer os

documentos

Os resultados obtidos foram satisfatoacuterios sendo que o sistema

atingiu como iremos ver um desempenho bastante interessante e

um comportamento estaacutevel e proporcional agrave quantidade de

informaccedilatildeo analisada

viii

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 8: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

vii

palavras-chave bioinformaacutetica wiki wikifier Internet base de dados web

service anotaccedilatildeo Java Java Script

resumo Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem

vindo a ganhar uma importacircncia crescente relativamente agrave

organizaccedilatildeo em arquivos estruturados

Vaacuterios factores tecircm contribuiacutedo para este crescimento

nomeadamente o sucesso da Internet como rede de conteuacutedos

documentais dos motores de busca e das enciclopeacutedias online

O objectivo desta dissertaccedilatildeo consiste em desenvolver um

Wikifier biomeacutedico Este sistema deve ser capaz de fazer a

extracccedilatildeo e marcaccedilatildeo dos conceitos relevantes no contexto desta

aacuterea cientiacutefica a Biomedicina

Foram desenvolvidas estrateacutegias para identificaccedilatildeo e anotaccedilatildeo de

termos com base num dicionaacuterio O conteuacutedo deste seraacute

construiacutedo recorrendo a bases de dados cientiacuteficas e os termos

seratildeo associados com informaccedilotildees provenientes de vaacuterias fontes

numa interface simples e clara que permita enriquecer os

documentos

Os resultados obtidos foram satisfatoacuterios sendo que o sistema

atingiu como iremos ver um desempenho bastante interessante e

um comportamento estaacutevel e proporcional agrave quantidade de

informaccedilatildeo analisada

viii

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 9: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

viii

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 10: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

ix

keywords bioinformatics wiki wikifier Internet database web service

annotation Java Java Script

abstract During the last few years the management of unstructured data

has gained an increasing importance relatively to the organization

in structured archives

Several factors have contributed to that growth in particular the

success of the Internet as a network of documentary content

search engines and online encyclopedias

The aim of this thesis is to develop a biomedical Wikifier This

system must be capable of extracting and marking relevant

concepts in the context of this scientific area biomedicine

Strategies for identification and annotation of terms had been

developed based on a dictionary The content of dictionary will be

built using scientific databases and the terms will be linked with

information from various sources in a simple and clear interface

that allows to enrich the documents

The results were satisfactory and the system has reached as we

will see a very interesting performance and was stable and

proportional to the amount of information analyzed

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 11: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

x

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 12: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

xi

Conteuacutedo

Lista de Figuras xv

Lista de tabelas xvii

1 Introduccedilatildeo1

11 Objectivos2

12 Estrutura da Tese 3

2 Sistemas existentes 5

21 Sistemas Wiki 5

22 Sistemas Wikifier5

23 Aplicaccedilotildees existentes 6

231 Exalabs Wikifier 6

232 Concept Web Linker 8

233 Reflect 9

234 iHOP 10

24 Sumaacuterio 11

3 Tecnologias 13

31 Armazenamento de dados natildeo estruturados 13

311 Lucene 13

312 Berkeley DB 14

313 Hash Table 16

314 Hash Table Distribuiacuteda 17

315 Cassandra 18

316 Project Voldemort 18

32 Dicionaacuterio de termos 19

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 13: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

xii

321 TRIE 19

322 Aacutervore de sufixos 21

323 Array de sufixos 23

33 Web Services 24

34 Sumaacuterio 26

4 Wikifier Biomeacutedico 28

41 Arquitectura da soluccedilatildeo 29

42 Diagramas de Classes e Casos de Utilizaccedilatildeo 32

43 Fontes de dados 35

44 Ficheiros de configuraccedilatildeo 36

45 Dicionaacuterio de termos 37

451 Testes temporais 37

452 Soluccedilatildeo utilizada 38

453 Construccedilatildeo do conteuacutedo do dicionaacuterio 41

46 Linguagem de anotaccedilatildeo 42

461 Linguagens analisadas 43

462 Implementaccedilatildeo 44

47 Disponibilizaccedilatildeo da informaccedilatildeo 44

471 Web Service 45

472 Janela de informaccedilatildeo 45

48 Interface 46

5 Resultados e Validaccedilatildeo do Sistema 50

51 Resultados 50

511 Dicionaacuterio e anotaccedilotildees 50

512 Conteuacutedo da janela de informaccedilatildeo 51

513 Interface Web 52

52 Testes de validaccedilatildeo 57

53 Sumaacuterio 61

6 Conclusotildees e Trabalho Futuro 62

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 14: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

xiii

61 Conclusotildees 62

62 Trabalho Futuro 64

Anexo A - Tabelas com tempos de execuccedilatildeo 68

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 15: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática

xiv

xv

Lista de Figuras

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto 7

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet 7

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed 8

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect 9

Figura 25 ndash Resultados da pesquisa de um termo no iHOp 10

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15] 14

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17] 16

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table 16

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda 17

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28] 20

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com

compressatildeo de niacuteveis [30] 21

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28] 22

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as

posiccedilotildees inicias dos sufixos [28] 23

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo

iacutendice inicial na string [28] 23

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo 29

Figura 42 ndash Arquitectura da Aplicaccedilatildeo 30

Figura 43 ndash Workflow da aplicaccedilatildeo 31

Figura 44 - Diagrama de classes do pacote Helper 33

Figura 45 - Diagrama de classes do pacote HTMLParser 33

Figura 46 - Diagrama de classes do pacote dictionaryHelper 34

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo 35

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo 36

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos 37

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do

sufixo) 39

Figura 411 ndash Diagrama representativo da pesquisa de um termo 40

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos 41

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45] 43

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo 45

xvi

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo 46

Figura 416 ndash Exemplo geneacuterico de bototildees radio 47

Figura 51 - Exemplo de uma anotaccedilatildeo 51

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos 51

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees 52

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt 52

Figura 55 ndash Paacutegina inicial 53

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos 53

Figura 57 ndash Janela para carregamento de ficheiros 54

Figura 58 ndash Anotaccedilatildeo de texto 54

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet 55

Figura 510 ndash Paacutegina About BioWikifier 56

Figura 511 ndash Paacutegina com formulaacuterio para contacto 56

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo 58

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB 59

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB 60

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB 60

xvii

Lista de tabelas

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene 38

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos 38

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos 57

Tabela 52 - Estatiacutesticas para 10 KB 59

Tabela 53 - Estatiacutesticas para 500 KB 59

Tabela 54 - Estatiacutesticas para 5000 KB 60

Tabela A1 - Testes temporais para o Array de sufixos (ms) 68

Tabela A2 - Testes temporais para o indexador Lucene(ms) 69

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB 71

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB 72

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB 73

xviii

1

1 Introduccedilatildeo

Durante os uacuteltimos anos a gestatildeo de dados natildeo estruturados tem ganho uma

importacircncia crescente relativamente agrave organizaccedilatildeo em arquivos como por exemplo as

bases de dados relacionais

Haacute vaacuterios factores que tecircm contribuiacutedo para este crescimento nomeadamente a

Internet como rede de conteuacutedos documentais os motores de busca e as enciclopeacutedias

online Como sabemos a Internet permite aceder a qualquer tipo de informaccedilatildeo quase

instantaneamente Isto significou uma mudanccedila de paradigma na vida das pessoas

Antigamente o acesso agrave Internet natildeo era tatildeo facilitado e os conteuacutedos natildeo eram tatildeo vastos

Hoje em dia o acesso agrave informaccedilatildeo tornou-se muito mais faacutecil permitindo cada vez mais

aceder a esta sem sair de casa Entretanto com o tempo os motores de busca comeccedilaram a

ter um sucesso enorme melhorando a sua forma de pesquisa Mais recentemente as

enciclopeacutedias online como a Wikipeacutedia [1] permitiram publicar informaccedilatildeo relativa a

diversos assuntos bastando ao utilizador pesquisar por palavras-chave obtendo deste

modo uma informaccedilatildeo jaacute estruturada e bem organizada

Tambeacutem na Internet se assiste hoje em dia a uma mudanccedila de paradigma onde a

informaccedilatildeo semacircntica ou seja o sentido do texto ganha uma importacircncia crescente Desta

forma comeccedilam a emergir temas como a Web semacircntica e a mineraccedilatildeo e processamento

de texto que tecircm como objectivo auxiliar o utilizador na pesquisa e extracccedilatildeo de

informaccedilatildeo para que os seus requisitos na pesquisa sejam respeitados e os resultados

mostrados sejam o mais proacuteximo possiacutevel da sua pretensatildeo

2

11 Objectivos

O principal objectivo desta dissertaccedilatildeo eacute desenvolver um Wikifier biomeacutedico Uma

ferramenta poderosa que permite enriquecer as paacuteginas com informaccedilatildeo proveniente de

fontes externas aplicado a um domiacutenio cientiacutefico como por exemplo a Biomedicina

Para tal seratildeo estudadas vaacuterias soluccedilotildees de forma a possibilitar que os termos mais

relevantes para a pesquisa sejam descriminados e mostrados ao utilizador numa nova

interface que extenda a interface original

Para o sucesso desta ferramenta haacute diversos factores que tecircm de ser analisados e que

satildeo fulcrais

A aplicaccedilatildeo deve ser capaz de salientar termos num documento e mostrar

informaccedilatildeo relativa a esses termos Poder-se-aacute ter uma interface Web que permita

seleccionar o tipo de dados que se pretendem realccedilar e marcar soacute os termos

correspondentes a esse tipo de dados

Criaccedilatildeo de um serviccedilo que permita analisar os documentos e recorrer a anotaccedilotildees

dos termos para que estas possam ser interpretadas e seja visualizada a informaccedilatildeo

respectiva Este serviccedilo deve suportar uma pesquisa raacutepida de termos e ter uma

linguagem de anotaccedilatildeo que seja simples e flexiacutevel

A pesquisa de termos tem impreterivelmente de ser raacutepida e eficiente de modo a

que a aplicaccedilatildeo tenha um tempo de resposta aceitaacutevel e viaacutevel sendo isto reforccedilado

por estarmos na presenccedila de uma aplicaccedilatildeo Web

Analisar vaacuterias soluccedilotildees de modo a perceber qual seraacute mais adequada para o que se

pretende Eacute necessaacuterio arranjar mecanismos diferentes para a manipulaccedilatildeo de texto

do que os que se utilizam com nuacutemeros uma vez que eacute muito mais complicado

processar strings que nuacutemeros dado que o conceito string natildeo eacute uniforme e requer

alguma atenccedilatildeo especial [2]

A arquitectura da soluccedilatildeo deve ser soacutelida e modular respeitando assim

caracteriacutesticas como extensibilidade compatibilidade e usabilidade permitindo que

o programador possa facilmente adicionar novos recursos ao sistema bem como

substituir um moacutedulo por um equivalente que por alguma razatildeo seja melhor

3

12 Estrutura da Tese

Este documento seraacute estruturado em 6 capiacutetulos Como capiacutetulos introdutoacuterios esta

dissertaccedilatildeo conteacutem os capiacutetulos 2 e 3 seguindo-se os que descrevem a proposta de

Wikifier biomeacutedico o trabalho realizado as conclusotildees e o trabalho futuro (capiacutetulos 4 a

6)

No segundo capiacutetulo abordar-se-atildeo ferramentas como a wiki wikifiers e soluccedilotildees jaacute

existentes nesta aacuterea

O capiacutetulo 3 pretende fazer uma introduccedilatildeo a algumas tecnologias como as de

armazenamento de dados demonstrando a sua forma de funcionamento Tambeacutem se falaraacute

um pouco sobre Web Services

No quarto seraacute apresentado o sistema de Wikifier proposto uma descriccedilatildeo completa

da aplicaccedilatildeo a sua arquitectura e o porquecirc das soluccedilotildees escolhidas

O quinto capiacutetulo seraacute composto por uma anaacutelise aos resultados obtidos e por testes de

validaccedilatildeo do sistema

Nos uacuteltimos seratildeo feitas as conclusotildees apresentando os pontos fortes e fracos deste

trabalho e seratildeo apresentadas propostas para o trabalho futuro

4

5

2 Sistemas existentes

Neste capiacutetulo eacute feita uma anaacutelise agraves tecnologias wiki e wikifier Pretende-se aprsentar

os conceitos subjacentes a esta temaacutetica definir estes conceito e mostrar exemplos reais de

sistemas que utilizem estas tecnologias para fornecer ao utilizador uma interface que

enriqueccedila os conteuacutedos de paacuteginas da Internet e apresente informaccedilatildeo estruturada e

contextualizada sobre esses conteuacutedos

21 Sistemas Wiki

A palavra Wiki significa raacutepido na liacutengua Havaiana Esta designaccedilatildeo demonstra a

intenccedilatildeo da criaccedilatildeo deste tipo de paacuteginas com o intuito de serem raacutepidas e simples de

manipular[3]

As Wikis permitem aos utilizadores criar partilhar e editar conteuacutedos atraveacutes de um

simples navegador Web A sua ediccedilatildeo eacute feita utilizando texto normal e que pode ser

automaticamente convertido para formato HTML[3-4]

Contudo os conteuacutedos das wikis podem muito facilmente perder consistecircncia A

soluccedilatildeo para este problema consiste em introduzir um agente de informaccedilatildeo que perceba os

conteuacutedos dessa wiki A consistecircncia fica assim assegurada pelos agentes que podem

automaticamente actualizar os conteuacutedos da paacutegina mantendo-os consistentes com os

submetidos pelos utilizadores [5] Uma das implementaccedilotildees desta tecnologia eacute a

enciclopeacutedia online Wikipeacutedia [1] que tem um sucesso enorme

Este tipo de sistemas tem emergido cada vez mais no mundo da Internet e tem trazido

associado a si um leque muito grande de vantagens em meios de criaccedilatildeo de informaccedilatildeo

partilha e colaboraccedilatildeo

As Wikis disponibilizam recursos adicionais como ligaccedilotildees para fontes externas

carregamento de ficheiros ou histoacuterico de alteraccedilotildees das paacuteginas

22 Sistemas Wikifier

Este tipo de sistemas tem como objectivo carregar um documento e identificar

conceitos importantes num texto fornecendo ligaccedilotildees para informaccedilotildees relacionadas [6]

6

Esta tarefa pode ser designada por ldquoText Wikificationrdquo Os dois principais recursos

deste tipo de sistema satildeo a extracccedilatildeo automaacutetica de termos e a ambiguidade do sentido da

palavra A combinaccedilatildeo destes dois recursos resulta numa anotaccedilatildeo automaacutetica deste tipo de

paacuteginas Wiki [6]

A extracccedilatildeo de termos consiste em identificar palavras ou frases que sejam

importantes para o documento em questatildeo A ambiguidade do sentido das palavras reside

no facto de encontrar a informaccedilatildeo correcta para o termo em questatildeo A chave do sucesso

para encontrar a informaccedilatildeo certa eacute interpretaccedilatildeo do termo consoante o contexto em que se

encontra [6]

Um exemplo deste tipo de sistemas eacute o Wikify [6] Aplicando este conceito ao

contexto da Wikipeacutedia permite a extracccedilatildeo automaacutetica de termos disponibilizando

ligaccedilotildees para as paacuteginas correspondentes desta enciclopeacutedia online Isto permite ter

paacuteginas muito ricas em termos de informaccedilatildeo

Vaacuterias aplicaccedilotildees podem beneficiar com esta tecnologia fornecendo uma orientaccedilatildeo

semacircntica no acesso agrave informaccedilatildeo As anotaccedilotildees podem ser usadas para enriquecer

automaticamente documentos com informaccedilotildees relacionadas semanticamente

23 Aplicaccedilotildees existentes

Este subcapiacutetulo pretende dar a conhecer alguns sistemas jaacute existentes no contexto dos

wikifiers e formas de mostrar a informaccedilatildeo Vatildeo ser mostrados os recursos

disponibilizados por alguns sistemas como Wikifier [7] Concept web linker [8] Reflect

[9] e iHop [10]

231 Exalabs Wikifier

Este sistema pretende fornecer ao utilizador o enriquecimento de conteuacutedos de uma

paacutegina da Internet recorrendo a informaccedilatildeo proveniente da Wikipeacutedia O Wikifier detecta

as entidades que tecircm informaccedilatildeo nesta enciclopeacutedia online nomeadamente nomes

proacuteprios organizaccedilotildees e lugares Essas palavras satildeo identificadas com um destaque em

cinzento que sobrepondo o cursor origina uma pequena janela com um estilo semi-

transparente contendo a informaccedilatildeo correspondente a essa marcaccedilatildeo [11]

Actualmente eacute capaz de mostrar informaccedilatildeo relativa a cerca de 475000

individualidades 50000 lugares como paiacuteses ou cidades 63000 organizaccedilotildees e 130000

imagens As duas formas de utilizaccedilatildeo do Wikifier neste momento satildeo

Introduccedilatildeo de texto - Figura 21

Introduccedilatildeo de uma paacutegina da Internet - Figura 22

7

Figura 21 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo texto

Figura 22 ndash Exemplo da utilizaccedilatildeo do Exalabs Wikifier no modo paacutegina Internet

8

232 Concept Web Linker

Esta iniciativa surgiu no acircmbito de uma colaboraccedilatildeo para inovar a forma como o

conhecimento eacute representado na Internet [12]

O princiacutepio desta tecnologia assenta na ideia de se ter um sistema onde a representaccedilatildeo

da redundacircncia e da expansatildeo de nova informaccedilatildeo eacute feita de uma forma correcta Nesse

sentido surgem duas tecnologias inovadoras Knowlet e uma nova wiki profissional

A primeira consiste na compreensatildeo da relaccedilatildeo entre dois conceitos e na avaliaccedilatildeo da

forccedila dessa relaccedilatildeo Como resultado o volume de dados da Internet eacute reduzido apenas para

um subconjunto de conteuacutedos uacutenicos

A segunda tecnologia consiste em importar dados de fontes oficiais na aacuterea das

ciecircncias da vida como por exemplo UniProt ou GeneOntology conseguindo assim ter um

grande nuacutemero de conceitos disponiacuteveis Os utilizadores podem contribuir e fornecer

anotaccedilotildees para estes conceitos como descriccedilotildees de conceitos bioloacutegicos que seratildeo

guardados em coacutepias do original Tambeacutem eacute possiacutevel estabelecer novas relaccedilotildees entre dois

registos da wiki

Em termos de funcionamento permite salientar termos em qualquer paacutegina da

Internet e jaacute conta com optimizaccedilotildees para algumas paacuteginas como a do Pubmed1 - Figura

23

Figura 23 ndash Exemplo da utilizaccedilatildeo do Concept Web Linker com a paacutegina do Pubmed

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica

9

Os termos satildeo marcados com cores diferentes que representam o seu tipo Esses tipos

podem ser escolhidos nas caixas de selecccedilatildeo na parte superior da paacutegina A janela

informativa surge com um clique do rato e apresenta informaccedilotildees de vaacuterios tipos pessoas

conhecidas nessa aacuterea publicaccedilotildees conceitos relacionados e livros disponiacuteveis Este eacute um

sistema jaacute bastante evoluiacutedo e em constante crescimento pois gradualmente vatildeo sendo

adicionadas mais fontes de dados oficiais [12]

233 Reflect

Este sistema permite reconhecer genes proteiacutenas e moleacuteculas referidas numa paacutegina

da Internet e ligaacute-las agrave informaccedilatildeo correspondente Para utilizar basta inserir o endereccedilo na

paacutegina e automaticamente este eacute processado e seraacute mostrado o documento com as ligaccedilotildees

Ao clicar num elemento anotado surge uma pequena janela com informaccedilotildees sobre o

termo e ligaccedilotildees para aceder a informaccedilatildeo mais detalhada - Figura 24

O Reflect eacute de desenvolvido e mantido pelo European Molecular Biology Laboratory

(EMBL) [13]

Os recursos oferecidos ao utilizador satildeo

Uma paacutegina de Internet

Extensatildeo para o navegador FireFox

Extensatildeo para o navegador Internet Explorer

Figura 24 ndash Exemplo de utilizaccedilatildeo do sistema Reflect

10

234 iHOP

O iHop consiste numa rede de informaccedilotildees de genes e proteiacutenas baseada em literatura

cientiacutefica Esta rede serve como uma forma natural de aceder a milhotildees de resumos do

PubMed [14]

Na Figura 25 estatildeo representados os resultados de uma pesquisa Em muitos casos a

pesquisa pode corresponder a vaacuterios genes ou proteiacutenas Os vaacuterios iacutecones do lado direito

permitem aceder a diferentes visotildees de genes

Informaccedilatildeo miacutenima ndash conteacutem dados como o siacutembolo nome e algumas ligaccedilotildees

para fontes externas

Informaccedilatildeo interactiva ndash Esta visatildeo junta todas as frases encontradas na

literatura para o gene Genes com frases satildeo-lhe atribuiacutedas ligaccedilotildees

Informaccedilotildees definidas ndash Semelhante agrave informaccedilatildeo interactiva mas junta todas

as frases que mencionem o gene juntamente com termos biomeacutedicos

relevantes

Informaccedilotildees mais recentes ndash Mostra as informaccedilotildees mais recentes para este

gene

Figura 25 ndash Resultados da pesquisa de um termo no iHOp

11

24 Sumaacuterio

As tecnologias baseadas em ldquoWikirdquo satildeo cada vez mais utilizadas tanto para criaccedilatildeo e

partilha de informaccedilatildeo como para a colaboraccedilatildeo entre utilizadores A sua consistecircncia pode

ser garantida atraveacutes de agentes especializados

O conceito ldquowikificationrdquo traz subjacente a ideia de enriquecer automaticamente um

documento atraveacutes da extracccedilatildeo e anotaccedilatildeo de termos contribuindo assim para o acesso

raacutepido a informaccedilotildees adicionais sobre os conteuacutedos que estatildeo a ser visualizados

Os 4 sistemas analisados satildeo um pouco diferentes e permitem demonstrar que haacute

muitas formas diferentes de se enriquecer documentos com informaccedilatildeo

O Wikifier tem um propoacutesito mais generalizado baseando as suas fontes de dados na

Wikipeacutedia Eacute mais orientado para o senso comum disponibilizando informaccedilotildees que

embora natildeo sendo cientificamente vaacutelidas cumprem o objectivo proposto

Com o Concept Web Linker jaacute se entra num conceito mais soacutelido e de foro cientiacutefico

As suas fontes baseiam-se em bases de dados oficiais onde as relaccedilotildees entre conceitos satildeo

tidas em conta

O sistema Reflect tem uma funcionalidade muito interessante e que se distingue das

outras a representaccedilatildeo da estrutura de algumas moleacuteculas Isto aleacutem de reunir diversas

ligaccedilotildees para vaacuterias fontes

O iHOP reuacutene informaccedilotildees de milhotildees de resumos de publicaccedilotildees do Pubmed

oferecendo a hipoacutetese de ver todas as frases onde um dado gene ocorra ou onde sejam

mencionados com termos meacutedicos relacionados

12

13

3 Tecnologias

Neste capiacutetulo vatildeo ser abordadas algumas tecnologias de armazenamento de dados

como bases de dados natildeo relacionais tecnologias do tipo chavevalor e ainda dicionaacuterios

de termos como aacutervores ou arrays de sufixos e TRIE‟s

Tambeacutem seraacute feita uma breve anaacutelise sobre Web Services SOAP e REST

31 Armazenamento de dados natildeo estruturados

O armazenamento de dados eacute uma tarefa nem sempre faacutecil tornando-se necessaacuterio

estudar vaacuterias opccedilotildees Nesse sentido iratildeo ser mostradas as principais caracteriacutesticas de

funcionamento de algumas tecnologias como Lucene que eacute um motor de busca muito

poderoso e conhecido Berkeley DB que eacute uma biblioteca Java com uma base de dados

integrada Hash tables e Distributed Hash tables Cassandra que tem como base hash

tables e Project Voldemort que eacute uma ferramenta tambeacutem baseado em hash tables

311 Lucene

Lucene pertence agrave conhecida famiacutelia Apache e eacute uma biblioteca com um motor de

busca muito poderoso desenvolvida em Java mas que pode ser usado em qualquer

linguagem existente sendo por isso faacutecil de integrar numa aplicaccedilatildeo

Nesta tecnologia haacute uma caracteriacutestica agrave qual eacute muito difiacutecil ficar indiferente o facto

de ser extremamente simples de entender e manipular Natildeo eacute necessaacuterio conhecer a

biblioteca a fundo para comeccedilar a utilizaacute-la basta apenas exploraacute-la um pouco para tomar

conhecimento sobre as suas classes e funcionalidades baacutesicas [15]

Haacute trecircs tipos de acccedilotildees fundamentais no Lucene indexaccedilatildeo anaacutelise e armazenamento

A indexaccedilatildeo eacute feita atraveacutes de uma conversatildeo dos dados para texto simples que o Lucene

possa interpretar Eacute fundamental arranjar estrateacutegias para extracccedilatildeo da informaccedilatildeo textual

de forma a criar os documentos e os respectivos campos

A ferramenta Lucene permite manipular o texto de formas muito diversificadas O

utilizador pode extrair as palavras que quiser ou retirar a pontuaccedilatildeo de um texto ou os

acentos O armazenamento de valores tem o papel de guardar dados cuja integridade seja

necessaacuteria manter [15]

14

As teacutecnicas de indexaccedilatildeo integradas no Lucene satildeo extremamente eficientes e raacutepidas

e esta tecnologia dispotildee tambeacutem de algoritmos de pesquisa poderosos e bastante eficientes

Como se pode ver na Figura 31 esta biblioteca permite indexar qualquer tipo de dados

independentemente da sua origem desde que possam ser convertidos para formato de

texto Deste modo eacute possiacutevel indexar dados provenientes de paacuteginas Web documentos de

texto HTML ou ficheiros em formato PDF (Portable Document Format) podendo depois

fazer pesquisas sobre esses documentos [15]

Figura 31 - Uma integraccedilatildeo tiacutepica de uma aplicaccedilatildeo com o Lucene [15]

312 Berkeley DB

Esta tecnologia eacute um sistema open-source dotado de uma base de dados integrada

simples de utilizar e que suporta muacuteltiplos acessos concorrentes agrave base de dados e que nos

uacuteltimos anos tem sofrido bastantes actualizaccedilotildees e optimizaccedilotildees [16-17]

A integraccedilatildeo numa aplicaccedilatildeo pode ser feita faacutecil e directamente visto que eacute distribuiacutedo

como uma biblioteca Este sistema foi desenhado para respeitar algumas caracteriacutesticas

como portabilidade rapidez invisibilidade e permitir agraves aplicaccedilotildees serem soacutelidas e seguras

[16-17]

A base de dados corre directamente na aplicaccedilatildeo ou seja partilha o mesmo espaccedilo de

endereccedilamento desta tornando-se possiacutevel a interacccedilatildeo dos dois moacutedulos sem existir

15

comunicaccedilotildees entre processos reduzindo o tempo de comunicaccedilatildeo com a base de dados e

consequentemente aumentando a velocidade de armazenamento e procura dos dados Os

dados permanecem na aplicaccedilatildeo em tempo real sendo assim necessaacuterio usar menos

instruccedilotildees [16-17]

Berkeley eacute essencialmente uma base de dados transaccional com propriedades ACID

(atomicidade consistecircncia isolamento e durabilidade) sendo que natildeo eacute necessaacuterio

dominar uma linguagem query para realizar as operaccedilotildees sobre os dados tornando-se

muito faacutecil de perceber e usar Eacute ainda fornecida uma API programaacutevel para aceder aos

dados aumentando a eficiecircncia de quem estaacute a desenvolver a aplicaccedilatildeo e consequentemente

diminuindo o tempo de desenvolvimento

Haacute uma caracteriacutestica que conveacutem realccedilar A sua grande flexibilidade permite uma

interacccedilatildeo com um vasto leque de aplicaccedilotildees desde equipamentos de rede a caches de

grande velocidade passando por Web Servers e ateacute dispositivos moacuteveis [16-17]

Para perceber o funcionamento geneacuterico deste sistema na Figura 32 estatildeo

representados os seus subsistemas e as respectivas relaccedilotildees entre eles Para realizar as

operaccedilotildees baacutesicas como criar ou remover uma base de dados ler ou inserir uma entrada

invoca-se a API de acesso aos meacutetodos e recorrendo ao sistema transaccional consegue

efectuar vaacuterias operaccedilotildees na base de dados numa uacutenica transacccedilatildeo

Para aceder agrave memoacuteria partilhada e devolver os dados pedidos os meacutetodos de acesso

adquirem os bloqueios e usam o subsistema de registo para guardar as operaccedilotildees que foram

realizadas De maneira idecircntica o sistema transaccional bloqueia e usa a regiatildeo de memoacuteria

partilhada para aceder aos dados e o moacutedulo de registos para guardar as operaccedilotildees Por

uacuteltimo a camada do ldquobuffer poolrdquo interage com a camada de armazenamento persistente

para prestar serviccedilos de manutenccedilatildeo a falhas e para armazenar dados para o disco quando

for pedido [16-17]

16

Figura 32 ndash Subsistemas de Berkeley DB e as suas relaccedilotildees [17]

313 Hash Table

As Hash tables satildeo estruturas de dados que permite associar determinada chave a um

valor A transformaccedilatildeo da chave num nuacutemero eacute feita atraveacutes de uma funccedilatildeo denominada

hash Esse nuacutemero eacute usado como um iacutendice na tabela de forma a poder localizar a posiccedilatildeo

onde o valor associado poderaacute ser encontrado

Na Figura 33 mostra-se um exemplo simples de uma pequena lista telefoacutenica em que

dado o nome da pessoa e aplicando esse nome agrave funccedilatildeo hash se obteacutem o iacutendice do

respectivo par de valores pessoa-telefone Entrando num caso particular ao procurar por

ldquoJoseacute Antoacuteniordquo a funccedilatildeo hash vai ser invocada e vai ser produzido o valor 634 que eacute o

iacutendice onde estaacute armazenado o par ldquoJoseacute Antoacutenio - 91452459rdquo

Figura 33 ndash Exemplo simples de uma lista telefoacutenica como hash table

17

Esta ferramenta suporta a introduccedilatildeo eficiente de novas entradas com uma rapidez

bastante elevada Jaacute o tempo gasto a procurar um valor depende da funccedilatildeo hash

implementada e no carregamento da tabela Poreacutem com uma implementaccedilatildeo cuidadosa

consegue-se atingir um equiliacutebrio entre as duas acccedilotildees

As hash tables satildeo utilizadas em tipos de aplicaccedilotildees muito diversificadas pois tecircm um

desempenho geneacuterico muito bom [18-19]

314 Hash Table Distribuiacuteda

As hash tables distribuiacutedas (DHT‟s) tal como as hash tables mapeiam chaves com

valores Mas neste caso esse mapeamento eacute feito atraveacutes de uma rede de noacutes que podem estar

em qualquer parte Tecircm protocolos que permitem manter a estrutura da DHT apesar das

frequentes conexotildees e desconexotildees dos vaacuterios noacutes

Ao contraacuterio da hash table que eacute centralizada a DHT eacute distribuiacuteda ou seja manteacutem os

dados distribuiacutedos pelos vaacuterios noacutes tendo cada um deles uma tabela de iacutendices com os

endereccedilos dos outros noacutes Quando se faz uma pesquisa o valor retornado eacute a localizaccedilatildeo de

rede do elemento

Numa visatildeo geneacuterica numa DHT assume-se que os noacutes satildeo todos equivalentes uns em

relaccedilatildeo aos outros e estatildeo dotados dos mesmos recursos como por exemplo largura de banda

ou latecircncia [20]

Hoje em dia as DHT‟s tornaram-se uma ferramenta poderosa para desenvolver ambientes

distribuiacutedos mas por vezes natildeo satildeo suficientemente flexiacuteveis

Torna-se necessaacuterio abordar algumas questotildees importantes como dividir uma hash table

em muacuteltiplas hash tables distribuiacutedas e como encontrar um dado elemento se este natildeo estiver

na hash table local Os dados devem ser identificados usando chaves numeacutericas uacutenicas

codificadas atraveacutes de uma funccedilatildeo hash como se pode ver na Figura 34

Figura 34 ndash Ilustraccedilatildeo do funcionamento de uma Hash Table Distribuiacuteda

18

As hash tables distribuiacutedas tecircm portanto alguns meacuteritos como ter uma gestatildeo

descentralizada e boa escalabilidade mas tambeacutem algumas limitaccedilotildees como requisitos dos

computadores (memoacuteria velocidade de processador) e incompatibilidade entre elas [21]

315 Cassandra

Como jaacute foi referido anteriormente um hash map armazena dados associados com

uma chave e depois usa essa chave para aceder aos dados Cassandra tambeacutem parte deste

princiacutepio mas natildeo tem soacute um uacutenico hash map mas sim ateacute 3 camadas de hash maps

encapsulados ou seja os valores natildeo satildeo guardados num simples campo mas sim num

hash map

Esta ferramenta caracteriza-se como um sistema escalonaacutevel bastante consistente

distribuiacutedo e estruturado em registos chave ndash valor e fornece um modelo de dados mais

rico do que a maior parte dos sistemas baseados em chavevalorUm facto interessante de

referir eacute que a rede social Facebook utiliza Cassandra [22]

O modelo de dados desta tecnologia baseia-se em alguns conceitos baacutesicos Cluster

Keyspace Column families e Super-columns O Cluster eacute o conjunto de noacutes numa instacircncia

loacutegica de Cassandra e pode conter vaacuterios Keyspaces que por sua vez contecircm Column

families Analogamente enquanto que uma base de dados relacional conteacutem tabelas o

Keyspace eacute um conjunto ordenado de Column families As colunas satildeo a unidade mais

baacutesica neste modelo de dados e satildeo constituiacutedas por um tripleto que conteacutem um nome

valor e um campo com um registo de datahora (opcional) Este registo temporal eacute

utilizado para resoluccedilatildeo de conflitos Por fim as super-columns satildeo colunas cujos valores

satildeo outras colunas ou seja colunas que por sua vez tecircm outras sub-colunas [23-24]

Algumas das caracteriacutesticas mais relevantes neste sistema satildeo o facto de ser

descentralizado sendo cada um dos noacutes do cluster idecircntico em relaccedilatildeo aos outros e o facto

de a sua expansibilidade ser muito facilitada pois se houver necessidade de expansatildeo

basta adicionar novos noacutes [25]

316 Project Voldemort

O Projecto Voldemort tem uma implementaccedilatildeo baseada em hash tables distribuiacutedas

De uma forma simples pode-se dizer que eacute uma grande hash table persistente distribuiacuteda

e tolerante a falhas que tem uma eficaacutecia e desempenho bastante bons sendo que acesso

aos dados eacute feito exclusivamente atraveacutes de chaves

Os valores armazenados podem ser tanto objectos simples como objectos complexos

(listas mapas) Este sistema natildeo suporta relaccedilotildees de um para muitos mas a utilizaccedilatildeo de

listas resolve o problema permitindo desta maneira associar um nuacutemero razoaacutevel de

19

valores com uma uacutenica chave Esta estrateacutegia pode ser boa se se pensar que em termos de

desempenho o acesso aos discos se reduz apesar de na presenccedila de milhotildees de registos se

tornar mais indicado dividir os dados [26]

Abordando agora a questatildeo do desempenho o primeiro factor de sucesso que tem

extrema importacircncia eacute o tempo de acesso ao disco Este factor pode ser reduzido

particionando os dados e mantendo tambeacutem uma cache onde for possiacutevel O segundo factor

determinante de sucesso eacute o nuacutemero de ligaccedilotildees pela qual se tem de passar para aceder aos

vaacuterios noacutes Esta eacute uma questatildeo mais difiacutecil de contornar sendo necessaacuterio pensar na

flexibilidade da arquitectura

Analisando um comparativo entre este sistema e as bases de dados relacionais

verifica-se que traz diversas vantagens para aplicaccedilotildees Web de grande escala que tenham

serviccedilos ou APIs particionados e que tenham de gerir informaccedilotildees de vaacuterios servidores

Neste tipo de aplicaccedilotildees torna-se muito importante a criaccedilatildeo de uma camada de Cache

Nesta perspectiva esta ferramenta eacute muito completa uma vez que jaacute combina uma

memoacuteria cache com o seu proacuteprio sistema de armazenamento deixando de ser necessaacuterio

criar uma camada separada [26-27]

32 Dicionaacuterio de termos

321 TRIE

Quando se fala de estruturas de dados para manipulaccedilatildeo de strings eacute muito importante

referir que a sua ferramenta baacutesica tem como nome ldquoTRIErdquo que deriva de ldquoretrievedrdquo O

conceito principal desta tecnologia eacute extremamente simples uma estrutura em forma de

aacutervore eacute usada para armazenar um conjunto de strings Cada noacute da aacutervore tem uma

potencial ligaccedilatildeo para cada caracter e corresponde a um prefixo das strings existentes no

conjunto Se o mesmo prefixo ocorrer vaacuterias vezes existiraacute apenas um noacute para representaacute-

lo ou seja comprime os prefixos comuns Eacute uma estrutura que permite pesquisar

informaccedilatildeo de forma raacutepida independentemente do tamanho do dicionaacuterio A raiz da

aacutervore eacute o noacute correspondente ao prefixo ldquovaziordquo [28-29]

Numa operaccedilatildeo de pesquisa na estrutura verifica-se que esta se inicia no noacute

correspondente ao prefixo vazio e depois vai lendo a string de pesquisa seguindo o

ponteiro correspondente para o noacute seguinte de cada caracter lido Quando termina de ler a

string chega-se a um noacute correspondente a esta string como prefixo Caso a string de

pesquisa esteja contida na TRIE e respeite a caracteriacutestica ldquoprefix freerdquo conclui-se que o noacute

corresponde a essa palavra Esta caracteriacutestica consiste em ter um caracter (bdquo0‟) que soacute

20

ocorra na uacuteltima posiccedilatildeo de cada string ou seja como terminaccedilatildeo Desta forma conclui-se

que nenhuma string pode ser prefixo de outra e que o noacute corresponde a essa palavra [28]

Na Figura 35 pode ver-se um exemplo de uma estrutura de uma TRIE As strings

ldquoexamrdquo e ldquoexamplerdquo partilham o mesmo prefixo ldquoexamrdquo sendo este terminado por bdquo0‟

para o primeiro caso e completado com ldquoplerdquo e bdquo0‟ para o segundo O resto da estruttura

TRIE eacute anaacuteloga a esta explicaccedilatildeo

Figura 35 ndash Trie para as strings exam example fail false tree trie e true [28]

Esta aacutervore tem uma estrutura muito simples e muito eficiente O uacutenico problema eacute a

sua dependecircncia em relaccedilatildeo ao tamanho do alfabeto que determina o nuacutemero de noacutes

Imaginemos uma implementaccedilatildeo em que cada noacute tem 256 ponteiros um por cada caracter

e que cada caracter pode ter entre 4 a 8 bytes Facilmente se constata que cada noacute ocuparaacute

na melhor das hipoacuteteses 1 kB A menos que as palavras todas que queremos guardar

tenham muitas repeticcedilotildees precisaremos de tantos noacutes como o tamanho total de todas as

palavras Existem algumas formas de reduzir ou evitar o problema do tamanho do alfabeto

mas que origina um aumento no tempo de pesquisa em prol do melhoramento do tamanho

A mais eficiente e simples consiste em substituir os noacutes que satildeo muito grandes por listas

ligadas de todas as entradas que satildeo realmente usadas [28]

Tecircm surgido vaacuterias implementaccedilotildees deste tipo de estruturas e um dos grandes

inconvenientes tem sido a quantidade de memoacuteria ocupada [30]

Para resolver este problema tecircm sido estudadas teacutecnicas que permitem comprimir a

TRIE compressatildeo de caminhos e compressatildeo de niacuteveis No primeiro caso os caminhos

21

com noacutes vazios satildeo comprimidos eliminando esses noacutes o que pode permitir uma reduccedilatildeo

consideraacutevel do tamanho da aacutervore como se pode ver na Figura 36 (b) No segundo caso

estaacute-se perante uma teacutecnica mais recente em que as subtries satildeo comprimidas sendo essa

compressatildeo feita a partir do niacutevel de cima para baixo(Figura 36 (c)) [30]

Figura 36 ndash (a) Trie Binaacuteria (b) Trie com compressatildeo de caminhos (c) Trie com compressatildeo de niacuteveis [30]

322 Aacutervore de sufixos

O principal objectivo deste tipo de implementaccedilotildees eacute a pesquisa de uma string num

dicionaacuterio especiacutefico de termos Geralmente uma aacutervore de sufixos eacute uma estrutura de

dados eficiente Tem um potencial cada vez mais elevado no ramo da informaacutetica pois

consegue um desempenho bastante bom [31-32]

Diversos factores limitaram durante alguns anos a utilizaccedilatildeo destas estruturas alguns

deles estavam relacionados com os grandes requisitos de memoacuteria e a falta de soluccedilotildees

disponiacuteveis para se poder testar Os equipamentos existentes natildeo eram como os de hoje em

dia com grandes capacidades de armazenamento e de processamento Com o tempo esses

22

problemas foram-se amenizando e muito tem mudado nos uacuteltimos anos tornando as aacutervores

de sufixos amplamente usadas Os requisitos de espaccedilo foram reduzidos substancialmente

e aleacutem disso a memoacuteria das maacutequinas cada vez aumenta mais Tecircm surgido tambeacutem

algumas variantes de aacutervores e vatildeo aparecendo igualmente bibliotecas com diferentes

implementaccedilotildees Todos estes factores tecircm contribuiacutedo para que hoje em dia se utilizem

estas estruturas em muitos tipos de aplicaccedilotildees [32]

A implementaccedilatildeo desta estrutura eacute baseada em TRIE‟s A aacutervore de sufixos tem uma

estrutura estaacutetica que preacute-processa uma string de grandes dimensotildees (vamos designaacute-la por

texto) e daacute resposta a uma string de pesquisa onde esta ocorra O tempo de resposta a uma

pesquisa natildeo estaacute dependente do tamanho da aacutervore mas sim no tamanho da string de

pesquisa

A ideia basilar eacute muito simples cada substring do texto eacute um prefixo de um sufixo e

os noacutes da TRIE correspondem aos prefixos das strings guardadas na TRIE Significa isto

que se se construir uma TRIE que guarde todos os sufixos do texto entatildeo os seus noacutes

corresponderatildeo agraves substrings e conseguir-se-aacute dar uma resposta a uma pesquisa no tempo

O(length(q)) em que ldquoqrdquo eacute a string de pesquisa [28]

Como se pode ver na Figura 37 todos os sufixos estatildeo representados Analisando de

cima para baixo temos bdquoepperrsquo bdquoerrsquo bdquopepperrsquo bdquoperrsquo bdquopperrsquo e bdquorrsquo Aplicando agora

compressatildeo de caminhos deixa de ser necessaacuterio guardar as strings todas explicitamente

mas codificar cada uma com um endereccedilo do iniacutecio e do fim no texto melhorando assim o

tempo de resposta a uma string de pesquisa [O(length(q))]

Figura 37 ndash TRIE dos sufixos para a palavra ldquopepperrdquo [28]

Na Figura 38 estaacute representada a nova aacutervore com os caminhos simplificados (Patricia

tree) [28] Tal como se pode concluir todas as repeticcedilotildees foram eliminadas ficando soacute

representados explicitamente bdquoeprsquo bdquoerrsquo bdquopeprsquorsquoperrsquorsquopprsquo Ou seja soacute ficam representados

explicitamente os prefixos dos sufixos que natildeo se repetem

23

Figura 38 ndash Aacutervore de sufixos com compressatildeo de caminhos Os nuacutemeros representam as posiccedilotildees inicias dos sufixos

[28]

Visto que qualquer implementaccedilatildeo de uma estrutura deste tipo tem como base uma

TRIE os requisitos de espaccedilo vatildeo ser tambeacutem um problema em particular para alfabetos

grandes Este assunto tem sido largamente sujeito a investigaccedilatildeo e sabe-se tambeacutem que os

algoritmos desenvolvidos para as TRIE‟s podem ser utilizados para as aacutervores de sufixos

Pensando numa aplicaccedilatildeo que tenha um alfabeto pequeno natildeo haacute grande problema em

usar esta estrutura de uma forma simples mas para um texto grande que use um alfabeto

normal a representaccedilatildeo dos noacutes da TRIE como listas seraacute provavelmente a soluccedilatildeo mais

conveniente [28]

323 Array de sufixos

Esta estrutura suporta as mesmas operaccedilotildees que as aacutervores de sufixos sendo uma

alternativa a esta Faz o preacute-processamento de uma string e daacute resposta a uma string de

pesquisa quando esta ocorre como substring na string preacute processada

O conjunto de strings eacute considerado como uma longa cadeia de caracteres tornando-

se assim uma estrutura muito simples e econoacutemica em termos de espaccedilo Cada posiccedilatildeo da

string eacute o comeccedilo de um sufixo semi-infinito do texto e os sufixos satildeo organizados por

ordem lexicograacutefica crescente como se pode ver na Figura 39 Deste modo consegue-se

aplicar uma pesquisa binaacuteria sobre a estrutura de modo a encontrar uma determinada

string

Figura 39 ndash Os sufixos de ldquosortedsuffixesrdquo por ordem lexicograacutefica com o respectivo iacutendice inicial na string [28]

24

A forma mais comum de implementar esta soluccedilatildeo eacute ter um array onde vatildeo ser

guardadas as posiccedilotildees dos sufixos ordenados por ordem lexicograacutefica necessitando assim

de ter um array de inteiros do mesmo tamanho da string Isto demonstra uma clara

desvantagem pois poderaacute originar problemas na alocaccedilatildeo do array de inteiros se o tamanho

total da string for demasiado grande Eventualmente ainda se poderaacute ter mais dois arrays

com a informaccedilatildeo dos prefixos comuns

A possiacutevel vantagem desta estrutura reside no facto de o seu tamanho natildeo depender do

tamanho do alfabeto e disponibilizar soluccedilotildees diferentes para resolver o mesmo tipo de

problemas que normalmente surgem com strings

Esta estrutura foi implementada para ser mais pequena que as aacutervores de sufixos

poreacutem essa hipoacutetese fica dependente de algumas teacutecnicas de compressatildeo Numa das

implementaccedilotildees mais directas requer 3 inteiros por cada caracter do conjunto total da

string enquanto que uma implementaccedilatildeo de uma aacutervore de sufixos com lista de noacutes requer

5 ponteiros por cada noacute

A construccedilatildeo do array de sufixos eacute considerado um dos pontos mais complicados de

gerir pois eacute necessaacuterio ordenar os sufixos e tambeacutem encontrar os prefixos comuns

O algoritmo de pesquisa eacute baseado em pesquisa binaacuteria Imaginemos um cenaacuterio em

que eacute uma dada string (Q) estaacute contida lexicograficamente no intervalo [esquerdadireita] e

queremos comparaacute-la com a string do meio Se entre a esquerda e o meio as strings

partilharem os primeiros K caracteres todas nesse intervalo partilharatildeo esses caracteres

Assim se Q partilhar com a string mais agrave esquerda os primeiros L caracteres com L lt K

entatildeo Q natildeo poderaacute estar no intervalo [esquerdameio]

No caso do K ser igual ao L teraacute de se comparar as strings Q com a do meio do

intervalo e se se concluir que Q se situa agrave direita do meio entatildeo o intervalo passaraacute a ser

entre o meio e a direita conseguindo assim actualizar o tamanho dos prefixos comuns

Basicamente aqui estaacute presente uma estrateacutegia de diminuiccedilatildeo de intervalos auxiliada

por arrays que conteacutem os tamanhos dos prefixos comuns entre a esquerda e o meio e o

meio e a direita Em cada passo que seja necessaacuteria uma comparaccedilatildeo entre Q e o meio o

tamanho dos prefixos comuns a esquerda ou a direita vai aumentando pelo nuacutemero de

caracteres adicionais comuns que se vatildeo encontrando que seratildeo no maacuteximo o tamanho de

Q [28]

33 Web Services

Um Web Service eacute qualquer serviccedilo que estaacute disponiacutevel atraveacutes da Internet Usa um

sistema de mensagens XML ou outras alternativas como JSON [33] CSV Comma

Separated Values) e YAML [34] e eacute independente do sistema operativo Fornece uma

25

camada de abstracccedilatildeo relativamente aos sistemas existentes operando ao niacutevel da Internet

Os Web Services satildeo adaptados a esta tendo como base o protocolo HTTP Tecircm-se tornado

um mecanismo muito importante permitindo uma faacutecil e directa integraccedilatildeo numa aplicaccedilatildeo

trazendo agilidade e dinacircmica a esta possibilitando assim a reutilizaccedilatildeo de aplicaccedilotildees Web

tradicionais [35-38]

Com o aparecimento dos Web Services mudou-se de um paradigma Web centrado na

aplicaccedilatildeo e natildeo no humano Natildeo significa isto que haja uma total ausecircncia de matildeo humana

mas as trocas de informaccedilatildeo podem ser feitas directamente entre aplicaccedilotildees tal como

acontece entre os navegadores Web e os servidores [36]

Existem duas propriedades que satildeo muito importantes num Web Service auto-

descritivo e detectaacutevel Com a auto-descriccedilatildeo pretende-se que publicando um novo Web

Service deve-se tambeacutem publicar uma interface puacuteblica para este No miacutenimo o serviccedilo

deve fornecer documentaccedilatildeo que possa ser interpretada humanamente de forma a que

outros programadores possam facilmente integrar o serviccedilo Por outro lado um serviccedilo

deve ser detectaacutevel no sentido que quando se publica um Web Service possa haver um

mecanismo simples para publicar este facto e onde as partes interessadas possam encontrar

o serviccedilo e localizar a interface [36]

Haacute dois tipos de padrotildees de Web Service REST e SOAP [35] O primeiro favorece a

perspectiva loose coupling e a segunda a tight coupling[39]

REST eacute em muitas formas uma retrospectiva abstracta dos princiacutepios subjacentes agrave

Internet A sua arquitectura eacute descrita por Fielding na sua tese[40] que argumenta que ao

contraacuterio dos sistemas transaccionais que necessitam de manter sessotildees complexas com os

clientes a Web reduz esta obrigaccedilatildeo utilizando uma simples resposta que muitas vezes

representa um conjunto preacute-programado de dados que eacute enviado atraveacutes da rede

Basicamente o cliente pode navegar por vaacuterios recursos atraveacutes de endereccedilos Pode haver

muitos objectos cada um identificado por um URI e tambeacutem vaacuterios meacutetodos como Put

Post Get e Delete Com REST cada pedido enviado para um objecto eacute respondido atraveacutes

da representaccedilatildeo desse objecto nomeadamente na forma de um documento XML JSON

CSV ou YAML Este documento permite ao cliente alterar o estado do objecto navegando

para outro URI que eacute referenciado nesse documento [39]

O outro padratildeo baseia-se em WSDL [41] para descrever os serviccedilos que disponibiliza

e em SOAP [42] para fornecer um padratildeo de comunicaccedilatildeo por mensagens As soluccedilotildees

baseadas em SOAP caracterizam-se por cada operaccedilatildeo ser representada pelo receptor da

comunicaccedilatildeo e natildeo por um tipo de mensagem Para invocar operaccedilotildees o cliente necessita

de passar uma referecircncia para a instacircncia que eacute alvo da operaccedilatildeo com a sua mensagem Isto

deve-se ao facto de uma instacircncia natildeo ser distinguida por operaccedilotildees separadas

Apresentam-se agora algumas caracteriacutesticas dos dois padrotildees

26

REST

o Cada pedido efectuado resulta na transferecircncia tipicamente no formato

XML da representaccedilatildeo desse serviccedilo

o A uacutenica coisa que o cliente necessita de saber para efectuar um pedido

eacute o endereccedilo do serviccedilo sob a forma de um URI

o Um URI conteacutem tipicamente o nome da maacutequina um tipo de objecto

distinto e um identificador do processo

o O processo cliente natildeo necessita de saber qualquer detalhe sobre a

implementaccedilatildeo do processo mas os formatos de dados que forem

alterados tecircm de ser acordados entre ambas as partes

SOAP

o Baseia-se em WSDL que descrever os serviccedilos disponibilizados

o Possui um modelo de mensagens preacute-definido com a seguinte

configuraccedilatildeo

Envelope

Cabeccedilalho

Corpo

o Clientes necessitam conhecer agrave priori as operaccedilotildees e a sua semacircntica

o Clientes tecircm de passar uma referecircncia para a instacircncia que vai ser alvo

de uma operaccedilatildeo

34 Sumaacuterio

Como vimos haacute tecnologias de armazenamento de dados com diferentes recursos

conforme as necessidades dos sistemas a desenvolver A ferramenta Lucene dispotildee de um

indexador muito eficiente e de teacutecnicas de pesquisa muito avanccediladas A tecnologia

Berkeley conteacutem jaacute uma base de dados integrada permitindo assim um acesso a esta sem

necessidade de recorrer a comunicaccedilotildees entre processos e aumentando assim a velocidade

de armazenamento e pesquisa As hash tables tecircm uma estrutura que permite uma pesquisa

muito raacutepida de valores atraveacutes da sua chave As hash tables distribuiacutedas tecircm como

objectivo construir uma rede com vaacuterios noacutes de forma a distribuir a informaccedilatildeo por

diversas maacutequinas Este tipo de implementaccedilatildeo natildeo eacute o pretendido para o sistema em

causa A tecnologia Cassandra eacute bastante consistente e escalonaacutevel e fornece um modelo

de dados bastante mais rico que os restantes baseados em registos chave-valor O Project

Voldemort eacute baseado em hash tables distribuiacutedas sendo que tambeacutem natildeo eacute um tipo de

implementaccedilatildeo que se pretenda

27

Analisando agora as tecnologias para dicionaacuterios chega-se a conclusatildeo que a utilizaccedilatildeo

de estruturas como a TRIE o array ou a aacutervore de sufixos cada vez satildeo mais utilizadas na

aacuterea de informaacutetica e bioinformaacutetica [32]

Estas estruturas satildeo bastante refinadas e optimizadas para que o processo de pesquisa

de strings seja bastante raacutepido Desta forma pode-se concluir que estes trecircs tipos satildeo os

mais indicados para integrar neste tipo de aplicaccedilatildeo em que se pretende uma raacutepida

eficiente e constante pesquisa

As TRIE‟s como foi referido apresentam uma dependecircncia em relaccedilatildeo ao tamanho do

alfabeto o que leva a uma maior ocupaccedilatildeo de memoacuteria Embora este problema possa ser

resolvido com compressatildeo de caminhos provoca uma perda de desempenho no tempo de

pesquisa

Por outro lado as aacutervores de sufixos jaacute se encontram mais exploradas embora tambeacutem

mantenham o problema dos requisitos de espaccedilo visto que a sua estrutura eacute baseada em

TRIE‟s Os arrays de sufixos tem uma estrutura mais simples e faacutecil de implementar

conseguindo manter um desempenho igualmente interessante sendo a estrutura escolhida

para utilizar neste projecto

Quanto aos Web services o mais indicado parece ser o do tipo REST uma vez que

respeita mais os princiacutepios subjacentes agrave Internet e porque obedece aos princiacutepios do loose

coupling permitindo assim uma independecircncia maior relativamente aos sistemas

interligados

28

4 Wikifier Biomeacutedico

Pretende-se desenvolver um wikifier biomeacutedico que possibilite a visualizaccedilatildeo de

algumas informaccedilotildees relevantes sobre termos ou nomes desta aacuterea cientiacutefica a

Biomedicina

A disponibilizaccedilatildeo dessa informaccedilatildeo deve ser feita de uma forma simples e intuitiva

para que o utilizador se sinta cativado e em que a experiecircncia e usabilidade sejam do

agrado deste

Ao longo deste capiacutetulo iratildeo ser descritas as vaacuterias fases da concepccedilatildeo deste trabalho

abordando as vaacuterias temaacuteticas envolvidas neste tema

O trabalho desenvolvido focou-se em alguns pontos principais

Arquitectura da aplicaccedilatildeo

Serviccedilos

Dicionaacuterio de termos

Linguagem de anotaccedilatildeo

Disponibilizaccedilatildeo da informaccedilatildeo

No que diz respeito agrave arquitectura da aplicaccedilatildeo falar-se-aacute mais agrave frente Quanto aos

serviccedilos disponibilizados iratildeo ser criados 2 serviccedilos um que seja responsaacutevel por carregar

e analisar o conteuacutedo deixando os termos marcados e outro que tecircm a funccedilatildeo de ir carregar

a vaacuterias bases de dados informaccedilotildees sobre determinado termo

Quanto ao dicionaacuterio de termos pretende-se integrar um que permita rapidamente

identificar as entidades relevantes e deste modo usar um sistema de anotaccedilotildees para anotar

essas entidades Eacute atraveacutes da interpretaccedilatildeo das anotaccedilotildees que se iraacute mostrar na interface as

informaccedilotildees que se pretendem para cada termo Essas informaccedilotildees poderatildeo ser desde

sinoacutenimos a ligaccedilotildees para publicaccedilotildees sobre esse termo

A entrada de dados poderaacute ser uma paacutegina Web um ficheiro de texto ou simplesmente

palavras inseridas pelo utilizador Desta forma consegue-se oferecer ao utilizador um

leque de opccedilotildees que lhe permita desfrutar de uma boa experiecircncia

Abordando agora a questatildeo da visualizaccedilatildeo da informaccedilatildeo na interface pretende-se

oferecer uma interface rica mas ao mesmo tempo simplista e de faacutecil percepccedilatildeo Por este

prisma o ideal seraacute a apresentaccedilatildeo da informaccedilatildeo numa janela que surja quando o

utilizador passa o rato em cima de determinado termo mostrando-a de uma forma

estruturada preferencialmente de uma maneira que natildeo torne a informaccedilatildeo apresentada

confusa

29

41 Arquitectura da soluccedilatildeo

Um factor extremamente importante e fundamental em qualquer tipo de aplicaccedilatildeo eacute a

sua arquitectura Esta deve ser soacutelida e bem definida Conveacutem ter a estrutura dividida por

blocos bem delineados para que cada um deles possa estar independente em relaccedilatildeo aos

outros Desta forma caso seja necessaacuterio substituir um dos blocos por uma soluccedilatildeo

diferente essa mudanccedila seraacute muito mais facilitada uma vez que a arquitectura bem

estruturada permitiraacute essa facilidade Por outro lado se a arquitectura natildeo estiver bem

modulada uma alteraccedilatildeo numa das partes da soluccedilatildeo poderaacute originar muitas complicaccedilotildees

conduzindo a uma necessidade de correcccedilotildees eou modificaccedilotildees ateacute da proacutepria

arquitectura originando assim mais perdas de tempo

Na Figura 41 estaacute representada a interacccedilatildeo entre o utilizador e os vaacuterios blocos da

aplicaccedilatildeo O utilizador acede agrave interface Web fornecida e atraveacutes dela acede aos serviccedilos

disponibilizados pelo Web Service que conteacutem todas as funcionalidades jaacute descritas

anteriormente Esta ilustraccedilatildeo pretende unicamente dar uma visatildeo mais geral a todo o

processo de acesso agrave aplicaccedilatildeo

Figura 41 ndash Interacccedilatildeo entre o utilizador e a aplicaccedilatildeo

Na Figura 42 estaacute representada a arquitectura da soluccedilatildeo dividida em 2 camadas

servidor e cliente

Do lado do servidor um Web Service eacute responsaacutevel por fornecer serviccedilos de forma a

disponibilizaacute-los para que estes possam ser integrados em qualquer aplicaccedilatildeo Web

Basicamente este serviccedilo eacute o nuacutecleo da aplicaccedilatildeo passando por ele todo o processamento e

30

anaacutelise de texto Analisa e anota o texto quer seja proveniente de uma paacutegina Web de um

ficheiro ou simplesmente texto No caso de uma paacutegina eacute utilizado um parser HTML para

detectar o conteuacutedo textual Eacute neste serviccedilo tambeacutem que o dicionaacuterio eacute colocado em

memoacuteria visto que as anotaccedilotildees satildeo feitas consoante o conteuacutedo deste

O moacutedulo Dictionary que representa a estrutura de dados que estaacute a ser utilizada para

armazenar e pesquisar termos utiliza informaccedilatildeo da base de dados para construir o seu

conteuacutedo Eacute possiacutevel ter qualquer estrutura de dados para pesquisa de strings integrada na

aplicaccedilatildeo sendo soacute necessaacuterio alterar o pacote referente a essa estrutura e redefinir a

interface correspondente como iremos ver mais agrave frente O annotator eacute responsaacutevel por

marcar os termos ou seja fazer as anotaccedilotildees Esta marcaccedilatildeo seraacute feita recorrendo a

linguagens de anotaccedilatildeo que seratildeo analisadas no capiacutetulo 46

Do ponto de vista do cliente eacute necessaacuterio fornecer uma interface Web que possibilite

utilizar os serviccedilos disponibilizados e aceder a informaccedilotildees que satildeo originadas pelas

anotaccedilotildees Estas informaccedilotildees satildeo obtidas atraveacutes de um Web Service que eacute responsaacutevel

pelo acesso a bases de dados cientiacuteficas A interpretaccedilatildeo das anotaccedilotildees permite extrair os

dados necessaacuterios para se saber quais os conteuacutedos a carregar dessas bases de dados

Figura 42 ndash Arquitectura da Aplicaccedilatildeo

Na Figura 43 estaacute representado o Worflow da aplicaccedilatildeo

Como se pode ver pelo diagrama quando se acede agrave interface da aplicaccedilatildeo satildeo

geradas as caixas de selecccedilatildeo de acordo com o ficheiro de configuraccedilatildeo As configuraccedilotildees

satildeo carregadas e eacute disponibilizada uma interface para o utilizador usar o sistema Este

31

selecciona os tipos de dados que quer ver anotados escolhe se eacute uma paacutegina da Internet

um ficheiro ou simplesmente texto e confirma as suas opccedilotildees atraveacutes do botatildeo de

submissatildeo que invoca o Web Service com os respectivos paracircmetros Este serviccedilo realiza

todo o processamento da informaccedilatildeo faz a sua anaacutelise pesquisa os termos e substitui-os A

pesquisa de termos eacute feita atraveacutes do dicionaacuterio testando quais as expressotildees do texto que

correspondem a uma entrada deste No caso de o documento a analisar ser uma paacutegina

Web eacute feita a anaacutelise da paacutegina atraveacutes de um parser HTML e as anotaccedilotildees satildeo feitas ao

conteuacutedo textual da paacutegina recorrendo a um anotador A mesma siutaccedilatildeo se verifica se o

documento a analisar for um documento de texto ou simplesmente o utilizador soacute quiser

analisar um texto raacutepido mas a anaacutelise HTML deixa de ser necessaacuteria e apenas se procede

agrave anotaccedilatildeo do texto apresentando os resultados na interface De notar que para este caso

tem de se construir a estrutura HTML

Figura 43 ndash Workflow da aplicaccedilatildeo

32

42 Diagramas de Classes e Casos de Utilizaccedilatildeo

Nesta parte iratildeo ser mostrados alguns diagramas de classes divididos por pacotes de

forma a natildeo originar muita confusatildeo e simplificando assim a visualizaccedilatildeo

Na Figura 44 estaacute ilustrado o diagrama de classes do pacote WSHelper que representa

uma classe auxiliar e tem como objectivo a implementaccedilatildeo da estrutura do dicionaacuterio e

fazer todo o controlo quanto agrave detecccedilatildeo e anotaccedilatildeo de termos A interface Dictionary

conteacutem os meacutetodos necessaacuterios para a implementaccedilatildeo de qualquer tipo de dicionaacuterio uma

vez que basta trocar o pacote referente agrave implementaccedilatildeo do dicionaacuterio e implementar os

meacutetodos de criaccedilatildeo e de pesquisa invocando os meacutetodos correspondentes desse pacote A

detecccedilatildeo de termos eacute feita atraveacutes do meacutetodo Wikify onde o texto eacute divido em tokens

isolando cada uma das palavras Atraveacutes do meacutetodo findTerms satildeo testadas quais as

palavras que pertencem ao dicionaacuterio em caso de sucesso pode fazer-se a anotaccedilatildeo

recorrendo agrave classe Annotator

As anotaccedilotildees podem ser feitas quer em texto normal quer em documentos HTML

nomeadamente paacuteginas da Internet Para estes documentos eacute utilizada a classe

HTMLParser que extende da classe HTMLEditorKit e que permite redefinir os meacutetodos

que se podem visualizar no diagrama da Figura 45 e aceder agraves vaacuterias tags HTML

modificando os seus atributos para por exemplo alterar o valor de endereccedilos relativos

para absolutos Esta alteraccedilatildeo tem de ser feita visto que as paacuteginas passam a correr no

servidor da aplicaccedilatildeo e assim o endereccedilo relativo seraacute em relaccedilatildeo a este Permite tambeacutem

recorrendo ao meacutetodo handleText detectar todo o conteuacutedo da paacutegina que representa texto

possibilitando que se aplique exactamente o mesmo processamento que foi feito ao texto

normal

Na Figura 46 estaacute representado o pacote que corresponde agrave construccedilatildeo do conteuacutedo do

dicionaacuterio Na parte de cima estaacute uma representaccedilatildeo geneacuterica do tipo de dicionaacuterio

utilizado O pacote de baixo eacute responsaacutevel por fazer a gestatildeo do conteuacutedo do dicionaacuterio

acedendo agrave base de dados de modo a carregar as informaccedilotildees pretendidas

33

Figura 44 - Diagrama de classes do pacote Helper

Figura 45 - Diagrama de classes do pacote HTMLParser

34

Figura 46 - Diagrama de classes do pacote dictionaryHelper

Na Figura 47 estatildeo representados os 3 casos de utilizaccedilatildeo do sistema

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquowebsiterdquo preenche a

caixa de texto com o endereccedilo que deseja escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquodocumentrdquo escolhe o

ficheiro pretendido confirma a sua escolha escolhe as caixas de selecccedilatildeo dos

tipos de dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

O Utilizador acede agrave interface seleccionando a opccedilatildeo ldquotextrdquo preenche a caixa

de texto com o conteuacutedo pretendido escolhe as caixas de selecccedilatildeo dos tipos de

dados que quer ver marcados e carrega no botatildeo ldquowikifyrdquo

35

Figura 47 ndash Diagrama de casos de utilizaccedilatildeo

43 Fontes de dados

As fontes de dados o dicionaacuterio de termos e a apresentaccedilatildeo da informaccedilatildeo ao

utilizador estatildeo interligados uma vez que esses dados estaratildeo dependentes dessas fontes

Seratildeo conteuacutedos de bases de dados cientiacuteficas que contecircm informaccedilotildees sobre os termos

como identificadores termos alternativos designaccedilotildees por extenso publicaccedilotildees

informaccedilotildees funcionais entre outras

Para integraccedilatildeo neste projecto utilizou-se a base de dados GeNS alojada num servidor

do Instituto de Engenharia Electroacutenica e Telemaacutetica de Aveiro Esta base de dados conteacutem

informaccedilotildees de muitas outras centralizando desta forma um vasto leque de conteuacutedos

Poderia usar-se qualquer outra base de dados ou eventualmente mais do que uma mas

para esta implementaccedilatildeo optou-se por usar soacute o GeNS Os termos satildeo carregados conforme

o definido no ficheiro de configuraccedilatildeo Genes ou proteiacutenas satildeo exemplos de alguns tipos

de termos presentes nesta base de dados Quanto agraves informaccedilotildees que iratildeo ser

disponibilizadas ao utilizador conteacutem identificadores para artigos do PubMed1 e paacuteginas

da UniProt2

1 PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura biomeacutedica 2 UniProt eacute uma base de dados cientiacutefica que conteacutem um conjunto de informaccedilotildees funcionais sobre proteiacutenas

36

44 Ficheiros de configuraccedilatildeo

Numa aplicaccedilatildeo a gestatildeo das configuraccedilotildees e opccedilotildees deve ser o mais acessiacutevel e

simples possiacutevel Para isso procede-se agrave criaccedilatildeo de ficheiros com as configuraccedilotildees

necessaacuterias para que o gestor do sistema possa facilmente adicionar ou remover

propriedades aos recursos da aplicaccedilatildeo abstraindo-se da sua implementaccedilatildeo Isto permite

aumentar a produtividade de um sistema poupando tempo e evitando estar sempre a editar

coacutedigo desnecessariamente que se torna uma situaccedilatildeo impensaacutevel

Neste sentido para esta aplicaccedilatildeo criaram-se 2 ficheiros de configuraccedilatildeo um para

gestatildeo dos dados da aplicaccedilatildeo e outro para manipulaccedilatildeo dos estilos da interface

No ficheiro de gestatildeo satildeo mantidos os tipos de dados que se pretende que o sistema

forneccedila aos utilizadores que satildeo identificados pelo valor numeacuterico e pelo nome

correspondente Cada tipo de dados tem um identificador numeacuterico uacutenico Por exemplo o

tipo Gene corresponde ao tipo 1 O nome apenas eacute utilizado para representaccedilatildeo nas caixas

de selecccedilatildeo da interface web enquanto que o valor numeacuterico eacute passado para a aplicaccedilatildeo de

forma a gerir que tipos de dados se vai ter e que anotaccedilotildees vatildeo ser feitas

Aleacutem disto os dados de acesso agrave base de dados e as queries necessaacuterias satildeo tambeacutem

armazenadas no ficheiro Estas satildeo guardadas com um identificador proacuteprio baseado na sua

funccedilatildeo de modo a que a aplicaccedilatildeo possa estar preparada a reconhecer quando novas

entradas satildeo colocadas no ficheiro

Dando um exemplo praacutetico deste ponto para a gestatildeo dos sinoacutenimos eacute colocada no

ficheiro uma query que tem como identificador ldquogetSynonymsQuery001rdquo Na Figura 48

apresenta-se um recorte deste exemplo A aplicaccedilatildeo processa este item de configuraccedilatildeo e

interpreta em duas partes ldquogetSynonymsQueryrdquo e ldquo001rdquo sabendo entatildeo que se estaacute a fazer

o carregamento dos sinoacutenimos para o tipo de dados ldquo001rdquo Estas queries estatildeo preparadas

para receber paracircmetros Atraveacutes da interface PreparedStatement do pacote javasql uma

query pode conter o siacutembolo bdquo‟ que iraacute ser substituiacutedo no programa por um paracircmetro

pretendido Para os restantes tipos de queries a situaccedilatildeo eacute anaacuteloga podendo a qualquer

altura acrescentar uma nova query

Figura 48 - Exemplo de uma entrada do ficheiro de configuraccedilatildeo

No ficheiro de estilos satildeo configurados os estilos para as classes necessaacuterias

nomeadamente as correspondentes aos tipos de dados que estatildeo a ser utilizados

Imaginemos um tipo de dados OMIM que tem como identificador o nuacutemero 151 A classe

seraacute definida como ldquoC151rdquo (classe 151) e o atributo class das anotaccedilotildees teraacute este valor

37

Na Figura 49 estaacute representado um recorte do conteuacutedo do ficheiro de estilos com a

definiccedilatildeo das classes para as anotaccedilotildees Neste caso satildeo definiccedilotildees de estilos muito simples

pois apenas se pretende dar outra cor ao texto Os estilos para o resto da paacutegina as

definiccedilotildees satildeo mais complexas natildeo fazendo sentido estar a detalhar muito Eacute constituiacutedo

pelos estilos de todos os elementos da paacutegina que se pretendam personalizar

Figura 49 - Excerto do ficheiro de configuraccedilatildeo de estilos

45 Dicionaacuterio de termos

A manipulaccedilatildeo de strings levanta muitos problemas nomeadamente em questotildees de

desempenho Este facto obriga a cuidados especiais quando se estaacute a escolher o tipo de

implementaccedilatildeo que seraacute utilizado numa dada aplicaccedilatildeo [2]

Este foi um dos pontos de difiacutecil anaacutelise e que suscitou mais duacutevidas sobre qual a

escolha que se apresenta mais vantajosa para este projecto

A soluccedilatildeo escolhida seraacute explicada pormenorizando qual eacute a sua implementaccedilatildeo e

forma de funcionamento Tambeacutem seraacute referida a forma como se construiu o conteuacutedo do

dicionaacuterio

451 Testes temporais

Realizaram-se testes com o intuito de analisar os tempos de execuccedilatildeo da estrutura

escolhida de forma a analisar o seu desempenho Como meacutetrica de anaacutelise temporal usou-

se um script que consiste em pesquisar 50 vezes todas as palavras de um texto de 200

palavras e registar quanto tempo demora a pesquisar cada uma das vezes e tambeacutem o

tempo total e a sua meacutedia aritmeacutetica Este teste seraacute realizado vaacuterias vezes sendo

aumentado para cada um deles o tamanho total do dicionaacuterio de termos Para se ter

percepccedilatildeo da diferenccedila de tempos entre este tipo de estruturas e outras alternativas como as

referidas no capiacutetulo 3 mostrar-se-atildeo os valores obtidos por um indexador Lucene Apenas

se mostram os valores estatiacutesticos estando as tabelas completas no anexo 1

38

Tabela 41- Estatiacutesticas dos testes para o indexador Lucene

Estatiacutesticas ndash Lucene

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 19 23 31 425

Maacuteximo (ms) 81 89 184 197

Miacutenimo (ms) 17 20 28 37

Total (ms) 1160 1377 1830 2436

Tabela 42 - Estatiacutesticas dos testes para o Array de sufixos

Estatiacutesticas ndash Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000 Meacutedia (ms) 1 1 1 1

Maacuteximo (ms) 5 3 5 6

Miacutenimo (ms) 0 0 1 0

Total (ms) 32 49 52 59

Como se pode concluir observando os valores das tabelas o array de sufixos

demonstra um desempenho muito eficiente O tempo que demora a procurar os termos

pode ser considerado praticamente instantacircneo o que demonstra uma grande mais-valia

para a aplicaccedilatildeo pois a pesquisa de termos seraacute extremamente raacutepida Comparando com os

valores da ferramenta Lucene facilmente se percebe bem a diferenccedila Embora natildeo seja uma

gama de valores que se possa considerar maacute eacute substancialmente superior agrave gama do array

de sufixos

452 Soluccedilatildeo utilizada

A escolha incidiu sobre um array de sufixos Esta implementaccedilatildeo foi desenvolvida

por Aleksander Buczynski e modificado por Tomasz Okninski e Piotr Milkowski inserido

no programa Kolokacje [43]

Para aleacutem de ter um tempo de resposta muito satisfatoacuterio eacute faacutecil de utilizar e de incluir

numa aplicaccedilatildeo Basta ter um ficheiro com os termos que pretendemos e passaacute-lo como

paracircmetro para o array de sufixos ser criado

39

A sua estrutura eacute muito simples Dois ficheiros satildeo gerados um com os termos

separados por um caracter configurado e outro com os iacutendices dos sufixos ordenados por

ordem lexicograacutefica crescente como no exemplo que se vecirc na Figura 410

Figura 410 ndash Ordenaccedilatildeo dos sufixos lexicograficamente (apenas se apresenta a inicial do sufixo)

O iacutendice para a string ldquo bbx birc2 aaa rdquo (espaccedilos satildeo o caracter de separaccedilatildeo) eacute

14100491312111528673 Apresenta-se aacute frente de cada iacutendice o caracter inicial de

cada sufixo

Estando este processo finalizado carregam-se os iacutendices e os termos em memoacuteria

Analisando o processo de pesquisa (Figura 411) este vai ser feito caracter a caracter da

seguinte forma

Verifica qual o caracter que corresponde ao ponto meacutedio dos iacutendices em relaccedilatildeo ao

tamanho total subtraiacutedo do tamanho do termo a pesquisar e compara-o com o

primeiro caracter do termo Fica-se assim com dois subconjuntos um desde o iniacutecio

ateacute esse ponto meacutedio e outro desse ponto ateacute ao final (subtraiacutedo do tamanho do

termo pesquisado porque o iniacutecio desse termo natildeo poderaacute estar localizado numa

posiccedilatildeo maior que essa)

Compara-se o caracter e haacute 3 cenaacuterios possiacuteveis

o 1 ndash Caracter encontrado eacute lexicograficamente maior que o do termo o

intervalo torna a subdividir-se da mesma forma entre o ponto actual e o

iniacutecio tendo agora dois subconjuntos com metade do tamanho

40

o 2 ndash Caracter encontrado eacute lexicograficamente menor que o do termo o

intervalo passa a ser entre a posiccedilatildeo actual incrementada de 1 unidade e o

valor final que jaacute se tinha calculado

o 3 ndash Caracter encontrado eacute lexicograficamente igual ao do termo neste caso

significa que se encontrou uma possiacutevel correspondecircncia e testa-se se o

caracter seguinte dessa posiccedilatildeo coincide com o seguinte do termo Se natildeo

coincidir torna a executar algum dos passos anteriores ateacute obter o sufixo

completo

Satildeo retornados todos os sufixos iniciados pelo termo pesquisado sendo unicamente

necessaacuteria uma comparaccedilatildeo do tamanho para o programa verificar a existecircncia do

termo pretendido

Na Figura 411 apresenta-se um diagrama da explicaccedilatildeo dada A variaacutevel i eacute

inicializada com o valor 0 e a j com o valor do tamanho total do nuacutemero de caracteres

subtraiacutedo do tamanho do termo

Figura 411 ndash Diagrama representativo da pesquisa de um termo

Exemplificando esta descriccedilatildeo e voltando agrave anaacutelise do iacutendice de sufixos ilustrado na

Figura 410 pode-se simular uma pesquisa pelo termo ldquobirc2rdquo

41

Figura 412 ndash Exemplo de uma pesquisa num array de sufixos

Utilizando a Figura 412 para sustentar esta explicaccedilatildeo no passo 1 o caracter

correspondente ao iacutendice seleccionado eacute comparado com o espaccedilo que eacute o primeiro do

termos que se estaacute a procurar Devido ao tamanho deste ser 7 e subtraindo-o ao tamanho

total (15) obteacutem-se o ponto meacutedio na posiccedilatildeo 4 Dessa comparaccedilatildeo resulta que o valor do

limite direito do intervalo diminua tendo agora de comparar o termo correspondente ao

iacutendice 2 (passo 2) Esse termo coincide com o espaccedilo e pode-se entatildeo testar se o sufixo

corresponde Verificam-se os caracteres seguintes obtendo na posiccedilatildeo posterior ao espaccedilo

um ‟b‟ que satisfaz a condiccedilatildeo mas depois encontra-se um bdquoi‟ que natildeo satisfaz Novos

caacutelculos satildeo efectuadas e o novo ponto meacutedio eacute o 3 que corresponde agrave posiccedilatildeo 4 e estaacute

representado no passo 3 Nessa posiccedilatildeo temos um espaccedilo seguido de bdquob‟ ‟i‟ bdquor‟ bdquoc‟‟2‟

Encontrou-se o sufixo pretendido retornando os resultados que se iniciam com esse sufixo

453 Construccedilatildeo do conteuacutedo do dicionaacuterio

Para a construccedilatildeo do dicionaacuterio a fonte de dados utilizada foi a base de dados jaacute

referida o GeNS de onde se extraiacuteram elementos do tipo Genes Proteinas Omim KEGG

GO e PharmGKB Elementos esses que representam o identificador geneacuterico de cada

termo e que tecircm de ser colocados no dicionaacuterio Para saber onde termina cada um dos

elementos haacute duas estrateacutegias possiacuteveis

Associar a cada elemento o seu tamanho

Associar a cada elemento um caracter de terminaccedilatildeo

A opccedilatildeo escolhida foi a segunda pois eacute mais directa e simplista Os elementos seratildeo

separados por um caracter o mais independente do alfabeto possiacutevel O caracter escolhido

foi o ldquosectrdquo

O proacuteximo passo consistiu em arranjar uma estrateacutegia que possibilitasse acoplar ao

elemento o seu tipo pois eacute necessaacuterio guardar tambeacutem essa informaccedilatildeo no dicionaacuterio

Decidiu-se que essa informaccedilatildeo seria guardada juntamente com o termo separando-os com

um caracter diferente do que separa a totalidade do termo O objectivo disto eacute conseguir

manipular cada entrada do dicionaacuterio de forma a saber o seu tipo de dados pois essa

informaccedilatildeo eacute necessaacuteria para fazer as anotaccedilotildees

42

Aleacutem disto existem tambeacutem muitas variaccedilotildees (sinoacutenimos) das designaccedilotildees que

correspondem ao mesmo identificador geneacuterico O dicionaacuterio tem de conter todas essas

variaccedilotildees associadas ao seu identificador Essa associaccedilatildeo eacute feita gerando cada entrada do

dicionaacuterio com a seguinte configuraccedilatildeo variantepoundtipopoundid_geneacutericosect

Para fazer toda esta gestatildeo do dicionaacuterio criou-se uma classe designada

ldquoDictionaryConstructionldquo que lecirc os tipos de dados presentes no ficheiro de configuraccedilatildeo e

para cada um deles extrai da base de dados os termos contidos na base de dados Para cada

um desses termos executa tambeacutem um pedido agrave base de dados para obter todas as

variaccedilotildees O conteuacutedo do dicionaacuterio eacute guardado num ficheiro com as configuraccedilotildees

referidas em cima sendo que a variante corresponde a cada um dos sinoacutenimos e o

identificador geneacuterico ao termo em si Eacute este ficheiro que vai ser carregado pelo array de

sufixos de forma a criar os respectivos ficheiros do array e dos iacutendices Para este processo

invoca-se o construtor do array de sufixos que eacute responsaacutevel pela criaccedilatildeo deste Neste

momento a estrutura jaacute estaacute pronta a utilizar possibilitando fazer pesquisas nela A

pesquisa eacute feita atraveacutes do meacutetodo matches que retorna uma lista com o(s) resultado(s) da

pesquisa Ao pesquisar por um termo o dicionaacuterio vai devolver uma entrada completa com

a configuraccedilatildeo especificada conseguindo assim saber qual o nome o tipo e o identificador

geneacuterico de um termo encontrado num texto Isto iraacute permitir que na implementaccedilatildeo das

anotaccedilotildees se consigam ter os dados suficientes para uma correcta disponibilizaccedilatildeo de

informaccedilotildees

46 Linguagem de anotaccedilatildeo

O objectivo eacute criar um padratildeo para um sistema de anotaccedilotildees que se possa usar para

anotar entidades no texto de uma forma simples e faacutecil de trabalhar permitindo uma boa

flexibilidade para este sistema Wikifier

Como jaacute foi referido o principal intuito do wikifier eacute reconhecer entidades em

linguagens naturais usando dicionaacuterios preacute-definidos Para atingir esta meta torna-se

necessaacuterio e importante definir uma estrutura de anotaccedilotildees que possibilite a identificaccedilatildeo

de uma entidade num texto atraveacutes de uma linguagem de anotaccedilotildees bem definido

Esta linguagem de anotaccedilotildees deve respeitar alguns requisitos que estejam em

conformidade com o Wikifier simplicidade flexibilidade e disponibilidade da informaccedilatildeo

para cada entidade No que diz respeito ao primeiro requisito eacute evidente que a sintaxe deva

ser simples de perceber e usar Quanto agrave flexibilidade eacute desejaacutevel que a linguagem seja

facilmente extensiacutevel nomeadamente atraveacutes da definiccedilatildeo de novos atributos Por fim a

linguagem deve permitir guardarfornecer informaccedilatildeo sobre as entidades anotadas pois eacute

importante que seja fornecida informaccedilatildeo sobre os ID‟s e respectivas fontes

43

461 Linguagens analisadas

A anotaccedilatildeo usada no CALBC challenge (Collaborative Annotation of a Large-Scale

Biomedical Corpus) [44] eacute bastante simples e flexiacutevel pois atraveacutes de uma sintaxe clara

permite fornecer informaccedilatildeo do identificador grupo semacircntico a partir de vaacuterias fontes de

dados Por exemplo

lte id=rdquoUniprotP01308PRGE|UMLSC1337112PRGErdquogtINS geneltegt

Como se pode verificar a anotaccedilatildeo eacute muito concisa bastando indicar o nome da fonte

de dados pretendida (Uniprot) o ID(P01308) tipo semacircntico natildeo estaacute especificado logo eacute

deixado em branco e o grupo semacircntico (PRGE)

As anotaccedilotildees satildeo baseadas em XML o que as tornam possiacuteveis de ler tanto humana

como computacionalmente

Outra das anotaccedilotildees estudadas eacute explicada num artigo intitulado ldquoA web service for

biomedical term look-uprdquo [45] cuja aproximaccedilatildeo eacute um pouco diferente da falada

anteriormente Cada tag XML diz respeito a uma fonte diferente Embora seja uma das

aproximaccedilotildees existentes mais simples e preencha na maior parte os requisitos falados natildeo

eacute muito flexiacutevel no sentido em que se torna necessaacuterio criar una nova tag XML se uma

nova fonte de dados for usada

Figura 413 ndash Exemplo de uma anotaccedilatildeo [45]

Na Figura 413 estaacute representado um exemplo deste tipo de anotaccedilatildeo Como se pode

ver as diferentes tags satildeo criadas com os atributos e valores correspondentes aos elementos

que se estatildeo a anotar

44

Outra linguagem de anotaccedilotildees tem como nome NCBO ldquoAnnotator Web Servicerdquo [46]

que natildeo eacute mais do que um Web Service que retorna anotaccedilotildees de nome de genesproteiacutenas

Os dados devolvidos satildeo bastante bem estruturados e definidos e poderaacute ser uacutetil para uma

soluccedilatildeo em que se queira fornecer estatiacutesticas referentes ao nuacutemero de anotaccedilotildees

efectuadas num dado contexto

Por fim temos o ldquoGene Ontology Annotationrdquo [47] que se encontra muito bem

definido e documentado A principal ideia eacute fazer uma anotaccedilatildeo e usar essa informaccedilatildeo de

modo a obter mais conhecimento sobre uma ontologia Estamos na presenccedila de uma

soluccedilatildeo mais robusta que permite obter mais relaccedilotildees e dados que estatildeo relacionados com

uma entidade Apesar destes factos talvez se torne muito complicado de usar para o tipo

de soluccedilatildeo que se procura

No final desta anaacutelise pode-se concluir que o CALBC se enquadra melhor nos

requisitos traccedilados uma vez que permite uma flexibilidade suficiente para se poder usar os

identificadores que se pretender Como jaacute referi o tratamento de medidas estatiacutesticas

tambeacutem se poderia tornar um recurso interessante para o sistema que se estaacute a desenvolver

462 Implementaccedilatildeo

Depois de escolher a linguagem de anotaccedilatildeo a ser utilizada tem de se passar agrave sua

implementaccedilatildeo Para isso criou-se a classe ldquoAnnotatorrdquo que eacute responsaacutevel por anotar os

termos encontrados num texto Esta classe substitui um dado termo pela anotaccedilatildeo

especificada O meacutetodo annotate recebe como paracircmetros o termo procurado (token) o

tipo de dados que lhe corresponde (type) e o identificador geneacuterico (symbol) O conteuacutedo

da anotaccedilatildeo eacute construiacutedo com os paracircmetros recebidos e o meacutetodo devolve a nova string

com a anotaccedilatildeo pronta a ser incorporada no texto Apenas satildeo anotadas as entidades que o

utilizador pedir Esta situaccedilatildeo eacute controlada atraveacutes de um hash map que contem os

paracircmetros do Web Service

47 Disponibilizaccedilatildeo da informaccedilatildeo

Do ponto de vista do utilizador o que lhe interessa na praacutetica num wikifier eacute que lhe

sejam disponibilizadas as informaccedilotildees que estaacute agrave espera Essas informaccedilotildees devem ser

apresentadas de forma organizada e bem estruturadas

Este subcapiacutetulo vai dividir-se em duas partes Na primeira vai ser descrito o Web

Service criado para carregar informaccedilotildees da base de dados e na segunda iraacute ser mostrada a

forma escolhida para mostrar as informaccedilotildees

45

471 Web Service

Para a gestatildeo da informaccedilatildeo optou-se por criar um Web Service do tipo REST que

permita retornar a informaccedilatildeo pretendida da base de dados Tem como paracircmetros o tipo

de dados (por exemplo gene ou proteiacutena) e o respectivo termo

Atraveacutes destes dados carrega-se uma query do ficheiro de configuraccedilatildeo recorrendo ao

meacutetodo jaacute descrito no ponto 44

Na Figura 414 estaacute representada a interacccedilatildeo entre o jQuery e o Web Service Atraveacutes

do jQuery eacute feito um pedido ao Web Service enviando os dados necessaacuterios nomedamente

o termo em questatildeo e o seu tipo O Web Service faz o pedido agrave base dados e envia os

resultados satildeo recebidos no jQuery

O acesso aos serviccedilos disponibilizados eacute feito atraveacutes de um endereccedilo do tipo

http()dataxxxtype=yampterm=z em que xxx representa o caminho dado a um

determinado serviccedilo o y o tipo de dados e o z o termo

Figura 414 ndash Interacccedilatildeo entre o utilizador e O Web Service que fornece informaccedilatildeo

472 Janela de informaccedilatildeo

Para esta fase do trabalho estudaram-se duas ferramentasbibliotecas baseadas em

JavaScript jQuery [48] e MooTools [49] De entre estas duas seraacute escolhida uma que seraacute

utilizada para criar uma janela para mostrar informaccedilotildees

jQuery eacute uma biblioteca bastante raacutepida e que permite simplificar o desenvolvimento

Web atraveacutes de animaccedilotildees e interacccedilotildees com Ajax Com jQuery consegue-se de maneira

muito facilitada criar diversas animaccedilotildees numa paacutegina Web Desde menus animados a

janelas que satildeo mostradasescondidas com efeitos ou ainda aplicar determinada animaccedilatildeo a

todos os elementos que sejam de um determinado tipo

MooTools eacute uma ferramenta compacta modular e orientada a objectos desenhada para

programadores de JavaScript mais avanccedilados permitindo desenvolver coacutedigo mais flexiacutevel

com a sua API bem documentada elegante e coerente

Como referem as paacuteginas oficiais de cada um deles jQuery eacute feito para mudar a forma

como se escreve JavaScript MooTools eacute desenvolvido para utilizadores mais avanccedilados

Quanto agrave curva de aprendizagem pode-se dizer que jQuery eacute bastante mais faacutecil de

46

aprender mesmo para quem natildeo esteja muito agrave vontade com JavaScript Rapidamente se

consegue implementar um script e meter a funcionar Por outro lado o MooTools embora

tambeacutem seja uma ferramenta muito boa jaacute se torna mais difiacutecil de entender principalmente

para utilizadores com pouca experiecircncia em JavaScript Outro factor que contribui para

este aspecto eacute que a comunidade do jQuery eacute muito maior mostrando mais intenccedilatildeo de

promover a biblioteca

Analisando estes factos conclui-se que para uma implementaccedilatildeo simples e raacutepida seraacute

mais uacutetil utilizar a biblioteca jQuery Analisaram-se por isso alguns exemplos de scripts

com esta tecnologia mais especificamente os baseados no plugin ldquoDOM WINDOWrdquo [50]

que conteacutem alguns tipos de janelas com vaacuterias formas de utilizaccedilatildeo Desenvolveu-se um

script tendo como escolha uma janela que surja quando o rato passa por cima do elemento

A janela fica visiacutevel e desapareceraacute quando o utilizador pressionar o botatildeo de fechar

O proacuteximo passo era arranjar uma soluccedilatildeo elegante e bem estruturada para mostrar a

informaccedilatildeo Para o que se pretende a melhor soluccedilatildeo eacute a estrutura em forma de acordeatildeo

(Figura 415) Tem uma usabilidade muito boa dando ao utilizador uma navegaccedilatildeo

intuitiva Eacute possiacutevel criar vaacuterios separadores horizontais ou verticais que satildeo mostrados

quando se carrega neles Este tipo de navegaccedilatildeo permite optimizar o espaccedilo disponiacutevel

pois basicamente os conteuacutedos partilham o mesmo espaccedilo aparecendo um de cada vez

conforme o seleccionado evitando que a interface se torne confusa Os separadores satildeo

configuraacuteveis podendo assim ter informaccedilotildees diferentes para cada um

Figura 415 ndash Exemplo de uma estrutura do tipo acordeatildeo

48 Interface

Para o utilizador aceder aos serviccedilos disponibilizados eacute necessaacuterio fornecer uma

interface web para servir de intermediaacuteria entre estes Agrave semelhanccedila do que jaacute foi referido

para a implementaccedilatildeo da janela de informaccedilotildees a interface deve ser simplista e faacutecil de

47

utilizar para uma navegaccedilatildeo intuitiva O utilizador deve entender sem dificuldade quais os

recursos disponibilizados e como utilizaacute-los

Esta interface foi desenvolvida em JSP1 utilizando como base coacutedigo HTML e

recorrendo tambeacutem a Java Script

Para permitir seleccionar o tipo de dados que se querem anotar a interface

disponibiliza uma caixa de selecccedilatildeo para cada um deles Estas satildeo geradas

automaticamente de acordo com os tipos definidos no ficheiro de configuraccedilatildeo A interface

oferece tambeacutem a hipoacutetese de seleccionar todas as caixas de selecccedilatildeo de uma soacute vez

atraveacutes de um botatildeo Ao carregar satildeo todas marcadas e o botatildeo passa a ter a funccedilatildeo de

desmarcar (o texto definido no botatildeo tambeacutem altera conforme a sua funccedilatildeo) Este recurso eacute

disponibilizado atraveacutes de uma funccedilatildeo em JavaScriptque efectua uma pesquisa pelos

elementos que correspondam a caixas de texto e altera a propriedade ldquoCheckedrdquo para

verdadeira Esta funccedilatildeo eacute activada por uma caixa de selecccedilatildeo destinada a este efeito De

forma anaacuteloga quando se desseleccionar essa caixa de texto satildeo procuradas todas as caixas

e a propriedade ldquoCheckedrdquo eacute alterada para falsa

Os tipos de documentos que a aplicaccedilatildeo deve suportar satildeo diferenciados atraveacutes de

uma selecccedilatildeo baseada em bototildees radio como os da Figura 416

Figura 416 ndash Exemplo geneacuterico de bototildees radio

Apoacutes a selecccedilatildeo do tipo de documento que se pretende analisar e da selecccedilatildeo do tipo de

dados submetem-se os dados atraveacutes de um botatildeo de confirmaccedilatildeo Neste proceso eacute

construiacutedo o URI de acesso ao Web Service conforme os dados que foram seleccionados

Os paracircmetros necessaacuterios satildeo enviados por query string ao Web Service O paracircmetro

ldquocontentrdquo representa o conteuacutedo a analisar O ldquotyperdquo indica qual o tipo de documento a que

o conteuacutedo se refere documento de texto ou endereccedilo de uma paacutegina da Internet Os

restantes argumentos satildeo os tipos de dados que conforme o valor bdquo0‟ ou bdquo1‟ natildeo estatildeo ou

estatildeo seleccionados respectivamente

Depois ser chamado o Web Service realiza as operaccedilotildees com os respectivos paracircmetros

e devolve a resposta que eacute mostrada num frame Enquanto a informaccedilatildeo eacute enviada e se

espera pela resposta do Web Service eacute apresentada no frame uma animaccedilatildeo a avisar que o

documento estaacute a ser carregado Este processo eacute feito atraveacutes de Java Script que esconde a

animaccedilatildeo quando o documento acaba de ser carregado Feito o carregamento eacute

1 Java Server Pages

48

apresentada toda a informaccedilatildeo com as anotaccedilotildees em evidecircncia e sobrepondo o cursor

surgem as janelas de informaccedilatildeo Estas janelas comunicam com o outro Web Service o

responsaacutevel por gerar as diversas informaccedilotildees relativas agrave anotaccedilatildeo O seu modo de

funcionamento jaacute foi explicado no capitulo 47

49

50

5 Resultados e Validaccedilatildeo do Sistema

Neste capiacutetulo pretende-se mostrar o resultado individual de cada um dos moacutedulos da

aplicaccedilatildeo a sua implementaccedilatildeo e o resultado final da sua junccedilatildeo Cada uma das partes iraacute

ser ilustrada e explicada de forma a fazer perceber como cada uma estaacute feita e como

ficaram interligadas Agrave semelhanccedila do capiacutetulo anterior este tambeacutem seraacute dividido por

vaacuterios pontos para um melhor entendimento dos diversos moacutedulos

A validaccedilatildeo da soluccedilatildeo consiste em alguns testes de comportamento e robustez Fora

feitas avaliaccedilotildees quanto ao tempo que demora a analisar e anotar textos com diferentes

tamanhos e o nuacutemero total de anotaccedilotildees feitas Outros dos testes a ser realizado consiste

em verificar para um mesmo texto se os tempos de execuccedilatildeo se mantecircm uniformes sem

grande variaccedilatildeo Seraacute tambeacutem avaliado o grau de eficaacutecia de um Tokenizer simples em

comparaccedilatildeo com um que faccedila a manipulaccedilatildeo das strings de forma a detectar termos que

contenham sinais de pontuaccedilatildeo parecircntesis ou outros elementos deste tipo

51 Resultados

511 Dicionaacuterio e anotaccedilotildees

O dicionaacuterio e as anotaccedilotildees estatildeo interligados uma vez que estas vatildeo ser feitas com

base no conteuacutedo dele Todo o texto eacute alvo de anaacutelise sendo processado palavra a palavra

Neste contexto surge um problema a anaacutelise de multi-termos Por este conceito entenda-se

termos constituiacutedos por mais de uma palavra O nuacutemero maacuteximo de palavras que um

elemento pode conter eacute definido agrave priori pelo nuacutemero de palavras do maior termo do

dicionaacuterio Desenvolveu-se entatildeo um algoritmo de detecccedilatildeo de multi-termos que passo a

descrever Imaginemos um cenaacuterio hipoteacutetico em que este nuacutemero maacuteximo tem o valor 4

Satildeo seleccionadas e analisadas as 4 primeiras palavras do texto Se corresponder a um

termo este eacute anotado e a analisam-se as 4 palavras seguinte Caso contraacuterio analisam-se as

3 anteriores e o processo eacute anaacutelogo ateacute se ter soacute uma palavra para analisar

A anotaccedilatildeo dos termos eacute feita com base no sistema escolhido para o efeito o CALBC

A sua estrutura seraacute definida da seguinte forma lt e id=rdquoIDrdquo class=rdquoTipo de dadosrdquogt

Termo ltegt Na Figura 51demonstra-se um exemplo de uma anotaccedilatildeo em HTML e com a

respectiva representaccedilatildeo O ldquoMHC class I antigen B56rdquo eacute uma variaccedilatildeo para designar a

51

proteiacutena com o identificador 1B56_HUMAN As proteiacutenas satildeo do tipo de dados 2 logo a

classe seraacute codificada como ldquoC002rdquo

O estilo da representaccedilatildeo eacute definido num ficheiro de configuraccedilatildeo de estilos e

conforme a sua classe seraacute de uma cor diferente para uma visualizaccedilatildeo mais clara

Figura 51 - Exemplo de uma anotaccedilatildeo

512 Conteuacutedo da janela de informaccedilatildeo

A janela iraacute conter 3 separadores verticais que podem ser configuraacuteveis Nas Figuras

52 53 e 54 estaacute representada a janela com as vaacuterias informaccedilotildees O primeiro separador

contem os sinoacutenimos do termo o segundo ligaccedilotildees para publicaccedilotildees relacionadas no

PubMed e o terceiro informaccedilatildeo contida na paacutegina da UniProt (Universal Protein

Resource) O PubMed eacute uma biblioteca que reuacutene milhotildees de citaccedilotildees de literatura

biomeacutedica da MEDLINE O UniProt conteacutem um conjunto de informaccedilotildees funcionais sobre

proteiacutenas Toda esta informaccedilatildeo estaacute centralizada como jaacute foi dito na base de dados

GeNS

Figura 52 ndash Exemplo da janela com informaccedilatildeo ndash sinoacutenimos

52

Figura 53 - Exemplo da janela com informaccedilatildeo ndash publicaccedilotildees

Figura 54 - Exemplo da janela com informaccedilatildeo ndash UniProt

513 Interface Web

Para o utilizador aceder aos recursos da aplicaccedilatildeo eacute fornecida uma interface Web Esta

conteraacute diversas funcionalidades

Escolher o(s) tipo(s) de dados a serem anotados

Anotar texto inserido pelo utilizador

Anotar texto de uma paacutegina da Internet

Anotar texto proveniente de um ficheiro

Vatildeo agora ser mostradas algumas imagens que ilustram estas funcionalidades de

forma a dar a perceber como estatildeo implementadas

Quando o utilizador acede agrave aplicaccedilatildeo surge a interface ilustrada na Figura 55 Simples e

de faacutecil utilizaccedilatildeo para facilitar a usabilidade de quem vai utilizar Para a escolha do tipo

de dados fornece-se um conjunto de caixas de selecccedilatildeo que se pode marcar uma a uma ou

53

carregar no botatildeo ldquocheck allrdquo para seleccionar todas - Figura 56 Estas caixas satildeo geradas

dinamicamente de acordo com o ficheiro de configuraccedilatildeo O estilo do nome eacute atribuiacutedo

conforme o ficheiro de estilos O botatildeo ldquowikifyrdquo tem a funccedilatildeo de confirmar as opccedilotildees do

utilizador e apresentar os resultados que satildeo visualizados num frame independente

Figura 55 ndash Paacutegina inicial

Figura 56 ndash Caixas de selecccedilatildeo para os diferentes tipos

A escolha entre texto ficheiro ou paacutegina da Internet eacute feita atraveacutes de radio buttons

com 3 bototildees que gera automaticamente uma caixa de texto quando se carrega na opccedilatildeo

para texto ou para paacutegina Na opccedilatildeo de ficheiro abre uma janela pequena como a da Figura

57 para se escolher o ficheiro e fazer o seu carregamento

54

Figura 57 ndash Janela para carregamento de ficheiros

A apresentaccedilatildeo dos resultados para o caso de texto inserido ou carregado de um

ficheiro corresponde agrave Figura 58 enquanto que a anaacutelise de uma paacutegina da Internet estaacute

representada na Figura 59 Em algumas figuras apenas se apresenta um recorte da

interface

Figura 58 ndash Anotaccedilatildeo de texto

55

Figura 59 ndash Anotaccedilatildeo de texto de uma paacutegina da Internet

Aleacutem de nesta paacutegina ser possiacutevel efectuar as operaccedilotildees jaacute explicadas satildeo fornecidas

tambeacutem atraveacutes do menu duas opccedilotildees de navegaccedilatildeo como se pode verificar na Figura 55

ldquoAboutrdquo e ldquoContactsrdquo O conteuacutedo destas paacuteginas vai ser explicado brevemente com a

respectiva ilustraccedilatildeo

Como se pode ver na Figura 510 esta paacutegina pretende transmitir ao utilizador um

pouco de informaccedilatildeo sobre os objectivos da aplicaccedilatildeo respondendo a perguntas ou dando

informaccedilotildees como

O que eacute o BioWikifier

Como usaacute-lo

Conteuacutedo do dicionaacuterio

Informaccedilatildeo disponiacutevel

Sugestotildees

As respostas as perguntas satildeo mostradas atraveacutes de uma estrutura do tipo acordeatildeo

Clicando na pergunta a resposta aparece e a que estava a ser mostrada antes eacute escondida

A primeira pergunta pretende demonstrar o propoacutesito do sistema e os seus objectivos

De seguida fornece-se uma pequena explicaccedilatildeo sobre como utilizar a aplicaccedilatildeo Depois

explica-se quais os tipos de termos que actualmente a aplicaccedilatildeo identifica Na penuacuteltima

pergunta demonstra-se qual o tipo de informaccedilatildeo que se disponibiliza para cada termo e

por fim incentiva-se a que o utilizador decirc a sua opiniatildeo ou sugestatildeo a partir do formulaacuterio

de contacto

1

56

Figura 510 ndash Paacutegina About BioWikifier

O formulaacuterio de contacto eacute mostrado na Figura 511 O utilizador preenche os seus

dados pessoais (nome paiacutes e endereccedilo electroacutenico) depois preenche o assunto

seleccionando opiniatildeo sugestatildeo reportar bug ou questatildeo e por fim escreve a sua

mensagem na caixa de texto correspondente e submete atraveacutes do botatildeo ldquosubmitrdquo que

envia o contacto e redirecciona para a paacutegina inicial

Figura 511 ndash Paacutegina com formulaacuterio para contacto

57

52 Testes de validaccedilatildeo

No desenvolvimento de aplicaccedilotildees um dos pontos de grande importacircncia eacute a avaliaccedilatildeo

da soluccedilatildeo obtida Para esse efeito a realizaccedilatildeo de testes eacute fundamental de forma a avaliar

o comportamento e desempenho do sistema em vaacuterios cenaacuterios

Foram utilizados um total de 13 ficheiros de texto com diferentes tamanhos 1KB

5KB 10KB 20KB 50KB 100KB 200KB 500KB 1000KB 2000KB 3000KB 4000KB

e 5000KB Os resultados dos testes efectuados iratildeo ser mostrados em tabelas e

representados graficamente

No primeiro teste para cada um destes ficheiros iraacute ser mostrado o tempo que demora

a pesquisa e marcaccedilatildeo dos termos e o seu nuacutemero total Este teste vai possibilitar verificar

se estes tempos se mantecircm proporcionais ao tamanho do texto analisado Na Tabela 51

estatildeo os resultados obtidos e a sua representaccedilatildeo estaacute ilustrada no graacutefico da Figura 512

Tabela 51 - Testes de tempo e nuacutemero de anotaccedilotildees para textos com vaacuterios tamanhos

Tamanho

(KB)

Tempo

(ms) Anotaccedilotildees

1 8 5

5 38 25

10 89 50

20 139 100

50 426 250

100 662 500

200 1392 1000

500 3303 2500

1000 6398 5000

2000 13816 10000

3000 19281 15000

4000 27119 20000

5000 32848 25000

58

Figura 512 ndash Relaccedilatildeo entre o tamanho do texto e o tempo da sua anotaccedilatildeo

No graacutefico estatildeo ilustrados os valores praacuteticos e teoacutericos representados por uma linha

ligada por pontos e por uma recta mais fina respectivamente Por valores teoacutericos entenda-

se o tempo que demoraria a execuccedilatildeo proporcionalmente ao tamanho

Pela anaacutelise pode-se inferir que os valores satildeo bastante aceitaacuteveis mantendo uma

proporccedilatildeo de tempo muito satisfatoacuteria agrave medida que se aumenta o tamanho Pela recta dos

valores teoacutericos pode-se tambeacutem verificar que os valores praacuteticos tecircm um desvio pouco

significativo Conclui-se entatildeo que o sistema tem um comportamento regular com o

aumento do tamanho de texto a analisar

O proacuteximo teste consiste em executar a aplicaccedilatildeo 20 vezes para o mesmo texto e

verificar se os tempos de execuccedilatildeo se mantecircm sem variaccedilatildeo significativa avaliando se o

comportamento do sistema para a mesma situaccedilatildeo eacute idecircntico O cenaacuterio vai ser repetido

para trecircs tamanhos de texto diferentes um mais pequeno (10 KB) um meacutedio (500 KB) e

um grande (5000 KB) Apenas seratildeo apresentados os valores da meacutedia miacutenimo maacuteximo e

o desvio padratildeo com a representaccedilatildeo graacutefica das 20 execuccedilotildees Os valores isolados de cada

execuccedilatildeo encontram-se em anexo Todos os valores de tempo tecircm como unidade os

milissegundos Cada par tabelagraacutefico eacute apresentado numa paacutegina individual contendo na

uacuteltima uma anaacutelise

0

5000

10000

15000

20000

25000

30000

35000

0 1000 2000 3000 4000 5000

Relaccedilatildeo tamanhotempo

Valores praacuteticos

Valores teoacutericos

tempo (ms)

tamanho (KB)

59

Tabela 52 - Estatiacutesticas para 10 KB

Figura 513 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 10 KB

Tabela 53 - Estatiacutesticas para 500 KB

Estatiacutesticas para 500 KB

Meacutedia (ms) 32985

Maacuteximo (ms) 3441

Miacutenimo (ms) 3266

Desvio padratildeo (ms) 414375

Estatiacutesticas para 10 KB

Meacutedia (ms) 68

Maacuteximo (ms) 81

Miacutenimo (ms) 62

Desvio padratildeo (ms) 3218836565

0

20

40

60

80

100

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 10Ktemp

execuccedilatilde

60

Figura 514 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 500 KB

Tabela 54 - Estatiacutesticas para 5000 KB

Estatiacutesticas para 5000 KB

Meacutedia (ms) 32867

Maacuteximo (ms) 33711

Miacutenimo (ms) 32089

Desvio padratildeo (ms) 368671875

Figura 515 - Representaccedilatildeo graacutefica de 20 execuccedilotildees par um texto com 5000 KB

0

500

1000

1500

2000

2500

3000

3500

4000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 500Ktempo

execuccedilatildeo

0

5000

10000

15000

20000

25000

30000

35000

40000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Tempos de execuccedilatildeo - 5000Ktempo

execuccedilatilde

61

Depois de analisar estes graacuteficos e tabelas constata-se que as vaacuterias execuccedilotildees mantecircm

valores uniformes e sem grandes oscilaccedilotildees No primeiro caso para 10 KB o desvio

padratildeo eacute de aproximadamente 3 milissegundos que se pode considerar desprezaacutevel Para

500 KB o cenaacuterio repete-se obtendo valores bastante uniformes que datildeo origem a um

graacutefico que se aproxima bastante de uma recta que em termos teoacutericos seria o resultado

ideal Para o uacuteltimo caso mais uma vez o caso repete-se com valores muito proacuteximos O

desvio padratildeo aumentou quase 10 vezes o que eacute normal dado que o tamanho de texto

tambeacutem sofreu um grande aumento Contudo natildeo se pode considerar muito significativo

uma vez que se estaacute a falar de um desvio padratildeo de aproximadamente 370 milissegundos

53 Sumaacuterio

Como se pode concluir apoacutes a anaacutelise deste capiacutetulo o sistema final teve resultados

bastante positivos A interface disponibilizada ao utilizador demonstra uma faacutecil utilizaccedilatildeo

e uma boa usabilidade A integraccedilatildeo desta com os restantes serviccedilos foi concluiacuteda com

ecircxito

Em termos de desempenho o sistema mostrou um comportamento bastante bom

verificando-se uma proporcionalidade no aumento do tempo de execuccedilatildeo em relaccedilatildeo ao

tamanho do texto analisado Isto demonstra que o sistema eacute estaacutevel e que natildeo estaacute

susceptiacutevel a oscilaccedilotildees Para ajudar a comprovar isso pode-se observar os resultados dos

vaacuterios tempos de execuccedilatildeo para o mesmo tamanho de texto Os tempos vatildeo se mantendo

na mesma gama de valores sofrendo oscilaccedilotildees que podem ser consideradas desprezaacuteveis

62

6 Conclusotildees e Trabalho Futuro

61 Conclusotildees

Este trabalho consistiu no desenvolvimento de um Wikifier Biomeacutedico que permite

uma anotaccedilatildeo automaacutetica de termos Para isso estudaram-se teacutecnicas de pesquisa de termos

em dicionaacuterios sistemas de anotaccedilotildees e formas de apresentar informaccedilotildees adicionais ao

utilizador

Como se constatou este tipo de sistemas eacute muito uacutetil em vaacuterios contextos A marcaccedilatildeo

de conceitos importantes aliada agrave disponibilizaccedilatildeo de informaccedilotildees relativa a estes permite

o enriquecimento do texto contribuindo desta forma para que o utilizador desfrute de uma

experiecircncia mais rica

Este estudo sugere tambeacutem que existem tecnologias de armazenamento de strings que

satildeo bastante uacuteteis e que tecircm um desempenho muito bom pois encontram-se optimizadas

para uma raacutepida identificaccedilatildeo de termos

Em termos praacuteticos pode-se inferir que as funcionalidades baacutesicas foram

implementadas com sucesso Conseguiram-se conjugar os principais objectivos de forma a

obter o sistema pretendido Criou-se um dicionaacuterio de termos que permite uma raacutepida

pesquisa conseguindo assim obter um bom desempenho numa das partes da aplicaccedilatildeo que

poderia tornar o sistema mais moroso A tecnologia do dicionaacuterio pode ser alterada atraveacutes

da troca do pacote actual pelo do novo dicionaacuterio e implementado os meacutetodos da interface

de acordo com esse pacote A marcaccedilatildeo de termos eacute feita atraveacutes de um anotador que eacute

muito simples e flexiacutevel sendo facilmente personalizaacutevel de modo a conter os atributos que

forem necessaacuterios

Tudo isto eacute fornecido atraveacutes de um Web Service que conjuga todas as funcionalidades

do Wikifier podendo ser utilizado com qualquer aplicaccedilatildeo possibilitando desta maneira

uma faacutecil integraccedilatildeo em qualquer sistema que seja necessaacuterio este tipo de recurso

despoletar

Este Web Service eacute invocado pela interface Web desenvolvida Esta interface ficou

simples mas com uma usabilidade bastante boa visto que as funcionalidades estatildeo

perfeitamente acessiacuteveis sem ter de estar a navegar ao longo da paacutegina ou para outras

paacuteginas

O segundo Web Service criado permitiu de uma forma simples obter informaccedilotildees

adicionais sobre os termos seleccionados atraveacutes do seu tipo de dados e do identificador

63

Este serviccedilo tambeacutem pode ser reutilizado por outras aplicaccedilotildees bastando aceder aos URI‟s

correspondentes para obter as vaacuterias informaccedilotildees Estas satildeo mostradas numa janela

desenvolvida atraveacutes da biblioteca jQuery que eacute vastamente utilizada contendo recursos

muito diversificados e uacuteteis De uma maneira simples e raacutepida conseguiu-se desenvolver

uma janela apelativa e com informaccedilatildeo bem organizada

Comparando com os sistemas analisados no capiacutetulo 23 esta aplicaccedilatildeo aproxima-se

mais dos conceitos do Exalabs Wikifier do Concept Web Linker e Reflect O iHop difere

um pouco uma vez que o objectivo eacute permitir juntar numa paacutegina frases de diversas

publicaccedilotildees que estejam relacionadas com o contexto

Seratildeo agora enumerados alguns pontos fortes e fracos do sistema desenvolvido

Pontos fortes

Rapidez na pesquisa de termos

Recurso a Web Services para disponibilizar os serviccedilos podendo estes ser

integrados em vaacuterias aplicaccedilotildees

Sistema de anotaccedilotildees utilizado eacute muito flexiacutevel permitindo adicionar novos

atributos caso seja necessaacuterio

Informaccedilotildees disponibilizadas na janela de popup podem ser alteradas

Pontos fracos

Arquitectura podia ser melhorada Este ponto foi uma das principais falhas do

sistema visto que os vaacuterios moacutedulos deveriam estar mais definidos e

independentes

O processo de anaacutelise do texto e divisatildeo em palavras uacutenicas (tokens) poderia jaacute

estar mais optimizado de forma a amenizar a quantidade de termos que natildeo satildeo

identificados por estarem associados com algum sinal de pontuaccedilatildeo ou entre

parecircntesis por exemplo

Para terminar eacute de referir que esta dissertaccedilatildeo foi muito enriquecedora O Wikifier

desenvolvido eacute bastante interessante e tem uma grande utilidade numa aacuterea cientiacutefica de

grande relevacircncia como a Biomedicina A aplicaccedilatildeo mostrou-se uma ferramenta bastante

uacutetil fornecendo informaccedilotildees sobre milhotildees de termos atraveacutes de bases de dados cientiacuteficas

Ao longo do desenvolvimento deste sistema foram-se ganhando bases cada vez maiores

permitindo assimilar aperfeiccediloar e consolidar muitos conceitos ao niacutevel do

desenvolvimento de aplicaccedilotildees e da utilizaccedilatildeo de diversas tecnologias Constatou-se que a

arquitectura de uma aplicaccedilatildeo eacute bastante importante e conveacutem que seja modular de forma a

que quando surja uma nova opccedilatildeo para esse moacutedulo se possa facilmente trocar uma

implementaccedilatildeo por outra A inclusatildeo de Web Services foi muito positiva para a

produtividade da aplicaccedilatildeo uma vez que este tipo de serviccedilos se consegue integrar muito

rapidamente com qualquer moacutedulo ou interface Web Em termos de outras tecnologias

64

utilizadas foi muito importante analisar e perceber como funcionam vaacuterias estruturas de

dados para manipulaccedilatildeo de strings e ter a percepccedilatildeo que haacute estruturas que conseguem um

desempenho elevadiacutessimo Foi tambeacutem uacutetil aprender a trabalhar com bibliotecas como

jQuery ganhando assim algumas noccedilotildees de desenvolvimento de interfaces Web apelativas

de forma raacutepida e eficiente

62 Trabalho Futuro

Quanto ao trabalho futuro haacute alguns recursos interessantes que poderiam ser

incorporados Um deles seria uma cache de paacuteginas Web para melhorar o desempenho do

sistema Ao estar em cache uma paacutegina natildeo necessita de ser carregada novamente

poupando tempo Uma possiacutevel implementaccedilatildeo poderia ser feita recorrendo a uma

biblioteca de encurtamento de endereccedilos que utiliza uma hash para codificar um endereccedilo

e de seguida guardaacute-lo num ficheiro de gestatildeo de paacuteginas Deste modo quando se

pretendesse carregar uma paacutegina verificava-se se essa hash estaacute no ficheiro

Para melhorar o desempenho da marcaccedilatildeo de termos poderia aperfeiccediloar-se o processo

de identificaccedilatildeo destes Isto seria feito recorrendo a estrateacutegias de divisatildeo do texto em

palavras (tokens) em que se procede agrave eliminaccedilatildeo de sinais de pontuaccedilatildeo e de siacutembolos

como parecircntesis hiacutefenes barras entre outros Desta forma conseguia-se obter um maior

desempenho quanto ao nuacutemero de termos identificados

Outro recurso interessante seria a identificaccedilatildeo de termos conforme o contexto

Imaginemos um cenaacuterio de um nome de uma doenccedila por extenso mas que natildeo estaacute

especificada o seu tipo e pode portanto ser aplicada a vaacuterios termos diferentes Se um dado

termo ocorrer 2 ou 3 vezes nesse contexto eacute natural que essa doenccedila lhe corresponda

65

66

Referecircncias

1 Wikipeacutedia Available from wwwwikipediaorg 2 Brass P Advanced data structures 2008 Cambridge New York Cambrige University

Press xvi 456 p 3 van Deursen A and E Visser The Reengineering Wiki in Software Maintenance and

Reengineering 2002 Proceedings Sixth European Conference on 2002 4 Hester AJ and JE Scott A Conceptual Model of Wiki Technology Diffusion in Hawaii

International Conference on System Sciences Proceedings of the 41st Annual 2008 5 Kawamoto K et al Semantic Wiki Where Human and Agents Collaborate in Web

Intelligence and Intelligent Agent Technology 2008 WI-IAT 08 IEEEWICACM International Conference on 2008

6 Rada Mihalcea AC Wikify Linking Documents to Encyclopedic Knowledge p 9 7 Exalabs E Wikifier Available from httpwikifierlabsexaleadcom 8 KNEWCO Concept Web Linker Available from

httpconceptweblinkerwikiprofessionalorg 9 Reflect highlights protein and small molecule name Available from httpreflectws 10 iHOP 11 Exalabs E Wikifier enhance your content Available from

httplabsexaleadcomexperimentswikifierhtml 12 About WikiProfessional 13 Evangelos Pafilis SIOD Lars J Jensen Michael Kuhn Heiko Horn and Reinhard

Schneider European Molecular Biology Laboratory Available from httpwwwemblde 14 PubMed - National Center for Biotechnology Information US National Library of

Medicine Available from httpwwwncbinlmnihgovpubmed 15 Hatcher E O Gospodnetic and M McCandless Lucene in action 2009 Greenwich

Conn London Manning Pearson Education [distributor] 16 Ma J-r et al Data Acquisition and Processing of Embedded Network Controller in

Measuring Technology and Mechatronics Automation 2009 ICMTMA 09 International Conference on 2009

17 Olson MA K Bostic and M Seltzer Berkeley DB Available from httpwwwusenixorgeventsusenix99full_papersolsonolson_html

18 Ming-Syan C and PS Yu Optimal design of multiple hash tables for concurrency control Knowledge and Data Engineering IEEE Transactions on 1997 9(3) p 384-390

19 Yen IL and F Bastani Hash table in massively parallel systems in Parallel Processing Symposium 1992 Proceedings Sixth International 1992

20 Dury A Auto-adaptive distributed hash tables in Grid Computing 2005 The 6th IEEEACM International Workshop on 2005

21 Li R Distributed Hash Table - P2P Routing and Searching Algorithms Available from httpcshusteducnrxliteachingp2p220DHTpdf

22 Ellis J Introduction to Cassandra at OSCON 09 23 JonathanEllis Apache Cassandra Official website - A description of the Cassandra data

model 2009 Available from httpwikiapacheorgcassandraDataModel 24 JonathanEllis Apache Cassandra Official website - Apache Cassandra Glossary 2009

Available from httpwikiapacheorgcassandraDataModel 25 JonathanEllis Apache Cassandra Official website - Articles and Presentations - Up and

Running with Cassandra 2009

67

26 Project Voldemort Official website A distributed database Available from httpwwwproject-voldemortcom

27 Project Voldemort A distributed database - Design Available from httpwwwproject-voldemortcomDesign

28 Brass P Advanced data structures 2008 Cambrige University Press Cambridge New York p xvi 456 p

29 Oono M et al A compression method using link-trie structure for natural language dictionaries in Computing amp Informatics 2006 ICOCI 06 International Conference on 2006

30 Nilsson S and M Tikkanen Implementing a dynamic compressed trie in Proceedings WAE98 1998 Germany

31 Hae-Won C and K Hyun-Sung The Suffix Tree Construction for Large Sequences over Hand-held Device in Information Science and Security 2008 ICISS International Conference on 2008

32 Gusfield D Suffix trees (and relatives) come of age in bioinformatics in Bioinformatics Conference 2002 Proceedings IEEE Computer Society 2002

33 Introducing JSON Available from httpwwwjsonorg 34 YAML Available from httpwwwyamlorg 35 Newcomer E Understanding Web Services XML WSDL SOAP and UDDI 2002 Addison-

Wesley Longman Publishing Co Inc 332 36 Cerami E Web Services Essentials ed SL Simon 2002 OReilly ampamp Associates Inc

320 37 Haseman W MN Haines and F Armour Technology and Strategies for Realizing

Service-Oriented Architectures with Web Services in System Sciences 2007 HICSS 2007 40th Annual Hawaii International Conference on 2007

38 Bosworth A Developing Web services in Data Engineering 2001 Proceedings 17th International Conference on 2001

39 zur Muehlen M JV Nickerson and KD Swenson Developing web services choreography standards--the case of REST vs SOAP Decision Support Systems 2005 40(1) p 9-29

40 Fielding RT Architectural Styles and the Design of Network-based Software Architectures 2000 UNIVERSITY OF CALIFORNIA IRVINE p 180

41 Web Services Description Language (WSDL) Available from httpwwww3orgTRwsdl 42 SOAP Version 12 Available from httpwwww3orgTRsoap12-part1 43 Program Kolokacje Available from httpwwwmimuweduplpolszczyznakolokacje 44 Rebholz-Schuhmann D Collaborative Annotation of a Large-Scale Biomedical Corpus 45 Henk Harkema IR Rob Gaizauskas and Mark Hepple A web service for biomedical term

look-up in Comparative and Functional Genomics 2005 Wiley InterScience Universidade de Sheffield p 9

46 Annotator Web Service 2010 Available from httpwwwbioontologyorgwikiindexphpAnnotator_User_Guide

47 GO Annotation 48 The jQuery Project 2010 49 MooTools a compact javascript framework 2010 50 Dom Window demos based on jqueryDOMwindowjs Available from

httpswipcodylindleycomDOMWindowDemohtml

68

Anexo A - Tabelas com tempos de execuccedilatildeo

Tempos de execuccedilatildeo para os testes temporais do capiacutetulo 451

Tabela A1 - Testes temporais para o Array de sufixos (ms)

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

3 1 5 6

5 0 4 5

4 1 4 4

4 1 4 4

3 1 3 5

3 2 3 3

3 1 4 3

2 1 2 2

1 1 1 2

2 1 2 2

2 0 2 1

1 1 1 2

1 1 1 1

0 1 1 1

0 1 1 1

0 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

69

Array de sufixos

Nuacutemero de termos 200000 400000 800000 1200000

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 0 1 1

1 1 1 1

0 1 1 1

0 1 1 1

1 3 1 1

1 2 1 0

1 1 1 1

0 1 1 1

0 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0 1 1 1

1 0 1 1

1 1 1 1

1 0 1 1

1 1 2 2

Total 32 47 74 77

Tabela A2 - Testes temporais para o indexador Lucene(ms)

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

81 89 184 197

47 54 70 89

38 40 52 65

38 42 50 56

30 34 48 48

28 31 37 49

29 30 35 47

36 33 37 48

70

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

26 31 32 44

21 23 36 43

23 23 36 64

21 22 31 41

22 23 30 44

19 27 30 48

20 21 30 45

29 22 34 55

25 23 31 57

18 21 34 45

20 21 30 64

19 21 30 42

19 20 30 38

18 21 36 40

18 21 39 48

18 25 31 43

18 22 33 40

18 22 30 39

19 22 29 39

18 20 28 39

18 21 31 45

18 21 30 38

18 20 29 39

18 20 33 40

18 21 29 41

19 23 29 38

17 23 30 43

18 31 30 38

19 23 30 40

23 23 30 38

22 32 32 40

18 22 31 39

18 45 29 51

19 26 30 37

17 22 31 40

19 29 30 40

18 28 29 41

18 21 33 42

17 20 30 54

19 22 29 43

71

Lucene

Nuacutemero de termos 200000 400000 800000 1200000

25 20 31 40

19 36 34 40

Total 1151 1353 1823 2424

Tempos de execuccedilatildeo para validaccedilatildeo do sistema - Capiacutetulo 52

Tabela A3 - Tempos de execuccedilatildeo para texto com 10 KB

10 KB

Execuccedilatildeo Tempo (ms)

1 81

2 68

3 63

4 62

5 65

6 63

7 71

8 62

9 64

10 67

11 72

12 67

13 69

14 70

15 72

16 68

17 69

18 69

19 67

72

Tabela A4 - Tempos de execuccedilatildeo para texto com 500 KB

500 KB

Execuccedilatildeo Tempo (ms)

1 3420

2 3282

3 3314

4 3328

5 3441

6 3357

7 3287

8 3268

9 3289

10 3266

11 3275

12 3312

13 3373

14 3308

15 3278

16 3282

17 3279

18 3294

19 3284

20 3280

73

Tabela A5 - Tempos de execuccedilatildeo para texto com 5000 KB

5000 KB

Execuccedilatildeo Tempo (ms)

1 33103

2 32454

3 33048

4 32308

5 32631

6 32853

7 32681

8 33557

9 33485

10 33711

11 32450

12 33149

13 32789

14 33185

15 32881

16 32089

17 32172

18 32471

19 32185

20 32253

Page 16: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 17: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 18: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 19: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 20: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 21: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 22: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 23: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 24: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 25: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 26: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 27: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 28: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 29: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 30: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 31: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 32: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 33: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 34: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 35: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 36: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 37: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 38: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 39: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 40: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 41: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 42: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 43: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 44: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 45: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 46: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 47: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 48: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 49: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 50: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 51: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 52: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 53: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 54: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 55: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 56: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 57: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 58: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 59: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 60: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 61: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 62: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 63: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 64: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 65: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 66: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 67: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 68: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 69: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 70: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 71: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 72: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 73: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 74: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 75: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 76: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 77: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 78: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 79: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 80: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 81: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 82: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 83: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 84: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 85: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 86: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 87: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 88: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 89: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 90: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 91: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática
Page 92: Universidade de Departamento de Electrónica, Telecomunicações … · 2013. 9. 4. · Universidade de Aveiro 2010 Departamento de Electrónica, Telecomunicações e Informática