Upload
alexandre-duarte
View
397
Download
2
Embed Size (px)
Citation preview
Ordenação e Recuperação de Dados
Prof. Alexandre Duarte - http://alexandre.ci.ufpb.br
Centro de Informática – Universidade Federal da Paraíba
Aula 2: Vocabulário de termos e listas de postings
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
Ch. 1
Roteiro para esta aulaAprofundamento 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
Tokenizer
Fluxo de tokens Friends Romans Countrymen
Módulos Linguísticos
Tokens modificados friend roman countryman
Indexador
Índice invertido
friend
roman
countryman
2 4
2
13 16
1
Documentos paraindexar
Friends, Romans, countrymen.
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)?
Sec. 2.1
Tokens e Termos
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.1
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.2
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
Crucial: É preciso normalizar tanto o texto a ser indexado quanto os termos da consulta uniformemente
Morgen will ich in MIT … O que seria MIT?
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
Sec. 2.2.3
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
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
Sec. 2.2.4
MERGE MAIS RÁPIDOSKIP POINTERS/SKIP LISTS
Relembrando o merge básico Caminhe simultaneamente nas duas listas em tempo
linear ao total de postings
128
31
2 4 8 41 48 64
1 2 3 8 11 17 21
Brutus
Caesar2 8
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
Por que? Para saltar (skip) postings que não vão aparecer nos
resultados da consulta Como? Onde colocamos os skip pointers?
1282 4 8 41 48 64
311 2 3 8 11 17 213111
41 128
Sec. 2.3
Processando consultas com skip pointers
1282 4 8 41 48 64
311 2 3 8 11 17 213111
41 128
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.
Sec. 2.3
CONSULTAS POR FRASES E ÍNDICES POSICIONAIS
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
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.1
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;2: 3, 149;4: 17, 191, 291, 430, 434;5: 363, 367, …>
Que documento 1,2,4,5poderia conter “to be
or not to be”?
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%
1001100,000
111000
PosiçõesPostingsTamanho do Doc
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
Sec. 2.4.2