Tópicos em Bancos de Dados: Sistemas de Informação
Inteligentes 1997/2
O servidor
Este documento discute os tipos de dados e os serviços implementados
pelo servidor de forma independente de implementação. Nosso
propósito aqui é definir e formalizar os tipos de dados e
as operações disponíveis para o uso efetivo do servidor
Tipos de dados e funções
Nesta seção discutiremos as estruturas de dados usadas pela
aplicação para troca de dados entre os classificadores e
o servidor TREC.
Veja as definições e convenções
deste trabalho antes de prosseguir.
Vamos assumir a existência dos seguintes tipos de dados básicos:
documento, texto, termo, frequencia, idf e norma. Vamos assumir
ainda a seguinte notação: [ a1,
..., an ] representa um conjunto
(possivelmente vazio) de elementos do mesmo tipo a, e ( a1,
b1, ... , k1)
representa uma tupla de elementos de tipos a,
b, ... , k. Finalmente, vamos assumir que uma tupla ou
um conjunto definem um novo tipo.
Nesse contexto, temos os seguintes tipos de dados definidos na aplicação:
-
lista_inv : (t : termo, doc_freq : [(d : documento
, f : frequencia)]);
-
term_freq : [(t : termo, f : frequencia)];
-
lista_doc : [d : documento];
-
lista_ter : [t : termo];
-
lista_nor : [n : norma];
-
lista_idf : [i : idf];
Agora vamos definir as assinaturas das funções que serão
implementadas pelo servidor e acessadas remotamente pelos programas classificadores.
Vamos recorrer apenas à definição básica
de uma função: é uma computação que
é aplicada sobre um dado de um determinado tipo e, opcionalmente,
resulta em um dado de um certo tipo. Dizemos que
f : (p : a) -> b, é uma função
que recebe um parâmetro p do tipo a e devolve
como resultado um valor do tipo b. Assim, temos:
-
lista_invertida (p : texto) -> lista_inv;
-
termos_documento (d : documento) -> term_freq;
-
fonte_documento (d : documento) -> texto;
-
norma_documentos (l : lista_doc) -> lista_nor;
-
idf_termos (l : lista_ter) -> lista_idf;
Descrição dos serviços implementados
Vamos descrever sucintamente o comportamento dos serviços implementados
pelo servidor. Este serviços correpondem às funções
acima descritas. Apresentamos ainda alguns detalhes quanto aos casos de
erro previstos e os valores retornados pelo servidor nestes casos.
lista_invertida:
Esta função faz uma pesquisa binária no vocabulário
da coleção procurando pela palavra fornecida pelo programa
de classficação. A estrutura retornada contém o identificador
do termo, que é um inteiro, e uma lista onde cada entrada contém
o identificador de um documento e a frequência do termo naquele documento.
Caso a palavra fornecida não seja encontrada no vocabulário
da coleção, o identificador de termo retornado pela função
conterá o valor -1.
termos_doc:
Esta função retorna um conjunto de pares termo, frequência
associando todos os termos de um dado documento, fornecido como parâmetro,
às suas respectivas frequencias naquele documento. Caso o documento
fornecido não seja encontrado na coleção, será
retornada uma lista vazia, ou seja, sem nenhum elemento.
fonte_documento:
Esta função retorna o texto fonte de um documento. Lembre-se
que o texto fonte retornado está no formato SGML e o servido não
faz nenhum processamento sobre o texto. A intenção
desta função é permitir que o usuário visualize
o documento no momento de realimentar o sistema num processo de realimentação
de relevantes.
Caso o identificador de documento seja inválido será retornado
um texto vazio, ou seja, o único caractere retornado será
um caractere NULO ('\0', em C).
norma_documentos:
Esta função recebe como parâmetro uma lista de (identificadores
de) documentos e retorna uma lista contendo as normas de cada um deles,
na mesma ordem da lista original. Assim, a norma do terceiro documento
da lista de entrada estará na terceira posição da
lista de resposta.
Se algum identificador de documento fornecido for inválido (negativo,
por exemplo) o valor da norma retornado, para aquele documento apenas,
será -1. Os outros termos não serão afetados,
ou seja, o valor da norma para cada um deles será retornado.
idf_termos:
Esta função é bastante semelhante a anterior quanto
ao seu funcionamento. Ela recebe uma lista de (identificadores de) termos
e retorna uma outra lista contendo o valor do idf para cada um destes
termos na ordem em que aparecem na lista de entrada.
Novamente, caso haja algum problema o identificador de documento, o
valor do idf associado àquele termo (apenas) será
-1.
Sugestões para utilizações das funções
acima:
As duas últimas funções passam listas de documentos
e termos para serem pesquisados na coleção. Note que se você
ordenar a lista antes de enviá-la ao servidor o tempo de serviço
será menor.