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

En vedette

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
Rommel 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
 
Ferramentas para Mineração de Dados
Ferramentas para Mineração de DadosFerramentas para Mineração de Dados
Ferramentas para Mineração de Dados
Manoel Amaro
 
L) médico pesquisando medicações
L) médico   pesquisando medicaçõesL) médico   pesquisando medicações
L) médico pesquisando medicações
Leonardo Alves
 
Cmc encaminhamento- solicitando e agendando
Cmc  encaminhamento- solicitando e agendandoCmc  encaminhamento- solicitando e agendando
Cmc encaminhamento- solicitando e agendando
Leonardo Alves
 
Cmc liberando a agenda-horários
Cmc   liberando a agenda-horáriosCmc   liberando a agenda-horários
Cmc liberando a agenda-horários
Leonardo Alves
 
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
Leonardo Alves
 

En vedette (20)

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
 
Aplicação de técnicas de mineração de textos para classificação automática de...
Aplicação de técnicas de mineração de textos para classificação automática de...Aplicação de técnicas de mineração de textos para classificação automática de...
Aplicação de técnicas de mineração de textos para classificação automática de...
 
Apresentação sobre Linguística computacional e recuperação da informação no E...
Apresentação sobre Linguística computacional e recuperação da informação no E...Apresentação sobre Linguística computacional e recuperação da informação no E...
Apresentação sobre Linguística computacional e recuperação da informação no E...
 
Text Mining
Text MiningText Mining
Text Mining
 
Bpa importando txt da produção mensal2
Bpa   importando txt da produção mensal2Bpa   importando txt da produção mensal2
Bpa importando txt da produção mensal2
 

Dernier

O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
LidianeLill2
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Dernier (20)

Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdf
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
aprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubelaprendizagem significatica, teórico David Ausubel
aprendizagem significatica, teórico David Ausubel
 

Extração de informações de texto e cálculo de similaridade 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