SlideShare uma empresa Scribd logo
1 de 37
Centro de Informática – Universidade Federal da Paraíba




              Ordenação e Recuperação de Dados
               Aula 2: Vocabulário de termos e listas
               de postings



                Prof. Alexandre Duarte - http://alexandre.ci.ufpb.br
Ch. 1




Revisão da aula passada
 Índices invertidos (introdução):
    Estrutura: Dicionário e Postings




    Passo chave na construção: Ordenação
 Processamento de consultas Booleanas
    Achar a interseção em tempo linear (“merging”)
    Otimizações simples
Roteiro para esta aula
Aprofundamento sobre indexação
 Pré-processamento para criação do vocabulário
  de termos
   Documentos
   Tokenization
   Que termos colocar no índice?
 Postings
   Merge mais rápido: skip lists
   Postings posicionais e consultas por frases
Relembrando o processo de indexação
 Documentos para                   Friends, Romans, countrymen.
 indexar


                    Tokenizer
 Fluxo de tokens                Friends Romans      Countrymen
                      Módulos
                    Linguísticos
 Tokens modificados                friend   roman    countryman

                    Indexador friend                    2   4
                                roman                   1    2
 Índice invertido
                                countryman             13    16
Sec. 2.1




Parsing de um documento
 Qual o formato do documento?
   pdf/word/excel/html?
 Em que idioma?
 Qual o conjunto de caracteres utilizados?


Cada um deste itens representa um
problema de classificação. Veremos mais
sobre isso no futuro.
Sec. 2.1




Complicadores: Formato/idioma
 A coleção pode conter documentos escritos em
  vários idiomas diferentes
    Um único índice pode conter termos de vários idiomas
     diferentes
 Algumas vezes um único documento pode
  contemplar múltiplos idiomas e diferentes formatos
    E-mail escrito em português com anexo em inglês
 O que representa um documento unitário?
      Um arquivo?
      Um email?
      Um e-mail com 5 anexos?
      Um grupo de arquivos (PPT ou LaTeX salvo como HTM)?
Tokens e Termos
Sec. 2.2.1




Tokenization
 Entrada: “Friends, Romans and Countrymen”
 Saída: Tokens
    Friends
    Romans
    Countrymen
 Um token é uma instância de uma sequência de
  caracteres
 Cada um dos tokens, depois de um processamento
  adicional, é candidato a ser uma entrada no índice
 Mas como definir quais são os tokens válidos?
Sec. 2.2.1




Tokenization
 Problemas na geração de tokens:
    Finland’s capital →
     Finland? Finlands? Finland’s?
   Hewlett-Packard → Hewlett e Packard como dois
    tokens diferentes?
   João Pessoa: um token ou dois?
      Como você decidiu que seria um único token?
Sec. 2.2.1




Números
   23/03/2011           23 de Março 2011
   55 B.C.
   B-52
   Minha chave PGP é 324a3df234cb23e
   (083) 3216-7093
 Geralmente incluem espaços em branco
     Sistemas mais antigos podem não indexar números
         Muitas vezes é algo útil: pense em uma busca na Web por códigos
          de erro em um determinado programa (Oracle, por exemplo)
     Meta-dados geralmente são indexados separadamente
         Data de criação, formato, etc.
Sec. 2.2.1

Tokenization: questões referentes ao
idioma
 Francês
    L'ensemble → um token ou dois?
        L ? L’ ? Le ?
        Fazer l’ensemble casar com un ensemble
             Até 2003 o Google não fazia isso
                   Internacionalização!

 Em alemão substantivos compostos não são segmentados
    Lebensversicherungsgesellschaftsangestellter
    ‘empregado de uma companhia de seguros de vida’
    Sistemas de recuperação de informação em alemão se beneficiam de um
     “quebrador de substantivos”
             Pode melhorar o desempenho em até 15%
Sec. 2.2.1

   Tokenization: questões referentes ao
   idioma
    Chinês e Japonês não tem espaços entre as
     palavras:
      莎拉波娃现在居住在美国东南部的佛罗里达。
      Impossível garantir um fluxo de tokens único
    Mais complicado ainda em Japonês, com a
     mistura de múltiplos alfabetos
      Datas/quantidades em diferentes formados
フォーチュン 500 社は情報不足のため時間あた $500K( 約 6,000 万円 )

        Katakana    Hiragana     Kanji   Romaji

    O usuário poderia fazer a consulta em Hiragana!
Sec. 2.2.1

Tokenization: questões referentes ao
idioma
 Árabe (e Hebraico) é escrito basicamente da direita
  para a esquerda, mas alguns itens como números
  são escritos da esquerda para a direita
 As palavras são separadas mas o formato das letras
  formam ligações complexas

                        ← → ←→                 ←
 ‘A Algeria se tornou independente em 1962 depois
  de 132 anos de ocupação Francesa’
Sec. 2.2.2




Separadores
 Com uma lista de separadores é possível excluir do
  dicionário as palavras mais comuns
    Pouco significado semântico: de, a, e, para, com
    Elas são muito freqüentes: ~30% dos postings dentre as 30 palavras mais
     comuns
 Porém, não é isso que se tem feito :
    Técnicas de compressão fazem com que o espaço necessário para incluir os
     separadores seja muito pequeno
    Técnicas de otimização de consultas significam que se gasta muito pouco
     tempo com os separadores durante o processamento da consulta.
    Eles são necessários para:
        Consultas por frases: “Rei do Futebol”
        Títulos de música, livros, etc.: “Let it be”, “To be or not to be”
        Consultas “relacionais” : “Vôos para Fernando de Noronha”
Sec. 2.2.3




Normalização
 Precisamos “normalizar”as palavras no texto indexado e
  também nas consultas para uma mesma forma
    Queremos casar U.S.A. com USA
 Um termo é uma palavra (normalizada), que é uma entrada
  para o dicionário de um sistema de recuperação de
  informação
 Classes de equivalência são definidas para os termos, por
  exemplo:
    Remover os pontos
    U.S.A., USA  USA
    Remover os hífens
        Para-choques, parachoques  parachoques
Sec. 2.2.3




Normalização: outros idiomas
 Acentos: Francês résumé vs. resume.
 Tremas: Alemão: Tuebingen vs. Tübingen
    Devem ser equivalentes
 Critério mais importante:
    Como os usuários gostariam de utilizar estes termos em
     suas consultas?
 Mesmo em linguagens como o Português, que usam
  acentos freqüentemente, os usuários muitas vezes
  podem preferir não digitá-los
    Geralmente é melhor normalizar para a forma sem
     acentos
       Tuebingen, Tübingen, Tubingen  Tubingen
Sec. 2.2.3




Normalização: outros idiomas
 Normalização de formatos de datas
    7 月 30 日 vs. 7/30


 Tokenization e normalização podem depender do
  idioma, portanto são correlacionadas à deteção do
  idioma do documento                  O que seria MIT?
            Morgen will ich in MIT …

 Crucial: É preciso normalizar tanto o texto a ser
  indexado quanto os termos da consulta
  uniformemente
Sec. 2.2.3




Normalização

 Uma alternativa às classes de equivalência é fazer
  expansão assimétrica
 Um exemplo de onde esta técnica pode ser útil
    Digite: window    Busca por: window, windows
    Digite: windows   Busca por: Windows, windows, window
    Digite: Windows   Busca por: Windows
 Potencialmente mais poderosa porém menos
  eficiente
Thesaurus
 Como lidar com sinônimos e homônimos?
    Classes de equivalência específicas
       carro = automóvel
    Podem ser re-escritos para formar classes de equivalência
       Quando o documento contiver automóvel, indexar como carro e
        automóvel. (e vice-versa)
    Ou pode-se expandir a consulta
       Quando a consulta contiver automóvel, pesquisar também por
        carro
 Como lidar com erros de grafia?
    Uma idéia é utilizar um soundex, que forma classes de
     equivalência baseado em heurísticas fonética
Sec. 2.2.4




Lemmatization
 Reduzir variações à uma única base
 Exemplo
    fui, era, sou → ser
    carro, carrinho, carrão, carros → carro
 Os carros são de cores diferentes → O carro ser de
  cor diferente
 Lemmatization implica em reduzir as palavras à sua
  forma no dicionário
Sec. 2.2.4




Especificidades do idioma
 Muitas das funcionalidades descritas anteriormente
  descrevem transformações que são
    Dependentes de idioma
    Geralmente, dependentes de aplicação
 Devem ser vistas como adendos ao processo de
  indexação
MERGE MAIS RÁPIDO
SKIP POINTERS/SKIP LISTS
Sec. 2.3




    Relembrando o merge básico
     Caminhe simultaneamente nas duas listas em tempo
      linear ao total de postings


                2    4   8   41   48    64    128     Brutus
2     8
                 1   2   3   8    11   17    21   31 Caesar

Se as listas têm comprimento m e n, o cálculo da
interseção tem complexidade O(m+n)

Podemos fazer melhor que isso?
Sim (se o índice não for alterado muito freqüentemente).
Sec. 2.3

Adicionando skip pointers (em tempo
de indexação) às listas de postings
       41                 128
      2      4   8   41     48       64    128


       11                       31
      1      2   3    8    11        17   21   31

 Por que?
   Para saltar (skip) postings que não vão aparecer nos
    resultados da consulta
 Como?
 Onde colocamos os skip pointers?
Sec. 2.3

Processando consultas com skip
pointers
       41               128
      2     4   8   41    48       64    128


       11                     31
       1    2   3   8     11       17   21   31

Suponha que tenhamos percorrido as duas listas até
que processamos o 8 em cada lista. Processamos o 8
e avançamos.
 Temos agora o 41 e o 11. 11 é menor

 Porém, 11 tem um skip pointer para o 31, então
 podemos pular (skip) a frente até o fim da lista.
Sec. 2.3




Onde colocar os skip pointers?
 Tradeoff:
    Mais ponteiros → saltos menores ⇒ saltos mais
     frequentes. Porém requer muitas comparações.
    Menos ponteiros → menos comparações, saltos mais
     longos ⇒ poucos saltos bem sucedidos.
Sec. 2.3




Colocando os skip pointers
 Heurística simples: para listas de tamanho L, colocar
  √L skip pointers distribuídos uniformemente

 Ignora a distribuição dos termos

 Fácil se o índice é relativamente estático; complicado
  se o L muda com freqüência.
CONSULTAS POR FRASES E ÍNDICES
POSICIONAIS
Sec. 2.4




Consultas por frases
 Queremos ser capazes de responder consultas como
  “Universidade Federal da Paraíba” – como uma
  frase
 Portanto a frase “Eu moro na Paraíba” não é um
  bom resultado para a consulta.
    O conceito de consulta por frases se mostrou um dos
     poucos recursos “avançados” de busca que cairam no
     gosto dos usuários
 Para isto, não é suficiente armazenar apenas
  entradas do tipo <termo : documento>
Sec. 2.4.1

Primeria tentativa: índices com bi-
termos
 Indexar cada par de termos consecutivos como se
  fossem uma frase
 Por exemplo, para o texto “Friends, Romans,
  Countrymen” seriam gerados os bi-termos
   friends romans
   romans countrymen
 Cada um desses bi-termos é agora uma entrada no
  dicionário
 Consultas por frases de duas palavras são
  processadas imediatamente.
Sec. 2.4.1




Consultas por frases mais longas
 Frases mais longas são processadas utilizando
  operadores lógicos:
 universidade federal da paraiba pode ser quebrado
  em dois bi-termos:
universidade federal AND da paraiba

Sem acessar os documentos é impossível ter certeza
  que a consulta retornará realmente os documentos
  que possuem a frase completa.
                          Pode ter falsos positivos
Sec. 2.4.1




Problemas com os bi-termos
 Falsos positivos, como mencionado anteriormente
 O tamanho do índice explode por conta do aumento
  no dicionário
   Impraticável para tri-termos, por exemplo


 Índices com bi-termos não são a solução padrão mas
  podem ser parte de uma estratégia conjunta
Sec. 2.4.2




Solução 2: Índices posicionais
 Armazenar na lista de postings as posições dos
  tokens no documento

   <termo, número de documentos contendo o termo;
   doc1: posição1, posição2 … ;
   doc2: posição1, posição2 … ;
   etc.>
Sec. 2.4.2




Exemplo de índice posicional

 <be: 993427;
 1: 7, 18, 33, 72, 86, 231;   Que documento 1,2,4,5
 2: 3, 149;                    poderia conter “to be
 4: 17, 191, 291, 430, 434;       or not to be”?
 5: 363, 367, …>
Sec. 2.4.2




Tamanho de um índice posicional
 É possível comprimir a lista de posições: falaremos
  sobre isso em breve
 No entanto, um índice posicional aumenta
  substancialmente o tamanho do índice
 Mesmo assim, índices posicionais são padrão hoje
  por conta de seu poder e capacidade de responder
  consultas por frases.
Sec. 2.4.2




Tamanho de um índice posicional
 Requer uma entrada para cada ocorrência, não
  apenas uma por documento
 Tamanho do índice depende do tamanho médio dos
  documentos
   Uma página web tem em média menos de 1000 termos
   Livros e poemas épicos podem chegar facilmente a
    100.000 termos
 Considere um termo com frequência 0.1%
 Tamanho do Doc        Postings          Posições
            1000                  1                    1
         100,000                  1                 100
Sec. 2.4.2




Regra geral
 Um índice posicional é entre duas e quatros vezes
  maior que um índice não-posicional
 O tamanho do índice posicional representa algo
  entre 35-50% do documento original
 Esses números valem para documentos escritos em
  inglês.
 Tamanho do índice pode variar dependendo do
  idioma

Mais conteúdo relacionado

Semelhante a Vocabulário de termos e listas de postings

Entendendo a tradução - Negociação gerenciamento de qualidade, DTP e resultados
Entendendo a tradução - Negociação gerenciamento de qualidade, DTP e resultadosEntendendo a tradução - Negociação gerenciamento de qualidade, DTP e resultados
Entendendo a tradução - Negociação gerenciamento de qualidade, DTP e resultadosCcaps Translation and Localization
 
Resumo Tipos de Dados - LP1
Resumo Tipos de Dados - LP1Resumo Tipos de Dados - LP1
Resumo Tipos de Dados - LP1Pedro Augusto
 
2989340 informatica-dicionario-internet
2989340 informatica-dicionario-internet2989340 informatica-dicionario-internet
2989340 informatica-dicionario-internetNilton Reder
 
Dicionário de informática_&_internet_inglês-português
Dicionário de informática_&_internet_inglês-portuguêsDicionário de informática_&_internet_inglês-português
Dicionário de informática_&_internet_inglês-portuguêsMarcos Souza
 
Linguagen..
Linguagen..Linguagen..
Linguagen..essa
 
Curso de Português para Concurso TJ AM
Curso de Português para Concurso TJ AMCurso de Português para Concurso TJ AM
Curso de Português para Concurso TJ AMEstratégia Concursos
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Icc moledo osi micael henriques 8ºh
Icc moledo osi micael henriques 8ºhIcc moledo osi micael henriques 8ºh
Icc moledo osi micael henriques 8ºhmikayaya
 
Simulado 01-com-comentarios-mpu-tecnico
Simulado 01-com-comentarios-mpu-tecnicoSimulado 01-com-comentarios-mpu-tecnico
Simulado 01-com-comentarios-mpu-tecnicoFabiana de Carvalho
 
Aula 8 pontuação e vírgula-16maio2015
Aula 8   pontuação e vírgula-16maio2015Aula 8   pontuação e vírgula-16maio2015
Aula 8 pontuação e vírgula-16maio2015Gedalias .
 
Caderno de linguagens (2017) humberto silva de lima (lct - estudo e ensino)
Caderno de linguagens (2017)   humberto silva de lima (lct - estudo e ensino)Caderno de linguagens (2017)   humberto silva de lima (lct - estudo e ensino)
Caderno de linguagens (2017) humberto silva de lima (lct - estudo e ensino)Humberto Silva de Lima (UERJ / UFRJ)
 
Exercicios word extra 2
Exercicios word extra 2Exercicios word extra 2
Exercicios word extra 2filipereira
 

Semelhante a Vocabulário de termos e listas de postings (20)

How to linux Portuguese
How to linux PortugueseHow to linux Portuguese
How to linux Portuguese
 
Compressão de Índices
Compressão de ÍndicesCompressão de Índices
Compressão de Índices
 
Análise textual av1 1
Análise textual av1 1Análise textual av1 1
Análise textual av1 1
 
Análise textual av1
Análise textual av1Análise textual av1
Análise textual av1
 
Entendendo a tradução - Negociação gerenciamento de qualidade, DTP e resultados
Entendendo a tradução - Negociação gerenciamento de qualidade, DTP e resultadosEntendendo a tradução - Negociação gerenciamento de qualidade, DTP e resultados
Entendendo a tradução - Negociação gerenciamento de qualidade, DTP e resultados
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Resumo Tipos de Dados - LP1
Resumo Tipos de Dados - LP1Resumo Tipos de Dados - LP1
Resumo Tipos de Dados - LP1
 
2989340 informatica-dicionario-internet
2989340 informatica-dicionario-internet2989340 informatica-dicionario-internet
2989340 informatica-dicionario-internet
 
Dicionário de informática_&_internet_inglês-português
Dicionário de informática_&_internet_inglês-portuguêsDicionário de informática_&_internet_inglês-português
Dicionário de informática_&_internet_inglês-português
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
Inglies.At2
Inglies.At2Inglies.At2
Inglies.At2
 
Curso de Português para Concurso TJ AM
Curso de Português para Concurso TJ AMCurso de Português para Concurso TJ AM
Curso de Português para Concurso TJ AM
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Icc moledo osi micael henriques 8ºh
Icc moledo osi micael henriques 8ºhIcc moledo osi micael henriques 8ºh
Icc moledo osi micael henriques 8ºh
 
Simulado 01-com-comentarios-mpu-tecnico
Simulado 01-com-comentarios-mpu-tecnicoSimulado 01-com-comentarios-mpu-tecnico
Simulado 01-com-comentarios-mpu-tecnico
 
Aula 8 pontuação e vírgula-16maio2015
Aula 8   pontuação e vírgula-16maio2015Aula 8   pontuação e vírgula-16maio2015
Aula 8 pontuação e vírgula-16maio2015
 
Caderno de linguagens (2017) humberto silva de lima (lct - estudo e ensino)
Caderno de linguagens (2017)   humberto silva de lima (lct - estudo e ensino)Caderno de linguagens (2017)   humberto silva de lima (lct - estudo e ensino)
Caderno de linguagens (2017) humberto silva de lima (lct - estudo e ensino)
 
Exercicios word extra 2
Exercicios word extra 2Exercicios word extra 2
Exercicios word extra 2
 
Poo frank
Poo frankPoo frank
Poo frank
 

Mais de 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
 

Mais de Alexandre Duarte (20)

Projeto de Experimentos
Projeto de ExperimentosProjeto de Experimentos
Projeto de Experimentos
 
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
 

Vocabulário de termos e listas de postings

  • 1. Centro de Informática – Universidade Federal da Paraíba Ordenação e Recuperação de Dados Aula 2: Vocabulário de termos e listas de postings Prof. Alexandre Duarte - http://alexandre.ci.ufpb.br
  • 2. Ch. 1 Revisão da aula passada  Índices invertidos (introdução):  Estrutura: Dicionário e Postings  Passo chave na construção: Ordenação  Processamento de consultas Booleanas  Achar a interseção em tempo linear (“merging”)  Otimizações simples
  • 3. Roteiro para esta aula Aprofundamento sobre indexação  Pré-processamento para criação do vocabulário de termos  Documentos  Tokenization  Que termos colocar no índice?  Postings  Merge mais rápido: skip lists  Postings posicionais e consultas por frases
  • 4. Relembrando o processo de indexação Documentos para Friends, Romans, countrymen. indexar Tokenizer Fluxo de tokens Friends Romans Countrymen Módulos Linguísticos Tokens modificados friend roman countryman Indexador friend 2 4 roman 1 2 Índice invertido countryman 13 16
  • 5. Sec. 2.1 Parsing de um documento  Qual o formato do documento?  pdf/word/excel/html?  Em que idioma?  Qual o conjunto de caracteres utilizados? Cada um deste itens representa um problema de classificação. Veremos mais sobre isso no futuro.
  • 6. Sec. 2.1 Complicadores: Formato/idioma  A coleção pode conter documentos escritos em vários idiomas diferentes  Um único índice pode conter termos de vários idiomas diferentes  Algumas vezes um único documento pode contemplar múltiplos idiomas e diferentes formatos  E-mail escrito em português com anexo em inglês  O que representa um documento unitário?  Um arquivo?  Um email?  Um e-mail com 5 anexos?  Um grupo de arquivos (PPT ou LaTeX salvo como HTM)?
  • 8. Sec. 2.2.1 Tokenization  Entrada: “Friends, Romans and Countrymen”  Saída: Tokens  Friends  Romans  Countrymen  Um token é uma instância de uma sequência de caracteres  Cada um dos tokens, depois de um processamento adicional, é candidato a ser uma entrada no índice  Mas como definir quais são os tokens válidos?
  • 9. Sec. 2.2.1 Tokenization  Problemas na geração de tokens:  Finland’s capital → Finland? Finlands? Finland’s?  Hewlett-Packard → Hewlett e Packard como dois tokens diferentes?  João Pessoa: um token ou dois?  Como você decidiu que seria um único token?
  • 10. Sec. 2.2.1 Números  23/03/2011 23 de Março 2011  55 B.C.  B-52  Minha chave PGP é 324a3df234cb23e  (083) 3216-7093  Geralmente incluem espaços em branco  Sistemas mais antigos podem não indexar números  Muitas vezes é algo útil: pense em uma busca na Web por códigos de erro em um determinado programa (Oracle, por exemplo)  Meta-dados geralmente são indexados separadamente  Data de criação, formato, etc.
  • 11. Sec. 2.2.1 Tokenization: questões referentes ao idioma  Francês  L'ensemble → um token ou dois?  L ? L’ ? Le ?  Fazer l’ensemble casar com un ensemble  Até 2003 o Google não fazia isso  Internacionalização!  Em alemão substantivos compostos não são segmentados  Lebensversicherungsgesellschaftsangestellter  ‘empregado de uma companhia de seguros de vida’  Sistemas de recuperação de informação em alemão se beneficiam de um “quebrador de substantivos”  Pode melhorar o desempenho em até 15%
  • 12. Sec. 2.2.1 Tokenization: questões referentes ao idioma  Chinês e Japonês não tem espaços entre as palavras:  莎拉波娃现在居住在美国东南部的佛罗里达。  Impossível garantir um fluxo de tokens único  Mais complicado ainda em Japonês, com a mistura de múltiplos alfabetos  Datas/quantidades em diferentes formados フォーチュン 500 社は情報不足のため時間あた $500K( 約 6,000 万円 ) Katakana Hiragana Kanji Romaji O usuário poderia fazer a consulta em Hiragana!
  • 13. Sec. 2.2.1 Tokenization: questões referentes ao idioma  Árabe (e Hebraico) é escrito basicamente da direita para a esquerda, mas alguns itens como números são escritos da esquerda para a direita  As palavras são separadas mas o formato das letras formam ligações complexas ← → ←→ ←  ‘A Algeria se tornou independente em 1962 depois de 132 anos de ocupação Francesa’
  • 14. Sec. 2.2.2 Separadores  Com uma lista de separadores é possível excluir do dicionário as palavras mais comuns  Pouco significado semântico: de, a, e, para, com  Elas são muito freqüentes: ~30% dos postings dentre as 30 palavras mais comuns  Porém, não é isso que se tem feito :  Técnicas de compressão fazem com que o espaço necessário para incluir os separadores seja muito pequeno  Técnicas de otimização de consultas significam que se gasta muito pouco tempo com os separadores durante o processamento da consulta.  Eles são necessários para:  Consultas por frases: “Rei do Futebol”  Títulos de música, livros, etc.: “Let it be”, “To be or not to be”  Consultas “relacionais” : “Vôos para Fernando de Noronha”
  • 15. Sec. 2.2.3 Normalização  Precisamos “normalizar”as palavras no texto indexado e também nas consultas para uma mesma forma  Queremos casar U.S.A. com USA  Um termo é uma palavra (normalizada), que é uma entrada para o dicionário de um sistema de recuperação de informação  Classes de equivalência são definidas para os termos, por exemplo:  Remover os pontos  U.S.A., USA  USA  Remover os hífens  Para-choques, parachoques  parachoques
  • 16. Sec. 2.2.3 Normalização: outros idiomas  Acentos: Francês résumé vs. resume.  Tremas: Alemão: Tuebingen vs. Tübingen  Devem ser equivalentes  Critério mais importante:  Como os usuários gostariam de utilizar estes termos em suas consultas?  Mesmo em linguagens como o Português, que usam acentos freqüentemente, os usuários muitas vezes podem preferir não digitá-los  Geralmente é melhor normalizar para a forma sem acentos  Tuebingen, Tübingen, Tubingen  Tubingen
  • 17. Sec. 2.2.3 Normalização: outros idiomas  Normalização de formatos de datas  7 月 30 日 vs. 7/30  Tokenization e normalização podem depender do idioma, portanto são correlacionadas à deteção do idioma do documento O que seria MIT? Morgen will ich in MIT …  Crucial: É preciso normalizar tanto o texto a ser indexado quanto os termos da consulta uniformemente
  • 18. Sec. 2.2.3 Normalização  Uma alternativa às classes de equivalência é fazer expansão assimétrica  Um exemplo de onde esta técnica pode ser útil  Digite: window Busca por: window, windows  Digite: windows Busca por: Windows, windows, window  Digite: Windows Busca por: Windows  Potencialmente mais poderosa porém menos eficiente
  • 19. Thesaurus  Como lidar com sinônimos e homônimos?  Classes de equivalência específicas  carro = automóvel  Podem ser re-escritos para formar classes de equivalência  Quando o documento contiver automóvel, indexar como carro e automóvel. (e vice-versa)  Ou pode-se expandir a consulta  Quando a consulta contiver automóvel, pesquisar também por carro  Como lidar com erros de grafia?  Uma idéia é utilizar um soundex, que forma classes de equivalência baseado em heurísticas fonética
  • 20. Sec. 2.2.4 Lemmatization  Reduzir variações à uma única base  Exemplo  fui, era, sou → ser  carro, carrinho, carrão, carros → carro  Os carros são de cores diferentes → O carro ser de cor diferente  Lemmatization implica em reduzir as palavras à sua forma no dicionário
  • 21. Sec. 2.2.4 Especificidades do idioma  Muitas das funcionalidades descritas anteriormente descrevem transformações que são  Dependentes de idioma  Geralmente, dependentes de aplicação  Devem ser vistas como adendos ao processo de indexação
  • 22. MERGE MAIS RÁPIDO SKIP POINTERS/SKIP LISTS
  • 23. Sec. 2.3 Relembrando o merge básico  Caminhe simultaneamente nas duas listas em tempo linear ao total de postings 2 4 8 41 48 64 128 Brutus 2 8 1 2 3 8 11 17 21 31 Caesar Se as listas têm comprimento m e n, o cálculo da interseção tem complexidade O(m+n) Podemos fazer melhor que isso? Sim (se o índice não for alterado muito freqüentemente).
  • 24. Sec. 2.3 Adicionando skip pointers (em tempo de indexação) às listas de postings 41 128 2 4 8 41 48 64 128 11 31 1 2 3 8 11 17 21 31  Por que?  Para saltar (skip) postings que não vão aparecer nos resultados da consulta  Como?  Onde colocamos os skip pointers?
  • 25. Sec. 2.3 Processando consultas com skip pointers 41 128 2 4 8 41 48 64 128 11 31 1 2 3 8 11 17 21 31 Suponha que tenhamos percorrido as duas listas até que processamos o 8 em cada lista. Processamos o 8 e avançamos. Temos agora o 41 e o 11. 11 é menor Porém, 11 tem um skip pointer para o 31, então podemos pular (skip) a frente até o fim da lista.
  • 26. Sec. 2.3 Onde colocar os skip pointers?  Tradeoff:  Mais ponteiros → saltos menores ⇒ saltos mais frequentes. Porém requer muitas comparações.  Menos ponteiros → menos comparações, saltos mais longos ⇒ poucos saltos bem sucedidos.
  • 27. Sec. 2.3 Colocando os skip pointers  Heurística simples: para listas de tamanho L, colocar √L skip pointers distribuídos uniformemente  Ignora a distribuição dos termos  Fácil se o índice é relativamente estático; complicado se o L muda com freqüência.
  • 28. CONSULTAS POR FRASES E ÍNDICES POSICIONAIS
  • 29. Sec. 2.4 Consultas por frases  Queremos ser capazes de responder consultas como “Universidade Federal da Paraíba” – como uma frase  Portanto a frase “Eu moro na Paraíba” não é um bom resultado para a consulta.  O conceito de consulta por frases se mostrou um dos poucos recursos “avançados” de busca que cairam no gosto dos usuários  Para isto, não é suficiente armazenar apenas entradas do tipo <termo : documento>
  • 30. Sec. 2.4.1 Primeria tentativa: índices com bi- termos  Indexar cada par de termos consecutivos como se fossem uma frase  Por exemplo, para o texto “Friends, Romans, Countrymen” seriam gerados os bi-termos  friends romans  romans countrymen  Cada um desses bi-termos é agora uma entrada no dicionário  Consultas por frases de duas palavras são processadas imediatamente.
  • 31. Sec. 2.4.1 Consultas por frases mais longas  Frases mais longas são processadas utilizando operadores lógicos:  universidade federal da paraiba pode ser quebrado em dois bi-termos: universidade federal AND da paraiba Sem acessar os documentos é impossível ter certeza que a consulta retornará realmente os documentos que possuem a frase completa. Pode ter falsos positivos
  • 32. Sec. 2.4.1 Problemas com os bi-termos  Falsos positivos, como mencionado anteriormente  O tamanho do índice explode por conta do aumento no dicionário  Impraticável para tri-termos, por exemplo  Índices com bi-termos não são a solução padrão mas podem ser parte de uma estratégia conjunta
  • 33. Sec. 2.4.2 Solução 2: Índices posicionais  Armazenar na lista de postings as posições dos tokens no documento <termo, número de documentos contendo o termo; doc1: posição1, posição2 … ; doc2: posição1, posição2 … ; etc.>
  • 34. Sec. 2.4.2 Exemplo de índice posicional <be: 993427; 1: 7, 18, 33, 72, 86, 231; Que documento 1,2,4,5 2: 3, 149; poderia conter “to be 4: 17, 191, 291, 430, 434; or not to be”? 5: 363, 367, …>
  • 35. Sec. 2.4.2 Tamanho de um índice posicional  É possível comprimir a lista de posições: falaremos sobre isso em breve  No entanto, um índice posicional aumenta substancialmente o tamanho do índice  Mesmo assim, índices posicionais são padrão hoje por conta de seu poder e capacidade de responder consultas por frases.
  • 36. Sec. 2.4.2 Tamanho de um índice posicional  Requer uma entrada para cada ocorrência, não apenas uma por documento  Tamanho do índice depende do tamanho médio dos documentos  Uma página web tem em média menos de 1000 termos  Livros e poemas épicos podem chegar facilmente a 100.000 termos  Considere um termo com frequência 0.1% Tamanho do Doc Postings Posições 1000 1 1 100,000 1 100
  • 37. Sec. 2.4.2 Regra geral  Um índice posicional é entre duas e quatros vezes maior que um índice não-posicional  O tamanho do índice posicional representa algo entre 35-50% do documento original  Esses números valem para documentos escritos em inglês.  Tamanho do índice pode variar dependendo do idioma

Notas do Editor

  1. Nontrivial issues. Requires some design decisions.
  2. Nevertheless: “Google ignores common words and characters such as where, the, how, and other digits and letters which slow down your search without improving the results.” (Though you can explicitly ask for them to remain.)
  3. Why not the reverse?