Recuperação de informação em documentos XML
Desde 2000, quando aconteceu o primeiro workshop sobre XML e Recuperação de Informação,
este tema tem estado presente nas conferências ACM SIGIR, mostrando o interesse da comunidade de
Recuperação de Informação em explorar melhor as informações semi-estruturadas, dando a estas um
enfoque de RI, em contrapartida ao enfoque de Banco de Dados que sempre receberam. Esta abordagem é
importante para estender o papel do XML além do objetivo de troca de dados na Web , tornando-o
interessante para troca de informação, dentro de toda a flexibilidade e liberdade que caracterizam a Web.
Em 2002, na Finlândia, durante o 2° workshop sobre o tema, debates sobre o sentido da
recuperação de documentos XML, levaram a conclusão de que é importante trata-la desvinculada de
operações de Banco de Dados.
Tendo estudado a Web Semântica anteriormente, e concluído ser uma proposta ambiciosa demais
para a diversidade da Web e pouco disseminada até o momento, optamos por recuar um passo atrás e
estudar de que forma as informações semi-estruturadas, e mais especificamente o XML, podem contribuir
para melhorar a precisão e revocação das máquinas de busca. Fomos motivados pelo entendimento de que
as
tags ajudam a definir o significado dos termos que delimitam, podendo, conseqüentemente, contribuir
para a precisão dos resultados de uma pesquisa.
Com este objetivo, os principais artigos encontrados sobre o assunto foram estudados e
comparados, permitindo algumas conclusões que servirão de base para a escolha de futuros caminhos.
Apresentaremos um breve apanhado de cada um dos artigos abordando suas características mais
marcantes, os principais avanços e limitações, seguido de um quadro comparativo. E fechando o presente
trabalho apresentaremos nossas conclusões e uma proposta para trabalhos futuros.
Artigo [1] - Searching Text-rich XML Documents with Relevance Ranking
Assumindo o compromisso de utilizar o máximo possível as técnicas convencionais de
Recuperação de Informação, seu principal objetivo é permitir a recuperação de documentos XML
ordenados por relevância, em contraposição às diversas linguagem que tratam apenas as pesquisas
exatas. As consultas serão genéricas, e os resultados não serão exatos, permitindo a ordenação por
relevância, calculada a partir do grau de similaridade entre a consulta e o documento.
O Artigo considera intratável a recuperação de documentos XML com estruturas arbitrárias e
impõe restrições aos tipos de sub-estruturas dos documentos que poderão ser especificadas na consulta. É
definido o conceito de “campos de pesquisa “ mapeados em sub-estruturas dos documentos.A partir
dessa decisão de projeto, somente sub-estruturas especificas, chamadas de
tag-path, poderão ser
apontadas por uma consulta.
Os trechos em negrito na figura 1.0 correspondem a
tag-paths.
Fig 1.0
Os princípios básicos do projeto são:
·
O sistema indexa e pesquisa documentos XML bem-formados, sem considerar as DTDs;
·
Um número finito de sub-estruturas pesquisáveis serão definidas previamente à indexação . A
associação entre campos de pesquisas e
tag-paths será definida em um arquivo chamado Format
File;
·
O indexador verifica o Format File e cria um arquivo para cada “campo de pesquisa”;
·
Um serviço de aplicação deverá formular uma consulta aceitável pela máquina de busca a partir da
informação requisitada pelo usuário. Para isso, este serviço deverá conhecer os “campos de
pesquisa“ e sua associação semântica com as sub -estruturas dos documentos XML.
A implementação da máquina de busca possui a arquitetura mostrada na figura 2.0 , cujos módulos
funcionais detalhamos a seguir:
Fig 2.0
Format File
- Este arquivo destina-se a definir os índices que serão criados para um conjunto de
documentos da coleção. Em sua estrutura ele traz o nome e o formato dos arquivos de índices, as
associações entre
tag-paths e “campos de pesquisas” e a localização de processadores específicos para o
idioma dos documentos.
Indexer –
É o módulo responsável pela interpretação do Format File e posterior criação dos índices nele
definidos. Os termos contidos em cada campo de um documentos receberão pesos utilizando a fórmula
tradicional de TFxIDF. Neste módulo ocorrerá a leitura, extração dos termos e o cálculo de seus pesos .
Query Engine -
A máquina de pesquisa foi implementada acrescentando-se extensões a uma máquina de
busca de texto já existente. Ela permite a busca por termos ou
tags.
Aplication Service
– É o módulo responsável pela interpretação da estrutura da consulta proposta pelo
usuário, para identificar o “campo de pesquisa” e o respectivo arquivo de índice.
Não há esclarecimentos sobre como o Format File será criado, nem como consultas sem indicação
de sub-estrutura serão tratadas. Os resultados apresentados referem-se apenas ao tempo de processamento
necessário à geração dos índices e ao tamanho dos mesmos, mas nenhuma análise sobre a precisão dos
resultados é apresentada.
A grande limitação desta proposta é a pré-definição da estrutura dos índices através dos Format
Files, diminuindo a flexibilidade das pesquisas, mas representa a primeira tentativa de explorar a estrutura
XML em benefício da recuperação de informação.
Artigo [2] – Generating Vector Spaces On-the-fly for Flexible XML Retrieval
O foco dessa proposta é criar mecanismos que permitam ao usuário de uma máquina de busca
compor consultas que explorem a estrutura dos documentos XML, obtendo resultados ordenados por
relevância de acordo com uma granularidade desejada. Em busca deste objetivo, rompe as barreiras da
máquina de busca tradicional que enxergam os documentos de forma plana e também as limitações das
linguagens de consulta de XML que efetuam basicamente pesquisas exatas.
A ordenação por relevância leva em conta a estrutura do documento e as restrições que a consulta
impõe sobre esta estrutura. Mais especificamente, os conteúdos em diferentes níveis da árvore que
representam o documento terão importância diferente para consultas diferentes. Os autores utilizam a
idéia de Fuhr [4] que introduz pesos chamados de
augmentation weights atribuídos a estatísticas como
TFxIDF de cada termo, conforme a sua posição na árvore. Os elementos presentes na estrutura de cada
documento são agrupados em nós de indexação que implementam as listas invertidas (vide fig 3.0)
Fig 3.0
As consultas são agrupadas em três tipos diferentes, conforme o escopo da árvore que pretendem
abranger:
Single_category
– consultas que buscam termos em apenas uma sub-árvore. Por exemplo consultas
interessada apenas em livros de medicina, na arvore mostrada na fig 3.
Multi-category
– consultas que buscam termos em mais de uma sub-árvore. Por exemplo consultas
interessadas em livros sobre medicina e biologia.
Nested- category
– consultas que buscam termos em toda uma sub-árvore mas cujos elementos possuem
diferentes relevâncias para uma mesma consulta. Por exemplo o elemento título e parágrafo no exemplo.
(a presença de um termo no título certamente será mais relevante que a presença do mesmo termo num
parágrafo.)
Para cada uma das três categorias de consulta os termos terão pesos diferentes, dependendo da
estrutura da consulta. Estes pesos deverão ser calculados dinamicamente a partir de um índice básico précalculado.
Os índice básicos serão criados para cada elemento da árvore que possuem conteúdo textual ,
sendo que o artigo não detalha como isso ocorrerá, mas apenas sugere que poderão ser criados a partir de
técnicas padrões de RI como extração de termos e eliminação de
stop words. Partindo destes índices
básicos ,cada tipo de consulta terá uma fórmula especifica obtidas a partir do Modelo Vetorial.
Eq.1.0 – Single-category
Eq. 2.0 - Multi-category
Eq. 3.0 – Nested_category
Em todas as equações observa-se que as estatísticas são calculadas para cada elemento na estrutura
do documento e não para cada documento, como na fórmula original do Modelo Vetorial. Na equação 2.0
a freqüência do elemento na coleção será a somatória da freqüência do elemento nas diversas categorias
abrangidas pela consulta (
ief mcat). Para a consulta aninhada (equação 3.0) a relevância será a soma
ponderada da relevância para uma categoria simples, onde os pesos serão os
augmentation weights
O grande avanço deste artigo é a flexibilidade admitida no processo de indexação, criando índices
específicos para cada documento sem restrições em sua estrutura. Em contrapartida o processamento da
consulta torna-se mais demorado tendo em vista a maior complexidade das fórmulas especialmente para
consultas em multi-categorias e categorias aninhadas.
A intenção de tratar diferentes granularidades de consulta, por outro lado, exigem do usuário um
conhecimento da estrutura do documento ou a sua dedução. Não há a possibilidade de uma busca
integrada em documentos XML ou não, uma vez que os índices trazem estatísticas a nível de elemento e
não de documento. Destina-se portanto, exclusivamente à recuperação de informação em documentos
XML.
Artigo [3] – An Extension of the Vector Space Model for Querying XML Documents via XML
Fragments
Esta proposta busca criar uma ferramenta de pesquisa mais amigável, onde usuários possam
expressar suas consultas na forma de texto livre ou através de consultas mais complexas dependendo do
conhecimento que possuem das DTDs. O resultado também será ordenado por relevância colocando no
topo do
ranking documentos cuja estrutura mais se aproxime daquela proposta na consulta.
O
ranking será gerado a partir de uma extensão do modelo vetorial que utilizará como unidades de
indexação não apenas termos, mas pares da forma
(ti,ci), onde os termos serão qualificados pelo contexto
onde aparecem. Na equação 4.0, o peso de termos individuais será substituído pelo peso dentro de uma
contexto,
wd(t,c). Mas além disso o modelo vetorial deixa de ter dimensões ortogonais entre t e c,
passando a considerar diferentes níveis de semelhança entre os contexto da consulta e do documento,
representada pelo fator
cr(ci,ck), conforme equação 5.0.
RVS(q,d) =
å wq(ti)*wd(ti)/ |Q|*|D| Eq. 4.0
RVS(q,d) =
åci åck wq(ti,ci)*wd(ti,ck)*cr(ci,ck)/ |Q|*|D| Eq. 5.0
Durante a indexação os documentos XML serão percorridos e um vetor de pares
(t,c) será extraído
para criar o perfil de cada documento. Armazenando os termos e seus contextos, a lista invertida do
termo
t, contendo todos os documentos onde t aparece, será divida em diversas listas, uma para cada
contexto, permitindo assim a recuperação do termo em determinado contexto. A estrutura dos
indexadores armazenará
t e c como uma única chave t#c e no momento da recuperação o sistema poderá
identificar ocorrências precisas de
t dentro de um contexto c. Poderá, também, recuperar todos os
contextos onde
t aparece fazendo uma junção de todas as listas através do sufixo t#. As consultas poderão
ser formuladas contendo os termos dentro de contextos ou apenas termos, como numa máquina de busca
tradicional, ou poderá também conter uma mistura das duas situações, como por ex: