Criar um modelo de classificação de texto personalizado com o TensorFlow Lite Model Maker

1. Antes de começar

Neste codelab, você vai aprender a atualizar o modelo de classificação de texto criado com base no conjunto de dados original de comentários-blog-spams, mas aprimorado com seus próprios comentários para ter um modelo compatível com os dados.

Pré-requisitos

Este codelab faz parte do programa de aprendizagem Introdução à classificação de texto em apps do Flutter. Os codelabs deste programa são sequenciais. O app e o modelo em que você vai trabalhar precisam ter sido criados durante os codelabs. Se você ainda não concluiu as atividades anteriores, faça isso agora:

O que você vai aprender

Pré-requisitos

  • O app do Flutter e o modelo de filtro de spam que você observou e criou nas atividades anteriores.

2. Melhorar a classificação de texto

  1. Você pode receber o código clonando este repositório e carregando o app na pasta tfserving-flutter/codelab2/finished.
  2. Depois de iniciar a imagem do Docker do TensorFlow Serving no aplicativo que você criou, insira buy my book to learn online trading e clique em gRPC > Classify.

8f1e1974522f274d.png

O app gera uma pontuação de spam baixa porque não há muitas ocorrências de negociação on-line no conjunto de dados original e o modelo não aprendeu que é spam. Neste codelab, você vai atualizar o modelo com novos dados para que ele identifique a mesma frase como spam.

2bd68691a26aa3da.png

3. Editar seu arquivo CSV

Para treinar o modelo original, um conjunto de dados foi criado como um CSV (lmblog_comments.csv) contendo quase mil comentários marcados como spam ou não. Abra o CSV em qualquer editor de texto se quiser inspecioná-lo.

A composição do arquivo CSV deve fazer com que a primeira linha descreva as colunas com os rótulos commenttext e spam. Cada linha subsequente segue este formato:

62025273971c9a7f.png

O rótulo à direita recebe um valor true para spam e um valor false para não spam. Por exemplo, a terceira linha é considerada spam.

Se as pessoas enviarem spam para seu site com mensagens sobre negociações on-line, você poderá adicionar exemplos de comentários de spam na parte inferior dele. Exemplo:

online trading can be highly highly effective,true
online trading can be highly effective,true
online trading now,true
online trading here,true
online trading for the win,true
  • Salve o arquivo com um novo nome, como lmblog_comments.csv, e use-o para treinar um novo modelo.

No restante deste codelab, você vai utilizar o exemplo indicado, editado e hospedado no Cloud Storage com as atualizações sobre negociação on-line. Se você quiser aplicar seu próprio conjunto de dados, basta mudar o URL no código.

4. Treinar novamente o modelo com os novos dados

Para treinar novamente o modelo, reutilize o código de (SpamCommentsModelMaker.ipynb), mas aponte-o para o novo conjunto de dados CSV, chamado lmblog_comments_extras.csv. Se você quiser aplicar o notebook completo com o conteúdo atualizado, use a opção SpamCommentsUpdateModelMaker.ipynb..

Se você tiver acesso ao Colaboratory, poderá iniciá-lo diretamente. Caso contrário, consiga o código do repositório e o execute no ambiente de notebook da sua preferência.

O código atualizado tem esta aparência:

training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',
          origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
                  lmblog_comments_extras.csv',
          extract=False)

Durante o teste, você vai ver que o modelo ainda treina com um alto nível de acurácia:

96a1547ddb6edf5b.png

Compacte toda a pasta /mm_update_spam_savedmodel e o arquivo mm_update_spam_savedmodel.zip gerado.

# Rename the SavedModel subfolder to a version number
!mv /mm_update_spam_savedmodel/saved_model /mm_update_spam_savedmodel/123
!zip -r mm_update_spam_savedmodel.zip /mm_update_spam_savedmodel/

5. Iniciar o Docker e atualizar o app Flutter

  1. Descompacte o arquivo mm_update_spam_savedmodel.zip salvo em uma pasta, interrompa a instância do contêiner do Docker no codelab anterior e inicie-a novamente. Em seguida, substitua o marcador de posição PATH/TO/UPDATE/SAVEDMODEL pelo caminho absoluto da pasta que hospeda seus arquivos baixados:
docker run -it --rm -p 8500:8500 -p 8501:8501 -v "PATH/TO/UPDATE/SAVEDMODEL:/models/spam-detection" -e MODEL_NAME=spam-detection tensorflow/serving
  1. Abra o arquivo lib/main.dart com seu editor de código favorito e localize a parte que define as variáveis inputTensorName e outTensorName:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
  1. Reatribua a variável inputTensorName com um valor "input_1'" e a variável outputTensorName com um valor 'dense_1':
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
  1. Copie o arquivo vocab.txt que você salvou na pasta lib/assets/ para substituir o atual.
  2. Remova manualmente o app Flutter "Classificação de texto" do Android Emulator.
  3. Execute o comando 'flutter run' no seu terminal para iniciar o aplicativo.
  4. No app, digite buy my book to learn online trading e clique em gRPC > Classify.

Agora, o modelo consegue detectar comprar meu livro de negociação on-line como spam.

6. Parabéns

Você treinou o modelo com novos dados, integrou-o ao app Flutter e atualizou a funcionalidade para detectar novas frases de spam.

Saiba mais