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:
- Codelab: Treinar um modelo de detecção de spam de comentários com o TensorFlow Lite Model Maker
- Codelab: Criar um app do Flutter para detectar spam de comentários
O que você vai aprender
- Como atualizar o modelo de classificação de texto que você criou no codelab Treinar um modelo de detecção de spam de comentários com o TensorFlow Lite Model Maker.
- Como personalizar seu modelo para bloquear o spam mais comum no app.
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
- Você pode receber o código clonando este repositório e carregando o app na pasta
tfserving-flutter/codelab2/finished
. - 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.
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.
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:
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:
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
- 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çãoPATH/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
- Abra o arquivo
lib/main.dart
com seu editor de código favorito e localize a parte que define as variáveisinputTensorName
eoutTensorName
:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- Reatribua a variável
inputTensorName
com um valor "input_1'
" e a variáveloutputTensorName
com um valor'dense_1'
:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- Copie o arquivo
vocab.txt
que você salvou na pastalib/assets/
para substituir o atual. - Remova manualmente o app Flutter "Classificação de texto" do Android Emulator.
- Execute o comando
'flutter run'
no seu terminal para iniciar o aplicativo. - 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.