Crie um modelo de classificação de texto personalizado e atualize seus apps com ele

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 de spam do blog, mas aprimorado com seus próprios comentários, para que você possa ter um modelo que funcione com seus dados.

Pré-requisitos

Este codelab faz parte do programa de aprendizagem "Introdução à classificação de textos em dispositivos móveis". Os codelabs deste programa são sequenciais. O app e o modelo em que você vai trabalhar já devem ter sido criados enquanto você estava acompanhando o primeiro Programa de treinamentos. Se você ainda não concluiu as atividades anteriores, pare e faça agora:

  • Criar um app básico de mensagens
  • Criar um modelo de machine learning de spam de comentários
  • Atualizar seu app para usar um modelo de machine learning com filtragem de spam

O que você vai aprender

  • Como atualizar o modelo de classificação de texto que você criou no programa de aprendizagem para dispositivos móveis
  • Como personalizar o modelo para bloquear o spam mais comum no app

O que é necessário

  • O app de mensagens e o modelo de filtragem de spam que você observou e criou nas atividades anteriores.

2. Melhorar a classificação de texto

Para acessar o código, clone este repositório e carregue o app em TextClassificationStep2. É possível encontrar isso no caminho TextClassificationOnMobile->Android.

O código concluído também está disponível para você como TextClassificationStep3.

Se você abrir o app de mensagens que criou e enviar esta mensagem, ela vai apresentar uma pontuação de spam muito baixa:

f111e21903d6fd1f.png

Erros ortográficos como esse são uma forma comum de evitar filtros de spam. E embora a mensagem seja inofensiva, os criadores de spam muitas vezes adicionam um link no ID do usuário (em vez da mensagem em si, onde ter um link pode acionar os filtros).

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

c96613a0a4d1fef0.png

3. Editar seu arquivo CSV

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

A composição do CSV é 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. Nesse caso, a linha três é considerada spam.

Para adicionar seus próprios comentários, por exemplo, se muitas pessoas enviarem spam ao seu site com mensagens sobre negociação on-line, basta adicionar exemplos de comentários de spam 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 você poderá usá-lo 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 sobre negociação on-line. Você pode 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 o modelo novamente, 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á iniciá-lo diretamente aqui. Caso contrário, acesse o código no repositório e execute-o no ambiente de notebook que preferir.

Confira 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)

Durante o treinamento, você vai perceber que o modelo ainda será treinado com um alto nível de acurácia:

8886033d1f8161c.png

Acesse o notebook para fazer o download dos arquivos de modelo, vocabulário e rótulos. Na próxima etapa, você fará a integração deles ao Android.

5. Atualizar seu app Android

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

91116524e9016ed4.png

  1. Clique com o botão direito do mouse na pasta de recursos.
  2. No menu, selecione a opção para abrir a pasta com o gerenciador de arquivos do seu sistema operacional. (Revelar no Finder do Mac, conforme mostrado. Ela será Mostrar no Explorer no Windows e Abrir no Arquivos ou semelhante no Linux.

25f63f9629657e85.png

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

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

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

6. Atualize seu app iOS

Para acessar o código, clone este repositório e carregue o app em TextClassificationStep2. É possível encontrar isso no caminho TextClassificationOnMobile->Android.

O código concluído também está disponível para você como TextClassificationStep3.

Se você concluiu o codelab anterior, tem uma versão para iOS do TextClassificationStep2 que funciona com o modelo base. Se você quiser começar com nossa versão atual, basta selecioná-la no repositório. Ela 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 app para usar o novo modelo é muito simples. A maneira mais fácil é acessar o explorador de arquivos, fazer o download das novas versões do 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 retreinar o modelo com novos dados e adicioná-lo aos apps Android e iOS, você conseguiu atualizar as funcionalidades sem escrever códigos novos.

Próximas etapas

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

Ao explorar o processamento de linguagem natural, talvez você queira 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 novamente um modelo automaticamente em um back-end e implantá-lo usando o Firebase Model Hosting.

Seus usuários recebem um modelo atualizado sem que você precise copiar e colar como um recurso, recompilar e redistribuir. Você também pode, por exemplo, usar a Configuração remota do Firebase para gerenciar o valor do limite para envio de spam, em vez do 0,8 que você tem agora.

Há muitas possibilidades, e vamos aprender sobre elas nos próximos codelabs deste curso.