Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Anúncio
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Dicionários e Recuperação Tolerante
Próximos SlideShares
Compressão de ÍndicesCompressão de Índices
Carregando em ... 3
1 de 82
Anúncio

Mais conteúdo relacionado

Similar a Dicionários e Recuperação Tolerante(20)

Anúncio

Mais de Alexandre Duarte(20)

Dicionários e Recuperação Tolerante

  1. Centro de Informática – Universidade Federal da Paraíba Ordenação e Recuperação de Dados Aula 3: Dicionários e Recuperação Tolerante Prof. Alexandre Duarte - http://alexandre.ci.ufpb.br 1
  2. Agenda ❶ Revisão ❷ Dicionários ❸ Consultas com coringas ❹ Correção ortográfica e distância de edição 2
  3. 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  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! 7
  8. Índices posicionais  Com um índice posicional podemos responder consultas por frases  Com um índice posicional podemos responder consultas por proximidade 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
  10. 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
  21. 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écnicas 23
  24. 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 escaneados utilizando 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 Custo de chegar aqui a partir Custo de chegar aqui a partir do vizinho superior esquerdo de meu vizinho de cima (copia ou substituição) (remoção) Custo de chegar aqui a partir O Valor mínimo destes três do meu vizinho da esquerda possíveis movimentos; a (inserção) forma mais barata de chegar aqui 32
  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
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. Como entender quais operações de edição transformam OSLO em SNOW? 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  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
Anúncio