SlideShare ist ein Scribd-Unternehmen logo
1 von 82
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
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
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
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
Skip pointers




                6
Í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
Índices posicionais



   Com um índice posicional podemos responder consultas por
    frases
   Com um índice posicional podemos responder consultas por
    proximidade




                                                               8
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
Índice invertido




                   11
Índice invertido




                   12
Dicionários


   Dicionário: a estrutura de dados utilizada para armazenar o
    vocabulário de termos




                                                                  13
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
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
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
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
Á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
Árvore binária




                 19
Árvore B




           20
Agenda
❶   Revisão

❷   Dicionários
❸   Consultas com coringas
❹   Correção ortográfica e distância de edição




                                                 21
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
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
Agenda
❶   Revisão

❷   Dicionários
❸   Consultas com coringas
❹   Correção ortográfica e distância de edição




                                                 24
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
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
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
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
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
Algoritmo da distância de Levenshtein




                                        30
Exemplo: Distância de Levenshtein




                                    31
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
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
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Como entender quais operações de edição transformam OSLO em
SNOW?
                                                          69
70
71
72
73
74
75
76
77
78
79
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
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
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

Weitere ähnliche Inhalte

Andere mochten auch

Introducción a los motores de búsqueda
Introducción a los motores de búsquedaIntroducción a los motores de búsqueda
Introducción a los motores de búsquedanachopg
 
Bases de Datos - Parte 8/10 Memoria secundaria
Bases de Datos - Parte 8/10 Memoria secundariaBases de Datos - Parte 8/10 Memoria secundaria
Bases de Datos - Parte 8/10 Memoria secundariaCarlos Castillo (ChaTo)
 
Classificação e Ponderação
Classificação e PonderaçãoClassificação e Ponderação
Classificação e PonderaçãoAlexandre Duarte
 
Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009Plataformatec
 
Apache Lucene - Relevância dos Resultados
Apache Lucene - Relevância dos ResultadosApache Lucene - Relevância dos Resultados
Apache Lucene - Relevância dos ResultadosRafael Domingues
 
Classficação de Texto e Naive Bayes
Classficação de Texto e Naive BayesClassficação de Texto e Naive Bayes
Classficação de Texto e Naive BayesAlexandre Duarte
 
Sistemas de recuperação de informação
Sistemas de recuperação de informação Sistemas de recuperação de informação
Sistemas de recuperação de informação Célia Dias
 
Sistemas de recomendação
Sistemas de recomendaçãoSistemas de recomendação
Sistemas de recomendaçãoAnderson Dantas
 
Introducción al trabajo colaborativo
Introducción al trabajo colaborativoIntroducción al trabajo colaborativo
Introducción al trabajo colaborativoAlfredo Castañeda
 

Andere mochten auch (13)

Introducción a los motores de búsqueda
Introducción a los motores de búsquedaIntroducción a los motores de búsqueda
Introducción a los motores de búsqueda
 
Bases de Datos - Parte 8/10 Memoria secundaria
Bases de Datos - Parte 8/10 Memoria secundariaBases de Datos - Parte 8/10 Memoria secundaria
Bases de Datos - Parte 8/10 Memoria secundaria
 
Classificação e Ponderação
Classificação e PonderaçãoClassificação e Ponderação
Classificação e Ponderação
 
Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009Classificação de textos - Dev in Sampa - 28nov2009
Classificação de textos - Dev in Sampa - 28nov2009
 
Apache Lucene - Relevância dos Resultados
Apache Lucene - Relevância dos ResultadosApache Lucene - Relevância dos Resultados
Apache Lucene - Relevância dos Resultados
 
Construção de Índices
Construção de ÍndicesConstrução de Índices
Construção de Índices
 
Cálculo de Score
Cálculo de ScoreCálculo de Score
Cálculo de Score
 
Conclusión trabajo colaborativo en red
Conclusión trabajo colaborativo en redConclusión trabajo colaborativo en red
Conclusión trabajo colaborativo en red
 
Classficação de Texto e Naive Bayes
Classficação de Texto e Naive BayesClassficação de Texto e Naive Bayes
Classficação de Texto e Naive Bayes
 
Sistemas de recuperação de informação
Sistemas de recuperação de informação Sistemas de recuperação de informação
Sistemas de recuperação de informação
 
Sistemas de recomendação
Sistemas de recomendaçãoSistemas de recomendação
Sistemas de recomendação
 
Projeto de Experimentos
Projeto de ExperimentosProjeto de Experimentos
Projeto de Experimentos
 
Introducción al trabajo colaborativo
Introducción al trabajo colaborativoIntroducción al trabajo colaborativo
Introducción al trabajo colaborativo
 

Ähnlich wie Dicionários e consultas com coringas em recuperação de informação

Vocabulário de termos e listas de postings
Vocabulário de termos e listas de postingsVocabulário de termos e listas de postings
Vocabulário de termos e listas de postingsAlexandre Duarte
 
Estudo comparativo entre tesauros museológicos internacionais disponíveis online
Estudo comparativo entre tesauros museológicos internacionais disponíveis onlineEstudo comparativo entre tesauros museológicos internacionais disponíveis online
Estudo comparativo entre tesauros museológicos internacionais disponíveis onlineLuciana Monteblanco
 
Trabalho de Graduação - Normalização de ontologias em lógica de descrições AL...
Trabalho de Graduação - Normalização de ontologias em lógica de descrições AL...Trabalho de Graduação - Normalização de ontologias em lógica de descrições AL...
Trabalho de Graduação - Normalização de ontologias em lógica de descrições AL...Adriano Melo
 
Minerando informações de textos
Minerando informações de textosMinerando informações de textos
Minerando informações de textosBarbara Barbosa
 
Automacao com Python.pdf
Automacao com Python.pdfAutomacao com Python.pdf
Automacao com Python.pdfSecont
 
Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Diogo L. V. G. Rubert
 
As ferramentas, os percursos e as estratégias de tradução no universo digital...
As ferramentas, os percursos e as estratégias de tradução no universo digital...As ferramentas, os percursos e as estratégias de tradução no universo digital...
As ferramentas, os percursos e as estratégias de tradução no universo digital...Diogoncosta
 
IV encontro de pesquisas do francês_gisele galafacci
IV encontro de pesquisas do francês_gisele galafacciIV encontro de pesquisas do francês_gisele galafacci
IV encontro de pesquisas do francês_gisele galafacciGisele Galafacci
 
Aline - Oralidade e Naturalidade na Tradução Audiovisual versão final do TCC
Aline - Oralidade e Naturalidade na Tradução Audiovisual versão final do TCCAline - Oralidade e Naturalidade na Tradução Audiovisual versão final do TCC
Aline - Oralidade e Naturalidade na Tradução Audiovisual versão final do TCCAline Mehedin
 
Compilação de Corpus em Língua Portuguesa na área de Nanociência/Nanotecnolog...
Compilação de Corpus em Língua Portuguesa na área de Nanociência/Nanotecnolog...Compilação de Corpus em Língua Portuguesa na área de Nanociência/Nanotecnolog...
Compilação de Corpus em Língua Portuguesa na área de Nanociência/Nanotecnolog...Joel S. Coleti
 
Leituras complementares: Estudo preliminar do Tesauro Brasileiro de Ciências ...
Leituras complementares: Estudo preliminar do Tesauro Brasileiro de Ciências ...Leituras complementares: Estudo preliminar do Tesauro Brasileiro de Ciências ...
Leituras complementares: Estudo preliminar do Tesauro Brasileiro de Ciências ...Felipe Benevenutto
 
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...Joel S. Coleti
 
Apostila logica algoritmos e estrutuara de dados
Apostila  logica algoritmos e estrutuara de dadosApostila  logica algoritmos e estrutuara de dados
Apostila logica algoritmos e estrutuara de dadosGelber Freitas
 

Ähnlich wie Dicionários e consultas com coringas em recuperação de informação (20)

Vocabulário de termos e listas de postings
Vocabulário de termos e listas de postingsVocabulário de termos e listas de postings
Vocabulário de termos e listas de postings
 
Estudo comparativo entre tesauros museológicos internacionais disponíveis online
Estudo comparativo entre tesauros museológicos internacionais disponíveis onlineEstudo comparativo entre tesauros museológicos internacionais disponíveis online
Estudo comparativo entre tesauros museológicos internacionais disponíveis online
 
Elab2010
Elab2010Elab2010
Elab2010
 
Getting updated: Tricks&Tips
Getting updated: Tricks&TipsGetting updated: Tricks&Tips
Getting updated: Tricks&Tips
 
Trabalho de Graduação - Normalização de ontologias em lógica de descrições AL...
Trabalho de Graduação - Normalização de ontologias em lógica de descrições AL...Trabalho de Graduação - Normalização de ontologias em lógica de descrições AL...
Trabalho de Graduação - Normalização de ontologias em lógica de descrições AL...
 
Minerando informações de textos
Minerando informações de textosMinerando informações de textos
Minerando informações de textos
 
Automacao com Python.pdf
Automacao com Python.pdfAutomacao com Python.pdf
Automacao com Python.pdf
 
Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015Palestra Diogo Rubert - PGDAY Campinas 2015
Palestra Diogo Rubert - PGDAY Campinas 2015
 
As ferramentas, os percursos e as estratégias de tradução no universo digital...
As ferramentas, os percursos e as estratégias de tradução no universo digital...As ferramentas, os percursos e as estratégias de tradução no universo digital...
As ferramentas, os percursos e as estratégias de tradução no universo digital...
 
ABNT fácil
ABNT fácilABNT fácil
ABNT fácil
 
IV encontro de pesquisas do francês_gisele galafacci
IV encontro de pesquisas do francês_gisele galafacciIV encontro de pesquisas do francês_gisele galafacci
IV encontro de pesquisas do francês_gisele galafacci
 
Crop10 abdu
Crop10 abduCrop10 abdu
Crop10 abdu
 
Aline - Oralidade e Naturalidade na Tradução Audiovisual versão final do TCC
Aline - Oralidade e Naturalidade na Tradução Audiovisual versão final do TCCAline - Oralidade e Naturalidade na Tradução Audiovisual versão final do TCC
Aline - Oralidade e Naturalidade na Tradução Audiovisual versão final do TCC
 
Compilação de Corpus em Língua Portuguesa na área de Nanociência/Nanotecnolog...
Compilação de Corpus em Língua Portuguesa na área de Nanociência/Nanotecnolog...Compilação de Corpus em Língua Portuguesa na área de Nanociência/Nanotecnolog...
Compilação de Corpus em Língua Portuguesa na área de Nanociência/Nanotecnolog...
 
Belinda Maia - Introdução à tradução automática
Belinda Maia - Introdução à tradução automáticaBelinda Maia - Introdução à tradução automática
Belinda Maia - Introdução à tradução automática
 
Leituras complementares: Estudo preliminar do Tesauro Brasileiro de Ciências ...
Leituras complementares: Estudo preliminar do Tesauro Brasileiro de Ciências ...Leituras complementares: Estudo preliminar do Tesauro Brasileiro de Ciências ...
Leituras complementares: Estudo preliminar do Tesauro Brasileiro de Ciências ...
 
Compressão de arquivos
Compressão de arquivosCompressão de arquivos
Compressão de arquivos
 
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
Dicionário-piloto de Nanociência e Nanotecnologia: do corpus à disponibilizaç...
 
Inglies.At2
Inglies.At2Inglies.At2
Inglies.At2
 
Apostila logica algoritmos e estrutuara de dados
Apostila  logica algoritmos e estrutuara de dadosApostila  logica algoritmos e estrutuara de dados
Apostila logica algoritmos e estrutuara de dados
 

Mehr von Alexandre Duarte

Táticas para Projeto de Experimentos
Táticas para Projeto de ExperimentosTáticas para Projeto de Experimentos
Táticas para Projeto de ExperimentosAlexandre Duarte
 
Fazer Ciência é Difícil!
Fazer Ciência é Difícil!Fazer Ciência é Difícil!
Fazer Ciência é Difícil!Alexandre Duarte
 
Escolhendo um Projeto de Pesquisa
Escolhendo um Projeto de PesquisaEscolhendo um Projeto de Pesquisa
Escolhendo um Projeto de PesquisaAlexandre Duarte
 
Ciência da Computação como Ciência
Ciência da Computação como CiênciaCiência da Computação como Ciência
Ciência da Computação como CiênciaAlexandre Duarte
 
Metodologia da Pesquisa Científica: Introdução
Metodologia da Pesquisa Científica:  IntroduçãoMetodologia da Pesquisa Científica:  Introdução
Metodologia da Pesquisa Científica: IntroduçãoAlexandre Duarte
 
Gráficos: 10 dicas sobre o que fazer e sobre o que não fazer
Gráficos: 10 dicas sobre o que fazer e sobre o que não fazerGráficos: 10 dicas sobre o que fazer e sobre o que não fazer
Gráficos: 10 dicas sobre o que fazer e sobre o que não fazerAlexandre Duarte
 
Panorama de Pesquisas em Análise de Dados na UFPB
Panorama de Pesquisas em Análise de Dados na UFPBPanorama de Pesquisas em Análise de Dados na UFPB
Panorama de Pesquisas em Análise de Dados na UFPBAlexandre Duarte
 
Sumarização Estatística 2D: Variáveis Nominais
Sumarização Estatística 2D: Variáveis NominaisSumarização Estatística 2D: Variáveis Nominais
Sumarização Estatística 2D: Variáveis NominaisAlexandre Duarte
 
Correlação e Classificação
Correlação e ClassificaçãoCorrelação e Classificação
Correlação e ClassificaçãoAlexandre Duarte
 
Sumarização Estatística 2D
Sumarização Estatística 2DSumarização Estatística 2D
Sumarização Estatística 2DAlexandre Duarte
 
Sumarização Estatística 1D
Sumarização Estatística 1DSumarização Estatística 1D
Sumarização Estatística 1DAlexandre Duarte
 
Preparação e Limpeza de Dados
Preparação e Limpeza de DadosPreparação e Limpeza de Dados
Preparação e Limpeza de DadosAlexandre Duarte
 
Introdução ao Projeto de Experimentos
Introdução ao Projeto de ExperimentosIntrodução ao Projeto de Experimentos
Introdução ao Projeto de ExperimentosAlexandre Duarte
 
Introdução ao Projeto de Surveys
Introdução ao Projeto de SurveysIntrodução ao Projeto de Surveys
Introdução ao Projeto de SurveysAlexandre Duarte
 
Introdução à Análise de Dados - Aula 01
Introdução à Análise de Dados - Aula 01Introdução à Análise de Dados - Aula 01
Introdução à Análise de Dados - Aula 01Alexandre Duarte
 
Introdução à Analise de Dados - aula 3 - Agregação de Dados
Introdução à Analise de Dados - aula 3 - Agregação de DadosIntrodução à Analise de Dados - aula 3 - Agregação de Dados
Introdução à Analise de Dados - aula 3 - Agregação de DadosAlexandre Duarte
 

Mehr von Alexandre Duarte (20)

Táticas para Projeto de Experimentos
Táticas para Projeto de ExperimentosTáticas para Projeto de Experimentos
Táticas para Projeto de Experimentos
 
Causalidade e Abdução
Causalidade e AbduçãoCausalidade e Abdução
Causalidade e Abdução
 
Fazer Ciência é Difícil!
Fazer Ciência é Difícil!Fazer Ciência é Difícil!
Fazer Ciência é Difícil!
 
Atividades Científica
Atividades CientíficaAtividades Científica
Atividades Científica
 
Escolhendo um Projeto de Pesquisa
Escolhendo um Projeto de PesquisaEscolhendo um Projeto de Pesquisa
Escolhendo um Projeto de Pesquisa
 
Ciência da Computação como Ciência
Ciência da Computação como CiênciaCiência da Computação como Ciência
Ciência da Computação como Ciência
 
Metodologia da Pesquisa Científica: Introdução
Metodologia da Pesquisa Científica:  IntroduçãoMetodologia da Pesquisa Científica:  Introdução
Metodologia da Pesquisa Científica: Introdução
 
Gráficos: 10 dicas sobre o que fazer e sobre o que não fazer
Gráficos: 10 dicas sobre o que fazer e sobre o que não fazerGráficos: 10 dicas sobre o que fazer e sobre o que não fazer
Gráficos: 10 dicas sobre o que fazer e sobre o que não fazer
 
Panorama de Pesquisas em Análise de Dados na UFPB
Panorama de Pesquisas em Análise de Dados na UFPBPanorama de Pesquisas em Análise de Dados na UFPB
Panorama de Pesquisas em Análise de Dados na UFPB
 
Agrupamento com K-Means
Agrupamento com K-MeansAgrupamento com K-Means
Agrupamento com K-Means
 
Sumarização Estatística 2D: Variáveis Nominais
Sumarização Estatística 2D: Variáveis NominaisSumarização Estatística 2D: Variáveis Nominais
Sumarização Estatística 2D: Variáveis Nominais
 
Correlação e Classificação
Correlação e ClassificaçãoCorrelação e Classificação
Correlação e Classificação
 
Sumarização Estatística 2D
Sumarização Estatística 2DSumarização Estatística 2D
Sumarização Estatística 2D
 
Sumarização Estatística 1D
Sumarização Estatística 1DSumarização Estatística 1D
Sumarização Estatística 1D
 
Transformação de Dados
Transformação de DadosTransformação de Dados
Transformação de Dados
 
Preparação e Limpeza de Dados
Preparação e Limpeza de DadosPreparação e Limpeza de Dados
Preparação e Limpeza de Dados
 
Introdução ao Projeto de Experimentos
Introdução ao Projeto de ExperimentosIntrodução ao Projeto de Experimentos
Introdução ao Projeto de Experimentos
 
Introdução ao Projeto de Surveys
Introdução ao Projeto de SurveysIntrodução ao Projeto de Surveys
Introdução ao Projeto de Surveys
 
Introdução à Análise de Dados - Aula 01
Introdução à Análise de Dados - Aula 01Introdução à Análise de Dados - Aula 01
Introdução à Análise de Dados - Aula 01
 
Introdução à Analise de Dados - aula 3 - Agregação de Dados
Introdução à Analise de Dados - aula 3 - Agregação de DadosIntrodução à Analise de Dados - aula 3 - Agregação de Dados
Introdução à Analise de Dados - aula 3 - Agregação de Dados
 

Dicionários e consultas com coringas em recuperação de informação

  • 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
  • 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
  • 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
  • 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