Criar um modelo de classificação de texto personalizado e atualizar seus apps com ele

1. Antes de começar

Neste codelab, você aprenderá a atualizar o modelo de classificação de texto, criado com base no conjunto de dados original de comentários em spam, mas aprimorado com comentários próprios. Assim, você poderá ter um modelo compatível com seus dados.

Prerequisites

Este codelab faz parte do programa de primeiros passos da classificação de texto para dispositivos móveis. Os codelabs deste programa são sequenciais. O app e o modelo com que você vai trabalhar foram criados anteriormente, junto com o primeiro caminho. Se você ainda não concluiu as atividades anteriores, pare e faça isso agora:

  • Criar um app de estilo de mensagem básico
  • Criar um modelo de aprendizado de máquina para spam de comentários
  • Atualizar seu app para usar um modelo de machine learning de filtragem de spam

O que você aprenderá

  • Como atualizar o modelo de classificação de texto que você criou no programa de caminho de classificação de texto para dispositivos móveis
  • Como personalizar seu modelo para bloquear os spams mais comuns no app

Pré-requisitos

  • O app de mensagens e o modelo de filtragem de spam observados e criados nas atividades anteriores.

2. Melhorar a classificação de texto

Você pode obter o código para isso clonando este repositório e carregando o aplicativo de TextClassificationStep2. Você pode encontrá-lo no caminho TextClassificationOnMobile->Android.

O código finished também está disponível para TextClassificationStep3.

Se você abrir o app de mensagens que criou e tentou usar essa mensagem, ele exibirá uma pontuação de spam muito baixa:

f111e21903d6fd1f.png

Erros ortográficos desse tipo são uma maneira comum de evitar filtros de spam. Além disso, embora a mensagem seja inofensiva, os criadores de spam geralmente adicionam um link no ID do usuário (em vez da própria mensagem, onde um link pode acionar os filtros).

Neste laboratório, você verá como atualizar o modelo com novos dados. Quando terminar, você verá o resultado abaixo com a mesma frase, em que esta mensagem é identificada como spam.

c96613a0a4d1fef0.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 spam. Abra o CSV em qualquer editor de texto se quiser inspecioná-lo.

A composição do CSV é fazer com que a primeira linha descreva as colunas. Aqui, elas são rotuladas como commenttext e spam.

Cada linha subsequente segue este formato:

64c0128548e1d082.png

O rótulo à direita é verdadeiro para spam e falso para não spam. Neste caso, a linha 3 é considerada spam.

Para adicionar seus próprios comentários, por exemplo, se houver muitas pessoas enviando spam sobre seu site usando mensagens on-line, você só precisará adicionar exemplos de comentários na parte inferior do site. 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

Quando terminar, salve o arquivo com um novo nome (por exemplo, lmblog_comments.csv) e use-o para treinar um novo modelo.

No restante deste codelab, você usará o exemplo fornecido, editado e hospedado no Google Cloud Storage com as atualizações de negociação on-line. É possível alterar o URL no código se quiser usar seu próprio conjunto de dados.

4. Treinar novamente o modelo com os novos dados

Para treinar novamente o modelo, reutilize o código anterior (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 Google Colab, poderá abri-lo diretamente neste link. Caso contrário, consiga o código do repositório e execute-o no ambiente de notebook que você preferir.

Veja o código atualizado:

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)

Ao treinar, você verá que o modelo ainda será treinado com um alto nível de precisão:

8886033d1f8161c.png

Acesse o notebook para fazer o download dos arquivos model, vocab e labels. Na próxima etapa, você vai integrá-las ao Android.

5. Atualizar seu app Android

  1. Abra o app no Android Studio e verifique se a opção Android está selecionada na parte superior do explorador de projetos.
  2. Encontre seu arquivo assets que contém os rótulos, o modelo e o vocabulário da versão antiga do arquivo do modelo.

91116524e9016ed4.png

  1. Clique com o botão direito na pasta de recursos.
  2. No menu, selecione a opção para abrir a pasta com o gerenciador de arquivos do seu sistema operacional. Revelação no Finder no Mac, conforme mostrado. Ele será Mostrar no Explorador no Windows e Abrir no Files ou de maneira semelhante no Linux.

25f63f9629657e85.png

  1. Isso abre o diretório que contém o modelo, o vocabulário e os marcadores no gerenciador de arquivos do seu sistema operacional. Copie os novos que você criou na etapa anterior sobre eles.

Não é necessário fazer alterações no código do seu app. Execute-o e faça um teste. Você verá resultados como os mostrados acima, em que o modelo melhorou para detectar o cenário de texto "negociação on-line".

Uma versão concluída do código está disponível no repositório como TextClassificationStep3.

6. Atualizar seu app iOS

Você pode obter o código para isso clonando este repositório e carregando o aplicativo de TextClassificationStep2. Você pode encontrá-lo no caminho TextClassificationOnMobile->Android.

O código finished também está disponível para TextClassificationStep3.

Se você seguiu o codelab anterior, terá uma versão do iOS do TextClassificationStep2 que funciona com o modelo base. Se quiser começar com nossa versão existente, basta pegar essa do repositório. Ele funcionará com o primeiro modelo treinado com os dados de spam de comentários, e você poderá ver resultados como estes:

553b845565b5b822.png

Atualizar o aplicativo para usar seu novo modelo é muito simples. A maneira mais fácil é acessar o Explorador de arquivos, instalar as novas versões de model.tflite, vocab e labels.txt e copiá-las para o diretório do projeto.

Depois de fazer isso, seu aplicativo funcionará com o novo modelo e você poderá testá-lo. Veja um exemplo da mesma frase, mas usando o novo modelo:

9031ec260b1857a3.png

7. Parabéns

Pronto! Ao treinar o modelo novamente com novos dados e adicioná-lo aos seus apps Android e iOS, você conseguiu atualizar a funcionalidade deles sem escrever códigos novos.

Próximas etapas

Este modelo é apenas um brinquedo, treinado com apenas 1.000 itens de dados.

Ao trabalhar com o processamento de linguagem natural, é recomendável trabalhar com conjuntos de dados maiores. Também é possível configurar um pipeline de treinamento contínuo. Assim, quando novos dados chegam e são sinalizados como spam, eles podem treinar automaticamente um modelo em um back-end e implantá-lo usando a Hospedagem de modelos do Firebase.

Seus usuários recebem um modelo atualizado sem precisar copiar e colar esse modelo como um recurso, fazer a recompilação e a redistribuição. Também é possível, por exemplo, usar o Configuração remota do Firebase para gerenciar o valor limite do envio de spam em vez do 0, 8 que você tem agora.

Existem muitas possibilidades, e elas serão abordadas em codelabs futuros deste curso.