SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Extração de informações de texto e
  cálculo de similaridade usando
          Apache Lucene
            André Luis Schwerz
           Rafael Liberato Roberto



                           Abril/ 2012


        By André Luis Schwerz e Rafael Liberato Roberto . Este trabalho foi licenciado
        com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada.
Roteiro
• Por que extrair informações?
• Processo de extração de informação
  • Tokenização
  • Normalização
  • Eliminação de Stopwords
  • Stemming
• Indexação e Busca
• Apache Lucene
• Atividade




                                       2
Por que extrair informação?
• Muito conteúdo sendo gerado
  • Textos não estruturados
    • Blogs
    • E-mails
    • Fóruns
    • Redes sociais
    • Artigos
    • Websites


• Realizar busca em textos não estruturados

• Inteligência Coletiva

• Como extrair informação desses conteúdos?
                                              3
Processo de Extração de Informação


                                             Refinamento


                              Pré-
        Coleta                                  Indexação             Mineração            Análise
                         Processamento

• Formação da        • Preparação dos    • Organização com     • Cálculos,        • Análise humana
  base de              dados               objetivo de busca     inferências,
  conhecimento                             rápida                extração de
                     • Processamento                             conhecimento
                                                                                  • Leitura e
• Varredura manual     de Linguagem      • Recuperação da                           interpretação dos
  ou automática        natural             Informação          • Mineração de       dados
  (Crawling)                                                     dados




                                                                                                     4
Processo de Extração de Informação


                                             Refinamento


                              Pré-
        Coleta                                  Indexação             Mineração            Análise
                         Processamento

• Formação da        • Preparação dos    • Organização com     • Cálculos,        • Análise humana
  base de              dados               objetivo de busca     inferências,
  conhecimento                             rápida                extração de
                     • Processamento                             conhecimento
                                                                                  • Leitura e
• Varredura manual     de Linguagem      • Recuperação da                           interpretação dos
  ou automática        natural             Informação          • Mineração de       dados
  (Crawling)                                                     dados




                                                                                                     5
Extração de Informações de Texto
     Pré-
                Indexação       Mineração
Processamento




                            1      Tokenização


                            2     Normalização

                            3       Stopwords


                            4        Stemming



                                                 6
1   Tokenização
Tokenização                                                                        2   Normalização
       Pré-
                      Indexação           Mineração
  Processamento
                                                                                   3    Stopwords

• Interpreta o texto transformado em termos                                        4    Stemming


• Exemplo

     Texto: Pouco se aprende com a vitória, mas muito com a derrota.
                                  1              1               1

                      Pouco               se          aprende           com


                  0           5       6         8 9             16 17         20

Termos:
[“Pouco”, “se”, “aprende”, “com”, “a”, “vitória”, “mas”, “muito”, “com”, “a”, “derrota”]

                                                                                                7
1   Tokenização
Tokenização                                                 2   Normalização
      Pré-
                 Indexação   Mineração
 Processamento
                                                            3    Stopwords

• Diferentes formas de tokenização                          4    Stemming

 Pouco se aprende com a vitória, mas muito com a derrota.

Shingle n=4

 Pouco                        aprende com
 Pouco se                     aprende com a
 Pouco se aprende             aprende com a vitória
 Pouco se aprende com         com
 se                           com a
 se aprende                   com a vitória
 se aprende com               a
 se aprende com a             a vitória
 aprende                      vitória
                                                                         8
1     Tokenização
  Normalização                                                        2    Normalização
         Pré-
                    Indexação      Mineração
    Processamento
                                                                      3      Stopwords

                                                                      4      Stemming
  • Conversão do texto para letras minúsculas.

  • Pode remover acentos, pontos, números, etc.


    Texto: Pouco se aprende com a vitória, mas muito com a derrota.

[“pouco”, “se”, “aprende”, “com”, “a”, “vitoria”, “mas”, “muito”, “com”, “a”, “derrota”]




                                                                                      9
1   Tokenização
 Remoção de Stopwords                                                    2   Normalização
        Pré-
                     Indexação      Mineração
   Processamento
                                                                         3    Stopwords

 • Remove as palavras comuns                                             4    Stemming

   • Sem significado relevante
 • Preposição, pronome, etc.
 • Depende do idioma

     Texto: Pouco se aprende com a vitória, mas muito com a derrota.

[“pouco”, “se”, “aprende”, “com”, “a”, “vitoria”, “mas”, “muito”, “com”, “a”, “derrota”]
                   [“pouco”, “aprende”, “vitoria”, “muito”, “derrota”]




                                                                                      10
1   Tokenização
 Stemming                                                                2   Normalização
        Pré-
                     Indexação       Mineração
   Processamento
                                                                         3    Stopwords

 • Converte os termos em sua raiz gramatical                             4    Stemming

 • Elimina plural
             Pouco se aprende com a vitória, mas muito com a derrota.
[“pouco”, “se”, “aprende”, “com”, “a”, “vitoria”, “mas”, “muito”, “com”, “a”, “derrota”]
                   [“pouco”, “aprende”, “vitoria”, “muito”, “derrota”]

                                 pouco           pouc
                                 aprende         aprend
                                 vitoria         vitor
                                 muito           muit
                                 derrota         derrot

                                                                                      11
Indexação
      Pré-
                 Indexação   Mineração
 Processamento
                                                               Documento 1

• Estabelece uma estrutura para os dados
                                         Termos   Documentos
                                                               Documento 2
• Índice invertido                 Termo1             1
                                   Termo2            1,2
   • Vocabulário e ocorrência
                                   Termo3             2
                                   Termo4             3
                                                               Documento 3




• Banco de dados


                                                                        12
Indexação
      Pré-
                  Indexação   Mineração
 Processamento



• Tratamento de termos que são muito usados em uma coleção de
 documentos

• Fator tf
  • Quantidade de vezes que o termo i aparece no documento (Quão bem i
    descreve d)

• Fator idf
  • Inverso da frequência do termo i dentro da coleção de documentos.
  • Quanto menos usado for o termo, maior o idf




                                                                         13
Mineração
      Pré-
                 Indexação   Mineração
 Processamento




• Utilização algoritmos para extrair informações dos dados
 estruturados




                                                             14
Apache Lucene™
• Biblioteca para recuperação de informação;

• Projeto código aberto implementado em Java;

• Primeira distribuição em 2000;

• Versão atual 3.5;

• Disponível em       http://lucene.apache.org/core/


• Documentação em
 http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/api/core/index.html


 *Os slides a seguir tem como objetivo fornecer um tutorial rápido e
 básico da utilização do Lucene
                                                                                       15
Analisadores
      Pré-
                 Indexação     Mineração
 Processamento



• Estabelece regras para realização do pré-processamento

• Alguns tipos de Analisadores

                                  Analyzer
     Whitespace Analyzer     Divide tokens por espaço em branco

     Simple Analyzer         Divide tokens por caracteres que não são letras,
                             normaliza (lowercase) e remove pontuação.
     Stop Analyzer           Simple Analyzer mais remoção de stopwords em
                             inglês
     Standard Analyzer       Mais sofisticado. Identifica certos tipos de tokens,
                             como e-mail, nomes de empresas, etc. Normaliza
                             (lowercase) e remove pontuação e stopwords



                                                                                    16
Analisadores
          Pré-
                          Indexação          Mineração
     Processamento



                        Analyzer


      Reader                   Tokenizer         ...         TokenFilter   TokenFilter   Tokens




                          TokenFilter




StopFilter                                                  Length
                                                             Filter

        LowerCase                                Standard
          Filter                                   Filter

                     Shingle        PorterStem
                      Filter          Filter
                                                                                                  17
Analisadores
            Pré-
                            Indexação          Mineração
       Processamento



                          Analyzer


        Reader                   Tokenizer         ...     TokenFilter   TokenFilter   Tokens




public final class MeuAnalisador extends Analyzer{
                 TokenFilter


     @Override
     public TokenStream tokenStream(String fieldName, Reader reader)
     {
    StopFilter                             Length
        TokenStream t = new WhitespaceTokenizer(Version.LUCENE_35, reader)
                                            Filter
        return new ShingleFilter(t, 4);
            LowerCase             Standard
     }         Filter               Filter

                       Shingle        PorterStem
}
                        Filter          Filter
                                                                                                18
Analisadores
      Pré-
                 Indexação     Mineração
 Processamento


• Suporte a outros idiomas

  • Definido pelo analisador

  • Somente é necessário se o analisador realizar stemming e a remoção de
    stopwords

• Idiomas suportados pelo Apache Lucene
   • Brazilian
   • Chinese
   • Dutch
   • French
   • German
   • Greek
   • Russian
   • Thai



                                                                            19
Indexação
      Pré-
                 Indexação   Mineração
 Processamento



• Cria arquivos estruturados que permitem o rápido acesso
 as palavras.
  • Índice Invertido




                                             Termos   Documentos
                                         aprend           1
                                         derrot          1,2
                                         muit            1,3
                                         pouc            1,2
                                         vitor           1,5



                                                                   20
Indexação
     Pré-
                Indexação   Mineração
Processamento


                                         Document

                                            Field

                                            Field

                                            Field




                                        Index Writer   Analyzer




                                                              21
Indexação
           Pré-
                          Indexação          Mineração
      Processamento



 • IndexWriter                 responsável por escrever no índice.

IndexWriter(Directory dir, IndexWriterConfig config)
dir          Diretório onde o índice será escrito
config       responsável por definir a versão do lucene e o analyzer a ser utilizado


 Métodos
 addDocument(Document doc)               Insere o documento no índice
 close()                                 Encerra o processo de indexação


 • IndexWriterConfig
IndexWriterConfig(Version matchVersion, Analyzer analyzer)

matchVersion          Versão do lucene. Version.LUCENE_35
analyzer              Analisador a ser utilizado

                                                                                       22
Indexação
         Pré-
                        Indexação        Mineração
    Processamento
                                                        Document

 • Document                                               Field
Document()
                                                          Field
 Métodos
 add(Fieldable field)   Adiciona o field no documento     Field



 • Field
Field(String name, String value, Field.Store store, Field.Index index)

 name       Nome do campo
 value      String a ser processada
 store      Store.YES / Store.NO
 index      Index.ANALYZED | Index.NOT_ANALYZED



                                                                   23
Indexação
         Pré-
                         Indexação       Mineração
    Processamento



  • BrazilianAnalyzer                 responsável por estabelecer as regras do pré-processamento.

 BrazilianAnalyzer(Version matchVersion)                                                  Field


  matchVersion      Versão do lucene. Version.LUCENE_35                                   Field

                                                                                          Field




                                                                Analyzer             Index Writer



Directory dir = FSDirectory.open(new File(pathIndexDir));
Analyzer an = new BrazilianAnalyzer(Version.LUCENE_35);
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, an);
IndexWriter indexWriter = new IndexWriter(dir, config);

Document d = new Document();
d.add(new Field("livro", “livro”, Store.YES, Index.ANALYZED));
                                                                                                    24
Busca
      Pré-
                 Indexação   Mineração
 Processamento



• Encontra documentos que são relevantes para a
  consulta.
• Rapidez e Classificação


       Busca




                                  Resultados


                                                  25
Busca
        Pré-
                   Indexação   Mineração
   Processamento




                    Consulta               Query Parser   Analyzer




                                             Index        Resultados
                                            Searcher



                                           Index Reader

Busca



              Resultados
                                                                     26
Busca
       Pré-
                  Indexação        Mineração
  Processamento




  IndexReader           responsável pela leitura do índice.

Directory dir = FSDirectory.open(new File(“c://data”));
IndexReader reader = IndexReader.open(dir);



  IndexSearcher               implementa um buscador para o IndexReader.

IndexSearcher searcher = new IndexSearcher(reader)



  QueryParser             analisador da consulta.

QueryParser parser = new QueryParser(Version.LUCENE_35, “field”,
analyzer)

                                                                           27
Busca
       Pré-
                  Indexação        Mineração
  Processamento




  Query           consulta analisada pelo QueryParser

Query query = parser.parse(“string de busca”);


  Cálculo de similaridade entre a query e os documentos
 TopDocs hits = searcher.search(q,100);
 ScoreDoc[] scoreDocs = hits.scoreDocs;


  Exibindo o resultado
 for(ScoreDoc sd : scoreDocs){
     Document d = searcher.doc(sd.doc);
     System.out.println("Nome do Arquivo: " + d.get("file"));
     System.out.println("Detalhando os resultados:");
     System.out.println(searcher.explain(q, sd.doc));
 }
                                                                28
Score
       Pré-
                  Indexação        Mineração
  Processamento



• Retorno do cálculo de similaridade entre a query e o
  documento




Termo             Descrição
tf(t in d)        O número de vezes que o termo t ocorre no documento d

idf(t)            Leva em consideração o número de documentos que contém o termo t

coord(q,d)        Fração de todos os termos da consulta que o documento contém

queryNorm(q,d)    Fator de normalização da consulta

t.getBoost()      Privilegia o termo t na consulta q em tempo de busca

norm(t,d)         Encapsula alguns fatores de boost em tempo de indexação
                                                                                     29
Operadores

Consulta           Encontra o documento que...
java               Contém o termo java no campo padrão (default field)
java junit         Contém o termo java ou junit ou os dois no campo padrão (default field)
java OR junit
+java +junit       Contém ambos, java e junit no campo padrão (default field)
java AND junit

                   Contém o termo java ou junit ou os dois no campo padrão (default field)
titulo:ant         Contém o termo ant no campo titulo
titulo:extremo     Contém o termo extremo no campo titulo e que não contenha esporte no
–assunto:esporte   campo assunto
titulo:extremo
AND NOT
assunto:sports




                                                                                             30
Operadores

Consulta            Encontra o documento que...
(agil OR extrema)   Contém metodologia e deve conter agil ou extrema, todos no campo
AND                 padrão (default field)
metodologia
titulo:"junit in    Contém a frase “junit in action” no campo titulo
action"
titulo:"junit       Contém os termos junit e action com 5 posições um do outro, no campo
action"~5           titulo
java*               Contém termos que começam com java, tais como javaspaces,
                    javaservers
java~               Contém termo próximos ao termo java, como lava




                                                                                           31
Atividade
1. Baixar o projeto com o esqueleto e os livros da bíblia na
   forma de arquivos texto
2. Fazer a indexação da bíblia
3. Fazer a busca que mostra os versículos da Bíblia
   correspondentes a consulta

Obs. Cada arquivo possui um capítulo do livro

                                                         Gênesis 01.txt
I Samuel 01.txt    Mateus 01.txt    1 No princípio criou Deus os céus e a terra.
                                    2 A terra era sem forma e vazia; e havia trevas sobre a face do
I Samuel 02.txt    Mateus 02.txt      abismo, mas o Espírito de Deus pairava sobre a face das águas.
                                    3 Disse Deus: haja luz. E houve luz.
      ...                ...        4 Viu Deus que a luz era boa; e fez separação entre a luz e as
                                      trevas.
                                    5 E Deus chamou à luz dia, e às trevas noite. E foi a tarde e a
                                      manhã, o dia primeiro.
                                    ...
                                                                                               32
Atividade
   2. Fazer a indexação da bíblia
       • Para permitir a busca por versículo, criar um document por
          versículo
                                                                                    Document

                                                                     livro                   Gênesis
                     Gênesis 01.txt
1 No princípio criou Deus os céus e a terra.                       capitulo                     01
2 A terra era sem forma e vazia; e havia trevas sobre a face do
  abismo, mas o Espírito de Deus pairava sobre a face das águas.               1 No princípio criou Deus os céus e a
                                                                   versiculo
                                                                                 terra.
3 Disse Deus: haja luz. E houve luz.
4 Viu Deus que a luz era boa; e fez separação entre a luz e as
  trevas.
5 E Deus chamou à luz dia, e às trevas noite. E foi a tarde e a                     Document
  manhã, o dia primeiro.
...                                                                  livro                   Gênesis

                                                                   capitulo                     01

                                                                               2 A terra era sem forma e vazia; e
                                                                   versiculo
                                                                                 havia trevas sobre a face do
*usar o nome do arquivo para preencher os campos                                 abismo, mas o Espírito de Deus
livro e capítulo                                                                 pairava sobre a face das águas.


                                                                                                                33
Atividade – Código exemplo




     Passo 01: Inicializa o processo de Indexação



     Passo 02: Processo de Indexação



     Passo 03: Processo de Busca e impressão do resultado



                                                            34
Referências
• RAJARAMAN, A. & ULLMAN, J.D., Mining of Massive
 Datasets, 2011

• ALAG, S., Collective Intelligence in Action, Manning,
 2009.

• MCCANDLES, M. et al. Lucene in Action, 2010.




                                                          35

Contenu connexe

Tendances

Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例cyberagent
 
[AIS 2018] [Team Tools_Advanced] Confluence 100배 활용하기 - 커브
[AIS 2018] [Team Tools_Advanced] Confluence 100배 활용하기 - 커브[AIS 2018] [Team Tools_Advanced] Confluence 100배 활용하기 - 커브
[AIS 2018] [Team Tools_Advanced] Confluence 100배 활용하기 - 커브Atlassian 대한민국
 
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方理弘 山崎
 
MySQL Audit 機制應用技術
MySQL Audit 機制應用技術MySQL Audit 機制應用技術
MySQL Audit 機制應用技術Jamie Lee
 
Apache Camel interview Questions and Answers
Apache Camel interview Questions and AnswersApache Camel interview Questions and Answers
Apache Camel interview Questions and Answersjeetendra mandal
 
Bringing observability to your testing environments
Bringing observability to your testing environmentsBringing observability to your testing environments
Bringing observability to your testing environmentsElasTest Project
 
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayDatadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayC4Media
 
Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...
Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...
Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...Luis Buchelli
 
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례Woogon Shim
 
Querying and Analyzing Data in Amazon S3
Querying and Analyzing Data in Amazon S3Querying and Analyzing Data in Amazon S3
Querying and Analyzing Data in Amazon S3Amazon Web Services
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツールYasumasa Suenaga
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme ProgrammingErkan Erol
 
Learn O11y from Grafana ecosystem.
Learn O11y from Grafana ecosystem.Learn O11y from Grafana ecosystem.
Learn O11y from Grafana ecosystem.HungWei Chiu
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용흥배 최
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
サーバPUSHざっくりまとめ
サーバPUSHざっくりまとめサーバPUSHざっくりまとめ
サーバPUSHざっくりまとめYasuhiro Mawarimichi
 

Tendances (20)

Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例Amebaにおけるログ解析基盤Patriotの活用事例
Amebaにおけるログ解析基盤Patriotの活用事例
 
Agile overview
Agile overviewAgile overview
Agile overview
 
[AIS 2018] [Team Tools_Advanced] Confluence 100배 활용하기 - 커브
[AIS 2018] [Team Tools_Advanced] Confluence 100배 활용하기 - 커브[AIS 2018] [Team Tools_Advanced] Confluence 100배 활용하기 - 커브
[AIS 2018] [Team Tools_Advanced] Confluence 100배 활용하기 - 커브
 
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
 
MySQL Audit 機制應用技術
MySQL Audit 機制應用技術MySQL Audit 機制應用技術
MySQL Audit 機制應用技術
 
Agile & Scrum podstawy
Agile & Scrum podstawyAgile & Scrum podstawy
Agile & Scrum podstawy
 
イエラエセキュリティMeet up 20210820
イエラエセキュリティMeet up 20210820イエラエセキュリティMeet up 20210820
イエラエセキュリティMeet up 20210820
 
Apache Camel interview Questions and Answers
Apache Camel interview Questions and AnswersApache Camel interview Questions and Answers
Apache Camel interview Questions and Answers
 
Bringing observability to your testing environments
Bringing observability to your testing environmentsBringing observability to your testing environments
Bringing observability to your testing environments
 
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/DayDatadog: a Real-Time Metrics Database for One Quadrillion Points/Day
Datadog: a Real-Time Metrics Database for One Quadrillion Points/Day
 
Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...
Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...
Lean Inception & PBB: Cómo integrar ambas técnicas para construir el Backlog ...
 
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
 
Querying and Analyzing Data in Amazon S3
Querying and Analyzing Data in Amazon S3Querying and Analyzing Data in Amazon S3
Querying and Analyzing Data in Amazon S3
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツール
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Learn O11y from Grafana ecosystem.
Learn O11y from Grafana ecosystem.Learn O11y from Grafana ecosystem.
Learn O11y from Grafana ecosystem.
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
Transformação Ágil
Transformação ÁgilTransformação Ágil
Transformação Ágil
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
サーバPUSHざっくりまとめ
サーバPUSHざっくりまとめサーバPUSHざっくりまとめ
サーバPUSHざっくりまとめ
 

En vedette

Turbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchTurbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchPaulo César M Jeveaux
 
CLASSIFICAÇÃO DE TEXTOS APLICADA À AVALIAÇÃO ECONÔMICA - TCC
CLASSIFICAÇÃO DE TEXTOS APLICADA À AVALIAÇÃO ECONÔMICA - TCCCLASSIFICAÇÃO DE TEXTOS APLICADA À AVALIAÇÃO ECONÔMICA - TCC
CLASSIFICAÇÃO DE TEXTOS APLICADA À AVALIAÇÃO ECONÔMICA - TCCVivaldo Jose Breternitz
 
Reforma da Lei de Direitos Autorais
Reforma da Lei de Direitos AutoraisReforma da Lei de Direitos Autorais
Reforma da Lei de Direitos AutoraisAndré Luis Schwerz
 
Link analysis - Análise de Links
Link analysis - Análise de LinksLink analysis - Análise de Links
Link analysis - Análise de LinksAndré Luis Schwerz
 
Pesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundoPesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundoHermano Soares
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka? pichiliani
 
Solr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open SourceSolr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open SourceMarcelo Rodrigues
 
Buscas Poderosas Com Solr
Buscas Poderosas Com SolrBuscas Poderosas Com Solr
Buscas Poderosas Com Solralmeidaricardo
 
Filiação partidária e risco de corrupção de servidores públicos federais
Filiação partidária e risco de corrupção de servidores públicos federaisFiliação partidária e risco de corrupção de servidores públicos federais
Filiação partidária e risco de corrupção de servidores públicos federaisRommel Carvalho
 
Uso de mineração de dados e textos para cálculo de preços de referência em co...
Uso de mineração de dados e textos para cálculo de preços de referência em co...Uso de mineração de dados e textos para cálculo de preços de referência em co...
Uso de mineração de dados e textos para cálculo de preços de referência em co...Rommel Carvalho
 
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
 
Ferramentas para Mineração de Dados
Ferramentas para Mineração de DadosFerramentas para Mineração de Dados
Ferramentas para Mineração de DadosManoel Amaro
 
Abe Curso Estudos De Caso Ii
Abe Curso Estudos De Caso IiAbe Curso Estudos De Caso Ii
Abe Curso Estudos De Caso Iiufrj
 
L) médico pesquisando medicações
L) médico   pesquisando medicaçõesL) médico   pesquisando medicações
L) médico pesquisando medicaçõesLeonardo Alves
 
Cmc encaminhamento- solicitando e agendando
Cmc  encaminhamento- solicitando e agendandoCmc  encaminhamento- solicitando e agendando
Cmc encaminhamento- solicitando e agendandoLeonardo Alves
 
Cmc liberando a agenda-horários
Cmc   liberando a agenda-horáriosCmc   liberando a agenda-horários
Cmc liberando a agenda-horáriosLeonardo Alves
 
Text mining mengmeng & jack_lsu
Text mining mengmeng & jack_lsuText mining mengmeng & jack_lsu
Text mining mengmeng & jack_lsujjdai
 
K) médico histórico de consultas, retornos, consultas antigas
K) médico   histórico de consultas, retornos, consultas antigasK) médico   histórico de consultas, retornos, consultas antigas
K) médico histórico de consultas, retornos, consultas antigasLeonardo Alves
 
Prontuário Eletrônico - Prefeituras
Prontuário Eletrônico - PrefeiturasProntuário Eletrônico - Prefeituras
Prontuário Eletrônico - PrefeiturasLeonardo Alves
 

En vedette (20)

Turbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate SearchTurbinando sua aplicação com Lucene, Solr e Hibernate Search
Turbinando sua aplicação com Lucene, Solr e Hibernate Search
 
CLASSIFICAÇÃO DE TEXTOS APLICADA À AVALIAÇÃO ECONÔMICA - TCC
CLASSIFICAÇÃO DE TEXTOS APLICADA À AVALIAÇÃO ECONÔMICA - TCCCLASSIFICAÇÃO DE TEXTOS APLICADA À AVALIAÇÃO ECONÔMICA - TCC
CLASSIFICAÇÃO DE TEXTOS APLICADA À AVALIAÇÃO ECONÔMICA - TCC
 
Reforma da Lei de Direitos Autorais
Reforma da Lei de Direitos AutoraisReforma da Lei de Direitos Autorais
Reforma da Lei de Direitos Autorais
 
Link analysis - Análise de Links
Link analysis - Análise de LinksLink analysis - Análise de Links
Link analysis - Análise de Links
 
Pesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundoPesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundo
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka?
 
Solr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open SourceSolr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open Source
 
Buscas Poderosas Com Solr
Buscas Poderosas Com SolrBuscas Poderosas Com Solr
Buscas Poderosas Com Solr
 
Filiação partidária e risco de corrupção de servidores públicos federais
Filiação partidária e risco de corrupção de servidores públicos federaisFiliação partidária e risco de corrupção de servidores públicos federais
Filiação partidária e risco de corrupção de servidores públicos federais
 
Uso de mineração de dados e textos para cálculo de preços de referência em co...
Uso de mineração de dados e textos para cálculo de preços de referência em co...Uso de mineração de dados e textos para cálculo de preços de referência em co...
Uso de mineração de dados e textos para cálculo de preços de referência em co...
 
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
 
Ferramentas para Mineração de Dados
Ferramentas para Mineração de DadosFerramentas para Mineração de Dados
Ferramentas para Mineração de Dados
 
Abe Curso Estudos De Caso Ii
Abe Curso Estudos De Caso IiAbe Curso Estudos De Caso Ii
Abe Curso Estudos De Caso Ii
 
L) médico pesquisando medicações
L) médico   pesquisando medicaçõesL) médico   pesquisando medicações
L) médico pesquisando medicações
 
Cmc encaminhamento- solicitando e agendando
Cmc  encaminhamento- solicitando e agendandoCmc  encaminhamento- solicitando e agendando
Cmc encaminhamento- solicitando e agendando
 
Cmc liberando a agenda-horários
Cmc   liberando a agenda-horáriosCmc   liberando a agenda-horários
Cmc liberando a agenda-horários
 
Text mining mengmeng & jack_lsu
Text mining mengmeng & jack_lsuText mining mengmeng & jack_lsu
Text mining mengmeng & jack_lsu
 
K) médico histórico de consultas, retornos, consultas antigas
K) médico   histórico de consultas, retornos, consultas antigasK) médico   histórico de consultas, retornos, consultas antigas
K) médico histórico de consultas, retornos, consultas antigas
 
Oficina Pentaho
Oficina PentahoOficina Pentaho
Oficina Pentaho
 
Prontuário Eletrônico - Prefeituras
Prontuário Eletrônico - PrefeiturasProntuário Eletrônico - Prefeituras
Prontuário Eletrônico - Prefeituras
 

Dernier

Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISVitor Vieira Vasconcelos
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirIedaGoethe
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfIedaGoethe
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOMarcosViniciusLemesL
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
Caixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogarCaixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogarIedaGoethe
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 

Dernier (20)

Prática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGISPrática de interpretação de imagens de satélite no QGIS
Prática de interpretação de imagens de satélite no QGIS
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
FCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimirFCEE - Diretrizes - Autismo.pdf para imprimir
FCEE - Diretrizes - Autismo.pdf para imprimir
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdfcartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
cartilha-pdi-plano-de-desenvolvimento-individual-do-estudante.pdf
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
Caixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogarCaixa jogo da onça. para imprimir e jogar
Caixa jogo da onça. para imprimir e jogar
 
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
HORA DO CONTO4_BECRE D. CARLOS I_2023_2024
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 

Extração de informações usando Apache Lucene

  • 1. Extração de informações de texto e cálculo de similaridade usando Apache Lucene André Luis Schwerz Rafael Liberato Roberto Abril/ 2012 By André Luis Schwerz e Rafael Liberato Roberto . Este trabalho foi licenciado com uma Licença Creative Commons - Atribuição 3.0 Não Adaptada.
  • 2. Roteiro • Por que extrair informações? • Processo de extração de informação • Tokenização • Normalização • Eliminação de Stopwords • Stemming • Indexação e Busca • Apache Lucene • Atividade 2
  • 3. Por que extrair informação? • Muito conteúdo sendo gerado • Textos não estruturados • Blogs • E-mails • Fóruns • Redes sociais • Artigos • Websites • Realizar busca em textos não estruturados • Inteligência Coletiva • Como extrair informação desses conteúdos? 3
  • 4. Processo de Extração de Informação Refinamento Pré- Coleta Indexação Mineração Análise Processamento • Formação da • Preparação dos • Organização com • Cálculos, • Análise humana base de dados objetivo de busca inferências, conhecimento rápida extração de • Processamento conhecimento • Leitura e • Varredura manual de Linguagem • Recuperação da interpretação dos ou automática natural Informação • Mineração de dados (Crawling) dados 4
  • 5. Processo de Extração de Informação Refinamento Pré- Coleta Indexação Mineração Análise Processamento • Formação da • Preparação dos • Organização com • Cálculos, • Análise humana base de dados objetivo de busca inferências, conhecimento rápida extração de • Processamento conhecimento • Leitura e • Varredura manual de Linguagem • Recuperação da interpretação dos ou automática natural Informação • Mineração de dados (Crawling) dados 5
  • 6. Extração de Informações de Texto Pré- Indexação Mineração Processamento 1 Tokenização 2 Normalização 3 Stopwords 4 Stemming 6
  • 7. 1 Tokenização Tokenização 2 Normalização Pré- Indexação Mineração Processamento 3 Stopwords • Interpreta o texto transformado em termos 4 Stemming • Exemplo Texto: Pouco se aprende com a vitória, mas muito com a derrota. 1 1 1 Pouco se aprende com 0 5 6 8 9 16 17 20 Termos: [“Pouco”, “se”, “aprende”, “com”, “a”, “vitória”, “mas”, “muito”, “com”, “a”, “derrota”] 7
  • 8. 1 Tokenização Tokenização 2 Normalização Pré- Indexação Mineração Processamento 3 Stopwords • Diferentes formas de tokenização 4 Stemming Pouco se aprende com a vitória, mas muito com a derrota. Shingle n=4 Pouco aprende com Pouco se aprende com a Pouco se aprende aprende com a vitória Pouco se aprende com com se com a se aprende com a vitória se aprende com a se aprende com a a vitória aprende vitória 8
  • 9. 1 Tokenização Normalização 2 Normalização Pré- Indexação Mineração Processamento 3 Stopwords 4 Stemming • Conversão do texto para letras minúsculas. • Pode remover acentos, pontos, números, etc. Texto: Pouco se aprende com a vitória, mas muito com a derrota. [“pouco”, “se”, “aprende”, “com”, “a”, “vitoria”, “mas”, “muito”, “com”, “a”, “derrota”] 9
  • 10. 1 Tokenização Remoção de Stopwords 2 Normalização Pré- Indexação Mineração Processamento 3 Stopwords • Remove as palavras comuns 4 Stemming • Sem significado relevante • Preposição, pronome, etc. • Depende do idioma Texto: Pouco se aprende com a vitória, mas muito com a derrota. [“pouco”, “se”, “aprende”, “com”, “a”, “vitoria”, “mas”, “muito”, “com”, “a”, “derrota”] [“pouco”, “aprende”, “vitoria”, “muito”, “derrota”] 10
  • 11. 1 Tokenização Stemming 2 Normalização Pré- Indexação Mineração Processamento 3 Stopwords • Converte os termos em sua raiz gramatical 4 Stemming • Elimina plural Pouco se aprende com a vitória, mas muito com a derrota. [“pouco”, “se”, “aprende”, “com”, “a”, “vitoria”, “mas”, “muito”, “com”, “a”, “derrota”] [“pouco”, “aprende”, “vitoria”, “muito”, “derrota”] pouco pouc aprende aprend vitoria vitor muito muit derrota derrot 11
  • 12. Indexação Pré- Indexação Mineração Processamento Documento 1 • Estabelece uma estrutura para os dados Termos Documentos Documento 2 • Índice invertido Termo1 1 Termo2 1,2 • Vocabulário e ocorrência Termo3 2 Termo4 3 Documento 3 • Banco de dados 12
  • 13. Indexação Pré- Indexação Mineração Processamento • Tratamento de termos que são muito usados em uma coleção de documentos • Fator tf • Quantidade de vezes que o termo i aparece no documento (Quão bem i descreve d) • Fator idf • Inverso da frequência do termo i dentro da coleção de documentos. • Quanto menos usado for o termo, maior o idf 13
  • 14. Mineração Pré- Indexação Mineração Processamento • Utilização algoritmos para extrair informações dos dados estruturados 14
  • 15. Apache Lucene™ • Biblioteca para recuperação de informação; • Projeto código aberto implementado em Java; • Primeira distribuição em 2000; • Versão atual 3.5; • Disponível em http://lucene.apache.org/core/ • Documentação em http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/api/core/index.html *Os slides a seguir tem como objetivo fornecer um tutorial rápido e básico da utilização do Lucene 15
  • 16. Analisadores Pré- Indexação Mineração Processamento • Estabelece regras para realização do pré-processamento • Alguns tipos de Analisadores Analyzer Whitespace Analyzer Divide tokens por espaço em branco Simple Analyzer Divide tokens por caracteres que não são letras, normaliza (lowercase) e remove pontuação. Stop Analyzer Simple Analyzer mais remoção de stopwords em inglês Standard Analyzer Mais sofisticado. Identifica certos tipos de tokens, como e-mail, nomes de empresas, etc. Normaliza (lowercase) e remove pontuação e stopwords 16
  • 17. Analisadores Pré- Indexação Mineração Processamento Analyzer Reader Tokenizer ... TokenFilter TokenFilter Tokens TokenFilter StopFilter Length Filter LowerCase Standard Filter Filter Shingle PorterStem Filter Filter 17
  • 18. Analisadores Pré- Indexação Mineração Processamento Analyzer Reader Tokenizer ... TokenFilter TokenFilter Tokens public final class MeuAnalisador extends Analyzer{ TokenFilter @Override public TokenStream tokenStream(String fieldName, Reader reader) { StopFilter Length TokenStream t = new WhitespaceTokenizer(Version.LUCENE_35, reader) Filter return new ShingleFilter(t, 4); LowerCase Standard } Filter Filter Shingle PorterStem } Filter Filter 18
  • 19. Analisadores Pré- Indexação Mineração Processamento • Suporte a outros idiomas • Definido pelo analisador • Somente é necessário se o analisador realizar stemming e a remoção de stopwords • Idiomas suportados pelo Apache Lucene • Brazilian • Chinese • Dutch • French • German • Greek • Russian • Thai 19
  • 20. Indexação Pré- Indexação Mineração Processamento • Cria arquivos estruturados que permitem o rápido acesso as palavras. • Índice Invertido Termos Documentos aprend 1 derrot 1,2 muit 1,3 pouc 1,2 vitor 1,5 20
  • 21. Indexação Pré- Indexação Mineração Processamento Document Field Field Field Index Writer Analyzer 21
  • 22. Indexação Pré- Indexação Mineração Processamento • IndexWriter responsável por escrever no índice. IndexWriter(Directory dir, IndexWriterConfig config) dir Diretório onde o índice será escrito config responsável por definir a versão do lucene e o analyzer a ser utilizado Métodos addDocument(Document doc) Insere o documento no índice close() Encerra o processo de indexação • IndexWriterConfig IndexWriterConfig(Version matchVersion, Analyzer analyzer) matchVersion Versão do lucene. Version.LUCENE_35 analyzer Analisador a ser utilizado 22
  • 23. Indexação Pré- Indexação Mineração Processamento Document • Document Field Document() Field Métodos add(Fieldable field) Adiciona o field no documento Field • Field Field(String name, String value, Field.Store store, Field.Index index) name Nome do campo value String a ser processada store Store.YES / Store.NO index Index.ANALYZED | Index.NOT_ANALYZED 23
  • 24. Indexação Pré- Indexação Mineração Processamento • BrazilianAnalyzer responsável por estabelecer as regras do pré-processamento. BrazilianAnalyzer(Version matchVersion) Field matchVersion Versão do lucene. Version.LUCENE_35 Field Field Analyzer Index Writer Directory dir = FSDirectory.open(new File(pathIndexDir)); Analyzer an = new BrazilianAnalyzer(Version.LUCENE_35); IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35, an); IndexWriter indexWriter = new IndexWriter(dir, config); Document d = new Document(); d.add(new Field("livro", “livro”, Store.YES, Index.ANALYZED)); 24
  • 25. Busca Pré- Indexação Mineração Processamento • Encontra documentos que são relevantes para a consulta. • Rapidez e Classificação Busca Resultados 25
  • 26. Busca Pré- Indexação Mineração Processamento Consulta Query Parser Analyzer Index Resultados Searcher Index Reader Busca Resultados 26
  • 27. Busca Pré- Indexação Mineração Processamento IndexReader responsável pela leitura do índice. Directory dir = FSDirectory.open(new File(“c://data”)); IndexReader reader = IndexReader.open(dir); IndexSearcher implementa um buscador para o IndexReader. IndexSearcher searcher = new IndexSearcher(reader) QueryParser analisador da consulta. QueryParser parser = new QueryParser(Version.LUCENE_35, “field”, analyzer) 27
  • 28. Busca Pré- Indexação Mineração Processamento Query consulta analisada pelo QueryParser Query query = parser.parse(“string de busca”); Cálculo de similaridade entre a query e os documentos TopDocs hits = searcher.search(q,100); ScoreDoc[] scoreDocs = hits.scoreDocs; Exibindo o resultado for(ScoreDoc sd : scoreDocs){ Document d = searcher.doc(sd.doc); System.out.println("Nome do Arquivo: " + d.get("file")); System.out.println("Detalhando os resultados:"); System.out.println(searcher.explain(q, sd.doc)); } 28
  • 29. Score Pré- Indexação Mineração Processamento • Retorno do cálculo de similaridade entre a query e o documento Termo Descrição tf(t in d) O número de vezes que o termo t ocorre no documento d idf(t) Leva em consideração o número de documentos que contém o termo t coord(q,d) Fração de todos os termos da consulta que o documento contém queryNorm(q,d) Fator de normalização da consulta t.getBoost() Privilegia o termo t na consulta q em tempo de busca norm(t,d) Encapsula alguns fatores de boost em tempo de indexação 29
  • 30. Operadores Consulta Encontra o documento que... java Contém o termo java no campo padrão (default field) java junit Contém o termo java ou junit ou os dois no campo padrão (default field) java OR junit +java +junit Contém ambos, java e junit no campo padrão (default field) java AND junit Contém o termo java ou junit ou os dois no campo padrão (default field) titulo:ant Contém o termo ant no campo titulo titulo:extremo Contém o termo extremo no campo titulo e que não contenha esporte no –assunto:esporte campo assunto titulo:extremo AND NOT assunto:sports 30
  • 31. Operadores Consulta Encontra o documento que... (agil OR extrema) Contém metodologia e deve conter agil ou extrema, todos no campo AND padrão (default field) metodologia titulo:"junit in Contém a frase “junit in action” no campo titulo action" titulo:"junit Contém os termos junit e action com 5 posições um do outro, no campo action"~5 titulo java* Contém termos que começam com java, tais como javaspaces, javaservers java~ Contém termo próximos ao termo java, como lava 31
  • 32. Atividade 1. Baixar o projeto com o esqueleto e os livros da bíblia na forma de arquivos texto 2. Fazer a indexação da bíblia 3. Fazer a busca que mostra os versículos da Bíblia correspondentes a consulta Obs. Cada arquivo possui um capítulo do livro Gênesis 01.txt I Samuel 01.txt Mateus 01.txt 1 No princípio criou Deus os céus e a terra. 2 A terra era sem forma e vazia; e havia trevas sobre a face do I Samuel 02.txt Mateus 02.txt abismo, mas o Espírito de Deus pairava sobre a face das águas. 3 Disse Deus: haja luz. E houve luz. ... ... 4 Viu Deus que a luz era boa; e fez separação entre a luz e as trevas. 5 E Deus chamou à luz dia, e às trevas noite. E foi a tarde e a manhã, o dia primeiro. ... 32
  • 33. Atividade 2. Fazer a indexação da bíblia • Para permitir a busca por versículo, criar um document por versículo Document livro Gênesis Gênesis 01.txt 1 No princípio criou Deus os céus e a terra. capitulo 01 2 A terra era sem forma e vazia; e havia trevas sobre a face do abismo, mas o Espírito de Deus pairava sobre a face das águas. 1 No princípio criou Deus os céus e a versiculo terra. 3 Disse Deus: haja luz. E houve luz. 4 Viu Deus que a luz era boa; e fez separação entre a luz e as trevas. 5 E Deus chamou à luz dia, e às trevas noite. E foi a tarde e a Document manhã, o dia primeiro. ... livro Gênesis capitulo 01 2 A terra era sem forma e vazia; e versiculo havia trevas sobre a face do *usar o nome do arquivo para preencher os campos abismo, mas o Espírito de Deus livro e capítulo pairava sobre a face das águas. 33
  • 34. Atividade – Código exemplo Passo 01: Inicializa o processo de Indexação Passo 02: Processo de Indexação Passo 03: Processo de Busca e impressão do resultado 34
  • 35. Referências • RAJARAMAN, A. & ULLMAN, J.D., Mining of Massive Datasets, 2011 • ALAG, S., Collective Intelligence in Action, Manning, 2009. • MCCANDLES, M. et al. Lucene in Action, 2010. 35