Extração de informações de texto e  cálculo de similaridade usando          Apache Lucene            André Luis Schwerz   ...
Roteiro• Por que extrair informações?• Processo de extração de informação  • Tokenização  • Normalização  • Eliminação de ...
Por que extrair informação?• Muito conteúdo sendo gerado  • Textos não estruturados    • Blogs    • E-mails    • Fóruns   ...
Processo de Extração de Informação                                             Refinamento                              Pr...
Processo de Extração de Informação                                             Refinamento                              Pr...
Extração de Informações de Texto     Pré-                Indexação       MineraçãoProcessamento                           ...
1   TokenizaçãoTokenização                                                                        2   Normalização       P...
1   TokenizaçãoTokenização                                                 2   Normalização      Pré-                 Inde...
1     Tokenização  Normalização                                                        2    Normalização         Pré-     ...
1   Tokenização Remoção de Stopwords                                                    2   Normalização        Pré-      ...
1   Tokenização Stemming                                                                2   Normalização        Pré-      ...
Indexação      Pré-                 Indexação   Mineração Processamento                                                   ...
Indexação      Pré-                  Indexação   Mineração Processamento• Tratamento de termos que são muito usados em uma...
Mineração      Pré-                 Indexação   Mineração Processamento• Utilização algoritmos para extrair informações do...
Apache Lucene™• Biblioteca para recuperação de informação;• Projeto código aberto implementado em Java;• Primeira distribu...
Analisadores      Pré-                 Indexação     Mineração Processamento• Estabelece regras para realização do pré-pro...
Analisadores          Pré-                          Indexação          Mineração     Processamento                        ...
Analisadores            Pré-                            Indexação          Mineração       Processamento                  ...
Analisadores      Pré-                 Indexação     Mineração Processamento• Suporte a outros idiomas  • Definido pelo an...
Indexação      Pré-                 Indexação   Mineração Processamento• Cria arquivos estruturados que permitem o rápido ...
Indexação     Pré-                Indexação   MineraçãoProcessamento                                         Document     ...
Indexação           Pré-                          Indexação          Mineração      Processamento • IndexWriter           ...
Indexação         Pré-                        Indexação        Mineração    Processamento                                 ...
Indexação         Pré-                         Indexação       Mineração    Processamento  • BrazilianAnalyzer            ...
Busca      Pré-                 Indexação   Mineração Processamento• Encontra documentos que são relevantes para a  consul...
Busca        Pré-                   Indexação   Mineração   Processamento                    Consulta               Query ...
Busca       Pré-                  Indexação        Mineração  Processamento  IndexReader           responsável pela leitur...
Busca       Pré-                  Indexação        Mineração  Processamento  Query           consulta analisada pelo Query...
Score       Pré-                  Indexação        Mineração  Processamento• Retorno do cálculo de similaridade entre a qu...
OperadoresConsulta           Encontra o documento que...java               Contém o termo java no campo padrão (default fi...
OperadoresConsulta            Encontra o documento que...(agil OR extrema)   Contém metodologia e deve conter agil ou extr...
Atividade1. Baixar o projeto com o esqueleto e os livros da bíblia na   forma de arquivos texto2. Fazer a indexação da bíb...
Atividade   2. Fazer a indexação da bíblia       • Para permitir a busca por versículo, criar um document por          ver...
Atividade – Código exemplo     Passo 01: Inicializa o processo de Indexação     Passo 02: Processo de Indexação     Passo ...
Referências• RAJARAMAN, A. & ULLMAN, J.D., Mining of Massive Datasets, 2011• ALAG, S., Collective Intelligence in Action, ...
Upcoming SlideShare
Loading in...5
×

Extração de informações de texto e cálculo de similaridade usando Apache Lucene

3,023

Published on

Apresentação didática sobre conceitos teóricos e práticos do uso do Apache Lucene. Por fim, uma atividade é proposta.

Published in: Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,023
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
79
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Extração de informações de texto e cálculo de similaridade usando Apache Lucene

  1. 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. 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. 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. 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. 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. 6. Extração de Informações de Texto Pré- Indexação MineraçãoProcessamento 1 Tokenização 2 Normalização 3 Stopwords 4 Stemming 6
  7. 7. 1 TokenizaçãoTokenizaçã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 20Termos:[“Pouco”, “se”, “aprende”, “com”, “a”, “vitória”, “mas”, “muito”, “com”, “a”, “derrota”] 7
  8. 8. 1 TokenizaçãoTokenizaçã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. 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. 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. 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. 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. 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. 14. Mineração Pré- Indexação Mineração Processamento• Utilização algoritmos para extrair informações dos dados estruturados 14
  15. 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. 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. 17. Analisadores Pré- Indexação Mineração Processamento Analyzer Reader Tokenizer ... TokenFilter TokenFilter Tokens TokenFilterStopFilter Length Filter LowerCase Standard Filter Filter Shingle PorterStem Filter Filter 17
  18. 18. Analisadores Pré- Indexação Mineração Processamento Analyzer Reader Tokenizer ... TokenFilter TokenFilter Tokenspublic 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. 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. 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. 21. Indexação Pré- Indexação MineraçãoProcessamento Document Field Field Field Index Writer Analyzer 21
  22. 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á escritoconfig 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 • IndexWriterConfigIndexWriterConfig(Version matchVersion, Analyzer analyzer)matchVersion Versão do lucene. Version.LUCENE_35analyzer Analisador a ser utilizado 22
  23. 23. Indexação Pré- Indexação Mineração Processamento Document • Document FieldDocument() Field Métodos add(Fieldable field) Adiciona o field no documento Field • FieldField(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. 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 WriterDirectory 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. 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. 26. Busca Pré- Indexação Mineração Processamento Consulta Query Parser Analyzer Index Resultados Searcher Index ReaderBusca Resultados 26
  27. 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. 28. Busca Pré- Indexação Mineração Processamento Query consulta analisada pelo QueryParserQuery 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. 29. Score Pré- Indexação Mineração Processamento• Retorno do cálculo de similaridade entre a query e o documentoTermo Descriçãotf(t in d) O número de vezes que o termo t ocorre no documento didf(t) Leva em consideração o número de documentos que contém o termo tcoord(q,d) Fração de todos os termos da consulta que o documento contémqueryNorm(q,d) Fator de normalização da consultat.getBoost() Privilegia o termo t na consulta q em tempo de buscanorm(t,d) Encapsula alguns fatores de boost em tempo de indexação 29
  30. 30. OperadoresConsulta 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 titulotitulo:extremo Contém o termo extremo no campo titulo e que não contenha esporte no–assunto:esporte campo assuntotitulo:extremoAND NOTassunto:sports 30
  31. 31. OperadoresConsulta Encontra o documento que...(agil OR extrema) Contém metodologia e deve conter agil ou extrema, todos no campoAND padrão (default field)metodologiatitulo:"junit in Contém a frase “junit in action” no campo tituloaction"titulo:"junit Contém os termos junit e action com 5 posições um do outro, no campoaction"~5 titulojava* Contém termos que começam com java, tais como javaspaces, javaserversjava~ Contém termo próximos ao termo java, como lava 31
  32. 32. Atividade1. Baixar o projeto com o esqueleto e os livros da bíblia na forma de arquivos texto2. Fazer a indexação da bíblia3. Fazer a busca que mostra os versículos da Bíblia correspondentes a consultaObs. Cada arquivo possui um capítulo do livro Gênesis 01.txtI 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 doI 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. 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.txt1 No princípio criou Deus os céus e a terra. capitulo 012 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 Deuslivro e capítulo pairava sobre a face das águas. 33
  34. 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. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×