UNIVERSIDADE FEDERAL DE ALAGOAS
DEPARTAMENTO DE TECNOLOGIA DA INFORMAÇÃO
CIÊNCIA DA COMPUTAÇÃO
Arquivos Invertidos
André Ferreira da Silva
Jimy Marques Madeiro
Talita Perciano Costa Leite
1
Roteiro
•
•
•
O que é a estrutura
Como funciona
Operações em arquivos invertidos de Registros de
Dados
– Modificando os dados
– Atualizando
• Arquivos Invertidos para busca em documentos
– Busca em documentos texto
• Granularidade do Índice de um Arquivo Invertido
• Construção de índices
– Matriz de freqüência
– Inversão em memória
– Inversão baseada em ordenação
2
O que é a estrutura
• Organização ou estrutura de arquivo que
•
•
permite uma procura rápida por consultas em
geral envolvendo valores de chaves secundárias
especificados
Os valores das chaves secundárias são usados
como uma base para localizar uma classe de
registro de dados
Possui duas partes principais:
– Estrutura de busca
– Lista invertida
3
O que é a estrutura
• O tipo mais comum de arquivo invertido tem um nível-duplo de
indexação e lista de acesso associada
Índice de nível 1
(tipos de atributos)
Índice de nível 2
(valores de item)
Nível 3
(listas de acesso)
Nível 4
(registros de dados)
Atlanta
AGE
CITY
EMP-ADDR
Atlanta
...
Atlanta
Chicago
Chicago
Detroit
Chicago
Houston
Atlanta
Chicago
Chicago
4
O que é a estrutura
• Arquivos completamente invertidos
– É invertido sobre todos os tipos itens chave no
registro
– Estabelecem acesso rápido para base de dados
– Grande espaço de armazenamento na indexação
• Arquivo parcialmente invertido
– É invertido sobre um número selecionado de tipos de
itens chave
5
Como funciona
• Arquivos invertidos são tradicionalmente
•
utilizados para a implementação de índices
lexicográficos (Harman et al. 1992)
Busca por frases:
– Índice invertido contém para cada palavra:
• Um apontador para cada um dos documentos dos quais a
palavra ocorre
• As posições da palavra nesse documento
– Busca torna-se mais eficiente nesse tipo de índice
– A dimensão do próprio índice é um problema
– Índice precisa ser atualizado a cada modificação do
documento original
6
Como funciona
• A pesquisa é feita da seguinte forma:
– O primeiro termo é pesquisado
– Como resultado tem-se uma lista temporária de
documentos e posições contendo o termo pesquisado
– Utiliza-se a lista temporária para pesquisar o próximo
termo
– Repete-se a pesquisa para os próximos termos até
que o último tenha sido pesquisado, ou até que a lista
esteja vazia
• É desejável que os termos menos comuns sejam
pesquisados inicialmente.
7
Modificando os dados
Índice de nível 1
(tipos de atributos)
Índice de nível 2
(valores de item)
Nível 3
(listas de acesso)
Nível 4
(registros de dados)
Atlanta
AGE
CITY
EMP-ADDR
Atlanta
...
Atlanta
Chicago
Chicago
Detroit
Chicago
Houston
Atlanta
Chicago
Chicago
8
Modificando os dados
Índice de nível 1
(tipos de atributos)
Índice de nível 2
(valores de item)
Nível 3
(listas de acesso)
Nível 4
(registros de dados)
Atlanta
AGE
CITY
EMP-ADDR
Atlanta
...
Atlanta
Chicago
Chicago
Detroit
Chicago
Houston
Atlanta
Chicago
Chicago
9
Modificando os dados
Índice de nível 1
(tipos de atributos)
Índice de nível 2
(valores de item)
Nível 3
(listas de acesso)
Nível 4
(registros de dados)
Atlanta
AGE
CITY
EMP-ADDR
Atlanta
...
Atlanta
Chicago
Chicago
Detroit
Chicago
Houston
Atlanta
Chicago
Chicago
Chicago
10
Atualizando
Atlanta
AGE
CITY
EMP-ADDR
Atlanta
...
Atlanta
Atlanta
Chicago
Detroit
Atlanta
Houston
Atlanta
Atlanta
Atlanta
Atlanta
11
Arquivos Invertidos para Busca em
Documentos
• Componentes
– Léxico: conjunto de palavras em um conjunto
de documentos;
– Lista de ocorrências: todas as entradas que se
aplicam a uma palavra específica;
– Postings: entrada em uma lista invertida.
• Construção
12
Exemplo
1. Chocolate mousse
2.
3.
4.
pie;
Chocolate chip
cookies;
Spinach pie;
Baklava
bake
2
baklava
4
chip
2
chocolate
1
cookie
2
mousse
1
pie
1
spinach
3
3
4
2
3
4
“I want to bake something with chocolate.”
13
Busca em Documentos Texto
• Termo único
– Busca no vocabulário e recupera lista de
ocorrências
• Conjunção
– Intersecção das listas de ocorrências
• Disjunção
– União das listas de ocorrências
• Negação
– Complemento do resultado
14
Exemplo
Documento
Texto
1
Pease porridge hot, pease porridge
cold,
2
Pease porridge in the pot,
3
Nine days old.
4
Some like it hot, some like it cold,
5
Some like it in the pot,
6
Nine days old.
15
Exemplo
Número
Termo
Documento
1
cold
(2;1,4)
2
days
(2;3,6)
3
hot
(2;3,6)
4
in
(2;1,4)
5
it
(2;2,5)
6
like
(2;4,5)
7
nine
(2;4,5)
8
old
(2;3,6)
9
Pease
(2;1,2)
10
porridge
(2;1,2)
11
pot
(2;2,5)
12
some
(2;4,5)
13
the
(2;2,5)
16
Exemplo
• Termo Único:
– Procurar termo “hot”
• Conjunção:
– Procurar “some AND hot”
• <4,5> AND <1,4> => <4>
• Disjunção:
– Procurar “hot OR nine”
• <1,4> OR <3,6> => <1,3,4,6>
• Negação:
– Procurar “NOT (some AND hot)”
• <1,2,3,5,6>
17
Granularidade do Índice de um
Arquivo Invertido
• Grossa
– Identifica apenas um bloco de texto
• Moderada
– Identifica apenas um documento
• Fina
– Identifica cada palavra (cada byte)
18
Grossa
• Índice requer menos memória
• Consulta exige mais processamento em
cada bloco
• Consulta de frase leva a maior número de
“false matches”
19
Fina
• Busca por frase é eficiente
• Busca aproximada é eficiente
• Índice requer mais memória
20
Exemplo
Número
Termo
(Documento;Palavras)
1
cold
[2;(1;6),(4;8)]
2
days
[2;(3;2),(6;2)]
3
hot
[2;(1;3),(4;4)]
4
in
[2;(2;3),(5;4)]
5
it
[2;(4;3,7),(5;3)]
6
like
[2;(4;2,6),(5;2)]
7
nine
[2;(3;1),(6;1)]
8
old
[2;(3;3),(6;3)]
9
Pease
[2;(1;1,4),(2;1)]
10
porridge
[2;(1;2.5),(2;2)]
11
pot
12
some
13
the
[2;(2;5),(5;6)]
[2;(4;1,5),(5;1)]
[2;(2;4),(5;5)]
21
Construção de Índices
• Métodos
– Matriz de freqüência
– Inversão em memória
– Inversão baseada em ordenação
22
Matriz de freqüência
• Cada linha corresponde a um documento
e cada coluna corresponde a um termo do
vocabulário
• Construção é bastante cara
– Ex.: Bíblia contém 8.965 termos e 31.101
documentos. Tamanho da matriz: 8.965 x
31.101 x 4 bytes ≈ 1 Gigabyte de memória
principal
23
Exemplo
cold
days
hot
in
it
like
1
1
-
1
-
-
-
2
2
2
-
-
-
1
-
-
1
1
3
-
1
-
-
-
-
-
-
4
1
-
1
-
2
2
-
-
5
-
-
-
1
1
1
-
-
6
-
1
-
-
-
-
-
-
pot
some
the
-
-
-
1
-
1
-
-
-
-
2
-
1
1
1
-
-
-
pease porridge
24
Número
Termo
Documento
1
2
3
4
5
6
1
cold
1
-
-
1
-
-
2
days
-
-
1
-
-
1
3
hot
1
-
-
1
-
-
4
in
-
1
-
-
1
-
5
it
-
-
-
2
1
-
6
like
-
-
-
2
1
-
7
nine
-
-
1
-
-
1
8
old
-
-
1
-
-
1
9
Pease
2
1
-
-
-
-
10
porridge
2
1
-
-
-
-
11
pot
-
1
-
-
1
-
12
some
-
-
-
2
1
-
13
the
-
1
-
-
1
25
Inversão em memória
Algoritmo:
1. Crie uma estrutura de dicionário vazia S.
2. Para cada documento Dd na coleção, 1≤ d ≤ N.
(a) Leia Dd, realizando o parser para obter termos indexáveis.
(b) Para cada termo indexável t pertencente a Dd,
i. Faça fd,t receber a freqüência do termo t em Dd.
ii. Busque por t em S.
iii. Se t não estiver em S, insira-o.
iv. Adicione um nó armazenando (d,fd,t) na lista
correspondente ao termo t.
3. Para cada termo 1 ≤ t ≤ n,
(a) Inicialize uma nova entrada do arquivo invertido.
(b) Para cada (d,fd,t) na lista correspondente a t, adicione (d,fd,t)
a essa entrada.
(c) Comprima a entrada.
(d) Adicione essa entrada no arquivo invertido.
26
Inversão em memória
• O índice é todo construído em memória principal
• Para armazenar o vocabulário: tabela hash é
•
•
geralmente a melhor escolha
Listas encadeadas em memória para armazenar
as listas invertidas em termos
Leva cerca de 6 horas para indexar uma coleção
de 5GB e consome 4GB de memória principal e
nenhum espaço extra em disco
27
Inversão Baseada em Ordenação
Algoritmo:
1. Construa um arquivo de saída temporário com registros
<t, d, ft >
2 . Ordene os registros usando o merge-sort
(a) Leia um pedaço do arquivo temporário
(b) Ordene-o (usando o quicksort)
(c) Escreva-o de volta no mesmo lugar
(d) Utilize o merge-sort para ordenação dos
pedaços
3. Leia o arquivo temporário e construa o arquivo
invertido.
28
Inversão Baseada em Ordenação
• Consome menos memória principal
• A inversão para a coleção de 5GB leva cerca de
•
20 horas usando 40MB de memória principal e
8GB de espaço extra em disco
Devido a grande quantidade de espaço em disco
consumida durante a inversão, este método é
considerado o melhor para coleções de tamanho
moderado (10 a 100MB)
29
Download

Apresentação