• Nenhum resultado encontrado

Considerações Sobre As Estruturas Apresentadas

2.5 Considerações Finais

3.1.6 Considerações Sobre As Estruturas Apresentadas

As estruturas apresentadas nos itens anteriores têm suas vantagens e desvantagens. Esta seção faz uma comparação supercial destas estruturas utilizando como base o ar- tigo de Zobel [37] que mostra a comparação entre índices de arquivo invertido e arquivo de assinaturas. No artigo são considerados os seguintes aspectos: espaço utilizado pela

3.1 Índices para Sistemas de RI 28

estrutura, memória extra necessária durante o processamento, tempo de criação do ín- dice, tempo de atualização, escalabilidade, aspectos em relação a função de ordenamento e extensibilidade da estrutura. Estes aspectos são considerados a seguir com um breve resumo comparativo entre as estruturas, conforme seguem:

• Espaço: Em 1981, Haskin estimou que o espaço ocupado pelo arquivo invertido seria cerca de 50% a 300% do tamanho do texto indexado [38] mas com uso de técnicas atuais de compressão (Seção 3.3) o índice chega a ocupar aproximadamente de 6% a 10% do espaço do texto indexado pelo índice [39]. O tamanho de índice de arquivo de assinaturas chega a ocupar de 25% a 40% do espaço do texto indexado pelo arquivo de assinaturas [40, 41]. Para o índice de árvore de suxos o aspecto de espaço utilizado é o que tem maior peso onde o tamanho do índice chega a ocupar de 120% a 240% do tamanho do texto [9]. Este aspecto torna inviável o uso desta estrutura, Entretanto, o uso de array de suxos não é tão dispendioso, necessita cerca de 40% do tamanho do texto;

• Memória: Um índice invertido utiliza memória extra para armazenar o vocabulário que não necessariamente precisa estar em memória por ocupar pouco espaço, entre- tanto, normalmente o vocabulário é mantido em memória para evitar uma operação de leitura à disco extra a cada acesso às listas invertidas. O mesmo acontece para a estrutura de array de suxos, caso seja utilizada a estrutura auxiliar supra-index para armazenar o início das palavras indexadas no array de suxos. De forma aná- loga, comparado com arquivo invertido, o supra-index funciona como o vocabulário e pode ser armazenado em memória para evitar uma operação de acesso a disco a mais. Já arquivo de assinaturas não necessitam de memória extra;

• Tempo de Criação: Basicamente o tempo de criação em índices de arquivo in- vertido e arquivo de assinaturas são equivalentes, os procedimentos para construção dos dois índices são semelhantes, ambos baseados em leitura e divisão do arquivo de entrada como o procedimento descrito na Seção 3.4.1. Entretanto, nos experimen- tos realizados por Zobel [37], o tempo de construção do arquivo invertido foi de 40 minutos, muito menor que os 86 minutos necessários para gerar o arquivo de assi- naturas para uma mesma base textual. Isto acontece basicamente por dois motivos. Primeiro o arquivo invertido tem a vantagem de precisar de menos espaço e com isso a quantidade de dados processadas é menor. E, segundo, arquivo de assinaturas tem a desvantagem de precisar gerar várias vezes valores de hash durante a criação que precisa de mais processamento comparado com operações de lookup em tabelas

3.1 Índices para Sistemas de RI 29

realizadas na construção do arquivo invertido. Em relação ao array de suxos, o tempo de criação chega a ser de 5 a 10 vezes maior que o tempo necessário para criar o arquivo invertido para mesma base [9];

• Atualização: Atualização de índices invertidos é uma operação complexa, depen- dendo do nível de atualização que se procura, pode-ser utilizar um estrutura dinâ- mica para manipular o índice como uma B+-Tree(Seção 3.2). Entretanto, usando

uma estrutura como esta geram novos overheads de espaço extra, pois, a propria estrutura utiliza cerca de 67% espaço extra e gera também um tempo maior de leitura. Para a atualização de um arquivo de assinaturas e array de suxos seria necessário também uma estrutura de B+-Tree. Mesmo assim, métodos de atualiza-

ção do índice podem ser mais ecientes quando são usados atualizações em batches como, por exemplo, usando técnicas descritas nas Seções 3.4 e 3.5;

• Escalabilidade: Para uma consulta qualquer, o número de acessos ao disco nos índices de arquivo invertido quanto e arquivo de assinaturas são independentes de escala, isto é, o custo assintótico de processamento do índice é a quantidade de dados a ser transferida do índice. Entretanto, para arquivos de assinaturas, o custo de processamento é linear em relação ao tamanho do corpus sem levar em consideração a consulta realizada. Em contrapartida, no arquivo invertido, o tamanho médio das listas invertidas é sublinear em relação ao tamanho do corpus, já que a medida que novos termos aparecem são criadas novas listas vazias para estes termos. De forma análoga um array de suxos os blocos que armazenam as entradas do array tem crescimento sublinear. Conseqüentemente, os índices de arquivo invertido e array de suxos têm melhor escalabilidade que o arquivo de assinaturas;

• Ordenamento: Para uma consulta qualquer, é utilizada uma função de ordena- mento para gerar um valor de relevância em cada documento do corpus em relação a consulta. Então, os documento são ordenados em relação a este valor e são retorna- dos os melhores para o usuário. Neste aspecto, o índice invertido possui a vantagem da simplicidade, principalmente considerando a função de ordenamento baseada no cálculo de tdf (Seção 2.2). Neste aspecto, o array de suxos têm vantagem de ofe- recer de forma inata informações necessárias para processamentos de consultas por frase exatas e consultas por proximidades (Seção 2.4). Além disso, um array de su- xos pode ser utilizado para realizar consultas por casamento aproximado diferente de arquivo invertido que precisa fazer um pré-processamento sobre o vocabulário para resolver este tipo de consulta[9];