[Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

17
Text Mining Classificando textos com o Elastic Search 4º Meetup do Elastic São Paulo User Group - 04/05/2016

Transcript of [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

Page 1: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

Text MiningClassificando textos com o Elastic Search

4º Meetup do Elastic São Paulo User Group - 04/05/2016

Page 2: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

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

Page 3: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

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

Page 4: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

O Problema

4

Page 5: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

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

Page 6: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

Estrategia convencional

6

Page 7: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

7

Page 8: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

Aplicando o Elastic Search como estratégia para solução do problema

8

Page 9: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

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

Page 10: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

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

Page 11: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

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

Page 12: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

Dificuldades e possíveis soluções

12

Page 13: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

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

Page 14: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

Comparação com estratégias convencionais

14

Page 15: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

Estratégia convêncional x ElasticsearchTa

xa d

e ac

erto

- A

curá

cia

Tempo de desenvolvimento

Estratégia convêncional

Elasticsearch

15

Page 16: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

Agora é com vocês!

16

Page 17: [Case Machine Learning- iColabora]Text mining - Classificando textos com Elastic Search

Text MiningClassificando textos com o elasticsearch

4º Meetup do Elastic São Paulo User Group - 04/05/2016