Dicionários e Recuperação Tolerante
-
Upload
alexandre-duarte -
Category
Documents
-
view
282 -
download
1
Transcript of Dicionários e Recuperação Tolerante
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 3: Dicionários e RecuperaçãoTolerante
1
Agenda
❶ Revisão
❷ Dicionários
❸ Consultas com coringas
❹ Correção ortográfica e distância de edição
2
Agenda
❶ Revisão
❷ Dicionários
❸ Consultas com coringas
❹ Correção ortográfica e distância de edição
3
4
Problemas com a tokenization
Quais são os delimitadores ?
Espaços ?
Apóstrofos?
Hifens?
As vezes eles delimitam. As vezes não.
Muitas linguagens não tem espaços em braco (e.g., Chinês)
Algumas linguagens (Alemão, Holandês e Sueco, por exemplo) não tem espaços em substantivos compostos (Lebensversicherungsgesellschaftsangestellter)
4
5
Problemas com classes de equivalências
Um termo é uma classe de equivalência de termos.
Como definimos classes de equivalência?
Números (3/20/91 vs. 20/3/91)
Maiúsculas e minúsculas
Análise morfológica
Problemas com classes de equivalência em diferentes idiomas
Finlandês: um único verbo pode ter até 12.000 formas diferentes
Como lidar com acentos, tremas, etc.
5
6
Skip pointers
6
7
Índices posicionais
7
Lista de postings em um índice não posicional: cada posting é apenas um identificador de documento
Lista de postings em um índice posicional: cada posting é um identificador de documento e uma lista de posições
Consulta de exemplo: “to1 be2 or3 not4 to5 be6” TO, 993427:
‹ 1: ‹7, 18, 33, 72, 86, 231›;2: ‹1, 17, 74, 222, 255›;4: ‹8, 16, 190, 429, 433›;5: ‹363, 367›;7: ‹13, 23, 191›; . . . ›
BE, 178239:‹ 1: ‹17, 25›;4: ‹17, 191, 291, 430, 434›;5: ‹14, 19, 101›; . . . › Documento 4!
8
Índices posicionais
Com um índice posicional podemos responder consultas porfrases
Com um índice posicional podemos responder consultas porproximidade
8
9
A seguir
Recuperação tolerante: O que fazer se não há nenhum documento que satisfaça totalmente a consulta
Consultas com coringas
Correção ortográfica
9
Agenda
❶ Revisão
❷ Dicionários
❸ Consultas com coringas
❹ Correção ortográfica e distância de edição
10
11
Índice invertido
11
12
Índice invertido
12
13
Dicionários
Dicionário: a estrutura de dados utilizada para armazenar o vocabulário de termos
13
14
Dicionário como um array de entradas de tamanho fixo
Para cada termo, preciso armazenar os seguintes itens:
Frequência de documentos
Apontador para a lista de postings
Assuma por enquanto que podemos armazenar esta informação em uma entrada de tamanho fixo
Assuma que armazenamos estas entradas em um array
14
15
Dicionário como um array de
entradas de tamanho fixo
Espaço necessário: 20 bytes 4 bytes 4 bytes
Como localizar o termo qi neste array em tempo de consulta? Ou seja: que estrutura de dados nós utilizamos para localizar em que entrada qi está armazenado?
15
16
Estruturas de dados para localização de termos
Duas classes principais de estruturas de dados: hashes e árvores
Alguns sistemas utilizam hashes outros utilizam árvores.
Critério para escolher entre usar hash ou usar árvore:
Há um número fixo de termos ou a coleção vai continuar a crescer ?
Quais são as frequências relativas de acesso para cada um dos termos?
Qual a estimativa para a quantidade de termos no sistema?
16
17
Hashes
Cada termo do vocabulário é mapeado (hashed) em um número inteiro.
Tentar evitar colisões
No momento da consulta fazer o seguinte: mapear o termo da consulta, resolver eventuais colisões, localizar a entrada no array
Pros: Acesso com hash é mais rápido que acesso em árvore.
Acesso em tempo constante.
Cons
Impossível encontrar variações simples (resume vs. résumé)
Impossível fazer busca por prefixo (todos os termos começando com automat)
É preciso remapear todos os termos periodicamente se o vocabulário continuar a crescer
17
18
Árvores
Resolvem o problema da busca por prefixos (encontrar todos os temos que começam com automat).
Modelo mais simples: árvore binária
Consulta é ligeiramente mais lenta que utilizando hash : O(logM), onde M é o tamanho do vocabulário.
O(logM) só vale para árvores balanceadas.
Re-balancear uma árvore é uma operação cara.
Árvores B diminuem um pouco o problema de re-balanceamento.
Definição de uma árvore B: cada nó interno tem um número de filhos no intervalo [a, b] onde a, b são números inteiros positivos apropriados e.g., [2, 4].
18
19
Árvore binária
19
20
Árvore B
20
Agenda
❶ Revisão
❷ Dicionários
❸ Consultas com coringas
❹ Correção ortográfica e distância de edição
21
22
Consultas com coringas
mon*: encontrar todos os documentos contendo algum termo começando com mon
Fácil se utilizamos um dicionário com Árvore B: recuperar todos os termos t no intervalo: mon ≤ t < moo
*mon: encontrar todos os documentos contendo algum termo terminando com mon
Manter uma árvore adicional com os termos em ordem inversa
Então recuperar todos os termos t no intervalo: nom ≤ t < non
Resultado: Um conjunto de termos que atendem uma consulta com coringa
Basta então recuperar os documentos que contem algum desses termos
22
23
Como lidar com * no meio de um termo
Exemplo: m*nchen
Poderíamos procurar por m* e *nchen na Árvore B e depois achar a interseção dos dois conjuntos.
Muito caro
Alternativas:
Índice com permuterm
Rotacionar o token para o * sempre ficar no final
Multiplica por 4 o tamanho do índice
Índices com k-grams
Enumera todas as sequências de k caracteres no termo
Ocupa menos espaço que um índice permuterm
Requer uma etapa de filtragem posterior de falsos positivos
Não entraremos em detalhes sobre estas técnicas23
Agenda
❶ Revisão
❷ Dicionários
❸ Consultas com coringas
❹ Correção ortográfica e distância de edição
24
25
Correção ortográfica
Dois usos principais
Corrigir documentos durante indexação
Corrigir consultas do usuário
Dois métodos diferentes para correção ortográfica
Correção ortográfica de palavras isoladas
Checa cada palavra individualmente
Não vai corrigir erros que resultem em palavras escritas corretamente, e.g., an asteroid that fell form the sky
Correção ortográfica sensível ao contexto
Checa as palavras ao redor
Pode corrigir o form/from na frase acima
25
26
Corrigindo documentos
Não estamos interessados em correção ortográfica de documentos de forma interativa (e.g., MS Word) neste curso.
Em Recuperação da Informação, correção ortográfica é utilizada principalmente para documentos escaneadosutilizando OCR (OCR = optical character recognition)
A filosofia geral da Recuperação da Informação é: não altere os documentos.
26
27
Corrigindo consultas
Primeiro: correção ortográfica de palavras isoladas
Premissa 1: Exista uma lista de “palavras corretas” na qual pode ser encontrada a correção para a palavra errada.
Premissa 2: Temos uma forma de calcular a distancia entre uma palavra incorreta e uma palavra correta.
Uma algoritmo simples de correção ortográfica: retorne a palavra “correta” que tenha a menor distância para a palavra errada..
Exemple: infromação → informação
Para esta lista de palavras corretas podemos utilizar o próprio vocabulário que contem todas as palavras que ocorrem na coleção de documentos
Por que isso não seria recomendado?
27
28
Alternativas a utilizar o vocabulário de termos
Um dicionário padrão (Michaelis, Aurélio, etc)
Um dicionário específico para sistemas de recuperação da informação
28
29
Distância de edição
A distância de edição entre dois strings s1 e s2 é o menor número de operação básicas que transforma s1 em s2.
Distância de Levenshtein: As operações básicas admissíveis são inserir, remover e substituir um caractere
Distância de Levenshtein dog-do: 1
Distância de Levenshtein cat-cart: 1
Distância de Levenshtein cat-cut: 1
Distância de Levenshtein cat-act: 2
29
30
Algoritmo da distância de Levenshtein
30
31
Exemplo: Distância de Levenshtein
31
32
Significado de cada célula de uma matriz de Levenshtein
32
Custo de chegar aqui a partir do vizinho superior esquerdo (copia ou substituição)
Custo de chegar aqui a partir de meu vizinho de cima (remoção)
Custo de chegar aqui a partir do meu vizinho da esquerda (inserção)
O Valor mínimo destes três possíveis movimentos; a forma mais barata de chegar aqui
33
Usando a distância de edição para correção ortográfica
Dada uma consulta, primeiro enumere todas a sequencias de caracteres que tenham uma dada distância de edição de cada termo incorreto
Encontre a interseção dessa lista com a lista de termos corretos
Sugira termos na interseção para o usuário.
33
34
Exercício
❶ Encontre a matriz de distância de Levenshtein para OSLO –SNOW
❷ Quais são as operações de edição de Levenshtein que transformam cat into catcat?
34
3535
3636
3737
3838
3939
4040
4141
4242
4343
4444
4545
4646
4747
4848
4949
5050
5151
5252
5353
5454
5555
5656
5757
5858
5959
6060
6161
6262
6363
6464
6565
6666
6767
6868
69
Como entender quais operações de edição transformam OSLO em SNOW?
69
7070
7171
7272
7373
7474
7575
7676
7777
7878
7979
80
Correção ortográfica sensível ao contexto Nosso exemplo foi: an asteroid that fell form the sky Como corrigir? Uma dica: Correção ortográfica baseada em hits
Recupere os termos “corretos” próximos a cada termo da consulta flew form munich: flea para flew, from para form e munch para
munich Agora tente todas as possíveis frases resultantes variando uma
palavra por vez Tentar “flea form munich” Tentar “flew from munich” Tentar “flew form munch” A consulta correta “flew from munich” terá o maior número de
resultados (hits).
80
81
Correção ortográfica sensível ao contexto
A abordagem baseada em hits que acabamos de citar não é muito eficiente.
Altenativas mais eficientes se baseiam em coleções de consultas e não de documentos
81
82
Questões gerais sobre correção ortográfica
Interface do usuário
automática vs. sugestão de correção
Did you mean só funciona para uma sugestão.
Como lidar com múltiplas possibilidades de correção?
Tradeoff: simplicidade vs. poder
Custo
Correção ortográfica é um processo potencialmente custoso.
Evitar realizar a cada consulta?
Talvez apenas para consultas que resultem em poucos documentos.
Chute: A correção ortográfica das principais ferramentas de busca é eficiente o suficiente para poder ser executada a cada consulta.
82