Вы находитесь на странице: 1из 10

Universidade Aberta

Departamento de Ciências e Tecnologia

Mestrado em Tecnologias e Sistemas Informáticos Web

PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO


Trabalho B
TÉCNICAS DE PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO

O Lucene é uma biblioteca de mecanismo de procura de texto altamente escalável e de software


livre. As APIs poderosas do Lucene focam principalmente na indexação e na procura de texto. O
Apache Lucene é executado em Java 8 ou superior. Também é recomendável usar sempre a versão
de atualização mais recente da Java VM, Os requisitos de CPU, disco e memória baseiam-se nas
muitas escolhas feitas na implementação do Lucene (tamanho do documento, número de
documentos e número de acessos recuperados). Primeiro, deve-se baixar a distribuição Lucene
mais recente e, em seguida, extraí-la para um diretório de trabalho. São necessários quatro JARs:
lucene-core-6.5.1.jar, o lucene-queryparser-6.5.1.jar, o lucene-analyzers-common-6.5.1.jar e o
lucene-demo-6.5.1.jar. Para produzir um subdiretório chamado índice que conterá um índice de
todo o código-fonte Lucene digitar: Java org.apache.lucene.demo.IndexFiles -docs {path-to-
lucene}, e para pesquisar o tipo de índice digitar Java org.apache.lucene.demo.SearchFiles será
solicitado a fazer uma consulta.

Para usar o Lucene, um aplicativo deve criar documentos adicionando campos, criar um
IndexWriter e adicione documentos a ele com addDocument (), Chamar QueryParser.parse () para
criar uma consulta de uma sequência de caracteres e criar um IndexSearcher e passar a consulta
para o método search ().

A criação de um aplicativo de procura usando o Lucene envolve, primeiramente, a indexação de


dados, a procura de dados e a exibição de resultados de procura.

Etapas para criar aplicativos usando o Lucene

A API Lucene está dividida em vários pacotes: org.apache.lucene.analysis,


org.apache.lucene.codecs, org.apache.lucene.document, org.apache.lucene.index,
org.apache.lucene.search, org.apache.lucene.store, org.apache.lucene.util.

O Lucene permite indexar quaisquer dados disponíveis no formato textual. O Lucene pode ser
usado quase com qualquer origem de dados contanto que as informações textuais possam ser
extraídas dela. Lucene pode ser utilizado para indexar e procurar dados armazenados em
documentos HTML, Word, arquivos PDF e outros. A primeira etapa na indexação de dados é
1
TÉCNICAS DE PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO

disponibilizá-los em um formato de texto simples. Usando os analisadores e conversores de dados


customizados.

A Indexação é um processo de converter os dados de texto em um formato que facilita a procura


rápida. O Lucene armazena os dados de entrada em uma estrutura de dados chamada de
índice invertido , que é armazenado no sistema de arquivos ou na memória como um conjunto de
arquivos de índice. Ele permite que os utilizadores executem procuras rápidas por palavras-chave
e localizem os documentos que correspondem a uma determinada consulta. Antes que os dados
de texto sejam incluídos no índice, eles são processados por um analisador (usando um processo
de análise).

Análise é a conversão dos dados de texto em uma unidade de procura fundamental, chamada
de termo. Durante a análise, os dados de texto passam por várias operações: extração das
palavras, remoção de palavras comuns, ignorar pontuação, redução de palavras para o formato de
raiz, alteração das palavras para minúsculas, etc. A análise acontece imediatamente antes de
analisar a indexação e a consulta. A análise converte os dados de texto em tokens e esses tokens
são incluídos como termos no índice do Lucene.
O Lucene é fornecido com vários analisadores integrados, como o SimpleAnalyzer, o
StandardAnalyzer, StopAnalyzer, SnowballAnalyzer, e outros. Eles diferem na maneira pela qual
tokenizam o texto e aplicam os filtros.

Classes de Indexação de Núcleo


Diretório

Uma classe abstrata que representa o local onde os arquivos de índice são armazenados.
Há duas subclasses principais normalmente usadas:

 FSDirectory— Uma implementação do Diretório que armazena índices no sistema de


arquivos real.Isso é útil para grandes índices.
 RAMDirectory— Uma implementação que armazena todos os índices na memória. Isso é
ideal para índices menores que podem ser completamente carregados na memória e
destruídos quando o aplicativo encerrar. Conforme o índice é mantido na memória, ele é
mais rápido.
Analisador

Os analisadores são responsáveis por processar os dados de texto e convertê-los em


tokens armazenados no índice. IndexWriter aceita um analisador usado para tokenizar os
dados antes de serem indexados.

2
TÉCNICAS DE PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO

IndexWriter

Uma classe que cria ou mantém um índice. Seu construtor aceita um booleano que
determina se um novo índice é criado ou se um índice existente é aberto. Ele fornece
métodos para incluir, excluir ou atualizar documentos no índice.

As alterações feitas no índice são inicialmente armazenadas em buffer na memória e


periodicamente esvaziadas para o diretório de índice.
As alterações feitas no índice não são visíveis no IndexReader , a menos que o método de
consolidação ou de fechamento do IndexWriter seja chamado. IndexWriter cria um arquivo
de bloqueio para o diretório para impedir distorção de índice devido a atualizações de
índice simultâneas.

Há duas classes envolvidas na inclusão de dados de texto no índice.


O Campo representa uma parte dos dados consultados ou recuperados na procura. A
classe Campo engloba o nome de campo e seu valor.
E um Documento é uma coleta de campos. O Lucene também suporta a impulsão de documentos
e campos, que é um recurso útil quando quiser dar importância a alguns dos dados indexados.
Indexar um arquivo de texto envolve agrupar os dados de texto em campos, criar um documento,
preenchê-lo com campos e incluir o documento no índice usando IndexWriter.

Procurador é uma classe base abstrata que possui vários métodos de procura
sobrecarregadas. IndexSearcher é uma subclasse normalmente utilizada que permite procurar
índices armazenados em um determinado diretório. O método Procurar retorna uma coleta
ordenada de documentos classificados pelas pontuações computadas. O Lucene calcula uma
pontuação de cada documento que corresponde a uma determinada consulta. IndexSearcher é
um thread-safe, ou seja, uma instância única que pode ser usada por vários encadeamentos
simultaneamente.

Termo é a unidade mais fundamental de procura. Ele é composto de dois elementos: o texto da
palavra e o nome do campo no qual o texto ocorre. Os objetos do termo são envolvidos na
indexação, mas são criados pelos componentes internos do Lucene.

Consulta é uma classe base abstrata para procuras. Procurar por uma palavra ou frase especificada
envolve agrupá-la em um termo, incluir os termos em um objeto de consulta e transmitir esse
objeto de consulta para os métodos de procura do IndexSearcher.
O Lucene é fornecido com vários tipos de implementações de consulta concretas, como
TermQuery, BooleanQuery, PhraseQuery, PrefixQuery, RangeQuery, MultiTermQuery,
FilteredQuery, SpanQuery, etc.

3
TÉCNICAS DE PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO

IndexSearcher retorna uma matriz de referências nos resultados de procura classificados, como
documentos que correspondem a uma determinada consulta. As classes primárias envolvidas na
recuperação dos resultados de procura são ScoreDoc e TopDocs.
ScoreDoc

Um ponteiro simples para um documento contido nos resultados de procura. Isso engloba
a posição de um documento no índice e a pontuação calculada pelo Lucene.

TopDocs

Engloba o número total de resultados de procura e uma matriz de ScoreDoc.

As operações básicas de índice incluem remover e impulsionar documentos. O Lucene fornece a


interface IndexReader que permite executar essas operações em um índice.
IndexReader é uma classe abstrata que fornece vários métodos para aceder o índice. O Lucene
refere internamente os documentos com números de documentos que podem ser alterados
conforme os documentos são incluídos ou excluídos do índice. O número do documento é usado
para aceder um documento no índice. IndexReader não pode ser usado para atualizar índices em
um diretório para o qual o IndexWriter já está aberto. IndexReader sempre procura pela captura
instantânea do índice quando ele estiver aberto. Quaisquer alterações no índice não estarão
visíveis até o IndexReader ser reaberto. É importante que os aplicativos que usam o Lucene
reabram os IndexReader para ver as atualizações de índice mais recentes.

O Lucene fornece um recurso avançado chamado classificação. Classificar os resultados da procura


por campos que indicam a posição relativa dos documentos no índice.
Os resultados da procura também podem ser classificados pela ordem do índice. O Lucene
classifica os resultados ao diminuir a relevância, como a pontuação calculada, por padrão.

O Lucene é fornecido com vários filtros integrados, como BooleanFilter, CachingWrapperFilter,


ChainedFilter, DuplicateFilter, PrefixFilter, QueryWrapperFilter, RangeFilter,
RemoteCachingWrapperFilter, SpanFilter, etc. Filtro pode ser transmitido para o método de
procura do IndexSearcher para filtrar documentos que correspondem aos critérios de filtragem.

4
TÉCNICAS DE PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO

Plataforma IR Terrier

Terrier é uma plataforma de mecanismo de busca de código aberto, altamente flexível e eficiente.
Pronta para implementação em coleções de documentos em larga escala, implementa o mais alto
nível de desenvolvimento de funcionalidades em indexação e recuperação da informação.
Também é uma plataforma compreensiva e flexível para pesquisa e expetimentação em
recuperação de texto. A pesquisa pode ser facilmente realizada em coleções de teste TREC e CLEF
padrão. Escrita em Java e desenvolvida pela School of Computing Science, na Universidade de
Glasgow.

Visão Geral do Recurso

 Eficiente – Terrier pode indexar um grande corpo de documentos, provendo multiplas


estatégias de indexação, tais como, como multi-pass, single-pass e em grande escala
indexação MapReduce1. A indexação em tempo real de fluxos de documentos também é
suportada por meio de estruturas de índice atualizáveis.
 Flexível – é ideal para a realização de experiências de recuperação de informações. Ele pode
indexar e executar experimentos de recuperação em lote para todas as coleções de teste
TREC conhecidas. Ferramentas para avaliar os resultados das experiências também estão
incluídas.
 Extensível – segue uma arquitetura de plugin e é fácil de estender para desenvolver novas
técnicas de recuperação, adicionar novos recursos de classificação ou experimentar
funcionalidades de baixo nível, como compressão de índice.
 Efetivo – São fornecidas abordagens de recuperação de última geração, tais como
Divergência de Aleatoriedade, BM25F, bem como modelos de proximidade de dependência
de termos. O suporte para modelos de classificação supervisionados via Aprendizagem para
Classificação (Learning to Rank) também é incorporado.
 Multilinguagem – esta plataforma utiliza UTF internamente e, pode suportar corpos de
documentos escritos em outras linguagens que não Inglês.

1
Técnica de processamento de grandes coleções de dados, empregando o poder da computação distribuída/paralela,
bem como propondo um modelo de programação que simplifica o desenvolvimento de aplicações BigData.
5
TÉCNICAS DE PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO

 Interativo – visualiza resultados de pesquisa em um acessível aplicatívo de busca desktop


(Desktop Terrier – ferramenta de uma aplicação exemplo para auxiliar usuarios no uso das
funcionalidades providas pela Terrier) online, utilizando interfaces web JSP ou usando o
provedor web search application.

Visão Geral de Indexação com Terrier

O processo de indexação do Terrier é descrito como: primeiro, um objeto Collection extrai o


conteúdo “bruto” de cada documento individual (de uma coleção de docuentos) e o entrega para
um objeto Document. Então, o objeto Document remove qualquer conteúdo indesejado (p. e., a
partir de uma tag particular no documento) e fornece o texto resultante a um objeto Tokeniser.
Finalmente, o Tokeniser converte o texto em um fluxo de tokens que representa o conteúdo do
documento.
Por padrão, Terrier utiliza Coleções TREC, as quais anlisa o corpus2 em formato TREC. Em particular,
em arquivos formatados em TREC, há muitos documentos delimitados por tags “<DOC></DOC>”,
como exibidos na figura 1 abaixo:

Figura 1 – Exemplo de fragmento de código de arquivos formatados em TREC.


Fonte: Terrier.org

Para corpus em outros formatos, será necessário mudar o objeto Colletion que está sendo usado
pela configuração da propriedade “trec.collection.class”. Abaixo estão algumas opcões:
 TRECCollection – analisa o corpus TREC formatado, delimitado pelas tags “<DOC></DOC>”.
 TRECWebCollection – mesmo que TRECColletction, embora adiciona a análise das tags
“DOCHDR”, as quais contém corpus TREC Web e Blog tal como WT2G, WT10G, .GOV, .GOV2,
Blogs06 a Blogs08 são suportados.
 WARC09Collection – analisa corpus na versão 0.9 no formato WARC, tal como, UK-2006.

2
Coletânea ou conjunto de documentos sobre determinado tema.
6
TÉCNICAS DE PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO

 WARC018Collection – analisa corpus na versão 0.18 no formato WARC, tal como,


ClueWeb09.
 SimpleFileCollection – analisa HTML, Microsoft Word/Exel/PowerPoint, PDF, documentos de
texto, entre outros, guiando em como usar estar classes.
 SimpleXMLCollection – como TRECCollection, mas onde a entrada é XML válido.
 SimpleMedlineXMLCollection – versão especial do SimpleXMLCollection para modernos
documentos Medline.

Exceto para coleções propósitos especiais (SimpleFileCollection, SimpleFileCollection e


SimpleMedlineXMLCollection), todos as outras implementações de Collection permitem para
diferente implementações de Document serem utilizadas, especificando a propriedade
trec.document.class. Por padrão, estas coleções utilizam TarggedDocument, cuja documentação de
implementações estão disponíveis em: TarggedDocument (modelos de um documento marcado,
em geral, um HTML ou um documento TREC); FileDocument (modelos de documento que
corresponde a um simples arquivo de texto plano; PDFDocument, MSExelDocument e
MSWordDocument (Modelos de documentos PDF, MS Excel, MS PowerPoint e MS Word)
respectivamente.
Todas as implementações Document podem expecificar suas próprias implementações Tokenizer.
Por padrão, Terrier usa o EnglishTokeniser. Quando da indexação de um corpus não inglês, um
diferente implementação Tokeniser pode ser especificada pela propriedade tokeniser.

Configurando indexação básica

O TRECCollection pode ser usado para todos os corpus TREC de Disks 1&2 até Blogs08, incluindo
WT2G, .GOV, .GOV2, entre outros. Além disso, ela pode ser configurada.

A utilização de tags especificadas são case sensitive, mas podem ser flexibilizadas configurando a
propriedade “TrecDocTags.casesensitive” como falsa. Também suporta a adiçãod e conteudos de
tags para o índice meta. Isto é util para apresental, e. g., a URL de um documento, ou a data, durante
a recuperação.

Terrier tem a habilidade de gravar a frequência com a qual termos ocorrem em varios campos de
documentos. Para isso, os campos requeridos são especificados pela propriedade
“Fieldtags.process”. Por exemplo, quando um termo ocorre no TITLE ou H1, tags HTML, de um
documento, configura-se com “Fieldtags.process=TITLE,H1”.

7
TÉCNICAS DE PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO

O indexador iterage através da coleção de documentos e envia cada termo encontrado através do
“TermPipeline” (transforma os termos, e pode remover termos que não serão indexados). A cadeia
“TermPipeline” em uso é “termpipelines=Stopwords,PorterStemmer”, que remove termos de um
documento usando o objeto “Stopwords”, e então aplica o algorítmo Stemming de Porter para os
termos em inglês (PorterStemmer). Podendo também ser utilizado um Stemmer diferente.

O term pipeline também pode ser configurado em tempo de indexação para pular vários
indentificadores/termos (palavras chaves), configurando uma propriedade que apresenta uma lista
destes termos delimitados como virgula. A mesma propriedade também trabalha a recuperação em
tempo de execução.

Várias propriedades são utilizadas para configurar classes dos indexadores. Uma vez que os termos
tenham sido processados através do TermPipeline, eles são adicionados pleo DocumentPostingList
e o LexixonMap, que também possui suas propriedades.

Os metadados dos documentos são gravador em uma estrutura MetaIndex. Por exemplo, tais
metadados podem incluir o DOCNO e a URL de cada documento, que o sistema pode usar para
representar o documento durante a recuperação. O MetaIndex pode ser configurado para anotação
de vários atributos de documentos durante a indexação. Os atributos disponíveis dependem
daqueles disponibilizados pela implementação do documentos. Além disso o MetaIndex pode ser
configurado utilizando algumas propriedades.
Para maiores entendimentos sobre a apresentação do resultado para o usuário, para o qual
configurações de indexação adiconais são requeridas, deve-se consultar Terrier Web-based.

Escolha de indexadores
Terrier suporta três tipos de indexadores, que são:
 Classical two-pass – indexação clássica de palavras pela criação de um índice direto, e então
invertendo a estrutura criando um índice invertido.
 Single-pass indexing – este tipo de indexação é implementado pelas classes
BasicSinglePassIndexer e BlockSinglePassIndexer, que ao invez de construir um arquivo
direto da coleção, as listas de lançamento de termo são mantidas na memória e gravadas no
disco quando a memória está esgotada. O passo final mescla os arquivos temporários para
formar o léxico e o arquivo invertido.
8
TÉCNICAS DE PESQUISA E RECUPERAÇÃO DE INFORMAÇÃO

 MapReduce – para coleções em larga escala, Terrier, fornece um sistema de indexação


baseado em MapReduce.

Todos os três métodos criam um índice invertido identico, que produz identica eficácia na
recuperação. Entretanto, eles diferem em outras características, p. e., quanto à expansão da
consulta, escalabilidade e eficiência ao indexar corpus grandes. A escolha do método de indexação
provavelmente será direcionada pela necessidade de expansão de consulta e pela escala dos dados
com os quais se deseja trabalhar.
Além do exposto, Terrier também suporta indexação em tempo real de coleções de documetos
usando as estruturas MemoryIndex e IncrementalIndex, permitindo que novos documentos sejam
adicionados ao índice em um ponto xxxxx

Compressão

Por padrão, Terrier, utiliza os algoritmos Elias-Gama e Elias-Unary para avaliar alta compressão de
índices diretos e invertidos. Acima da versão 4.0 tem suporte para vários esquemas de
compressão.

Bibliografia
Lucene https://lucene.apache.org/core/
MARTINS, C.. Fundamentos sobre MapReduce. Discponível em:
http://www.devmedia.com.br/fundamentos-sobre-mapreduce/28644. Acesso em: 02/05/2017.

School of Computing Science. Configuring Indexing en Terrier.


Disponível em: http://www.terrier.org/docs/current/configure_indexing.html. Acesso em
02/05/2017.

Вам также может понравиться