Importaçao de Libs

Para essa atividade importamos as libs necessárias para o treinamento do modelo, o objetivo e usar a lib transformes

Importando os dados

Nessa etapa os dados já foram processados para o formato que a biblioteca aceita para o processo de treinamento e validação.

Tokenização

Um tokenizer está encarregado de preparar as entradas para um modelo. Portanto, nessa etapa o objetivo é transformar o pedido e reposta em vetores de embeddings, para esse processo se faz necessário um modelo treinado em uma base com domínio em português para que todas as palavras presentes na nossa base consiga se adaptar ao processo, desse modo, para essa etapa usamos o modelo pierreguillou/bert-base-cased-squad-v1.1-portuguese disponibilizado gratuitamente na plataforma Hugginface.

Importando as metrica de avaliaçao

Nessa etapa iremos utilizar a métrica Acurácia como refecia para avaliar nosso modelo, lembrando que:

No nosso contexto, dado que a variável de interesse é o atendimento do pedido, temos:

Falso Positivo (FP): O modelo previu que o pedido foi atendido, entretanto, não foi.

Falso Negativo (FN): O modelo previu que o pedido não foi atendido, entretanto, ele foi.

Verdadeiro Negativo (VN): O modelo previu que o pedido não foi atendido, e de fato ele não foi.

Verdadeiro Positivo (VP): O modelo previu que o pedido foi atendido, e de fato ele foi.

  1. Acurácia

    VP + VN / (VP + FP + VN + FN)

Treinamento do Modelo

Iremos utilizar um modelo de arquitetura BERT para a classificação das 3 classes, para entender melhor:

BERT (Bidirectional Encoder Representations from Transformers) é um artigo recente publicado por pesquisadores do Google AI Language. Isso causou um rebuliço na comunidade de aprendizado de máquina ao apresentar resultados de última geração em uma ampla variedade de tarefas de NLP, incluindo resposta a perguntas (SQuAD v1.1), inferência de linguagem natural (MNLI) e outras. A principal inovação técnica do BERT é a aplicação do treinamento bidirecional do Transformer, um modelo de atenção popular, à modelagem de linguagem. Isso está em contraste com os esforços anteriores que olhavam para uma sequência de texto da esquerda para a direita ou treinamento combinado da esquerda para a direita e da direita para a esquerda. Os resultados do artigo mostram que um modelo de linguagem que é treinado bidirecionalmente pode ter um senso mais profundo de contexto e fluxo de linguagem do que modelos de linguagem de direção única. No artigo, os pesquisadores detalham uma nova técnica chamada Masked LM (MLM) que permite o treinamento bidirecional em modelos nos quais era impossível anteriormente

Para realizar o treinamento em cima desse modelo realizamos o processo de adaptação ao nosso problema de classificação das três classes e usando como entrada o pedido e resposta ao pedido para que desse modo o modelo gerado conseguisse classificar entre Não Atendido, Parcialmente Atendido e Atendido, para isso realizamos o processo de Transfer Learning.

O Transfer Learning é uma técnica em que um modelo de aprendizado profundo treinado em um grande conjunto de dados é usado para realizar tarefas semelhantes em outro conjunto de dados. Chamamos esse modelo de aprendizado profundo de modelo pré-treinado. Os exemplos mais renomados de modelos pré-treinados são os modelos de aprendizado profundo de visão computacional treinados no conjunto de dados ImageNet . Portanto, é melhor usar um modelo pré-treinado como ponto de partida para resolver um problema, em vez de construir um modelo do zero. Desse modo, para o nosso problema é melhor reutilizar um modelo com amplo domínio da língua portuguesa e consequentemente ajuda no processo de entediamento geral das sentenças.

Avaliaçao dos Resultados

Vamos avaliar como está o comportamento do nosso modelo, em relação á métrica de acurácia e também a como o modelo está se comportando em relação a cada uma das classes de classificação, analisar o processo de distribuição de predição entre as classes para podermos considerar a real utilidade do modelo.

Nosso modelo obteve uma Acurácia de 84.62%, para o nosso problema envolvendo as 3 classes e considerando o desbalanceamento entre elas conseguimos bons resultados para esse modelo.

Observamos que modelo se comportou muito bem para a classe de Não Atendido acetando 90% dos casos, acompanhado de Atendido em que ele acertou 82% dos casos e depôs acertando 65% dos exemplos da classe de Parcialmente, considerando os problemas envolvendo os Parcialmente e sua baixa quantidade de exemplo na base o nosso modelo teve um ótimo desempenho.

Updade do modelo

Considerando o processo que o nosso modelo foi ótimo, iremos subir essa versão 1.1 para o repositório tbrasil da ong transparência Brasil para que posa ser utilizado, nessa etapa usamos a plataforma Hugginface para auxiliar.