Ajouter la classification du texte sur l'appareil à votre application avec TensorFlow Lite et Firebase (atelier de programmation iOS)

1. Présentation

classification_result_screen.png

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 un modèle 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
  • Suivre les commentaires des utilisateurs pour mesurer la précision du modèle avec Firebase Analytics
  • Profiler les performances du modèle avec Firebase Performance Monitoring
  • Sélectionnez le modèle déployé à charger via Remote Config.
  • Tester différents modèles avec Firebase A/B Testing

Prérequis

  • Xcode 11 (ou version ultérieure)
  • CocoaPods 1.9.1 (ou version ultérieure)

Comment allez-vous utiliser ce tutoriel ?

Je vais le lire uniquement Je vais le lire et effectuer les exercices

Comment évalueriez-vous votre niveau d'expérience en matière de création d'applications Android ?

Débutant Intermédiaire Expert

2. Créer un projet dans la console Firebase

Ajouter Firebase au projet

  1. Accédez à la console Firebase.
  2. Sélectionnez Create New Project (Créer un projet) et nommez votre projet "Firebase ML iOS Codelab".

3. Obtenir l'exemple de projet

Télécharger le code

Commencez par cloner l'exemple de projet et exécutez pod update dans le répertoire du projet :

git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git
cd codelab-textclassification-ios
pod install --repo-update

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. Une fois le projet téléchargé, exécutez-le dans Xcode et testez la classification de texte pour comprendre comment elle fonctionne.

Configurer Firebase

Suivez la documentation pour créer un projet Firebase. Une fois votre projet créé, téléchargez le fichier GoogleService-Info.plist de votre projet depuis la console Firebase et faites-le glisser à la racine du projet Xcode.

9efb62a92f27e939.png

Ajoutez Firebase à votre Podfile et exécutez pod install.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

Dans la méthode didFinishLaunchingWithOptions de votre AppDelegate, importez Firebase en haut du fichier.

import FirebaseCore

Ajoutez un appel pour configurer Firebase.

FirebaseApp.configure()

Exécutez à nouveau le projet pour vous assurer que l'application est correctement configurée et qu'elle ne plante pas au lancement.

4. 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.

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.

5. Déployer un modèle sur Firebase ML

Déployer un modèle dans Firebase ML présente deux avantages principaux :

  1. Nous pouvons réduire la taille d'installation de l'application et ne télécharger le modèle que si nécessaire.
  2. 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.

3c3c50e6ef12b3b.png

6. 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.

En haut de ModelLoader.swift, importez le module Firebase.

import FirebaseCore
import FirebaseMLModelDownloader

Implémentez ensuite les méthodes suivantes.

static func downloadModel(named name: String,
                          completion: @escaping (CustomModel?, DownloadError?) -> Void) {
  guard FirebaseApp.app() != nil else {
    completion(nil, .firebaseNotInitialized)
    return
  }
  guard success == nil && failure == nil else {
    completion(nil, .downloadInProgress)
    return
  }
  let conditions = ModelDownloadConditions(allowsCellularAccess: false)
  ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
          switch (result) {
          case .success(let customModel):
                  // Download complete.
                  // The CustomModel object contains the local path of the model file,
                  // which you can use to instantiate a TensorFlow Lite classifier.
                  return completion(customModel, nil)
          case .failure(let error):
              // Download was unsuccessful. Notify error message.
            completion(nil, .downloadFailed(underlyingError: error))
          }
  }
}

Dans viewDidLoad de ViewController.swift, remplacez l'appel à loadModel() par notre nouvelle méthode de téléchargement de modèle.

// Download the model from Firebase
print("Fetching model...")
ModelLoader.downloadModel(named: "sentiment_analysis") { (customModel, error) in
  guard let customModel = customModel else {
    if let error = error {
      print(error)
    }
    return
  }

  print("Model download complete")

  // TODO: Initialize an NLClassifier from the downloaded model
}

Réexécutez votre application. Après quelques secondes, un journal devrait s'afficher dans Xcode, indiquant que le modèle à distance a été téléchargé avec succès. Essayez de saisir du texte et vérifiez que le comportement de l'application n'a pas changé.

7. 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 TFLNLClassifier à 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 Podfile de l'application et ajoutez la bibliothèque de tâches TensorFlow Lite (texte) dans les dépendances de l'application. Veillez à ajouter la dépendance sous la déclaration target 'TextClassification'.

pod 'TensorFlowLiteTaskText', '~> 0.2.0'

Exécutez pod install pour installer la nouvelle dépendance.

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.

ViewController.swift

Déclarons une variable d'instance TFLNLClassifier. En haut du fichier, importez la nouvelle dépendance :

import TensorFlowLiteTaskText

Recherchez ce commentaire au-dessus de la méthode que nous avons modifiée à la dernière étape :

// TODO: Add a TFLNLClassifier property.

Remplacez le TODO par le code suivant :

private var classifier: TFLNLClassifier?

Initialisez la variable textClassifier avec le modèle d'analyse du sentiment téléchargé depuis Firebase. Recherchez le commentaire que nous avons ajouté à la dernière étape :

// TODO: Initialize an NLClassifier from the downloaded model

Remplacez le TODO par le code suivant :

let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)

Classer du texte

Une fois l'instance classifier configurée, vous pouvez exécuter l'analyse des sentiments en un seul appel de méthode.

ViewController.swift

Dans la méthode classify(text:), recherchez le commentaire TODO :

// TODO: Run sentiment analysis on the input text

Remplacez le commentaire par le code suivant :

guard let classifier = self.classifier else { return }

// Classify the text
let classifierResults = classifier.classify(text: text)

// Append the results to the list of results
let result = ClassificationResult(text: text, results: classifierResults)
results.append(result)

8. Exécuter l'application finale

Vous avez intégré le modèle d'analyse des sentiments à l'application. Testons-le. Connectez votre appareil iOS, puis cliquez sur Run (Exécuter) (execute.png) dans la barre d'outils Xcode.

L'application doit être capable de prédire correctement le sentiment de la critique de film que vous saisissez.

classification_result_screen.png

9. 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 :

10. 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

Vous avez une question ?

Signaler des problèmes