Date post: | 13-Apr-2017 |
Category: |
Data & Analytics |
Upload: | jozias-rolim |
View: | 216 times |
Download: | 0 times |
Text MiningClassificando textos com o Elastic Search
4º Meetup do Elastic São Paulo User Group - 04/05/2016
Jozias [email protected]
Analista desenvolvedor sênior - iColaboraMestrando 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
Críticas, discussões, contribuições e dúvidas
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
Quanto maior tempo gasto, maior custo
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 ElasticsearchTa
xa d
e ac
erto
- A
curá
cia
Tempo de desenvolvimento
Estratégia convêncional
Elasticsearch
15
Agora é com vocês!
16
Text MiningClassificando textos com o elasticsearch
4º Meetup do Elastic São Paulo User Group - 04/05/2016