Mahout. Machine Learning - QConSP · 2016. 8. 26. · Exemplo de um recorte de convocação:...

Post on 29-Sep-2020

2 views 0 download

Transcript of Mahout. Machine Learning - QConSP · 2016. 8. 26. · Exemplo de um recorte de convocação:...

Machine Learning

Classificação de documentos com Apache Mahout.

● Contexto

● Objetivo

● Solução

● Resultados

● Prática

Agenda

Contexto

Uma assessoria jurídica separa, classifica e encaminha convocações judiciais

aos advogados associados. Seu processo de trabalho, inclui:

● 200+ diários oficiais publicados entre 06h e 11h.

● Recortar as convocações.

● Classificação manual (cerca de 80% - 14M / mês).

Contexto

Exemplo de um recorte de convocação:

“Fulano Beltrano dos Santos OAB: 119354/SP-A" T.R.T. 00027626820125020072

RO 72ª VT de São Paulo. EDITAL Nº 0006506/2015 - PAUTA DE JULGAMENTO.

Ciclano de Souza Silva X Claro S/A , Xpto Teleservicos S.A.”

Contexto

Exemplo de um recorte de convocação:

“Fulano B Santos OAB: 119354/SP-A" T.R.T. 00027626820125020072 RO 72ª VT

de São Paulo. EDITAL Nº 0006506/2015 - PAUTA DE JULGAMENTO. Ciclano de

Souza Silva X Claro S/A , Xpto Teleservicos S.A.”

Contexto

Exemplo de um recorte de convocação:

“Fulano B Santos T.R.T. 00027626820125020072 RO 72ª VT de São Paulo. EDITAL

Nº 0006506/2015 - PAUTA DE JULGAMENTO. Ciclano de Souza Silva OAB:

119354/SP-A" X Claro S/A , Xpto Teleservicos S.A.”

Contexto

Os principais objetivos deste processo são:

● Minimizar spam (?%) e classificação crítica (< 1%).

● Diferencial de mercado.

Contexto

O volume de trabalho diário dificulta a evolução do processo:

● “Afoga” o departamento de TI e os analistas.

● Muitos “incêndios”, sobra pouco tempo para atividades gerenciais.

Contexto

Objetivo

Melhorar a classificação automatica (~20%) para “desafogar” a TI, os analistas

e a gestão. Premissas, riscos e desafios devem ser considerados:

● [P]: Criar um classificador que complemente o que já existe.

● [R]: Spam e classificação crítica (diferencial de mercado).

● [D]: Ser eficiente sem comprometer o tempo disponível da classificação

automática.

Objetivo

Objetivo

Classificação Aut. Complementar

Inteligência Artificial

Download dosDiários Oficiais

Classificação Aut.Existente

ClassificaçãoManual

Solução

Desenvolver um classificador baseado em inteligência artificial, visto que

regras conhecidas (determinísticas ~20%) já são tratadas. Inicialmente

pensamos em:

● Classificação direta (aprendizado supervisionado).

http://www.infoq.com/br/presentations/machine-learning-em-java-com-apache-mahout

Solução

Experimentos mostraram que os documentos (convocações judiciais) tinham

baixa ocorrência de:

● Palavras específicas de contexto.

● Sequência estruturada (bigramas e trigramas).

● E ai... Desastre!

● Então...

Solução

#fiqueiputo

Suspeita?

Solução

Encontrar uma redução que maximize as diferenças entre os dados, para isso

tentamos:

● Redução de PCA [:(

● Quebrar as convocações em sentenças (separação mais estruturada), para

facilitar a classificação de termos e grupos de substantivos / grupos

verbais. Ex:

Solução

FULANO CICLANO DA SILVA São Paulo 44ª Vara do Trabalho 00006175520145020044

(00617201404402002). BELTRANO DA SILVA, Empresa Brasileira de Cosmeticos LTDA Intimação.

Comparecer na secretaria em 5 dias a fim de retirar alvara.

Sentenças:

1. FULANO CICLANO DA SILVA São Paulo 44ª Vara do Trabalho 00006175520145020044

(00617201404402002).

2. BELTRANO DA SILVA, Empresa Brasileira de Cosmeticos LTDA Intimação.

3. Comparecer na secretaria em 5 dias a fim de retirar alvara.

Solução

FULANO CICLANO DA SILVA São Paulo 44ª Vara do Trabalho 00006175520145020044

(00617201404402002). BELTRANO DA SILVA, Empresa Brasileira de Cosmeticos LTDA Intimação.

Comparecer na secretaria em 5 dias a fim de retirar alvara.

Sentenças:

1. FULANO CICLANO DA SILVA São Paulo 44ª Vara do Trabalho 00006175520145020044

(00617201404402002).

2. BELTRANO DA SILVA, Empresa Brasileira de Cosmeticos LTDA Intimação.

3. Comparecer na secretaria em 5 dias a fim de retirar alvara.

Solução

FULANO CICLANO DA SILVA São Paulo 44ª Vara do Trabalho 00006175520145020044

(00617201404402002). BELTRANO DA SILVA, Empresa Brasileira de Cosmeticos LTDA Intimação.

Comparecer na secretaria em 5 dias a fim de retirar alvara.

Sentenças:

1. FULANO CICLANO DA SILVA São Paulo 44ª Vara do Trabalho 00006175520145020044

(00617201404402002).

2. BELTRANO DA SILVA, Empresa Brasileira de Cosmeticos LTDA Intimação.

3. Comparecer na secretaria em 5 dias a fim de retirar alvara.

Solução

Pré-processar os textos, permitiu caracterizar convocações interessantes e

convocações a serem descartadas. Isso envolveu:

● Detectção de sentenças.

● Classificação de termos.

● Chunking (dividir texto em palavras sintaticamente correlacionadas, tais

como: grupos de substantivos e grupos verbais).

Solução

Preparação das amostras:

● Apache Open NLP○ Separação de sentenças

○ Classificação de termos

○ Chunking

● Scripts próprios○ Disparo e coleta do processamento.

Solução

Classificação de intimações:

● Apache Mahout○ Sequencialização das amostras

○ Vetorização dos dados de treino e teste (bag of words)

○ Treinamento

○ Classificação

● Scripts próprios○ Disparo das rotinas de processamento.

Solução

Resultados

APROVADOS DESCARTADOS ACERTOS

APROVADOS 64.934 667 98.98%

DESCARTADOS 40.300 192.388 82.68%

DESCARTES ERRADOS 0.22%

APROVAÇÕES ERRADAS 13.51%

● Os resultados se mostraram estáveis (pouca variação) em produção

(medição em paralelo com processo existente).

● Analisar manualmente as aprovações resulta em 64.7% menos trabalho.○ Minimizar o número de spam

○ Risco: Assume 0.22% de notificações não recebidas.

● Analisar manualmente as reprovações resulta em 35.3% menos trabalho.○ Minimizar o número de notificações não recebidas.

○ Assume que 13.51% dos associados receberão spam.

Resultados

Prática

● Bag of words○ Sequencialização

○ Vetorização

● Treinamento

● Teste

Prática

Porquê Naive Bayes?

Prática

Porquê treinar o modelo via linha de comando?

● Facilidade e agilidade de manutenção.

● Tratar o treinamento como parte da infraestrutura○ Subir máquina em núvem

○ Carregar imagem Docker

○ Executar script

○ Descarregar modelo treinado

○ Encerrar máquina

Prática

Classificação de novos dados:

...

model = NaiveBayesModel.load("/root/files/model")

label = model.predict(“newFilePath”)

...

Prática

Obrigado