1. Présentation
Bienvenue dans l'atelier de programmation "Classification de texte avec TensorFlow Lite et Firebase". Dans cet atelier de programmation, vous allez apprendre à utiliser TensorFlow Lite et Firebase pour entraîner et déployer un modèle de classification de texte dans votre application. Cet atelier de programmation est basé sur cet exemple TensorFlow Lite.
La classification de texte consiste à attribuer des tags ou des catégories à un texte en fonction de son contenu. Il s'agit de l'une des tâches fondamentales du traitement du langage naturel (TLN), qui a de nombreuses applications telles que l'analyse des sentiments, l'étiquetage des thèmes, la détection du spam et la détection de l'intention.
L'analyse des sentiments consiste à interpréter et à classer les émotions (positives, négatives et neutres) dans les données textuelles à l'aide de techniques d'analyse de texte. L'analyse des sentiments permet aux entreprises d'identifier les sentiments des clients à l'égard des produits, des marques ou des services dans les conversations et les commentaires en ligne.
Ce tutoriel explique comment créer un modèle de machine learning pour l'analyse des sentiments, en particulier pour classer un texte comme positif ou négatif. Il s'agit d'un exemple de classification binaire (ou à deux classes), un type de problème de machine learning important et largement applicable.
Points abordés
- Entraîner des modèles d'analyse des sentiments TF Lite avec TF Lite Model Maker
- Déployer des modèles TF Lite sur Firebase ML et y accéder depuis votre application
- Intégrer des modèles d'analyse des sentiments TF Lite à votre application à l'aide de la bibliothèque de tâches TF Lite
Prérequis
- La dernière version d'Android Studio.
- Exemple de code.
- Un appareil de test équipé d'Android 5.0 ou version ultérieure et des services Google Play 9.8 ou version ultérieure, ou un émulateur équipé des services Google Play 9.8 ou version ultérieure
- Si vous utilisez un appareil, un câble de connexion.
Comment allez-vous utiliser ce tutoriel ?
Comment évalueriez-vous votre niveau d'expérience en matière de création d'applications Android ?
2. Obtenir l'exemple de code
Clonez le dépôt GitHub à partir de la ligne de commande.
$ git clone https://github.com/FirebaseExtended/codelab-textclassification-android.git
Si vous n'avez pas installé Git, vous pouvez également télécharger l'exemple de projet depuis sa page GitHub ou en cliquant sur ce lien.
3. Importer l'application de démarrage
Dans Android Studio, sélectionnez le répertoire codelab-textclassification-android-master
( ) à partir du téléchargement de l'exemple de code (Fichier > Ouvrir > .../codelab-textclassification-android-master/start).
Le projet de démarrage devrait maintenant être ouvert dans Android Studio.
4. Exécuter l'application de démarrage
Maintenant que vous avez importé le projet dans Android Studio, vous êtes prêt à exécuter l'application pour la première fois. Connectez votre appareil Android, puis cliquez sur Run ( Exécuter) dans la barre d'outils Android Studio.
L'application doit se lancer sur votre appareil. Il ne contient qu'une interface utilisateur simple qui facilite l'intégration et le test des modèles de classification de texte lors des prochaines étapes. À ce stade, si vous essayez de prédire des sentiments, l'application ne renverra que des résultats fictifs.
5. Créer un projet dans la console Firebase
Ajouter Firebase au projet
- Accédez à la console Firebase.
- Sélectionnez Ajouter un projet.
- Sélectionnez ou saisissez un nom de projet.
- Suivez les autres étapes de configuration dans la console Firebase, puis cliquez sur "Créer un projet" (ou "Ajouter Firebase" si vous utilisez un projet Google existant).
6. Ajouter Firebase à l'application
- Sur l'écran de présentation de votre nouveau projet, cliquez sur l'icône Android pour lancer le workflow de configuration.
- Saisissez le nom du package du codelab :
org.tensorflow.lite.codelabs.textclassification
Ajouter le fichier google-services.json à votre application
Après avoir ajouté le nom du package et sélectionné "Enregistrer"**, cliquez sur "Télécharger google-services.json"** pour obtenir votre fichier de configuration Firebase Android, puis copiez le fichier google-services.json
dans le répertoire *app
* de votre projet.
Ajouter le plug-in google-services à votre application
Suivez les instructions de la console Firebase pour mettre à jour les fichiers build.gradle.kts
et ajouter Firebase à votre application.
Le plug-in google-services utilise le fichier google-services.json pour configurer votre application afin qu'elle utilise Firebase.
Synchroniser votre projet avec les fichiers Gradle
Pour vous assurer que toutes les dépendances sont disponibles pour votre application, vous devez synchroniser votre projet avec les fichiers Gradle à ce stade. Sélectionnez File > Sync Project with Gradle Files (Fichier > Synchroniser le projet avec les fichiers Gradle) dans la barre d'outils d'Android Studio.
7. Exécuter l'application avec Firebase
Maintenant que vous avez configuré le plug-in google-services
avec votre fichier JSON, vous êtes prêt à exécuter l'application avec Firebase. Connectez votre appareil Android, puis cliquez sur Run ( Exécuter) dans la barre d'outils Android Studio.
L'application doit se lancer sur votre appareil. À ce stade, votre application devrait toujours se compiler correctement.
8. Entraîner un modèle d'analyse des sentiments
Nous allons utiliser TensorFlow Lite Model Maker pour entraîner un modèle de classification de texte afin de prédire le sentiment d'un texte donné.
Cette étape est présentée sous la forme d'un notebook Python que vous pouvez ouvrir dans Google Colab. Vous pouvez choisir Exécuter > Exécuter tout pour exécuter l'intégralité du notebook en une seule fois.
Ouvrir dans Colab
Une fois cette étape terminée, vous disposerez d'un modèle TensorFlow Lite d'analyse des sentiments prêt à être déployé dans une application mobile.
9. Déployer un modèle sur Firebase ML
Déployer un modèle dans Firebase ML présente deux avantages principaux :
- Nous pouvons réduire la taille d'installation de l'application et ne télécharger le modèle que si nécessaire.
- Le modèle peut être mis à jour régulièrement et avec un cycle de publication différent de celui de l'ensemble de l'application.
Le modèle peut être déployé via la console ou de manière programmatique à l'aide du SDK Admin Firebase. Lors de cette étape, nous allons effectuer le déploiement via la console.
Commencez par ouvrir la console Firebase, puis cliquez sur "Machine Learning" dans le panneau de navigation de gauche. Cliquez sur "Commencer" si vous ouvrez cette fonctionnalité pour la première fois. Accédez ensuite à "Personnalisé", puis cliquez sur le bouton "Ajouter un modèle".
Lorsque vous y êtes invité, nommez le modèle sentiment_analysis
et importez le fichier que vous avez téléchargé depuis Colab à l'étape précédente.
10. Télécharger un modèle depuis Firebase ML
Il peut être difficile de choisir le moment où télécharger le modèle à distance depuis Firebase dans votre application, car les modèles TFLite peuvent devenir relativement volumineux. Dans l'idéal, nous voulons éviter de charger le modèle immédiatement au lancement de l'application. En effet, si notre modèle n'est utilisé que pour une seule fonctionnalité et que l'utilisateur ne l'utilise jamais, nous aurons téléchargé une quantité importante de données sans raison. Nous pouvons également définir des options de téléchargement, comme n'extraire les modèles que lorsque l'appareil est connecté au Wi-Fi. Si vous souhaitez vous assurer que le modèle est disponible même sans connexion réseau, il est important de l'inclure également sans l'application en tant que sauvegarde.
Par souci de simplicité, nous allons supprimer le modèle groupé par défaut et toujours télécharger un modèle depuis Firebase lorsque l'application démarre pour la première fois. Ainsi, lorsque vous exécutez une analyse des sentiments, vous pouvez être sûr que l'inférence s'exécute avec le modèle fourni par Firebase.
Dans le fichier app/build.gradle.kts
, ajoutez la dépendance Firebase Machine Learning.
app/build.gradle.kts
Recherchez ce commentaire :
// TODO 1: Add Firebase ML dependency
Ajoutez ensuite :
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")
Lorsque Android Studio vous demande de synchroniser votre projet, sélectionnez Sync Now (Synchroniser maintenant).
Ajoutons ensuite du code pour télécharger le modèle depuis Firebase.
MainActivity.java
Recherchez ce commentaire :
// TODO 2: Implement a method to download TFLite model from Firebase
Ajoutez ensuite :
/** 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();
}
);
}
Appelez ensuite la méthode downloadModel
dans la méthode onCreate
de l'activité.
MainActivity.java
Recherchez ce commentaire :
// TODO 3: Call the method to download TFLite model
Ajoutez ensuite :
downloadModel("sentiment_analysis");
11. Intégrer le modèle dans votre application
La bibliothèque de tâches TensorFlow Lite vous aide à intégrer des modèles TensorFlow Lite à votre application en quelques lignes de code. Nous allons initialiser une instance NLClassifier
à l'aide du modèle TensorFlow Lite téléchargé depuis Firebase. Nous l'utiliserons ensuite pour classer le texte saisi par les utilisateurs de l'application et afficher le résultat dans l'UI.
Ajouter la dépendance
Accédez au fichier Gradle de l'application et ajoutez la bibliothèque de tâches TensorFlow Lite (texte) dans les dépendances de l'application.
app/build.gradle
Recherchez ce commentaire :
// TODO 4: Add TFLite Task API (Text) dependency
Ajoutez ensuite :
implementation("org.tensorflow:tensorflow-lite-task-text:0.3.0")
Lorsque Android Studio vous demande de synchroniser votre projet, sélectionnez Sync Now (Synchroniser maintenant).
Initialiser un classificateur de texte
Nous allons ensuite charger le modèle d'analyse des sentiments téléchargé depuis Firebase à l'aide de NLClassifier
de la bibliothèque de tâches.
MainActivity.java
Déclarons une variable d'instance NLClassifier. Recherchez ce commentaire :
// TODO 5: Define a NLClassifier variable
Ajoutez ensuite :
private NLClassifier textClassifier;
Initialisez la variable textClassifier
avec le modèle d'analyse du sentiment téléchargé depuis Firebase. Recherchez ce commentaire :
// TODO 6: Initialize a TextClassifier with the downloaded model
Ajoutez ensuite :
textClassifier = NLClassifier.createFromFile(model.getFile());
Classer du texte
Une fois l'instance textClassifier
configurée, vous pouvez exécuter l'analyse des sentiments en un seul appel de méthode.
MainActivity.java
Recherchez ce commentaire :
// TODO 7: Run sentiment analysis on the input text
Ajoutez ensuite :
List<Category> results = textClassifier.classify(text);
Implémenter le post-traitement
Enfin, nous allons convertir la sortie du modèle en texte descriptif à afficher à l'écran.
MainActivity.java
Recherchez ce commentaire :
// TODO 8: Convert the result to a human-readable text
Supprimez le code qui génère le texte de résultat fictif :
String textToShow = "Dummy classification result.\n";
Ajoutez ensuite :
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. Exécuter l'application finale
Vous avez intégré le modèle d'analyse des sentiments à l'application. Testons-le. Connectez votre appareil Android, puis cliquez sur Run ( Exécuter) dans la barre d'outils Android Studio.
L'application doit être capable de prédire correctement le sentiment de la critique de film que vous saisissez.
13. Exploiter tout le potentiel de l'application avec d'autres fonctionnalités Firebase
En plus d'héberger vos modèles TFLite, Firebase propose plusieurs autres fonctionnalités pour optimiser vos cas d'utilisation du machine learning :
- Firebase Performance Monitoring pour mesurer la vitesse d'inférence de votre modèle sur l'appareil des utilisateurs.
- Firebase Analytics pour mesurer les performances de votre modèle en production en évaluant la réaction des utilisateurs.
- Firebase A/B Testing pour tester plusieurs versions de votre modèle
- Vous souvenez-vous que nous avons entraîné deux versions de notre modèle TFLite plus tôt ? Les tests A/B sont un bon moyen de déterminer quelle version est la plus performante en production.
Pour découvrir comment exploiter ces fonctionnalités dans votre application, consultez les ateliers de programmation ci-dessous :
14. Félicitations !
Dans cet atelier de programmation, vous avez appris à entraîner un modèle TFLite d'analyse des sentiments et à le déployer dans votre application mobile à l'aide de Firebase. Pour en savoir plus sur TFLite et Firebase, consultez les autres exemples TFLite et les guides Premiers pas Firebase.
Points abordés
- TensorFlow Lite
- Firebase ML
Étapes suivantes
- Mesurez la vitesse d'inférence de votre modèle avec Firebase Performance Monitoring.
- Déployez le modèle depuis Colab directement sur Firebase à l'aide de l'API Firebase ML Model Management.
- Ajoutez un mécanisme permettant aux utilisateurs de donner leur avis sur le résultat de la prédiction et utilisez Firebase Analytics pour suivre les commentaires des utilisateurs.
- Effectuez des tests A/B sur le modèle Average Word Vector et le modèle MobileBERT avec Firebase A/B Testing.
En savoir plus
- Documentation Firebase Machine Learning
- Documentation TensorFlow Lite
- Mesurer les performances de votre application avec Firebase
- Modèles de tests A/B avec Firebase