Modelo booleano

Transcrição

Modelo booleano
Recuperação de Informação em Bases de Texto
Aula 2
1
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Suporta operações booleanas: AND, OR, NOT
– “Que documentos contêm as palavras sonho e
acção e não têm a palavra sonâmbolo.”
• sonho AND acção AND NOT sonâmbolo
2
Recuperação de Informação em Bases de Texto
• Modelo booleano
– sonho AND acção AND NOT sonâmbolo
– Abordagens:
• Força bruta (sem pré-processamento):
– 1. selecção dos documentos que contêm a
palavra “sonho”;
– 2. destes, selecção dos documentos que
contêm a palavra “acção”;
– 3. destes, selecção dos documentos que
não contêm a palavra “sonâmbolo”.
3
Recuperação de Informação em Bases de Texto
• Modelo booleano
– sonho AND acção AND NOT sonâmbolo
– Abordagens:
• Força bruta -> inviável para colecções de
documentos de dimensão média/grande.
• Pré-processamento dos textos
– Matriz de termos-documentos
4
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Matriz de termos-documentos
Livro do desassosego Mensagem
acção
1
0
sonho
1
1
sonâmbolo
0
0
5
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Matriz de termos-documentos
– Interrogação:
• sonho AND acção AND NOT sonâmbolo
• 11 AND 10 AND NOT 00
• 11 AND 10 AND 11
• 10
– Resposta: “Livro do desassossego” -- Fernando
Pessoa
6
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Resposta: “Livro do desassossego” -- Fernando
Pessoa
• “Tenho que escolher o que detesto - ou o
sonho, que a minha inteligência odeia, ou a
acção, que a minha sensibilidade repugna;
ou a acção, para que não nasci, ou o sonho,
para que ninguém nasceu.”
7
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Matriz de termos-documentos
• Suponhamos uma colecção com 1 milhão de
documentos, cada um com uma média de
1000 palavras, cada uma com uma média de
6 bytes -> 6GB;
• Suponhamos que existem cerca de 500.000
termos distintos na colecção;
• A matriz de termos-documentos terá 500.000
* 1 milhão de elementos = 500.000.000.000!
8
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Matriz de termos-documentos
• Não é viável representar todos os elementos!
• Mas o número de “1”s é -> 1.000.000 docs *
1000 palavra = 1.000.000.000
• Ou seja, 1/500 = 0.2% de “1”s e 99.8% de
“0”s
• A solução é representar somente a
informação positiva -> “inverted index”,
“inverted file”.
9
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Inverted index
• Para cada termo, guarda-se a lista dos
documentos que o contêm.
– “acção” -> “doc 1”.
– “sonho” -> “doc 1”; “doc 2”
• Implementação:
– Array
– Listas ligadas
– Listas ligadas ordenadas
10
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Como construir o “inverted index”?
• Identificar as palavras/tokens de cada
documento;
– “Tenho”; “que”; “escolher”; ...
• “Normalizar” essas palavras
– “ter”; “que”; “escolher”; ...
• Criação dos índices ordenados por
identificador do documento
– ter -> “doc 1”; “doc 3”
– ...
11
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Como construir o “inverted index”?
• O dicionário (conjunto de todos os termos)
deverá ter, para cada entrada:
– termo (string)
– nº de documentos que a contêm (tamanho
da lista apontada)
» (ter,2) -> “doc 1”; “doc 3”
12
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Como construir o “inverted index”?
• O dicionário pode ser implementado por:
– tabela de hash
– lista ordenada
– b-tree
– trie (árvore de prefixos)
– ...
13
Recuperação de Informação em Bases de Texto
• Modelo booleano
– O dicionário pode ser implementado por:
• tabela de hash
– acesso eficiente; “problemas” com
ordenação; problemas com alguns
operadores (wildcards: *, ?)
• lista ordenada
– acesso pouco eficiente;
14
Recuperação de Informação em Bases de Texto
• Modelo booleano
– O dicionário pode ser implementado por:
• b-tree
– acesso eficiente
• trie (árvore de prefixos)
– acesso “razoavelmente” eficiente
(dependendo da implementação)
– pesquisa por prefixação, com wildcards
(*, ?) simplificada
15
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Como processar as interrogações sobre
“inverted indexes”?
• sonho
– Lista de “doc ids” apontados pelo termo
“sonho” do dicionário.
• sonho AND acção
– Intersecção das listas de “doc ids”
» “acção” -> “doc 1”.
» “sonho” -> “doc 1”; “doc 2”
» “sonho” AND “acção” -> “doc 1”
16
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Como processar as interrogações sobre
“inverted indexes”?
• operador OR
– reunião de listas
• operador NOT
– complemento de listas/conjuntos
17
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Complexidade das operações booleanas sobre
“inverted indexes”?
• AND e OR são de complexidade linear com o
tamanho das listas, se os elementos tiverem
ordenados;
• NOT é um operador “caro” -> criar a lista
complemento -> complexidade linear com a
dimensão do dicionário!
18
Recuperação de Informação em Bases de Texto
• Modelo booleano
– AND(P1,P2) --> intersecção(lista(P1), lista(P2))
– intersecção(L1, L2)
• L = {}
• while L1 <> nil and L2 <> nil
– if (docID(first(L1)) = docID(first(L2)))
» add(L, first(L1)); L1++; L2++
– else if (docID(first(L1)) < docID(first(L2)))
» L1++
– else L2++
• return L
19
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Como optimizar o processamento das
interrogações?
• Sequências de ANDs
– Começar por calcular a intersecção das
listas com menor cardinalidade (a
intersecção só pode diminuir a
cardinalidade de um conjunto!)
– Usar a informação guardada no dicionário
sobre o número de documentos que
contêm o termo.
20
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Como optimizar o processamento das
interrogações?
• Estratégia geral:
– Transformar a interrogação numa
disjunção (ANDs) de expressões e
calcular as intersecções começando pela
expressão com menor cardinalidade
21
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Limitações/extensões:
• Expressões multi-palavra
– “Inverted indexes” devem guardar
informação sobre a posição da palavra no
documento;
– Alternativa: dicionário multi-palavra
22
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Limitações/extensões:
• Operadores de proximidade
– sonho perto_de acção
– “Inverted indexes” devem guardar
informação sobre a posição da palavra no
documento;
23
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Limitações/extensões:
• Estrutura dos documentos
– autor = “F. Pessoa” AND contém(texto,
sonho)
– “Inverted indexes” devem guardar
informação sobre os campos em que as
palavas surgem nos documentos.
24
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Limitações/extensões:
• Modelo não tem em conta a frequência de
ocorrência das palavras nos documentos
– maior frequência provavelmente implica
maior relevância
• Extensão ao modelo para os “inverted
indexes” guardarem a frequência de
ocorrência dos termos nos documentos
• Como usar esta informação (peso dos
termos) para ordenação dos resultados?
25
Recuperação de Informação em Bases de Texto
• Modelo booleano
– Limitações/extensões:
• Uso exclusivo de lógica booleana pode ser
uma limitação:
– sonho AND acção AND sonâmbolo
• Será que os documentos que contêm duas
das três palavras não deveriam ser
seleccionados, caso não haja nenhum que
contenha a totalidade dos termos?
26
Recuperação de Informação em Bases de Texto
• Como avaliar a qualidade do sistemas de RI?
– Precisão
• % de documentos seleccionados que são
relevantes
– Recall/cobertura/abrangência
• % de documentos relevantes que foi
seleccionado
– ...
27

Documentos relacionados