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

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
613
On Slideshare
613
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
26
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