39
Ordenação e Recuperação de Dados Prof. Alexandre Duarte - http://alexandre.ci.ufpb.br Centro de Informática – Universidade Federal da Paraíba Aula 1: Consultas Booleanas

Consultas Booleanas

Embed Size (px)

Citation preview

Page 1: Consultas Booleanas

Ordenação e Recuperação de Dados

Prof. Alexandre Duarte - http://alexandre.ci.ufpb.br

Centro de Informática – Universidade Federal da Paraíba

Aula 1: Consultas Booleanas

Page 2: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Agenda Introdução Índices invertidos Processando consultas booleanas Otimização de consultas Detalhes sobre o curso

2

Page 3: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Recuperação da Informação Recuperação da Informação (Information Retrieval -

IR) consiste em encontrar material (geralmente documentos) de natureza não-estruturada (geralmente texto) em uma grande coleção (geralmente armazenada em computadores) que atenda a uma determinada necessidade de informação

3

Page 4: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Dados estruturados vs dados não-estruturados

Dados estruturados tendem a se referir a informação por meio de tabelas

4

Empregado Gerente Salário

Paulo Pedro 50000

Pedro João 60000

50000José Pedro

Tipicamente permitem consultas númericas e por exatidão e.g., Salário < 60000 AND Gerente = Pedro.

Page 5: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Dados não-estruturados Tipicamente se refere a texto livre Permite

Consultas por palavras-chave incluindo operadores Consultas conceituais mais sofisticadas

e.g., encontre todas as páginas web falando sobre abuso de drogas

Modelo clássico para consulta em documentos de texto

5

Page 6: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Dados não estruturados em 1680 Quais peças de Shakespeare contêm as palavras Brutus AND

Caesar BUT NOT Calpurnia? Alguém poderia fazer um grep no texto de todas as peças de

Shakespeare pesquisando por Brutus e Caesar, e depois remover todas as linhas contendo Calpurnia?

Por que esta não é a resposta? Lentidão (para grandes volumes de dados) Isolar o NOT Calpurnia não é trivial Impraticável para outras operações (e.g., encontrar a palavra Romans

perto de countrymen) Recuperação com classificação (melhores documentos)

Cenas dos próximos capítulos

6

Sec. 1.1

Page 7: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Matriz de Incidências Termos /Documentos

Antony and Cleopatra Julius Caesar The Tempest Hamlet Othello Macbeth

Antony 1 1 0 0 0 1

Brutus 1 1 0 1 0 0

Caesar 1 1 0 1 1 1

Calpurnia 0 1 0 0 0 0

Cleopatra 1 0 0 0 0 0

mercy 1 0 1 1 1 1

worser 1 0 1 1 1 0

1 se a peça contém a palavra, 0 caso contrário

Brutus AND Caesar BUT NOT Calpurnia

Sec. 1.1

Page 8: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Vetores de Incidência Temos então um vetor de 0/1 para cada termo Para responder a consulta: pegar os vetores de

Brutus, Caesar e Calpurnia (complemento) e aplicar um AND binário.

110100 AND 110111 AND 101111 = 100100.

8

Sec. 1.1

Page 9: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Considerações básicas da Recuperação da Informação

Coleção: Conjunto fixo de documentos Objetivo: Recuperar documentos que são relevantes

para a necessidade de informação do usuário, ajudando-o a completar uma tarefa

9

Sec. 1.1

Page 10: Consultas Booleanas

O modelo clássico de busca

DocumentosDocumentos

TarefaTarefa

Informação necessária

Informação necessária

ConsultaConsulta

Forma verbal

Forma verbal

ResultadoResultado

Motor de BuscaMotor de Busca

Refinamento da consulta

Refinamento da consulta

Livrar-se de um rato de forma politicamente correta

Livrar-se de um rato de forma politicamente correta

Como se livrar de um rato sem matá-lo

Como se livrar de um rato sem matá-lo

Como capturar um rato vivoComo capturar um rato vivoComo capturar um rato vivoComo capturar um rato vivo

ratoeira

Equívoco?Equívoco?

Equívoco?Equívoco?

Equívoco?Equívoco?

Page 11: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Quão bons são os documentos recuperados? Precisão : Fração dos documentos recuperados que é

relevante para a necessidade de informação do usuário

Recall : Fração dos documentos relevantes na coleção que são recuperados

Definições e medições mais precisas serão vistas nas próximas aulas

11

Sec. 1.1

Page 12: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Coleções maiores Considere N = 1 milhão de documentos, cada um

com cerca de 1000 palavras. Com uma média de 6 bytes/palavra incluindo

espaços/pontuação 6GB de dados nos documentos

Digamos que existem M = 500K termos distintos.

12

Sec. 1.1

Page 13: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Impossível construir a matriz! Uma matriz de 500K x 1M tem meio trilhão de 0’s e

1’s. Mas não tem mais do que um bilhão de 1’s.

Matriz extremamente esparsa

Qual seria uma melhor representação? Armazenamos apenas as ocorrências de 1’s

13

Por que?Por que?

Sec. 1.1

Page 14: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Índice invertido Para cada termo t, devemos armazenar uma lista

com todos os documentos que contém t. Identifique cada documento por um docID

Poderíamos utilizar arrays de tamanho fixo para isso ?

14

Sec. 1.2

Brutus

Calpurnia

Caesar 1 2 4 5 6 16 57 132

1 2 4 11 31 45173

2 31

174

54101

O que acontece se a palavra Caesar for adicionada ao documento 14?

O que acontece se a palavra Caesar for adicionada ao documento 14?

Page 15: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Índice invertido Precisamos de listas com tamanhos variáveis

Em disco, uma lista continua é normal e melhor Em memória podemos utilizar listas encadeadas ou arrays

Tradeoffs em tamanho/facilidade de inserção

Sec. 1.2

15

Dicionário PostingsOrdenadas por docID (veremos mais tarde o porque

Sec. 1.2

Brutus

Calpurnia

Caesar 1 2 4 5 6 16 57 132

1 2 4 11 31 45173

2 31

174

54101

Page 16: Consultas Booleanas

TokenizerFluxo de tokens

Friends Romans Countrymen

Construção de um índice invertido

Módulos Linguísticos

Tokens modificadosfriend roman countryman

Indexador

Índice invertido

friend

roman

countryman

2 4

2

13 16

1

Documentos paraindexar

Friends, Romans, countrymen.

Sec. 1.2

Page 17: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Passos do Indexador: Sequência de Tokens

Sequência pares (token modificado, Document ID)

I did enact JuliusCaesar I was killed

i' the Capitol; Brutus killed me.

Doc 1

So let it be withCaesar. The noble

Brutus hath told youCaesar was ambitious

Doc 2

Sec. 1.2

Page 18: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Passos do indexador: Ordenação

Ordene pelos termos E depois pelo Doc-ID

Passo central da indexação

Sec. 1.2

Page 19: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Passos do Indexador: Dicionário & Postings

Múltiplas ocorrências de um mesmo termo são combinadas.

Quebra entre Dictionário e Postings

Adiciona-se informação sobre frequência

Discutiremos a razãoMais tarde

Sec. 1.2

Page 20: Consultas Booleanas

E quanto ao armazenamento?

20Ponteiros

Termos e frequências

Veremos no curso:•Como indexar eficientemente?•De quanto armazenamento precisamos?

Sec. 1.2

Listas de Doc Ids

Page 21: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Acabamos de construir um índice Como processamos uma consulta?

Mais tarde – que tipos de consulta podemos processar ?

21

Foco de hoje

Sec. 1.3

Page 22: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Processamento de consulta: AND Considere o processamento da consulta:

Brutus AND Caesar Localize Brutus no Dicionário

Recupere sua lista de postings.

Localize Caesar no Dicionário Recupere sua lista de potings

Encontre a interseção (“merge”) das duas listas:

22

128

34

2 4 8 16 32 64

1 2 3 5 8 13 21

BrutusCaesar

Sec. 1.3

Page 23: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Calculando a interseção Percorrer as duas listas de postings

simultaneamente, em tempo linear em relação ao número de elementos das listas

23

34

1282 4 8 16 32 64

1 2 3 5 8 13 21

128

34

2 4 8 16 32 64

1 2 3 5 8 13 21

BrutusCaesar2 8

Se as listas têm comprimento x e y, o cálculo da interseção (merge) tem complexidade O(x+y)Crucial: listas de postings ordenadas pelo docID.

Sec. 1.3

Page 24: Consultas Booleanas

Calculando a interseção

24

Page 25: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Consultas booleanas: Resultado exato

O modelo de recuperação booleano permite fazer uma pergunta sobre a forma de uma expressão booleana: Consultas booleanas utilizam AND, OR e NOT para combinar os termos

na consulta Cada documento é visto como um conjunto de palavras É precisa: o documento obedece a condição ou não.

Provavelmente o modelo mais simples para se construir um sistema de Recuperação de Informação

Foi a principal forma de recuperação de informação por 3 décadas

Vários sistemas ainda em uso seguem esse modelo: Email, catálogo de bibliotecas, Mac OS X Spotlight

25

Sec. 1.3

Page 26: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Pesquisas booleanas:Merges mais genéricos

Exercício: Adaptar o algoritmo de interseção para as consultas:

Brutus AND NOT Caesar

Brutus OR NOT Caesar

Ainda é possível obter complexidade O(x+y)?

26

Sec. 1.3

Page 27: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Merging

O que dizer sobre uma expressão booleana arbitrária? (Brutus OR Caesar) AND NOT (Antony OR Cleopatra)

Podemos sempre calcular a interseção em tempo linear?

Podemos fazer melhor?

27

Sec. 1.3

Page 28: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Otimização de consultas

Qual é a melhor ordem para se processar uma consulta? Considere uma consulta que faz um AND de n termos. Para cada um dos n termos, pegar sua lista de postagens,

depois encontre as interseções.

Brutus

Caesar

Calpurnia

1 2 3 5 8 16 21 34

2 4 8 16 32 64128

13 16

Consulta: Brutus AND Caesar AND Calpurnia 28

Sec. 1.3

Page 29: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Exemplo de otimização de consulta Processo em ordem crescente de frequência:

Comece pelo menor conjunto.

29

Por isso mantemos a frequência no dicionário

Execute a consulta como (Calpurnia AND Brutus) AND Caesar.

Sec. 1.3

Brutus

Caesar

Calpurnia

1 2 3 5 8 16 21 34

2 4 8 16 32 64128

13 16

Page 30: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Uma otimização mais genérica e.g., (madding OR crowd) AND (ignoble OR

strife) AND (killed OR slain) Obtenha a frequencia de documentos para todos

os termos Estime o tamanho de cada OR pela soma das

suas frequências . Processe em ordem crescente de tamanho

30

Sec. 1.3

Page 31: Consultas Booleanas

Exercícios

Recomende uma ordem de processamento para a seguinte consulta

Term Freq eyes 213312

kaleidoscope 87009

marmalade 107913

skies 271658

tangerine 46653

trees 316812

31

(tangerine OR trees) AND(marmalade OR skies) AND(kaleidoscope OR eyes)

Page 32: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Exercícios sobre processamento de consultas Exercício: Se a consulta é friends AND romans AND

(NOT countrymen), como poderíamos utilizar a frequência de countrymen?

Exercício: Estenda o algoritmo de merge para uma query boolean arbitrária. Podemos garantir que ele sempre terá complexidade linear em relação ao total de postings?

Dica: Comece com um consulta que é uma fórmula boolean: neste caso, cada termo só aparece uma única vez na consulta

32

Page 33: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Exercícios Experimente o mecanismo de buscas de

http://www.rhymezone.com/shakespeare/ Escreva sobre cinco funcionalidades de busca em

que o site poderia ser melhor

33

Page 34: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Classificando resultados de busca Consultas booleanas resultam em inclusão ou

exclusão de documentos Muitas vezes desejamos agrupar/classificar

resultados É preciso calcular a proximidade entre a consulta e cada

documento É preciso decidir se os documentos apresentados ao

usuário são itens individuais ou coleções de documentos abrangendo diferentes aspectos da consulta.

34

Page 35: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Agrupamento, Classificação e Ranqueamento Agrupamento: Dado um conjunto de documentos,

agrupá-los em sub-conjuntos de acordo com seu conteúdo.

Classificação: Dado um conjunto de tópicos mais um novo documento D, decidir quais tópicos dizem respeito a D.

Ranqueamento: Como melhor ordenar um conjunto de resultados de uma consulta

35

Page 36: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

A web e seus desafios Documentos diversos Usuário, consultas e necessidades de informação

diversas Vai além da análise de termos, explora idéias de

redes sociais Análise de ligações, padrões de click, ...

Como os motores de busca funcionam? Como podemos torná-los melhores?

36

Page 37: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Formas mais sofisticadas de recuperação da informação

Recuperação da informação em múltiplos idiomas Responder a perguntas

Watson jogando Jeopardy

Sumarização Mineração de texto …

37

Page 38: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Detalhes sobre o curso URL do curso: http://alexandrend.com Avaliação:

Projeto 1 (em grupo) 20% - 15/02/2013 Projeto 2 (individual) 40% - 15/03/2013 Minitestes 40% - toda quarta-feira,

inclusive a próxima

Livro texto: Introduction to Information Retrieval

Disponível gratuítamente online (http://informationretrieval.org/)

38

    

Page 39: Consultas Booleanas

Centro de Informática – Universidade Federal da Paraíba

Material sobre a aula de hoje Introduction to Information Retrieval, capítulo 1

http://nlp.stanford.edu/IR-book/pdf/01bool.pdf

Shakespeare: http://www.rhymezone.com/shakespeare/

Watson jogando Jeopardy: http://www.youtube.com/watch?v=12rNbGf2Wwo

Perguntas?39