Introduction to Information Retrieval CS 276 Information Retrieval

  • Slides: 46
Download presentation
Introduction to Information Retrieval CS 276: Information Retrieval and Web Search Christopher Manning and

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

Introduction to Information Retrieval Ch. 5 Today § Estatísticas de coleção em maiores detalhes

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

Introduction to Information Retrieval Ch. 5 Por que compressão(em geral)? § Usa menos espaço

Introduction to Information Retrieval Ch. 5 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 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 rápidos § Verdade para os algorítmos de descompressão que usamos

Introduction to Information Retrieval Por que compressão para índices invertidos Ch. 5 § Dicionário

Introduction to Information Retrieval Por que compressão para índices invertidos Ch. 5 § 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

Sec. 5. 1 Introduction to Information Retrieval Relembrando Reuters RCV 1 § § §

Sec. 5. 1 Introduction to Information Retrieval Relembrando Reuters RCV 1 § § § símbolo N L M estatística documentos # médio tokens por doc termos (= palavras dig. ) # médio bytes por token valor 800. 000 200 ~400. 000 6 (incl. espaços/pontuação) § # médio bytes por token 4. 5 (sem espaços/pontuação) § § # médio bytes por termo 7. 5 postings não posicionais 100, 000

Sec. 5. 1 Introduction to Information Retrieval Parâmetros de índice vs. o que nós

Sec. 5. 1 Introduction to Information Retrieval Parâmetros de índice vs. o que nós indexamos (detalhes IIR Tabela 5. 1, p. 80) Tamanho de tipos 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) % % 109, 971 cumul % Não filtrado 484 197, 879 Sem números 474 -2 -2 100, 680 -8 -8 179, 158 -9 -9 Case folding 392 -17 -19 96, 969 -3 -12 179, 158 0 -9 30 stopwords 391 -0 -19 83, 390 -14 -24 121, 858 -31 -38 150 stopwords 391 -0 -19 67, 002 -30 -39 94, 517 -47 -52 stemming 322 -17 -33 63, 812 -42 94, 517 -52 -4 0

Introduction to Information Retrieval Sec. 5. 1 Lossless vs. lossy compression § Compressão sem

Introduction to Information Retrieval Sec. 5. 1 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.

Introduction to Information Retrieval Sec. 5. 1 Vocabulario vs. tamanho da coleção § Quão

Introduction to Information Retrieval Sec. 5. 1 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 7020 = 1037 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

Introduction to Information Retrieval Sec. 5. 1 Vocabulario vs. tamanho da coleção § Lei

Introduction to Information Retrieval Sec. 5. 1 Vocabulario vs. tamanho da coleção § Lei de Heaps: M = k. Tb § 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 Introduction to Information Retrieval Lei de Heaps Para RCV 1, a

Sec. 5. 1 Introduction to Information Retrieval Lei de Heaps Para RCV 1, a linha pontilhada log 10 M = 0. 49 log 10 T + 1. 64 é o melhor ajuste dos mínimos quadrados Ainda, M = 101. 64 T 0. 49 então k = 101. 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 p 81

Introduction to Information Retrieval Sec. 5. 1 Lei de Zipf § A Lei de

Introduction to Information Retrieval Sec. 5. 1 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. § cfi ∝ 1/i = K/i onde K é uma constante de normalização § cfi é a frequência na coleção: o número de ocorrências do termo ti na coleção.

Introduction to Information Retrieval Sec. 5. 1 Consequências de Zipf § Se o termo

Introduction to Information Retrieval Sec. 5. 1 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: cfi = K/i onde K é o fator de normalização, então § log cfi = log K - log i § Relação linear entre log cfi e log i

Introduction to Information Retrieval Ch. 5 Compressão § Agora, vamos considerar a compressão do

Introduction to Information Retrieval Ch. 5 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

Introduction to Information Retrieval COMPRESSÃO DE DICIONÁRIO Sec. 5. 2

Introduction to Information Retrieval COMPRESSÃO DE DICIONÁRIO Sec. 5. 2

Introduction to Information Retrieval Sec. 5. 2 Porque comprimir dicionário? § A busca começa

Introduction to Information Retrieval Sec. 5. 2 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

Introduction to Information Retrieval Armazenamento do Dicionário – primeira redução § Array de entradas

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 bytes 4 bytes cada Sec. 5. 2

Introduction to Information Retrieval Sec. 5. 2 Termos de largura-fixa é um desperdício §

Introduction to Information Retrieval Sec. 5. 2 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.

Introduction to Information Retrieval Comprimindo a lista de termos: Dicionário-como-uma-String Sec. 5. 2 O

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

Introduction to Information Retrieval Sec. 5. 2 Tamanho para dicionários como uma a string

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

Sec. 5. 2 Introduction to Information Retrieval Blocking § Armazena ponteiros para todo késimo

Sec. 5. 2 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) …. 7 systile 9 syzygetic 8 syzygial 6 syzygy 11 szaibelyite 8 szczecin 9 szomo…. Libera 9 bytes em 3 ponteiros. Perde 4 bytes para tamanho de termo.

Introduction to Information Retrieval Sec. 5. 2 Net § Exemplo para tamanho do bloco

Introduction to Information Retrieval Sec. 5. 2 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. 5 MB. 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?

Introduction to Information Retrieval Procura pelo Dicionário sem blocking § Assumindo cada termo do

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

Introduction to Information Retrieval Sec. 5. 2 Procura pelo Dicionário com blocking § Busca

Introduction to Information Retrieval Sec. 5. 2 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 Introduction to Information Retrieval Front coding § Front-coding: § Palavras comumente

Sec. 5. 2 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) 8 automata 8 automate 9 automatic 10 automation 8 automat*a 1 e 2 ic 3 ion Codifica automat Conteúdo extra apósautomat. Começa a se assemelhar à compressão geral de string.

Introduction to Information Retrieval RCV 1 sumário de compressão de dicionário Tecnica Largura-fixa Sec.

Introduction to Information Retrieval RCV 1 sumário de compressão de dicionário Tecnica Largura-fixa Sec. 5. 2 Tamanho em MB 11. 2 Dicionário-como-string com ponteiros para cada termo Também, blocking k = 4 7. 6 Também, Blocking + front coding 5. 9 7. 1

Introduction to Information Retrieval COMPRESSÃO DE POSTINGS Sec. 5. 3

Introduction to Information Retrieval COMPRESSÃO DE POSTINGS Sec. 5. 3

Introduction to Information Retrieval Sec. 5. 3 Compressão de Postings § Os arquivos de

Introduction to Information Retrieval Sec. 5. 3 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 doc. ID. § Para Reuters (800, 000 documentos), nós usaremos 32 bits por doc. ID quando usado inteiros de 4 bytes. § Alternativamente, podemos usar log 2 800, 000 ≈ 20 bits por doc. ID. § Nosso objetivo: usar muito menos que 20 bits por doc. ID.

Introduction to Information Retrieval Sec. 5. 3 Postings: duas forças conflitando § Um termo

Introduction to Information Retrieval Sec. 5. 3 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 1 M ~ 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

Introduction to Information Retrieval Sec. 5. 3 Entrada de arquivo Postings § Nós armazenamos

Introduction to Information Retrieval Sec. 5. 3 Entrada de arquivo Postings § Nós armazenamos a lista dos documentos contendo em ordem incremental de doc. ID. § 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.

Introduction to Information Retrieval Three postings entries Sec. 5. 3

Introduction to Information Retrieval Three postings entries Sec. 5. 3

Introduction to Information Retrieval Sec. 5. 3 Tamanho da Variável codificada § Objetivo: §

Introduction to Information Retrieval Sec. 5. 3 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.

Introduction to Information Retrieval Sec. 5. 3 Código de Byte Variável - Variable Byte

Introduction to Information Retrieval Sec. 5. 3 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 Introduction to Information Retrieval Exemplo doc. IDs 824 gaps VB code

Sec. 5. 3 Introduction to Information Retrieval Exemplo doc. IDs 824 gaps VB code 00000110 10111000 829 215406 5 214577 10000101 00001100 10110001 Postings armazenados como concatenação de bytes 000001101011100001010000110010110001 Propriedade Chave: Postings em codificação VB tem decodificação de prefixo únicos. Para um pequeno gap (5), VB usa um byte inteiro.

Introduction to Information Retrieval Sec. 5. 3

Introduction to Information Retrieval Sec. 5. 3

Introduction to Information Retrieval Codificação do gap 214. 577 § n 0 = 214.

Introduction to Information Retrieval Codificação do gap 214. 577 § n 0 = 214. 577 bytestream = <> § bytestream 1 = <49> § n 1 = 1. 676 § bytestream 2 = <12, 49> § n 2 = 13; § bytestream 3 = <13, 12, 49> § bytestream 4 = <13, 12, 177> § 000011010000110010110001 35

Introduction to Information Retrieval Sec. 5. 3

Introduction to Information Retrieval Sec. 5. 3

Introduction to Information Retrieval Decodificação 000011010000110010110001 § Numbers 0 = <> n 0 =

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 = <214. 577> 37

Introduction to Information Retrieval Sec. 5. 3 Outra codificação de unidade variável § Ao

Introduction to Information Retrieval Sec. 5. 3 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 wordaligned que agrupa um número variável de gaps em uma única palavra

Introduction to Information Retrieval Código Unário § Representa n como n 1 s com

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

Introduction to Information Retrieval Sec. 5. 3 Código Gamma § Podemos comprimir melhor com

Introduction to Information Retrieval Sec. 5. 3 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 Introduction to Information Retrieval Exemplos de Código Gamma número length g-code

Sec. 5. 3 Introduction to Information Retrieval Exemplos de Código Gamma número length g-code offset 0 none 1 0 0 2 10 0 10, 0 3 10 1 10, 1 4 110 00 110, 00 9 1110 001 1110, 001 13 1110 101 1110, 101 24 11110 1000 11110, 1000 511 11110 111111110, 1111 1025 111110 000001 111110, 000001

Introduction to Information Retrieval Gamma code properties § Todo código gamma tem um número

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

Introduction to Information Retrieval Sec. 5. 3 Gamma é raramente usado na prática §

Introduction to Information Retrieval Sec. 5. 3 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.

Introduction to Information Retrieval Sec. 5. 3 RCV 1 compression Estrutura de Dados Tamanho

Introduction to Information Retrieval Sec. 5. 3 RCV 1 compression Estrutura de Dados Tamanho em MB dicionário, largura-fixa 1, 2 Dicionário, apontador de termo dentro da string 7, 6 com blocking, k = 4 7, 1 com blocking & front coding 5, 9 Coleção (text, xml markup etc) Coleção (text) Matriz de incidência de Term-doc 3. 600, 0 960, 0 40. 000, 0 postings, descompactado (palavras de 32 bits) 400, 0 postings, descompactado (20 bits) 250, 0 postings, codificação de byte variável 116, 0 postings, Codificação gamma 101, 0

Introduction to Information Retrieval Sec. 5. 3 Resumo da compressão de índice § Nós

Introduction to Information Retrieval Sec. 5. 3 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

Introduction to Information Retrieval Ch. 5 Resources for today’s lecture § IIR 5 §

Introduction to Information Retrieval Ch. 5 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