Buscar

Apache Lucene: Biblioteca de Busca de Texto

Prévia do material em texto

Apache Lucene
Criado por Doug Cutting em 2000, o Lucene é uma das mais utilizadas bibliotecas para
indexação e consulta de textos, disponível em código aberto. Sob o domínio da Apache Foundation,
a biblioteca, escrita em java, pode ser utilizada em qualquer aplicativo J2SE ou J2EE, de código
aberto ou não. Outras linguagens como Delphi, Perl, C#, C++, Python, Ruby e PHP devem usar os
ports do Lucene para as referidas linguagens.
O Lucene possui uma biblioteca de mecanismo de busca de texto de alto desempenho com
muitos recursos. Pode ser utilizada em aplicativos que possua algum modulo para busca de texto
LUCENE PROJECT (2020). 
Em seu sistema de busca utiliza a combinação do modelo Espaço Vetorial com o Modelo
Booleano para determinar a relevância de determinados documentos para a consulta dos usuários
LUCENE PROJECT (2020). A biblioteca Lucene é composta por duas etapas: indexação e
pesquisa. Baseado em palavra-chave o algoritmo processa os dados gerando uma estrutura que torna
possível a realização de consultas.
A figura 1 demonstra uma típica aplicação que está integrada ao Lucene.
Figura 1: Estrutura Funcional do Lucene
As etapas ilustradas na figura 1 podem ser assim descritas:
Gather Data: Momento em que são recolhidos os conteúdos dos diferentes documentos.
Index Documents: Etapa na qual onde é feita a análise do documento, sendo que após esta,
tem início o processo de indexação.
Index: Base de dados de índices.
Get Users’ Query: Uma vez feito o pedido de pesquisa do usuário, a aplicação constrói a
query com base no texto de pesquisa, com a finalidade de utilizar a mesma na interrogação às bases
de dados de índices.
Search Index: Etapa onde se realiza a pesquisa por índices segundo a query construída a
partir dos dados de pesquisa introduzidos pelo usuário.
Present Search Results: Responsável por apresentar o resultado da pesquisa ao usuário.
Para deixar seu processo de busca mais rápido o Lucene indexa o texto e o converte em um
formato que o permiti deixá-lo mais fácil de encontrar. Este processo é chamado de indexação, que
produz um índice. Enquanto que a busca se refere ao processo de procurar determinadas palavras
em um índice para localizar documentos onde as mesmas aparecem. Deste modo podemos afirmar
que existem duas funcionalidades importantes: a indexação, acessível através do comando Indexer,
e a busca, disponível por meio do comando Searcher.
Indexação: De acordo com Martins (2015), Lucene utiliza em seu índice a estrutura de
dados chamada de índice invertido, assim cada termo possui uma referência para o documento onde
ele ocorre conforme pode ser visualizado na figura
O processo de indexação segue alguns passos, sendo que primeiramente ocorre a aquisição
dos termos necessários em seguida é construido uma abstração do conteúdo a ser indexado
chamado documento, que é constituído por unidades denominadas campos, que são associados aos
termos. No entanto antes da indexação ocorre a análise do documento que tem como função
separação dos termos em uma série de elementos atômicos chamados tokens. E então o documento
é adicionado ao índice seguindo um formato próprio do Lucene (PRADO, 2012).
Busca: No Lucene para cada documento retornado como resultado de alguma busca é
atribuído uma pontuação que representa a similaridade de tal documento com a consulta. O calculo
da similaridade é baseado no modelo de recuperação utilizado de acordo com Machado (2013)
Lucene suporta os seguintes modelos:
• Modelo Booleano;
• Modelo Espaço Vetorial;
• Modelo Probabilístico, como Okapi BM25 e DFR;
• Modelo baseado em Linguagem Natural.
Sendo que por padrão a busca no Lucene ocorre através da combinação de duas técnicas de
recuperação de informação: Modelo Espaço Vetorial e Okapi BM25:
De acordo com Machado (2013) o Modelo Vetorial é um dos principais algoritmos que deu
embasamento a maioria dos Sistemas de Recuperação da Informação. Neste modelo, os documentos
são representados como vetores em um espaço n-dimensional, em que n é a totalidade de palavras-
chave de todos os documentos armazenados no sistema. Porém não permite a construção de um
ranking baseando-se nos graus de relevância dos documentos recuperados
BM25 é uma função de recuperação de bag-of-words que classifica um conjunto de
documentos com base nos termos de consulta que aparecem em cada documento,
independentemente de sua proximidade dentro do documento. É uma família de funções de
pontuação com componentes e parâmetros ligeiramente diferentes. A classificação de relevância é
baseada na relação entre a frequência do termo e frequência inversa do termo.
2.2.2 Métrica de avaliação
Para avaliar os resultados obtidos de um modelo de recuperação de informação, existem
algumas métricas. Tais métricas devem ser aplicadas de acordo com cada modelo. Neste trabalhos
serão abordadas apenas as métricas que foram utilizadas no experimento em questão, são elas:
Matriz de confusão, Acurácia, Precisão, Recall/Revocação.
Uma matriz de confusão é uma tabela que indica os erros e acertos do seu modelo,
comparando com o resultado esperado. A figura 2 abaixo demonstra um exemplo de uma matriz de
confusão.
Figura 2: Exemplo de Matriz de Confusão
Ao ser feita a contagem de todos esses termos e obter a matriz de confusão, é possível
calcular métricas de avaliação para a classificação.
Acurácia indica uma performance geral do modelo. Dentre todas as classificações, quantas o
modelo classificou corretamente:
A precisão é uma métrica que considerando todos os itens que foram classificados como
positivos (em uma classificação binária por exemplo), mede quantos realmente eram positivos, ou
seja, o quão preciso (ou correto) o modelo é quando ele afirma que um elemento é de determinada
classe. 
A Revocação avalia o modelo sob o ponto de vista de todos os itens verdadeiramente
positivos, realiza o calculo de quantos o modelo disse que eram positivos, indicando se o modelo
está conseguindo identificar a maior parte dos elementos de determinada classe ou não está
conseguindo classificá-los corretamente.

Continue navegando