A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introduction to Information Retrieval Introduction to Information Retrieval CS276: Information Retrieval and Web Search Christopher Manning and Prabhakar.

Apresentações semelhantes


Apresentação em tema: "Introduction to Information Retrieval Introduction to Information Retrieval CS276: Information Retrieval and Web Search Christopher Manning and Prabhakar."— Transcrição da apresentação:

1 Introduction to Information Retrieval Introduction to Information Retrieval CS276: Information Retrieval and Web Search Christopher Manning and Prabhakar Raghavan Lecture 5: Index Compression

2 Introduction to Information Retrieval Today  Estatísticas de coleção em maiores detalhes (com RCV1)  Quão grandes serão o dicionário e os documentos retornados (postings - docID)?  Compressão de dicionário  Compressão da lista de ocorrência Ch. 5

3 Introduction to Information Retrieval Por que compressão(em geral)?  Usa menos espaço em disco  Economiza um pouco de dinheiro  Mantém mais coisas na memória  Aumenta a velocidade  Aumenta a velocidade da transferência de dados do disco para a memória  [ler dado compactado | decompactar] é mais rápido que [ler dado descompactado]  Premissa: Algorítimos de descompressão são rápidos  Verdade para os algorítmos de descompressão que usamos Ch. 5

4 Introduction to Information Retrieval Por que compressão para índices invertidos  Dicionário  Torna-lo pequeno o suficiente para ser mantido na memória principal  Torna-lo tão pequeno que você pode manter algumas listas de ocorrencia na memória principal também  Arquivo(s) da lista de ocorrência (posting)  Reduz o espaço em disco necessário  Reduz o tempo necessário para ler a lista de posting do disco  Grande sistemas de busca mantém uma parte significante dos postings na memória  Compressão permite armazenar mais na memória  Nós vamos analisar varios esquemas de compressão específico para RI Ch. 5

5 Introduction to Information Retrieval Relembrando Reuters RCV1  símboloestatística valor  N documentos 800.000  L # médio tokens por doc200  Mtermos (= palavras dig.)~400.000  # médio bytes por token6 (incl. espaços/pontuação)  # médio bytes por token4.5 (sem espaços/pontuação)  # médio bytes por termo7.5  postings não posicionais100,000,000 Sec. 5.1

6 Introduction to Information Retrieval Parâmetros de índice vs. o que nós indexamos (detalhes IIR Tabela 5.1, p.80) Tamanho detipos de palavras(termos) postings não posicionais postings posicionais dicionárioíndice não posicionalíndice posicional Tamanho (K) ∆%cumul % Tamanho (K) ∆%∆% cumul % Tamanho (K) ∆%∆% cumul % Não filtrado484109,971197,879 Sem números474-2 100,680-8 179,158-9 Case folding392-17-1996,969-3-12179,1580-9 30 stopwords391-0-1983,390-14-24121,858-31-38 150 stopwords391-0-1967,002-30-3994,517-47-52 stemming322-17-3363,812-4-4294,5170-52 Sec. 5.1

7 Introduction to Information Retrieval Lossless vs. lossy compression  Compressão sem perda: Toda a informação é preservada.  Mais usado em RI.  Compressão com perda: Descarta alguma informação  Muitos dos passos de pré-processamento podem ser vistos como lossy compression: case folding, stop words, stemming, eliminação de números. Sec. 5.1

8 Introduction to Information Retrieval Vocabulario vs. tamanho da coleção  Quão grande é o vocabulário de termos?  Ou seja, quantas palavras distintas existem?  Podemos assumir um limite superior?  Não exatamente: Ao menos 70 20 = 10 37 palavras diferentes de tamanho 20  Na prática, o vocabulário se mantém em crescimento junto com o tamanho da coleção  Especiamente com o Unicode Sec. 5.1

9 Introduction to Information Retrieval Vocabulario vs. tamanho da coleção  Lei de Heaps: M = kT b  M é o tamanhdo do vocabulario, T é o número de tokens na coleção  Valores típicos: 30 ≤ k ≤ 100 e b ≈ 0.5  Em um gráfico log-log do tamanho do vocabulario M vs. T, a Lei de Heaps prediz uma linha com inclinação em torno de ½  É a relação mais simples possível entre os dois em um espaço log-log Sec. 5.1

10 Introduction to Information Retrieval Lei de Heaps Para RCV1, a linha pontilhada log 10 M = 0.49 log 10 T + 1.64 é o melhor ajuste dos mínimos quadrados Ainda, M = 10 1.64 T 0.49 então k = 10 1.64 ≈ 44 e b = 0.49. Para os primeiros 1.000.020 tokens, a lei prevê 38.323 termos; e na verdade, 38.365 termos. Fig 5.1 p81 Sec. 5.1

11 Introduction to Information Retrieval Lei de Zipf  A Lei de Heaps nos dá o tamanho do vocabulário em coleções.  Nós também estudaremos a frequência relativa dos termos.  Na linguagem natural, existem muitos termos frequentes, e muitos termos raros.  Lei de Zipf: O i-ésimo termo mais frequente tem uma frequencia proporcional a 1/i.  cf i ∝ 1/i = K/i onde K é uma constante de normalização  cf i é a frequência na coleção: o número de ocorrências do termo t i na coleção. Sec. 5.1

12 Introduction to Information Retrieval Consequências de Zipf  Se o termo mais frequente (the) ocorre cf 1 vezes  Então o segundo termo mais frequente (of) ocorre cf 1 /2 vezes  O terceiro termo mais frequente (and) ocorre cf 1 /3 vezes …  Equivalente: cf i = K/i onde K é o fator de normalização, então  log cf i = log K - log i  Relação linear entre log cf i e log i Sec. 5.1

13 Introduction to Information Retrieval Compressão  Agora, vamos considerar a compressão do espaço para o dicionário e os postings  Índice Básico Booleano somente  Nenhum estudo dos índices posicionais, etc.  Vamos considerar esquemas de compressão Ch. 5

14 Introduction to Information Retrieval COMPRESSÃO DE DICIONÁRIO Sec. 5.2

15 Introduction to Information Retrieval Porque comprimir dicionário?  A busca começa com o dicionário  Nós queremos mantê-lo na memória  Competição do uso da memória com outras aplicações  Dispositivos Embarcados/móveis possuem pouca memória  Mesmo se o dicionário não estiver na memória, precisamos que seja pequeno para um tempo de procura inicial mais rápido  Então, comprimir o dicionário é importante Sec. 5.2

16 Introduction to Information Retrieval Armazenamento do Dicionário – primeira redução  Array de entradas de largura-fixa  ~400,000 termos; 28 bytes/termo = 11.2 MB. Estrutura de busca no Dicionário 20 bytes4 bytes cada Sec. 5.2

17 Introduction to Information Retrieval Termos de largura-fixa é um desperdício  Muitos dos bytes na coluna Termo são desperdiçados – nós alocamos 20 bytes para um termo de 1 letra.  E também não podemos tratar supercalifragilisticexpialidoso ou hidroclorofluorocarbono.  Média de escrita em Inglês ~4.5 caracteres/palavra.  Média do tamanho da palavra em Inglês: ~8 caracteres  Como usamos ~8 caracteres por termo do dicionário?  Palavras curtas dominam a contagem de token mas não são contados na média. Sec. 5.2

18 Introduction to Information Retrieval Comprimindo a lista de termos: Dicionário-como-uma-String ….systilesyzygeticsyzygialsyzygyszaibelyiteszczecinszomo…. Tamanho total da string = 400K x 8B = 3.2MB Ponteiros determinam 3.2M posições: log 2 3.2M = 22bits = 3bytes O dicionário é armazenado como uma (longa) string de characteres: Ponteiro para a próxima palavra indica o fim da palavra corrente Espera-se ganhar mais de 60% de espaço no dicionário. Sec. 5.2

19 Introduction to Information Retrieval Tamanho para dicionários como uma a string  4 bytes por termo para Frequência.  4 bytes por termo para ponteiro para Postings.  3 bytes por ponteiro do termo  Média de 8 bytes por termo  400K termos x 19  7.6 MB (contra 11.2MB para largura-fixa) Agora média 11  bytes/termo,  não 20. Sec. 5.2

20 Introduction to Information Retrieval Blocking  Armazena ponteiros para todo késimo string do termo.  Exemplo abaixo: k=4.  Precisa armazenar o tamanho do termo (1 byte extra) ….7systile9syzygetic8syzygial6syzygy11szaibelyite8szczecin9szomo…. Libera 9 bytes  em 3  ponteiros. Perde 4 bytes para tamanho de termo. Sec. 5.2

21 Introduction to Information Retrieval Net  Exemplo para tamanho do bloco k = 4  Onde nós usamos 3 bytes/ponteiro sem blocking  3 x 4 = 12 bytes, Agora nós usamos 3 + 4 = 7 bytes. Liberado outros ~0.5MB. Isto reduz o tamanho do dicionário de 7.6 MB para 7.1 MB. Podemos liberar mais com um k maior. Por que não usar um k maior? Sec. 5.2

22 Introduction to Information Retrieval Procura pelo Dicionário sem blocking  Assumindo cada termo do dicionário igual como uma consulta (não exatamente assim na prática!), a média do número de comparações = (1+2∙2+4∙3+4)/8 ~2.6 Sec. 5.2

23 Introduction to Information Retrieval Procura pelo Dicionário com blocking  Busca binária reduz em blocos de 4 termos;  Então a busca linear busca através dos termos no bloco.  Blocos de 4 (árvore binária), média = (1+2∙2+2∙3+2∙4+5)/8 = 3 comparações Sec. 5.2

24 Introduction to Information Retrieval Front coding  Front-coding:  Palavras comumente possuem um longo prefixo em comum – armazena apenas a diferença  (para o último k-1 em um bloco de tamanho k) 8automata8automate9automatic10automation  8automat*a1  e2  ic3  ion Codifica automat Conteúdo extra apósautomat. Começa a se assemelhar à compressão geral de string. Sec. 5.2

25 Introduction to Information Retrieval RCV1 sumário de compressão de dicionário TecnicaTamanho em MB Largura-fixa11.2 Dicionário-como-string com ponteiros para cada termo 7.6 Também, blocking k = 47.1 Também, Blocking + front coding5.9 Sec. 5.2

26 Introduction to Information Retrieval COMPRESSÃO DE POSTINGS Sec. 5.3

27 Introduction to Information Retrieval Compressão de Postings  Os arquivos de postings são muito maiores que o dicionário, com fator de pelo menos 10.  Objetivo chave:armazenar cada posting de forma compacta.  Trataremos um posting como um docID.  Para Reuters (800,000 documentos), nós usaremos 32 bits por docID quando usado inteiros de 4 bytes.  Alternativamente, podemos usar log 2 800,000 ≈ 20 bits por docID.  Nosso objetivo: usar muito menos que 20 bits por docID. Sec. 5.3

28 Introduction to Information Retrieval Postings: duas forças conflitando  Um termo como arachnocentric ocorre em talvez um documento dentre um milhão – desejamos armazenar este posting usando log 2 1M ~ 20 bits.  Um termo como the ocorre em praticamente todo documento, então 20 bits/posting é muito caro.  Prefira 0/1 vetor de bitmap neste caso Sec. 5.3

29 Introduction to Information Retrieval Entrada de arquivo Postings  Nós armazenamos a lista dos documentos contendo em ordem incremental de docID.  computer: 33,47,154,159,202 …  Consequência: é suficiente para armazenar gaps.  33,14,107,5,43 …  Esperança: maioria dos gaps é possível codificar/armazenar em pelo menos 20 bits. Sec. 5.3

30 Introduction to Information Retrieval Three postings entries Sec. 5.3

31 Introduction to Information Retrieval Tamanho da Variável codificada  Objetivo:  Para arachnocentric, usaremos uma entrada de ~20 bits/gap  Para the, usaremos uma entrada de ~1 bit/gap.  Se o gap médio para um termo é G, nós precisamos usar uma entrada de ~log 2 G bits/gap.  Principal Desafio: codificar todo inteiro (gap) com o mínimo de bits necessários.  Isto requer um tamanho variável de codificação  Códigos de tamanho variável para alcançar isto usando pequenos códigos para números pequenos. Sec. 5.3

32 Introduction to Information Retrieval Código de Byte Variável - Variable Byte (VB)  Para um gap de valor G, nós queremos usar os mínimos bytes necessários para armazenar log 2 G bits  Começa com um byte para armazenar G e com 1 bit dedicado para ser o bit de continuação.  Se o G ≤127, G será codificado em binário e armazenado nos 7 bits disponíveis, e o c=1  Caso contrário codifica os bits menos significativos de G em 7 bits e então usa bytes adicionais para codificar os bits mais significativos utilizando o mesmo algoritmo.  No fim coloca 1 no bit de continuação do último e nos outros bytes c = 0. Sec. 5.3

33 Introduction to Information Retrieval Exemplo docIDs824829215406 gaps5214577 VB code00000110 10111000 1000010100001101 00001100 10110001 Postings armazenados como concatenação de bytes 000001101011100010000101000011010000110010110001 Propriedade Chave: Postings em codificação VB tem decodificação de prefixo únicos. Para um pequeno gap (5), VB usa um byte inteiro. Sec. 5.3

34 Introduction to Information Retrieval Sec. 5.3

35 Introduction to Information Retrieval Codificação do gap 214.577  n 0 = 214.577 bytestream = <>  bytestream 1 =  n1 = 1.676  bytestream 2 =  n 2 = 13;  bytestream 3 =  bytestream 4 =  000011010000110010110001 35

36 Introduction to Information Retrieval Sec. 5.3

37 Introduction to Information Retrieval Decodificação 000011010000110010110001  Numbers 0 = <> n 0 = 0  for i de 1 a 3  1: n 1 = 13  2: n 2 = 128 x 13 + 12 = 1676  3: n 3 =128 x 1676 + (177 - 128) -> 214.577  numbers 1 = 37

38 Introduction to Information Retrieval Outra codificação de unidade variável  Ao invés, podemos também usar diferentes comprimentos de unidades: 32 bits (words), 16 bits, 4 bits (nibbles).  Comprimentos variáveis de bytes desperdiçam espaço se temos pequenos gaps – nibbles fazem melhor nestes casos.  Códigos de byte variável:  Usado por muitos sistemas comercial/pesquisa  Existe um trabalho recente em codificação de word- aligned que agrupa um número variável de gaps em uma única palavra Sec. 5.3

39 Introduction to Information Retrieval Código Unário  Representa n como n 1s com um final 0.  Código Unário para 3 é 1110.  Código Unário para 40 é 11111111111111111111111111111111111111110.  Código Unário para 80 é: 11111111111111111111111111111111111111111111 1111111111111111111111111111111111110  Isto não parece promissor, mas… 39

40 Introduction to Information Retrieval Código Gamma  Podemos comprimir melhor com código de bit-level  O código Gamma é o mais conhecidos destes.  Representamos um gap G como o par length e offset  Offset é o G em binário, com o primeiro bit mais significativo excluído  Por exemplo 13 → 1101 → 101  length é o tamanho do offset  Para 13 (offset 101), este é o 3.  Codificamos length com código unário: 1110.  Código Gamma de 13 é a concatenação de length e offset: 1110101 Sec. 5.3

41 Introduction to Information Retrieval Exemplos de Código Gamma númerolengthoffset  -code 0none 100 210010,0 310110,1 411000110,00 911100011110,001 1311101011110,101 2411110100011110,1000 51111111111011111111111111110,11111111 102511111111110000000000111111111110,0000000001 Sec. 5.3

42 Introduction to Information Retrieval Gamma code properties  Todo código gamma tem um número ímpar de números de bits  Código Gamma possui unicidade de prefixo decodificado, como o VB  Código Gamma pode ser usado por qualquer distribuição  Código Gamma é livre de parâmetro Sec. 5.3

43 Introduction to Information Retrieval Gamma é raramente usado na prática  Máquinas possuem limites de palavra – 8, 16, 32, 64 bits  Operações que passam dos limites da palavras são mais lentos  Compactar e manipular a granularidade de bits pode ser lento  Codificação de byte variável é potencialmente mais eficiente  Graças a eficiência, byte variável é conceitualmente mais simples com apenas um pouco de custo de espaço adicional. Sec. 5.3

44 Introduction to Information Retrieval RCV1 compression Estrutura de DadosTamanho em MB dicionário, largura-fixa1,2 Dicionário, apontador de termo dentro da string7,6 com blocking, k = 47,1 com blocking & front coding5,9 Coleção (text, xml markup etc)3.600,0 Coleção (text)960,0 Matriz de incidência de Term-doc40.000,0 postings, descompactado (palavras de 32 bits)400,0 postings, descompactado (20 bits)250,0 postings, codificação de byte variável116,0 postings, Codificação gamma101,0 Sec. 5.3

45 Introduction to Information Retrieval Resumo da compressão de índice  Nós podemos agora criar um índice para recuperação booleana de alta eficiência que utiliza eficientemente o espaço  Apenas 4% do tamanho total da coleção  Apenas 10-15% do tamanho total do texto na coleção  Entretanto, nós ignoramos as informações posicionais  Ainda assim, espaços poupados são menos para índices usados na prática  Mas as técnicas são substancialmente as mesmas Sec. 5.3

46 Introduction to Information Retrieval Resources for today’s lecture  IIR 5  MG 3.3, 3.4.  F. Scholer, H.E. Williams and J. Zobel. 2002. Compression of Inverted Indexes For Fast Query Evaluation. Proc. ACM-SIGIR 2002.  Variable byte codes  V. N. Anh and A. Moffat. 2005. Inverted Index Compression Using Word-Aligned Binary Codes. Information Retrieval 8: 151–166.  Word aligned codes Ch. 5


Carregar ppt "Introduction to Information Retrieval Introduction to Information Retrieval CS276: Information Retrieval and Web Search Christopher Manning and Prabhakar."

Apresentações semelhantes


Anúncios Google