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

Slides:



Advertisements
Apresentações semelhantes
Grupo:Danilo de Carvalho Gleimar B. Baleeiro Rodrigo Duarte
Advertisements

Modelo Probabilístico
Operações sobre o Texto
Sistemas operacionais
Entrada e Saída Introdução.
Indexação Automática de Documentos
Propriedades de Documentos
Ambientes Operacionais
Arquitetura dos Microprocessadores 8086 e 8088
Compressão de Dados ORI Ednaldo Pizzolato.
Sistemas Operacionais II - Sistemas de Arquivos -.
Compressão de Dados.
Pesquisa em Memória Primária
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária
A FAST APRIORI implementation
AULA – Linguagem C – Vetores, Ponteiros Estruturas
REPRESENTAÇÃO DE INSTRUÇÕES
Análise Léxica Supondo o trecho de programa abaixo:
Algoritmos e Estruturas de Dados II
Arquivos Invertidos André Ferreira da Silva Jimy Marques Madeiro
Listas Encadeadas.
Capítulo 10 Strings & File I/O. Strings Strings são um conjunto de Caracteres ASCII. No Controle de Instrumentação pode-se converter valores numéricos.
Informática Teórica Engenharia da Computação
Sistemas Operacionais Gerenciamento de Memória
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 6 Vetores e Matrizes
Compressão de Textos Juliano Palmieri Lage.
PROGRAMAÇÃO ESTRUTURADA II
Sistemas Operacionais
CS276: Information Retrieval and Web Search
Introduction to Information Retrieval Introduction to Information Retrieval CS276 Information Retrieval and Web Search Christopher Manning and Prabhakar.
CADEIA DE CARACTERES (Strings)
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Professor Mário Dantas
Tipos de Dados Paradigmas de Programação
Mineração da Web Recuperação de Informação
Recuperação de Informação Clássica
Aula 13 - Armazenamento de Dados em Arquivos
Sistemas Operacionais
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
SISTEMAS OPERACIONAIS I Gerenciamento de Arquivos
Bruno C. Bourbon Jarbas J. de O. Júnior {bcb, cin.ufpe.br
1 Efficient Phrase Querying with an Auxiliary Index (SIGIR) 2002 Trabalho realizado por: Trabalho realizado por: João Casteleiro Alves João Casteleiro.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 10: Interface de Sistemas de Arquivos.
PROCESSAMENTO DIGITAL DE IMAGENS
8088 Assembly Software Básico Mitsuo Takaki.
Infra-Estrutura de Software
Estrutura de Dados III Revisão
Introduction to Information Retrieval Introduction to Information Retrieval CS276 Information Retrieval and Web Search Christopher Manning and Prabhakar.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
1 Programação em C Aula Considere que um banco armazena em arquivo as seguintes informações de seus clientes: número da conta (int), nome do cliente.
Técnicas de Compressão de Dados
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Sistemas de Arquivos Sistemas Operacionais Profa. Priscila Facciolli
Sistemas computacionais
Berilhes Borges Garcia Algoritmos Uma ferramenta para resolver um problema de computação bem- especificado (O espírito da computação) Exemplo: ordenação.
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Codificação Daniel Vieira.
INE5408 Estruturas de Dados Listas Encadeadas Simples.
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
Texto e Linguagens Multimédia e Propriedades Bibliotecas Digitais Engenharia Biomédica Universidade do Minho Instructor: Joaquim Macedo Baseada em apresentações.
|PAULANINA| Byte Bits. Bits/Bytes Os computadores só “percebem ” o que lhes dizemos através de impulsos elétricos, que PODEM SER representados por: 1.
Transcrição da apresentação:

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

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

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

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

Introduction to Information Retrieval Relembrando Reuters RCV1  símboloestatística valor  N documentos  L # médio tokens por doc200  Mtermos (= palavras dig.)~  # 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

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úmeros , ,158-9 Case folding , , stopwords , , stopwords , , stemming , , Sec. 5.1

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

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 = 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

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

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

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

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

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

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

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

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

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

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

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

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

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 = 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

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 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 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

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

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

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

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

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

Introduction to Information Retrieval Three postings entries Sec. 5.3

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

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

Introduction to Information Retrieval Exemplo docIDs gaps VB code Postings armazenados como concatenação de bytes 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

Introduction to Information Retrieval Sec. 5.3

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

Introduction to Information Retrieval Sec. 5.3

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

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

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

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:  Código Gamma de 13 é a concatenação de length e offset: Sec. 5.3

Introduction to Information Retrieval Exemplos de Código Gamma númerolengthoffset  -code 0none , , , , , , , , Sec. 5.3

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 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

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

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

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