Your SlideShare is downloading. ×
Dicionários e Recuperação Tolerante
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Dicionários e Recuperação Tolerante

258
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
258
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 detamanho 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 deentradas 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 determos  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 determos  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 deLevenshtein 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çãoortográ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 emSNOW? 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