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

[Case machine learning- iColabora]Text Mining - classificando textos com Elastic Search

  • 1.
    Text Mining Classificando textoscom o Elastic Search 4º Meetup do Elastic São Paulo User Group - 04/05/2016
  • 2.
    Jozias Rolim jozias.rolim@icolabora.com.br Analista desenvolvedorsê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 Aplicandoo Elastic Search como estratégia para solução do problema Comparação com estratégias convencionais Dificuldades e possíveis soluções 3
  • 4.
  • 5.
    Classificar automaticamente reclamaçõesda 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
  • 6.
  • 7.
  • 8.
    Aplicando o ElasticSearch 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 doanalyzer 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 consultados 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.
  • 13.
    Dificuldades e possíveissoluçõ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
  • 14.
  • 15.
    Estratégia convêncional xElasticsearchTaxadeacerto-Acurácia Tempo de desenvolvimento Estratégia convêncional Elasticsearch 15
  • 16.
    Agora é comvocês! 16
  • 17.
    Text Mining Classificando textoscom o elasticsearch 4º Meetup do Elastic São Paulo User Group - 04/05/2016