1. Visão geral
Este é o codelab "Classificação de texto com o TensorFlow Lite e o Firebase". Neste codelab, você vai aprender a usar o TensorFlow Lite e o Firebase para treinar e implantar um modelo de classificação de texto no seu app. Este codelab é baseado neste exemplo do TensorFlow Lite.
A classificação de texto é o processo de atribuição de tags ou categorias ao texto de acordo com o conteúdo. É uma das tarefas fundamentais no processamento de linguagem natural (PLN), com amplas aplicações, como análise de sentimento, rotulação de tópicos, detecção de spam e detecção de intenção.
A análise de sentimento é a interpretação e classificação de emoções (positivas, negativas e neutras) em dados de texto usando técnicas de análise de texto. A análise de sentimento permite que as empresas identifiquem o sentimento dos clientes em relação a produtos, marcas ou serviços em conversas e feedback on-line.
Este tutorial mostra como criar um modelo de aprendizado de máquina para análise de sentimento, 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ê vai aprender
- Treinar modelos de análise de sentimento do TF Lite com o TF Lite Model Maker
- Implantar modelos do TF Lite no Firebase ML e acessá-los no app
- Integrar modelos de análise de sentimento do TF Lite ao seu app usando a biblioteca de tarefas do TF Lite
O que é necessário
- Versão mais recente do Android Studio.
- Exemplo de código.
- Um dispositivo de teste com o Android 5.0 ou versões mais recentes e o Google Play Services 9.8 ou versões mais recentes, ou um emulador com o Google Play Services 9.8 ou versões mais recentes
- Se estiver usando um dispositivo, um cabo de conexão.
Como você usará este tutorial?
Como você classificaria sua experiência com a criação de apps Android?
2. Acessar o exemplo de código
Clone o repositório do GitHub na linha de comando.
$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git
Se o git não estiver instalado, você também pode fazer o download do projeto de exemplo na página do GitHub ou clicando neste link.
3. Importar o app inicial
No Android Studio, selecione o diretório codelab-textclassification-android-master
( ) no download do exemplo de código (File > Open > .../codelab-textclassification-android-master/start).
Agora você tem o projeto inicial aberto no Android Studio.
4. Executar o app inicial
Agora que você importou o projeto para o Android Studio, está tudo pronto para executar o app pela primeira vez. Conecte o dispositivo Android e clique em Run ( ) na barra de ferramentas do Android Studio.
O app será iniciado no seu dispositivo. Ele contém apenas uma interface 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 app retornará apenas alguns resultados fictícios.
5. Criar projeto do console do Firebase
Adicionar o Firebase ao projeto
- Acesse o Console do Firebase.
- Selecione Adicionar projeto.
- Selecione ou digite o nome de um projeto.
- Siga as demais etapas de configuração no Console do Firebase e clique em "Criar projeto" ou "Adicionar Firebase", se estiver usando um projeto atual do Google.
6. Adicionar o Firebase ao app
- Na tela de visão geral do novo projeto, clique no ícone do Android para iniciar o fluxo de trabalho de configuração.
- Insira o nome do pacote do codelab:
org.tensorflow.lite.codelabs.textclassification
Adicionar o arquivo google-services.json ao app
Depois de adicionar o nome do pacote e selecionar "Registrar", clique em "Fazer o download do google-services.json" para receber o arquivo de configuração do Firebase para Android e copie o arquivo google-services.json
para o diretório *app
* no seu projeto.
Adicionar o plug-in google-services ao app
Siga as instruções no console do Firebase para atualizar os arquivos build.gradle.kts
e adicionar o Firebase ao seu app.
O plug-in google-services usa o arquivo google-services.json para configurar seu aplicativo para usar o Firebase.
Sincronizar seu projeto com arquivos do Gradle
Para garantir que todas as dependências estejam disponíveis para o app, sincronize o projeto com os arquivos do Gradle. Selecione File > Sync Project with Gradle Files na barra de ferramentas do Android Studio.
7. Executar o app com o Firebase
Agora que você configurou o plug-in google-services
com o arquivo JSON, já pode executar o app com o Firebase. Conecte o dispositivo Android e clique em Run ( ) na barra de ferramentas do Android Studio.
O app será iniciado no seu dispositivo. Neste ponto, seu app ainda será criado.
8. Treinar um modelo de análise de sentimento
Vamos usar o TensorFlow Lite Model Maker para treinar um modelo de classificação de texto e prever o sentimento de um determinado texto.
Esta etapa é apresentada como um notebook Python que pode ser aberto no Google Colab. Escolha Ambiente de execução > Executar tudo para executar o notebook inteiro de uma vez.
Abrir 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 app para dispositivos móveis.
9. Implantar um modelo no Firebase ML
Implantar um modelo no Firebase ML é útil por dois motivos principais:
- Podemos manter o tamanho da instalação do app pequeno e fazer o download do modelo apenas quando necessário.
- O modelo pode ser atualizado regularmente e com um ciclo de lançamento diferente do app inteiro.
O modelo pode ser implantado pelo console ou de forma programática usando o SDK Admin do Firebase. Nesta etapa, vamos implantar pelo console.
Primeiro, abra o Console do Firebase e clique em "Machine Learning" no painel de navegação à esquerda. 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 como sentiment_analysis
e faça o upload do arquivo que você transferiu por download do Colab na etapa anterior.
10. Fazer o download do modelo do Firebase ML
Escolher quando fazer o download do modelo remoto do Firebase para o app pode ser complicado, já que os modelos do TFLite podem crescer muito. O ideal é evitar o carregamento do modelo imediatamente quando o app for iniciado, porque, se o modelo for usado apenas para um recurso e o usuário nunca usar esse recurso, vamos fazer o download de uma quantidade significativa de dados sem motivo. Também é possível definir opções de download, como buscar apenas modelos quando conectado ao Wi-Fi. Para garantir que o modelo esteja disponível mesmo sem uma conexão de rede, é importante agrupá-lo sem o app como backup.
Para simplificar, vamos remover o modelo agrupado padrão e sempre fazer o download de um modelo do Firebase quando o app 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 do Firebase Machine Learning.
app/build.gradle.kts (link em inglês)
Encontrar 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 o Android Studio pedir para sincronizar seu projeto, escolha Sync Now.
Em seguida, vamos adicionar um código para fazer o download do modelo do Firebase.
MainActivity.java (em inglês)
Encontrar 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 (em inglês)
Encontrar este comentário:
// TODO 3: Call the method to download TFLite model
Em seguida, adicione:
downloadModel("sentiment_analysis");
11. Integrar o modelo no app
A Tensorflow Lite Task Library ajuda você a integrar modelos do TensorFlow Lite ao app com apenas algumas linhas de código. Vamos inicializar uma instância do NLClassifier
usando o modelo do TensorFlow Lite feito o download do Firebase. Em seguida, vamos usá-lo para classificar a entrada de texto dos usuários do app e mostrar o resultado na interface.
Adicionar a dependência
Acesse o arquivo Gradle do app e adicione a TensorFlow Lite Task Library (Text) às dependências do app.
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 o Android Studio pedir para sincronizar seu projeto, escolha Sync Now.
Inicializar um classificador de texto
Em seguida, carregaremos o modelo de análise de sentimento transferido do Firebase usando o NLClassifier
da Biblioteca de tarefas.
MainActivity.java (em inglês)
Vamos declarar uma variável de instância NLClassifier. Encontrar 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, será possível executar a análise de sentimento com uma única chamada de método.
MainActivity.java
Encontrar este comentário:
// TODO 7: Run sentiment analysis on the input text
Em seguida, adicione:
List<Category> results = textClassifier.classify(text);
Implementar o pós-processamento
Por fim, vamos converter a saída do modelo em um texto descritivo para mostrar na tela.
MainActivity.java (em inglês)
Encontre este comentário:
// TODO 8: Convert the result to a human-readable text
Remova o código que gera o texto do 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. Executar o app final
Você integrou o modelo de análise de sentimento ao app. Vamos testá-lo. Conecte seu dispositivo Android e clique em Run () na barra de ferramentas do Android Studio.
O app precisa prever corretamente o sentimento da crítica de filme que você inserir.
13. Melhorar o app com mais recursos do Firebase
Além de hospedar seus modelos TFLite, o Firebase oferece vários outros recursos para potencializar seus casos de uso de machine learning:
- 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 a performance do seu modelo na produção, avaliando a reação do usuário.
- Teste A/B do Firebase para testar várias versões do seu modelo
- Você se lembra que treinamos duas versões do nosso modelo TFLite anteriormente? Os testes A/B são uma boa maneira de descobrir qual versão tem melhor desempenho na produção.
Para saber mais sobre como aproveitar esses recursos no seu app, confira os codelabs abaixo:
14. Parabéns!
Neste codelab, você aprendeu a treinar um modelo do TFLite de análise de sentimento e implantá-lo no seu app para dispositivos móveis usando o Firebase. Para saber mais sobre o TFLite e o Firebase, confira outros exemplos do TFLite e os guias de primeiros passos do Firebase.
O que vimos
- TensorFlow Lite
- Firebase ML
Próximas etapas
- Meça a velocidade de inferência do seu modelo com o Monitoramento de desempenho do Firebase.
- Implante o modelo do Colab diretamente no Firebase pela API Firebase ML Model Management.
- Adicione um mecanismo para permitir que os usuários enviem feedback sobre o resultado da previsão e use o Firebase Analytics para rastrear esse feedback.
- Faça testes A/B com o modelo Average Word Vector e o modelo MobileBERT usando o Teste A/B do Firebase.
Saiba mais
- Documentação do Machine Learning do Firebase
- Documentação do TensorFlow Lite
- Medir o desempenho do app com o Firebase
- Modelos de Teste A/B com o Firebase
Perguntas?
- Stackoverflow "firebase-machine-learning" (em inglês)