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 são sequenciais. O app e o modelo em que você vai trabalhar precisam ter sido criados durante o primeiro Programa de treinamentos. Se você ainda não concluiu as atividades anteriores, faça isso agora:
- Criar um app de estilo de mensagens básico
- Criar um modelo de machine learning para spam de comentários
- Atualizar o app para usar um modelo de aprendizado de máquina de filtragem de spam
O que você vai aprender
- Como atualizar o modelo de classificação de texto que você criou no programa de treinamentos "Introdução à classificação de texto para dispositivos móveis"
- Como personalizar seu 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 isso, clone este repositório e carregue o app em TextClassificationStep2. Você encontra isso no caminho TextClassificationOnMobile->Android.
O código finalizado também está disponível para você como TextClassificationStep3.
Se você abrir o app de mensagens que criou e tentar enviar essa mensagem, ela vai receber uma pontuação de spam muito baixa:

Erros de ortografia como esse são uma maneira comum de evitar filtros de spam. E embora a mensagem seja inócua, os spammers geralmente 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ê vai aprender a atualizar o modelo com novos dados. Quando terminar, execute com a mesma frase para ter o resultado abaixo, em que essa mensagem é identificada 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 CSV faz com que a primeira linha descreva as colunas, que aqui são rotuladas como commenttext e spam.
Cada linha subsequente segue este formato:

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 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
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ê vai usar o exemplo fornecido, editado e hospedado no Google Cloud Storage com as atualizações sobre negociação on-line. Se quiser usar 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 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, pegue o código do repositório e execute no ambiente de notebook da 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)
Durante o treinamento, você vai notar que o modelo ainda treina com um alto nível de acurácia:

Leia o notebook para fazer o download dos arquivos modelo, vocabulário e rótulos. Na próxima etapa, você vai integrá-los no Android.
5. Atualizar o app Android
- Abra o app no Android Studio e verifique se a opção Android está selecionada na parte de cima do explorador de projetos.
- Encontre o arquivo
assetsque contém os rótulos, o modelo e o vocabulário da versão antiga do arquivo de modelo.

- Clique com o botão direito do mouse na pasta "assets".
- No menu, selecione a opção para abrir a pasta com o gerenciador de arquivos do seu sistema operacional. Mostrar no Finder no Mac, como mostrado. Ele será Mostrar no Explorer no Windows e Abrir em Arquivos ou semelhante no Linux.

- 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 e teste o app. Você vai ver resultados como os acima, em que o modelo foi aprimorado para detectar o cenário de texto "onllline trading".
Uma versão finalizada do código está disponível no repositório como "TextClassificationStep3".
6. Atualizar o app iOS
Para isso, clone este repositório e carregue o app em TextClassificationStep2. Você encontra isso no caminho TextClassificationOnMobile->Android.
O código finalizado também está disponível para você como TextClassificationStep3.
Se você fez o codelab anterior, terá uma versão do iOS do TextClassificationStep2 que funciona com o modelo de base. Se quiser começar com nossa versão atual, basta pegar essa do repositório. Ele vai funcionar com o primeiro modelo treinado com os dados de spam de comentários, e você poderá ver resultados como este:

Atualizar o app para usar o novo modelo é muito simples. A maneira mais fácil é acessar o explorador de arquivos, pegar 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:

7. Parabéns
Pronto! Ao treinar 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
Este modelo é apenas um exemplo, treinado com 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 chegarem e forem sinalizados como spam, um modelo será retreinado automaticamente em um back-end e implantado 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. Por exemplo, você pode usar a Configuração remota do Firebase para gerenciar o valor de limite para envio de spam, em vez de 0,8, que é o valor atual.
Há muitas possibilidades, e vamos explorar isso em codelabs futuros neste curso.