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