Open Source Projects for Information Retrieval

Slides:



Advertisements
Apresentações semelhantes
Creating an Eclipse-based IDE for the D programming language
Advertisements

Instalação e Configuração
Programação em Java Prof. Maurício Braga
Conhecendo o VS2008: Windows Forms X Web Forms X Web Services
Iniciando na plataforma Eclipse
LEIC/FEUP Tecnologia de Sistemas de Gestão de Bases de Dados
HTML – Hyper Text Markup Language
Desenvolvimento Baseado em CGI Material cedido pelo Prof
Introdução aos Serviços Web
SISTEMAS DISTRIBUÍDOS
Eduardo Silva, Frederico Fernandes, Juliano Rabelo e Flávia Barros
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Material III-Bimestre Wagner Santos C. de Jesus
Área de Desenvolvimento de Sistemas
Introdução a Linguagem JAVA
.NET FRAMEWORK. 2.NET Framework É uma plataforma que permite desenvolver aplicações de software e bibliotecas chamadas aplicações gerenciadas; Ele provê
WebWork e JSP Keven andrade
Uso do Eclipse/SourceForge Paradigmas de Linguagem de Programação
Escola Secundária José Gomes Ferreira Disciplina: TICProfessor: Luís Pitta Grupo B Margarida Mendes Nº 17 Maria Ferreira Nº /2007 Ana Costa Nº 2.
Ferramentas e Tecnologias I
Ferramentas e Tecnologias III
Curso EFA de técnico de Informática e Sistemas
DSPACE x FEDORA Rodrigo Guerra Rio de Janeiro
Camada de Transporte: Portas, Sockets, Aplicações em Rede
Seminários Avançados 3 Conceitos Java EE Servidor de aplicação Tomcat
PHP em Windows WUX202 Nuno Nóbrega Batista Adminsaude
MediaWiki atrativa para ambientes corporativo.
Elizeu Madeira Eduardo Cardoso João Paulo Duarte
SEDNA SGBD XML NATIVO.
Recuperação de Informação usando o Apache Lucene
Introdução ao Desenvolvimento Web
Engº Pedro CostaAcessibilidade e Programação Web 1 Workshop Comunicação Inclusiva Acessibilidade e Programação Web PHP.
Selenium Componentes: Fábio Gomes Claver Pari Eni Conde
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Computação e Estatística Servidor de Documentos XML Usando.
ECF Presence API Ermeson Carneiro. ECF Presence API É uma API que permite: Envio de Mensagens instantâneas em tempo real Listar os Amigos Verificar o.
Web Services Uninorte Semana de Tecnologia da Informação
Sistemas Operacionais de Redes de Computadores
Cluster Beowulf.
Ferramentas de RI Arthur Freitas Ramos (afr)
Introdução ao Hibernate
i-Jus Busca em Diário Oficial
Conceitos de J2EE para a WEB
Professor: Márcio Amador
Atlassian Jira 3layer Tecnologia Porto Alegre, RS – Brasil 2010 Fábrica de Software Revenda Sparxsystems Revenda.
Curso Técnico em Informática Disciplina: Programação Web 2 - PHP
Paulo Oliveira – phslfo Victor Acioli - vaca 11/05/2010.
Módulo I Capítulo 1: Introdução ao curso
Análise Léxica Prof. Alexandre Monteiro
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
Inteligência Artificial Web Semântica
+ Java Básico Aula 1 por Flávio Juvenal. + Histórico Green Project (1991) Desenvolver plataforma para eletrodomésticos inteligentes Tentaram usar C++
PROGRAMAÇÃO WEB AULA 01 Prof. Gustavo Linhares
@2011 Éfren L. Souza1 Plataforma Android Uma Visão Geral para Desenvolvedores.
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Dados abertos interligados
Google Wave (Arquitetura) Ademir Junior / Felipe Ferreira / Fernando Kakimoto.
Concurrent Versions System (CVS) Alexandre Monteiro.
Ferramentas de Manipulação de Ontologias (Protégé)
Trabalho de Seminários em Informática
24/4/2015IA - Prof. Paulemir Campos1 WEKA UPE – Caruaru – Sistemas de Informação Disciplina: Inteligência Artificial Prof.: Paulemir G. Campos.
CIn-UFPE1 Recuperação Inteligente de Informação O Apache Lucene João dos Prazeres Flávia Barros (revisora)
Graph Database Neo4j Edson Barboza.
SISTEMA DE TRANSITIVIDADE: PARTICIPANTES PROCESSOS CIRCUNSTÂNCIAS.
Redes de Computadores e Aplicações – Camada de aplicação IGOR ALVES.
Sistemas Operacionais de Redes DNS
Web Services / SOA. O cenário de TI nas corporações Novas tendências batiam à porta das corporações Migraram o foco do “gerenciamento de dados” para o.
EBSCO Information Services Experiências Empresariais de apoio ao acesso digital à informação 2o. Seminário sobre Informação na Internet Brasília, 27 de.
Faculdade de Tecnologia SENAC Pelotas/RS Curso Superior de Tecnologia em Redes de Computadores Projeto Integrador I Seminário Final Funcionalidades da.
Pandora FMS Leandro Ferreira Canhada
Índices - Full Text Searching IFRN José Antonio da Cunha.
Transcrição da apresentação:

Open Source Projects for Information Retrieval Breno do Vale Emerson de Lira Ranieri Valença Open Source Projects for Information Retrieval

A web search system Nutch

O que é? Um sistema Open Source para buscas na web Baseado na API do Lucene Escrito em Java Com um ótimo crawler Que faz indexação e clustering de documentos E ainda faz buscas

O que é? Altamente modularizado Permite a criação de novos plugins para: Parsing de dados Recuperação de dados Indexação Consultas Clustering de documentos Pode rodar numa única máquina ou num cluster Possui fácil integração com o Tomcat web server

Histórico Pensado [e criado] por Doug Cutting Mesmo criador do Lucene Entre 2005 e março de 2010 foi um subprojeto do Lucene Em abril de 2010 foi “promovido”, e agora é um projeto da Apache Software Foundation

Histórico Foi muito utilizado como crawler, principalmente em conjunto com o Lucene e o Solr Mas pode ser usado como um buscador completo, desde o crawling até a busca Pode ser totalmente online, num servidor Tomcat

Características Crawling e indexação de documentos em paralelo ou distribuído Plugins Muitos ainda em desenvolvimento, por ser um projeto relativamente novo Alguns já em funcionamento, como o GeoPosition

Características Possui interpretador de vários formatos comuns na web: HTML XML PDF ZIP ... Possui sistema de busca integrado Busca por expressões compostas (usando aspas) Concatenação / exclusão de termos (+, -)

Requisitos Sistema operacional baseado em Linux Código fonte Também funciona em plataforma Windows, porém é menos simples Código fonte Disponível em http://nutch.apache.org Java 1.4 ou superior Servidor Apache Tomcat Apenas para disponibilizar online

Arquitetura

Quem usa? Creative Commons Jumble Fox Governo de Quebec SimilarPages ... Lista completa disponível em http://wiki.apache.org/nutch/PublicServers

Concorrentes do Nutch Grande variedade de Crawlers OpenWebSpider: http://www.openwebspider.org/ Heritrix: http://crawler.archive.org/ JSpider: http://j-spider.sourceforge.net/ ... Uma lista de crawlers em Java pode ser encontrada em http://java-source.net/open-source/crawlers Há ainda vários crawlers escritos em outras linguagens Poucos tão completos quanto o Nutch

A high-performance, full-featured text search engine library. Lucene

Lucene é… … uma API escrita em Java para indexação e busca de texto (full-text). Suporta objetos de bancos de dados como vários formatos de documentos (Microsoft Office documents, PDF, HTML, text, and so on) … uma biblioteca de RI de alta performance e escalável. … um projeto da Apache Software Foundation. … um projeto maduro, free e open source. … a biblioteca free mais popular de IR.

Quem usa? Eclipse IDE Encyclopedia Britannica CD-ROM/DVD FedEx Mayo Clinic Netflix Linked In Hewlett-Packard New Scientist magazine Salesforce.com Atlassian (Jira) Epiphany MIT’s OpenCourseware and DSpace, Akamai’s EdgeComputing platform Digg, and so on.

Sistema de Busca Componentes típicos de um sistema de busca. As partes cinzas são as partes que o Lucene toma conta.

Modelos de Busca Pure Boolean Model Vector Space Model Probabilistic Model

Usando o Lucene Criando um índice. Indexando um documento. Buscando um documento. Ferramentas.

Usando o Lucene Criando um índice IndexWriter Cria e abre índices. Adiciona, remove e atualiza documentos no índice. Directory Representa a localização do índice. Analyzer Limpeza do documento (stopwords, steeming, …).

Analyzers WhitespaceAnalyzer SimpleAnalyzer StopAnalyzer Separa o texto em tokens nos caracteres de espaço em branco. SimpleAnalyzer Separa o texto em tokens nos caracteres que não são letras, e transforma cada token em minúsculo. Corre o risco de descartar caracteres númericos. StopAnalyzer Igual ao SimpleAnalyzer, mas ele também remove as stop words (default é inglês, mas pode ser personalizado). KeywordAnalyzer Trata o texto todo como um único token. StandardAnalyzer Analisador mais sofisticado do Lucene. É capaz de identificar nomes de companhias, emails, host names, acrônimos, caracteres Chineses, Japoneses e Koreanos. Ele também identifica caracteres alfanuméricos, transforma para minúsculo cada token e remove as stop words. SynonymAnalyzer Tesaurus PositionalPorterStopAnalyzer Steeming

Usando o Lucene Criando um índice Código: IndexWriter indexWriter = new IndexWriter(“aulaRI", new StandardAnalyzer(), true); Directory dir = new FSDirectory(new File(“aulaRI”), null); IndexWriter indexWriter = new IndexWriter(dir,

Usando o Lucene Indexando um documento

Usando o Lucene Indexando um documento Coleção de Fields. Field Associação Campo  Valor.

Usando o Lucene Indexando um documento Código: Document doc = new Document(); doc.add(new Field("description", hotel.getDescription(), Field.Store.YES, Field.Index.TOKENIZED) ); indexWriter.addDocument(doc);

Usando o Lucene Buscando um documento. IndexSearcher Abre o índice criado pela classe IndexWriter no modo de leitura. Term É a unidade básica de pesquisa (Campo  Valor). Query Query que a classe IndexSearcher vai usar. TermQuery Consulta de termos ao Lucene: Campo  Valor. TopDocs Top N documents retrieved from the query.

Usando o Lucene Buscando um documento. Código: IndexSearcher is = new IndexSearcher(“aulaRI”); Query q = new TermQuery(new Term("description", “five stars")); TopDocs hits = is.search(q, 10); is.close(); for(int i = 0; i < hits.length(); i++) { Document doc = hits.doc(i); String hotelDesc = doc.get("description"); ... }

Ferramentas Num esforço para acomodar as inúmeras contribuições, que vão além do core do Lucene, um repositório foi criado para armazená-las. Esse repositório se chama: Lucene’s Sandbox.

Ferramentas - Sandbox Sandbox area Description analyzers Analyzers for various languages ant An Ant <index> task db Berkeley DB Directory implementation highlighter Search result snippet highlighting javascript Query builder and validator for web browsers lucli Command-line interface to interact with an index Luke Graphical interface to interact with an index limo Web-application (WAR) for interacting with an index

Ferramentas - Sandbox Sandbox area Description miscellaneous A few odds and ends, including the ChainedFilter Snowball Sophisticated family of stemmers and wrapping analyzer shingles Token filter to create shingles (single token from multiple adjacent tokens) from another Token Stream Ngrams Builds tokens from adjacent letters Memory indices Create custom memory-based indexes for fast searching Query extensions MoreLikeThis, FuzzyLikeThisQuery, BoostingQuery

Ferramentas - Sandbox Sandbox area Description spellchecker Correct spelling of terms in the user’s query xml-query-parser Creating a Query from XML strings WordNet Utility to build a synonym index from WordNet database

Concorrentes do Lucene Xapian: http://xapian.org/ Swish-e: http://swish-e.org/ Amberfish: http://sourceforge.net/projects/amberfish/ XQEngine: http://xqengine.sourceforge.net/ ASPseek: http://www.aspseek.org/ OpenFTS: http://openfts.sourceforge.net/ Zebra: http://www.indexdata.com/zebra

Apache Solr

O que é? É um servidor de busca de nível empresarial. Utiliza XML e HTTP para indexar documentos e executar buscas nas bases de dados. Implementa um sistema de schema rico que é bastante flexível ao lidar com os vários tipos de campos dos documentos. Implementa uma API que permite ao desenvolvedor modificar o comportamento da busca.

O que é? Começou originalmente como o Projeto Solar da CNET Networks em 2004. Em 2005 vários produtos da CNET utilizavam o Solar. O código foi doado e tornou-se o Solr em 2006. Em 2007, o projeto graduou-se da incubadora Apache e virou um subprojeto do Lucene.

Quem usa? http://www.whitehouse.gov/ AT&T Interactive AOL CNET SourceForge Gamespot http://news.com Digg ...

O que é preciso? Para instalar o Solr é necessário: Ter instalado Java versão 1.5 ou superior. Uma distribuição do Solr, que pode ser adquirida em: http://www.apache.org/dyn/closer.cgi/lucene/solr/

Por que usar o Solr Usa o Lucene como motor de indexação e busca. Possui uma API Java sólida e de fácil uso. Também pode ser usado em conjunto com outras linguagens. Integração com o crawler Nutch.

Por que usar o Solr Escalonável. Poderoso analisador de texto: stemming e correção gramatical. Funções auxiliares para busca: Highlighting Clustering More Like This Busca Facetada

Por que usar o Solr Modular e sistema de plug-ins: personalização. Comunidade ativa de usuários. Grátis e open source sob a licensa Apache.

Exemplos

Resultado da query Documento Exmplos

Resultado Schema.xml Exemplos

Exemplos (Análise de Texto)

Texto Indexado Query Exemplos

Exemplos (Filtros no Schema.xml)

Estatísticas gerais Estatísticas de Query Exemplos

Exemplos (Highlighting)

Documento Highlights Exemplos

Concorrentes do Solr Namazu: http://www.namazu.org/ DataparkSearch Engine: http://www.dataparksearch.org/ ht://Dig: http://www.htdig.org/ mnoGoSearch: http://mnogosearch.org/ XQEngine: http://xqengine.sourceforge.net/

Referências Apache Nutch: http://nutch.apache.org/about.html Nutch tutorial: http://wiki.apache.org/nutch/Tutorial Nutch wiki: http://wiki.apache.org/nutch

Referências http://www.informit.com/articles/article.aspx?p=461633 http://lucene.apache.org/java/3_0_2/gettingstarted.html Lucene in Action, McCandless, Michael; Hatcher, Erik; Gospodnetić, Otis; Second Edition, July 2010. http://paginas.fe.up.pt/~ei04073/wiki/index.php?title=Pesquisa:Motores_de_Pesquisa:Benchmark

Referências Apache Solr: http://lucene.apache.org/solr/ Tutorial Solr: http://lucene.apache.org/solr/tutorial.html