1. Visão Geral
Bem-vindo ao codelab de classificação de texto com TensorFlow Lite e Firebase. Neste codelab, você aprenderá a usar o TensorFlow Lite e o Firebase para treinar e implantar um modelo de classificação de texto em seu app. Este codelab é baseado neste exemplo do TensorFlow Lite.
A classificação de texto é o processo de atribuir tags ou categorias ao texto de acordo com seu conteúdo. É uma das tarefas fundamentais no Processamento de Linguagem Natural (NLP) com aplicações amplas, como análise de sentimentos, rotulagem de tópicos, detecção de spam e detecção de intenção.
A análise de sentimentos é a interpretação e classificação de emoções (positivas, negativas e neutras) dentro de dados de texto usando técnicas de análise de texto. A análise de sentimento permite que as empresas identifiquem o sentimento do cliente em relação a produtos, marcas ou serviços em conversas e feedback online.
Este tutorial mostra como construir um modelo de aprendizado de máquina para análise de sentimento, em particular classificando o texto como positivo ou negativo. Este é um exemplo de classificação binária ou de duas classes, um tipo importante e amplamente aplicável de problema de aprendizado de máquina.
O que você aprenderá
- Treine modelos de análise de sentimento do TF Lite com o TF Lite Model Maker
- Implante modelos TF Lite no Firebase ML e acesse-os em seu aplicativo
- Integre os modelos de análise de sentimento do TF Lite ao seu aplicativo usando a biblioteca de tarefas do TF Lite
O que você precisará
- Última versão do Android Studio .
- Código de amostra.
- Um dispositivo de teste com Android 5.0+ e Google Play Services 9.8 ou posterior, ou um emulador com Google Play Services 9.8 ou posterior
- Se estiver usando um dispositivo, um cabo de conexão.
Como você usará este tutorial?
Como classificaria sua experiência com a criação de aplicativos Android?
2. Obtenha o código de amostra
Clone o repositório GitHub na linha de comando.
$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git
Se você não tiver o git instalado, também pode baixar o projeto de exemplo na página do GitHub ou clicando neste link .
3. Importe o aplicativo inicial
No Android Studio, selecione o diretório codelab-textclassification-android-master
( ) do download do código de amostra ( File > Open > .../codelab-textclassification-android-master/start).
Agora você deve ter o projeto inicial aberto no Android Studio.
4. Execute o aplicativo inicial
Agora que você importou o projeto para o Android Studio, está pronto para executar o aplicativo pela primeira vez. Conecte seu dispositivo Android e clique em Executar ( ) na barra de ferramentas do Android Studio.
O aplicativo deve iniciar no seu dispositivo. Ele contém apenas uma interface do usuário simples que facilita a integração e o teste de modelos de classificação de texto nas próximas etapas. Neste ponto, se você tentar prever sentimentos, o aplicativo retornará apenas alguns resultados fictícios.
5. Crie um projeto de console do Firebase
Adicionar Firebase ao projeto
- Acesse o console do Firebase .
- Selecione Adicionar projeto .
- Selecione ou insira um nome de projeto.
- Siga as etapas de configuração restantes no console do Firebase e clique em Criar projeto (ou Adicionar Firebase, se estiver usando um projeto existente do Google).
6. Adicione o Firebase ao aplicativo
- Na tela de visão geral do seu novo projeto, clique no ícone do Android para iniciar o fluxo de trabalho de configuração.
- Digite o nome do pacote do codelab:
org.tensorflow.lite.codelabs.textclassification
Adicione o arquivo google-services.json ao seu aplicativo
Depois de adicionar o nome do pacote e selecionar Register**, clique em Download google-services.json** para obter seu arquivo de configuração Firebase Android e copie o arquivo google-services.json
no diretório * app
* em seu projeto.
Adicione o plug-in de serviços do Google ao seu aplicativo
Siga as instruções no Console do Firebase atualizando os arquivos build.gradle.kts
para adicionar o Firebase ao seu aplicativo.
O plug-in google-services usa o arquivo google-services.json para configurar seu aplicativo para usar o Firebase.
Sincronize seu projeto com arquivos gradle
Para ter certeza de que todas as dependências estão disponíveis para seu aplicativo, você deve sincronizar seu projeto com arquivos gradle neste momento. Selecione File > Sync Project with Gradle Files na barra de ferramentas do Android Studio.
7. Execute o aplicativo com o Firebase
Agora que você configurou o plug-in google-services
com seu arquivo JSON, está pronto para executar o aplicativo com o Firebase. Conecte seu dispositivo Android e clique em Executar ( ) na barra de ferramentas do Android Studio.
O aplicativo deve iniciar no seu dispositivo. Neste ponto, seu aplicativo ainda deve ser compilado com sucesso.
8. Treine um modelo de análise de sentimento
Usaremos o TensorFlow Lite Model Maker para treinar um modelo de classificação de texto para prever o sentimento de um determinado texto.
Esta etapa é apresentada como um notebook Python que você pode abrir no Google Colab. Você pode escolher Runtime > Run all para executar todo o notebook de uma vez.
Aberto no Colab
Depois de concluir esta etapa, você terá um modelo de análise de sentimento do TensorFlow Lite pronto para implantação em um aplicativo móvel.
9. Implante um modelo no Firebase ML
Implantar um modelo no Firebase ML é útil por dois motivos principais:
- Podemos manter o tamanho da instalação do aplicativo pequeno e baixar o modelo apenas se necessário
- O modelo pode ser atualizado regularmente e com um ciclo de lançamento diferente do aplicativo inteiro
O modelo pode ser implantado por meio do console ou programaticamente, usando o Firebase Admin SDK. Nesta etapa, implantaremos por meio do console.
Primeiro, abra o Firebase Console e clique em Machine Learning no painel de navegação esquerdo. Clique em 'Começar' se estiver abrindo pela primeira vez. Em seguida, navegue até "Personalizado" e clique no botão "Adicionar modelo".
Quando solicitado, nomeie o modelo sentiment_analysis
e carregue o arquivo que você baixou do Colab na etapa anterior.
10. Baixe o modelo do Firebase ML
Escolher quando baixar o modelo remoto do Firebase em seu aplicativo pode ser complicado, pois os modelos TFLite podem crescer relativamente grandes. Idealmente, queremos evitar carregar o modelo imediatamente quando o aplicativo for iniciado, pois se nosso modelo for usado para apenas um recurso e o usuário nunca usar esse recurso, teremos baixado uma quantidade significativa de dados sem motivo. Também podemos definir opções de download, como apenas buscar modelos quando conectado ao wi-fi. Se você deseja garantir que o modelo esteja disponível mesmo sem uma conexão de rede, é importante agrupá-lo também sem o aplicativo como backup.
Para simplificar, removeremos o modelo empacotado padrão e sempre baixaremos um modelo do Firebase quando o aplicativo for iniciado pela primeira vez. Dessa forma, ao executar a análise de sentimento, você pode ter certeza de que a inferência está sendo executada com o modelo fornecido pelo Firebase.
No arquivo app/build.gradle.kts
, adicione a dependência Firebase Machine Learning.
app/build.gradle.kts
Encontre este comentário:
// TODO 1: Add Firebase ML dependency
Em seguida, adicione:
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")
Quando solicitado pelo Android Studio para sincronizar seu projeto, escolha Sync Now .
Em seguida, vamos adicionar algum código para baixar o modelo do Firebase.
MainActivity.java
Encontre este comentário:
// TODO 2: Implement a method to download TFLite model from Firebase
Em seguida, adicione:
/** Download model from Firebase ML. */
private synchronized void downloadModel(String modelName) {
CustomModelDownloadConditions conditions = new CustomModelDownloadConditions.Builder()
.requireWifi()
.build();
FirebaseModelDownloader.getInstance()
.getModel("sentiment_analysis", DownloadType.LOCAL_MODEL, conditions)
.addOnSuccessListener(model -> {
try {
// TODO 6: Initialize a TextClassifier with the downloaded model
predictButton.setEnabled(true);
} catch (IOException e) {
Log.e(TAG, "Failed to initialize the model. ", e);
Toast.makeText(
MainActivity.this,
"Model initialization failed.",
Toast.LENGTH_LONG)
.show();
predictButton.setEnabled(false);
}
})
.addOnFailureListener(e -> {
Log.e(TAG, "Failed to download the model. ", e);
Toast.makeText(
MainActivity.this,
"Model download failed, please check your connection.",
Toast.LENGTH_LONG)
.show();
}
);
}
Em seguida, chame o método downloadModel
no método onCreate
da atividade.
MainActivity.java
Encontre este comentário:
// TODO 3: Call the method to download TFLite model
Em seguida, adicione:
downloadModel("sentiment_analysis");
11. Integre o modelo em seu aplicativo
A biblioteca de tarefas do Tensorflow Lite ajuda você a integrar modelos do TensorFlow Lite ao seu aplicativo com apenas algumas linhas de código. Inicializaremos uma instância NLClassifier
usando o modelo TensorFlow Lite baixado do Firebase. Em seguida, vamos usá-lo para classificar a entrada de texto dos usuários do aplicativo e mostrar o resultado na interface do usuário.
Adicione a dependência
Acesse o arquivo Gradle do aplicativo e adicione a Biblioteca de Tarefas do TensorFlow Lite (Texto) nas dependências do aplicativo.
app/build.gradle
Encontre este comentário:
// TODO 4: Add TFLite Task API (Text) dependency
Em seguida, adicione:
implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")
Quando solicitado pelo Android Studio para sincronizar seu projeto, escolha Sync Now .
Inicializar um classificador de texto
Em seguida, carregaremos o modelo de análise de sentimento baixado do Firebase usando o NLClassifier
da biblioteca de tarefas.
MainActivity.java
Vamos declarar uma variável de instância NLClassifier. Encontre este comentário:
// TODO 5: Define a NLClassifier variable
Em seguida, adicione:
private NLClassifier textClassifier;
Inicialize a variável textClassifier
com o modelo de análise de sentimento baixado do Firebase. Encontre este comentário:
// TODO 6: Initialize a TextClassifier with the downloaded model
Em seguida, adicione:
textClassifier = NLClassifier.createFromFile(model.getFile());
Classificar texto
Depois que a instância textClassifier
for configurada, você poderá executar a análise de sentimento com uma única chamada de método.
MainActivity.java
Encontre este comentário:
// TODO 7: Run sentiment analysis on the input text
Em seguida, adicione:
List<Category> results = textClassifier.classify(text);
Implementar pós-processamento
Por fim, converteremos a saída do modelo em um texto descritivo para mostrar na tela.
MainActivity.java
Encontre este comentário:
// TODO 8: Convert the result to a human-readable text
Remova o código que gera o texto de resultado fictício:
String textToShow = "Dummy classification result.\n";
Em seguida, adicione:
String textToShow = "Input: " + text + "\nOutput:\n";
for (int i = 0; i < results.size(); i++) {
Category result = results.get(i);
textToShow += String.format(" %s: %s\n", result.getLabel(),
result.getScore());
}
textToShow += "---------\n";
12. Execute o aplicativo final
Você integrou o modelo de análise de sentimento ao aplicativo, então vamos testá-lo. Conecte seu dispositivo Android e clique em Executar ( ) na barra de ferramentas do Android Studio.
O aplicativo deve ser capaz de prever corretamente o sentimento da crítica do filme que você inserir.
13. Ative o aplicativo com mais recursos do Firebase
Além de hospedar seus modelos TFLite, o Firebase fornece vários outros recursos para potencializar seus casos de uso de aprendizado de máquina:
- Monitoramento de desempenho do Firebase para medir a velocidade de inferência do modelo em execução no dispositivo dos usuários.
- Firebase Analytics para medir o desempenho do seu modelo na produção medindo a reação do usuário.
- Firebase A/B Testing para testar várias versões do seu modelo
- Você se lembra que treinamos duas versões do nosso modelo TFLite anteriormente? O teste A/B é uma boa maneira de descobrir qual versão tem melhor desempenho na produção!
Para saber mais sobre como aproveitar esses recursos em seu app, confira os codelabs abaixo:
14. Parabéns!
Neste codelab, você aprendeu a treinar um modelo TFLite de análise de sentimento e implantá-lo em seu aplicativo para dispositivos móveis usando o Firebase. Para saber mais sobre o TFLite e o Firebase, dê uma olhada em outros exemplos do TFLite e nos guias de primeiros passos do Firebase.
O que cobrimos
- TensorFlow Lite
- Firebase ML
Próximos passos
- Meça a velocidade de inferência do seu modelo com o Firebase Performance Monitoring.
- Implante o modelo do Colab diretamente no Firebase por meio da API Firebase ML Model Management.
- Adicione um mecanismo para permitir que os usuários façam comentários sobre o resultado da previsão e use o Firebase Analytics para rastrear os comentários dos usuários.
- Teste A/B o modelo Average Word Vector e o modelo MobileBERT com o teste Firebase A/B.
Saber mais
- Documentação do Firebase Machine Learning
- Documentação do TensorFlow Lite
- Avalie o desempenho do aplicativo com o Firebase
- Modelos de teste A/B com Firebase