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-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 treinamentos Introdução à classificação de texto para dispositivos móveis. Os codelabs deste programa de treinamentos são sequenciais. O app e o modelo em que você vai trabalhar precisam ter sido criados durante o primeiro programa de aprendizagem. Se você ainda não concluiu as atividades anteriores, pare e faça isso agora:

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

O que você vai aprender

  • Como atualizar o modelo de classificação de texto criado no programa de treinamentos Introdução à classificação de texto 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

Você pode acessar o código clonando este repositório e carregando o app em TextClassificationStep2. Ele está no caminho TextClassificationOnMobile->Android.

O código finalizado também está disponível como TextClassificationStep3.

Se você abrir o app de mensagens criado e tentar enviar essa mensagem, a pontuação de spam será muito baixa:

f111e21903d6fd1f.png

Erros de ortografia como esse são uma maneira comum de evitar filtros de spam. Embora a mensagem seja inofensiva, os spammers costumam adicionar um link no ID do usuário (em vez da mensagem em si, em que ter um link pode acionar os filtros).

Neste laboratório, você vai aprender a atualizar o modelo com novos dados. Quando terminar, executar a mesma frase vai gerar o resultado abaixo, em que essa 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 é ter a primeira linha descrevendo as colunas. Aqui, elas são marcadas 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 3 é considerada spam.

Para adicionar seus próprios comentários, por exemplo, se muitas pessoas enviarem spam para seu site com mensagens sobre negociações on-line, basta adicionar exemplos de comentários de spam na parte de baixo 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ê vai utilizar o exemplo indicado, editado e hospedado no Google Cloud Storage com as atualizações sobre negociação on-line. Você pode mudar 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 de antes (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 de aqui. Caso contrário, acesse o código do repositório e execute-o no ambiente de notebook de sua preferência.

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)

Ao treinar, você vai notar 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á-los ao Android.

5. Atualizar o app Android

  1. Abra o app no Android Studio e verifique se a opção Android está selecionada na parte de cima do navegador 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 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. Mostrar no Finder no Mac, conforme mostrado. Será Mostrar no Explorer no Windows e Abrir em 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 seu sistema operacional. Copie os novos que você criou na etapa anterior.

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

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

6. Atualizar o app iOS

Você pode acessar o código clonando este repositório e carregando o app em TextClassificationStep2. Ele está no caminho TextClassificationOnMobile->Android.

O código finalizado também está disponível como TextClassificationStep3.

Se você fez o codelab anterior, terá uma versão iOS do TextClassificationStep2 que funciona com o modelo de base. Se quiser começar com nossa versão atual, basta acessar o repositório. Ele vai funcionar com o primeiro modelo treinado nos dados de spam de comentários, e você poderá ver resultados como este:

553b845565b5b822.png

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

Depois disso, o app vai funcionar com o novo modelo, e você poderá testá-lo. Confira um exemplo da mesma frase, mas usando o novo modelo:

9031ec260b1857a3.png

7. Parabéns

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

Próximas etapas

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

Ao explorar o processamento de linguagem natural, talvez você queira trabalhar com conjuntos de dados maiores. Você também pode configurar um pipeline de treinamento contínuo. Assim, quando novos dados forem recebidos e marcados como spam, eles poderão treinar automaticamente um modelo em um back-end e, em seguida, implantar esse modelo usando o Firebase Model Hosting.

Os 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 de limite para envio de spam, em vez de 0,8.

Há muitas possibilidades, e vamos explorar essas opções em futuros codelabs deste curso.