SlideShare a Scribd company logo
1 of 17
Text Mining
Classificando textos com o Elastic Search
4º Meetup do Elastic São Paulo User Group - 04/05/2016
Jozias Rolim
jozias.rolim@icolabora.com.br
Analista desenvolvedor sênior - iColabora
Mestrando em Sistemas de Informação - PPgSi - EACH|USP
Membro mais bonito do Elastic São Paulo User Group
Sumário
O problema
Estrategia convencional
Aplicando o Elastic Search como estratégia para solução do
problema
Comparação com estratégias convencionais
Dificuldades e possíveis soluções 3
O Problema
4
Classificar automaticamente reclamações da Anatel
Clientes realizam reclamações sobre os seus serviços na Anatel
O operador classifica a reclamação
As reclamações devem ser classificadas para que possam ser encaminhadas
para os setores responsáveis da empresa.
Classificação está relacionada com indicadores de qualidade - Anatel
A árvore de reclamação é imensa
O operador classifica de forma equivocada
Classificar demanda tempo - Aumento da produtividade do operador 5
Estrategia convencional
6
7
Aplicando o Elastic Search como
estratégia para solução do problema
8
Definindo analyzer
"analyzer": {
"analyzer_classificador": {
"type": "custom",
"tokenizer": "lowercase",
"filter": [
"token_type",
"custom_stop_words",
"asciifolding",
"brazilian_stop",
"stem_minimal_pt",
],
"char_filter": [ "html_strip" ]
}
},
"filter": {
"index_filter": {
"type": "common_grams",
"common_words": "_brazilian_"
},
"search_filter": {
"type": "common_grams",
"common_words": "_brazilian_",
"query_mode": true
},
"stem_minimal_pt": {
"type": "stemmer",
"language": "brazilian"
},
"brazilian_stop": {
"type": "stop",
"stopwords": "_brazilian_"
},
"custom_stop_words": {
"type": "stop",
"stopwords": [...]
},
"token_type": {
"type": "word_delimiter",
"catenate_words": true,
"catenate_all": true,
"split_on_case_change": true,
"split_on_numerics": true
}
}
}
9
Mapeando uso do analyzer no indice, _mapping
{
"indice": {
"properties": {
"campo_texto": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
},
"classificacao": {
"type": "string",
"index_options": "freqs",
"analyzer": "classificacao_email"
}
}
}
, "classe": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
10
Realizando a consulta dos textos mais similares
_search?analyzer=analyzer_classificador
{
"query": {
"common" :{
"campo_texto.classificacao":{
"query": "Texto de reclamação informado",
"cutoff_frequency": 0.001
}
}
},
"size": 1,
“ A consulta retorna apenas
o documento mais similar,
melhores resultados podem
ser obtidos, retornando mais
documentos e comparando
as classes deles.”
11
Dificuldades e possíveis soluções
12
Dificuldades e possíveis soluções
Base de dados com classificações erradas - Filtrar os dados que possuem
classificação errada para a base
Neologismo - Utilizar synonyms
Palavras com escrita errada - Ignorar palavras não presentes no dicionário
Palavras abreviadas - Ignorar ou utilizar synonyms
Quantidade de sinônimos elevada - Mapear a maior quantidade de
sinônimos possível
13
Comparação com estratégias
convencionais
14
Estratégia convêncional x ElasticsearchTaxadeacerto-Acurácia
Tempo de desenvolvimento
Estratégia convêncional
Elasticsearch
15
Agora é com vocês!
16
Text Mining
Classificando textos com o elasticsearch
4º Meetup do Elastic São Paulo User Group - 04/05/2016

More Related Content

Viewers also liked

Assumptions
AssumptionsAssumptions
AssumptionsVSETLVM
 
Nazim Hikmet Presentation New One
Nazim Hikmet Presentation New OneNazim Hikmet Presentation New One
Nazim Hikmet Presentation New Onemehmet kemal
 
Atelier Lean Canvas O. Lafontan
Atelier Lean Canvas O. LafontanAtelier Lean Canvas O. Lafontan
Atelier Lean Canvas O. LafontanEspritAgile
 
Apache Hadoop 1.1
Apache Hadoop 1.1Apache Hadoop 1.1
Apache Hadoop 1.1Sperasoft
 
Building search app with ElasticSearch
Building search app with ElasticSearchBuilding search app with ElasticSearch
Building search app with ElasticSearchLukas Vlcek
 
OseeGenius - Semantic search engine and discovery platform
OseeGenius - Semantic search engine and discovery platformOseeGenius - Semantic search engine and discovery platform
OseeGenius - Semantic search engine and discovery platform@CULT Srl
 
MoSQL: An Elastic Storage Engine for MySQL
MoSQL: An Elastic Storage Engine for MySQLMoSQL: An Elastic Storage Engine for MySQL
MoSQL: An Elastic Storage Engine for MySQLAlex Tomic
 
JBug_React_and_Flux_2015
JBug_React_and_Flux_2015JBug_React_and_Flux_2015
JBug_React_and_Flux_2015Lukas Vlcek
 
Elasticsearch & "PeopleSearch"
Elasticsearch & "PeopleSearch"Elasticsearch & "PeopleSearch"
Elasticsearch & "PeopleSearch"George Stathis
 
Social Miner: Webinar people marketing em 30 min
Social Miner: Webinar people marketing em 30 minSocial Miner: Webinar people marketing em 30 min
Social Miner: Webinar people marketing em 30 minSocial Miner
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide
 
Elasticsearch first-steps
Elasticsearch first-stepsElasticsearch first-steps
Elasticsearch first-stepsMatteo Moci
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to ElasticsearchSperasoft
 
Amministratori Di Sistema: Adeguamento al Garante Privacy - Log Management e ...
Amministratori Di Sistema: Adeguamento al Garante Privacy - Log Management e ...Amministratori Di Sistema: Adeguamento al Garante Privacy - Log Management e ...
Amministratori Di Sistema: Adeguamento al Garante Privacy - Log Management e ...Simone Onofri
 

Viewers also liked (17)

Assumptions
AssumptionsAssumptions
Assumptions
 
Nazim Hikmet Presentation New One
Nazim Hikmet Presentation New OneNazim Hikmet Presentation New One
Nazim Hikmet Presentation New One
 
Atelier Lean Canvas O. Lafontan
Atelier Lean Canvas O. LafontanAtelier Lean Canvas O. Lafontan
Atelier Lean Canvas O. Lafontan
 
Apache Hadoop 1.1
Apache Hadoop 1.1Apache Hadoop 1.1
Apache Hadoop 1.1
 
Building search app with ElasticSearch
Building search app with ElasticSearchBuilding search app with ElasticSearch
Building search app with ElasticSearch
 
OseeGenius - Semantic search engine and discovery platform
OseeGenius - Semantic search engine and discovery platformOseeGenius - Semantic search engine and discovery platform
OseeGenius - Semantic search engine and discovery platform
 
MoSQL: An Elastic Storage Engine for MySQL
MoSQL: An Elastic Storage Engine for MySQLMoSQL: An Elastic Storage Engine for MySQL
MoSQL: An Elastic Storage Engine for MySQL
 
JBug_React_and_Flux_2015
JBug_React_and_Flux_2015JBug_React_and_Flux_2015
JBug_React_and_Flux_2015
 
Elasticsearch & "PeopleSearch"
Elasticsearch & "PeopleSearch"Elasticsearch & "PeopleSearch"
Elasticsearch & "PeopleSearch"
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Social Miner: Webinar people marketing em 30 min
Social Miner: Webinar people marketing em 30 minSocial Miner: Webinar people marketing em 30 min
Social Miner: Webinar people marketing em 30 min
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic Search
 
Elasticsearch first-steps
Elasticsearch first-stepsElasticsearch first-steps
Elasticsearch first-steps
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
Amministratori Di Sistema: Adeguamento al Garante Privacy - Log Management e ...
Amministratori Di Sistema: Adeguamento al Garante Privacy - Log Management e ...Amministratori Di Sistema: Adeguamento al Garante Privacy - Log Management e ...
Amministratori Di Sistema: Adeguamento al Garante Privacy - Log Management e ...
 
Oak / Solr integration
Oak / Solr integrationOak / Solr integration
Oak / Solr integration
 
Elastic search
Elastic searchElastic search
Elastic search
 

Similar to Classificando textos com o elasticsearch

How to use Elasticsearch Analyzers by EmergiNet
How to use  Elasticsearch Analyzers by EmergiNetHow to use  Elasticsearch Analyzers by EmergiNet
How to use Elasticsearch Analyzers by EmergiNetEmergiNet
 
O que é Analytics?
O que é Analytics?O que é Analytics?
O que é Analytics?Bruno Michel
 
Uma introdução à mineração de informações
Uma introdução à mineração de informaçõesUma introdução à mineração de informações
Uma introdução à mineração de informaçõesFabrício Barth
 
20230804_266_ClubServicenow_Catalog.pdf
20230804_266_ClubServicenow_Catalog.pdf20230804_266_ClubServicenow_Catalog.pdf
20230804_266_ClubServicenow_Catalog.pdfTiago Macul
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearchtdc-globalcode
 
Oficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando ROficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando RFabrício Barth
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
 
01/12 Introducao Workshop Atlas.ti 8
01/12 Introducao Workshop Atlas.ti 801/12 Introducao Workshop Atlas.ti 8
01/12 Introducao Workshop Atlas.ti 8Cícera Malheiro
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesElaine Cecília Gatto
 
Case Recommender: Fazendo recomendação em Python
Case Recommender: Fazendo recomendação em PythonCase Recommender: Fazendo recomendação em Python
Case Recommender: Fazendo recomendação em PythonArthur Fortes
 
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Quais as habilidades técnicas todo PM precisa saber - Petrus Gomes | Closecare
Quais as habilidades técnicas todo PM precisa saber - Petrus Gomes | Closecare  Quais as habilidades técnicas todo PM precisa saber - Petrus Gomes | Closecare
Quais as habilidades técnicas todo PM precisa saber - Petrus Gomes | Closecare Product Camp Brasil
 
Desenvolvimento de um Sistema de Recomendação de Artigos Científicos e Avalia...
Desenvolvimento de um Sistema de Recomendação de Artigos Científicos e Avalia...Desenvolvimento de um Sistema de Recomendação de Artigos Científicos e Avalia...
Desenvolvimento de um Sistema de Recomendação de Artigos Científicos e Avalia...Christiano Avila
 

Similar to Classificando textos com o elasticsearch (20)

SAAS - Search as a Service 2017
SAAS - Search as a Service 2017SAAS - Search as a Service 2017
SAAS - Search as a Service 2017
 
How to use Elasticsearch Analyzers by EmergiNet
How to use  Elasticsearch Analyzers by EmergiNetHow to use  Elasticsearch Analyzers by EmergiNet
How to use Elasticsearch Analyzers by EmergiNet
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Meetup MUG-RS KingHost
Meetup MUG-RS KingHostMeetup MUG-RS KingHost
Meetup MUG-RS KingHost
 
O que é Analytics?
O que é Analytics?O que é Analytics?
O que é Analytics?
 
Uma introdução à mineração de informações
Uma introdução à mineração de informaçõesUma introdução à mineração de informações
Uma introdução à mineração de informações
 
20230804_266_ClubServicenow_Catalog.pdf
20230804_266_ClubServicenow_Catalog.pdf20230804_266_ClubServicenow_Catalog.pdf
20230804_266_ClubServicenow_Catalog.pdf
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
 
Painel 03 03 - lucas freire - Filtros econômicos e combate a cartéis em lic...
Painel 03   03 - lucas freire - Filtros econômicos e combate a cartéis em lic...Painel 03   03 - lucas freire - Filtros econômicos e combate a cartéis em lic...
Painel 03 03 - lucas freire - Filtros econômicos e combate a cartéis em lic...
 
Oficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando ROficina: construção de modelos descritivos e preditivos utilizando R
Oficina: construção de modelos descritivos e preditivos utilizando R
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
 
01/12 Introducao Workshop Atlas.ti 8
01/12 Introducao Workshop Atlas.ti 801/12 Introducao Workshop Atlas.ti 8
01/12 Introducao Workshop Atlas.ti 8
 
Web Data Mining com R
Web Data Mining com RWeb Data Mining com R
Web Data Mining com R
 
DataTechDay4 - Carlos Oeiras
DataTechDay4 - Carlos OeirasDataTechDay4 - Carlos Oeiras
DataTechDay4 - Carlos Oeiras
 
Classificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de CorrelaçõesClassificação Multirrótulo: Aprendizado de Correlações
Classificação Multirrótulo: Aprendizado de Correlações
 
Case Recommender: Fazendo recomendação em Python
Case Recommender: Fazendo recomendação em PythonCase Recommender: Fazendo recomendação em Python
Case Recommender: Fazendo recomendação em Python
 
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 16 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Sistemas de Recomendação
Sistemas de Recomendação Sistemas de Recomendação
Sistemas de Recomendação
 
Quais as habilidades técnicas todo PM precisa saber - Petrus Gomes | Closecare
Quais as habilidades técnicas todo PM precisa saber - Petrus Gomes | Closecare  Quais as habilidades técnicas todo PM precisa saber - Petrus Gomes | Closecare
Quais as habilidades técnicas todo PM precisa saber - Petrus Gomes | Closecare
 
Desenvolvimento de um Sistema de Recomendação de Artigos Científicos e Avalia...
Desenvolvimento de um Sistema de Recomendação de Artigos Científicos e Avalia...Desenvolvimento de um Sistema de Recomendação de Artigos Científicos e Avalia...
Desenvolvimento de um Sistema de Recomendação de Artigos Científicos e Avalia...
 

More from Jozias Rolim

A escolha de um milhão de dólares
A escolha de um milhão de dólaresA escolha de um milhão de dólares
A escolha de um milhão de dólaresJozias Rolim
 
Onde e como investir para alcançar o sucesso
Onde e como investir para alcançar o sucessoOnde e como investir para alcançar o sucesso
Onde e como investir para alcançar o sucessoJozias Rolim
 
Apresentação expotec
Apresentação expotecApresentação expotec
Apresentação expotecJozias Rolim
 
Por que preciso aprender algoritmo genético?
Por que preciso aprender algoritmo genético?Por que preciso aprender algoritmo genético?
Por que preciso aprender algoritmo genético?Jozias Rolim
 
[Case Machine Learning- iColabora]Text mining - Classificando textos com Elas...
[Case Machine Learning- iColabora]Text mining - Classificando textos com Elas...[Case Machine Learning- iColabora]Text mining - Classificando textos com Elas...
[Case Machine Learning- iColabora]Text mining - Classificando textos com Elas...Jozias Rolim
 

More from Jozias Rolim (6)

Renda presumida
Renda presumidaRenda presumida
Renda presumida
 
A escolha de um milhão de dólares
A escolha de um milhão de dólaresA escolha de um milhão de dólares
A escolha de um milhão de dólares
 
Onde e como investir para alcançar o sucesso
Onde e como investir para alcançar o sucessoOnde e como investir para alcançar o sucesso
Onde e como investir para alcançar o sucesso
 
Apresentação expotec
Apresentação expotecApresentação expotec
Apresentação expotec
 
Por que preciso aprender algoritmo genético?
Por que preciso aprender algoritmo genético?Por que preciso aprender algoritmo genético?
Por que preciso aprender algoritmo genético?
 
[Case Machine Learning- iColabora]Text mining - Classificando textos com Elas...
[Case Machine Learning- iColabora]Text mining - Classificando textos com Elas...[Case Machine Learning- iColabora]Text mining - Classificando textos com Elas...
[Case Machine Learning- iColabora]Text mining - Classificando textos com Elas...
 

Classificando textos com o elasticsearch

  • 1. Text Mining Classificando textos com o Elastic Search 4º Meetup do Elastic São Paulo User Group - 04/05/2016
  • 2. Jozias Rolim jozias.rolim@icolabora.com.br Analista desenvolvedor sênior - iColabora Mestrando em Sistemas de Informação - PPgSi - EACH|USP Membro mais bonito do Elastic São Paulo User Group
  • 3. Sumário O problema Estrategia convencional Aplicando o Elastic Search como estratégia para solução do problema Comparação com estratégias convencionais Dificuldades e possíveis soluções 3
  • 5. Classificar automaticamente reclamações da Anatel Clientes realizam reclamações sobre os seus serviços na Anatel O operador classifica a reclamação As reclamações devem ser classificadas para que possam ser encaminhadas para os setores responsáveis da empresa. Classificação está relacionada com indicadores de qualidade - Anatel A árvore de reclamação é imensa O operador classifica de forma equivocada Classificar demanda tempo - Aumento da produtividade do operador 5
  • 7. 7
  • 8. Aplicando o Elastic Search como estratégia para solução do problema 8
  • 9. Definindo analyzer "analyzer": { "analyzer_classificador": { "type": "custom", "tokenizer": "lowercase", "filter": [ "token_type", "custom_stop_words", "asciifolding", "brazilian_stop", "stem_minimal_pt", ], "char_filter": [ "html_strip" ] } }, "filter": { "index_filter": { "type": "common_grams", "common_words": "_brazilian_" }, "search_filter": { "type": "common_grams", "common_words": "_brazilian_", "query_mode": true }, "stem_minimal_pt": { "type": "stemmer", "language": "brazilian" }, "brazilian_stop": { "type": "stop", "stopwords": "_brazilian_" }, "custom_stop_words": { "type": "stop", "stopwords": [...] }, "token_type": { "type": "word_delimiter", "catenate_words": true, "catenate_all": true, "split_on_case_change": true, "split_on_numerics": true } } } 9
  • 10. Mapeando uso do analyzer no indice, _mapping { "indice": { "properties": { "campo_texto": { "type": "string", "fields": { "raw": { "type": "string", "index": "not_analyzed" }, "classificacao": { "type": "string", "index_options": "freqs", "analyzer": "classificacao_email" } } } , "classe": { "type": "string", "index": "not_analyzed" } } } } 10
  • 11. Realizando a consulta dos textos mais similares _search?analyzer=analyzer_classificador { "query": { "common" :{ "campo_texto.classificacao":{ "query": "Texto de reclamação informado", "cutoff_frequency": 0.001 } } }, "size": 1, “ A consulta retorna apenas o documento mais similar, melhores resultados podem ser obtidos, retornando mais documentos e comparando as classes deles.” 11
  • 12. Dificuldades e possíveis soluções 12
  • 13. Dificuldades e possíveis soluções Base de dados com classificações erradas - Filtrar os dados que possuem classificação errada para a base Neologismo - Utilizar synonyms Palavras com escrita errada - Ignorar palavras não presentes no dicionário Palavras abreviadas - Ignorar ou utilizar synonyms Quantidade de sinônimos elevada - Mapear a maior quantidade de sinônimos possível 13
  • 15. Estratégia convêncional x ElasticsearchTaxadeacerto-Acurácia Tempo de desenvolvimento Estratégia convêncional Elasticsearch 15
  • 16. Agora é com vocês! 16
  • 17. Text Mining Classificando textos com o elasticsearch 4º Meetup do Elastic São Paulo User Group - 04/05/2016