Ajoutez la classification de texte sur l'appareil à votre application avec TensorFlow Lite et Firebase - iOS Codelab

1. Vue d'ensemble

classification_result_screen.png

Bienvenue dans l'atelier de programmation de classification de texte avec TensorFlow Lite et Firebase. Dans cet atelier de programmation, vous apprendrez à 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 est le processus d'attribution de balises ou de catégories au texte en fonction de son contenu. C'est l'une des tâches fondamentales du traitement du langage naturel (NLP) avec de vastes applications telles que l'analyse des sentiments, l'étiquetage des sujets, la détection des spams et la détection des intentions.

L'analyse des sentiments est l'interprétation et la classification des é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 le sentiment des clients envers les produits, les marques ou les services dans les conversations et les commentaires en ligne.

Ce didacticiel montre comment créer un modèle d'apprentissage automatique pour l'analyse des sentiments, en particulier en classant le texte comme positif ou négatif. Il s'agit d'un exemple de classification binaire ou à deux classes, un type de problème d'apprentissage automatique important et largement applicable.

Ce que vous apprendrez

  • Former un modèle d'analyse des sentiments TF Lite avec TF Lite Model Maker
  • Déployez des modèles TF Lite sur Firebase ML et accédez-y depuis votre application
  • Suivez les commentaires des utilisateurs pour mesurer la précision du modèle avec Firebase Analytics
  • Performances du modèle de profil via Firebase Performance Monitoring
  • Sélectionnez lequel des multiples modèles déployés est chargé via Remote Config
  • Testez différents modèles via Firebase A/B Testing

Ce dont vous aurez besoin

  • Xcode 11 (ou supérieur)
  • CocoaPods 1.9.1 (ou supérieur)

Comment allez-vous utiliser ce tutoriel ?

Lisez-le seulement Lisez-le et complétez les exercices

Comment évaluez-vous votre expérience avec la création d'applications Android ?

Novice Intermédiaire Compétent

2. Créer un projet de console Firebase

Ajouter Firebase au projet

  1. Accédez à la console Firebase .
  2. Sélectionnez Créer un nouveau projet et nommez votre projet "Firebase ML iOS Codelab".

3. Obtenez l'exemple de projet

Télécharger le code

Commencez par cloner l'exemple de projet et exécutez la mise à 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 que vous avez téléchargé le projet, exécutez-le dans Xcode et jouez avec la classification du texte pour avoir une idée de son fonctionnement.

Configurer Firebase

Suivez la documentation pour créer un nouveau projet Firebase. Une fois que vous avez votre projet, 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 l'installation du pod.

pod 'FirebaseMLModelDownloader', '9.3.0-beta'

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

import FirebaseCore

Et ajoutez un appel pour configurer Firebase.

FirebaseApp.configure()

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

4. Former un modèle d'analyse des sentiments

Nous utiliserons TensorFlow Lite Model Maker pour former 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 d'analyse des sentiments TensorFlow Lite prêt à être déployé sur une application mobile.

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

Le déploiement d'un modèle sur Firebase ML est utile pour deux raisons principales :

  1. Nous pouvons garder la taille d'installation de l'application petite 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é soit via la console, soit par programme, à l'aide du SDK Firebase Admin. Dans cette étape, nous allons déployer via la console.

Tout d'abord, ouvrez la console Firebase et cliquez sur Machine Learning dans le panneau de navigation de gauche. Cliquez sur "Commencer" si vous ouvrez cette première fois. Ensuite, accédez à "Personnalisé" et 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 le modèle depuis Firebase ML

Choisir quand télécharger le modèle distant de Firebase dans votre application peut être délicat car les modèles TFLite peuvent devenir relativement volumineux. Idéalement, nous voulons éviter de charger le modèle immédiatement au lancement de l'application, car si notre modèle n'est utilisé que pour une seule fonctionnalité et que l'utilisateur n'utilise jamais cette fonctionnalité, nous aurons téléchargé une quantité importante de données sans raison. Nous pouvons également définir des options de téléchargement telles que la récupération de modèles uniquement lorsqu'ils sont connectés au wifi. Si vous voulez vous assurer que le modèle est disponible même sans connexion réseau, il est important de le regrouper également sans l'application en tant que sauvegarde.

Par souci de simplicité, nous supprimerons le modèle groupé par défaut et téléchargerons toujours un modèle à partir de Firebase lorsque l'application démarre pour la première fois. De cette façon, lors de l'exécution de l'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

Ensuite, appliquez 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 ViewController.swift de viewDidLoad , 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, vous devriez voir un journal dans Xcode indiquant que le modèle distant a été téléchargé avec succès. Essayez de saisir du texte et confirmez que le comportement de l'application n'a pas changé.

7. Intégrez le modèle dans votre application

La bibliothèque de tâches Tensorflow Lite vous aide à intégrer des modèles TensorFlow Lite dans votre application avec seulement quelques lignes de code. Nous allons initialiser une instance TFLNLClassifier à l'aide du modèle TensorFlow Lite téléchargé depuis Firebase. Ensuite, nous l'utiliserons pour classer la saisie de texte des utilisateurs de l'application et afficher le résultat sur l'interface utilisateur.

Ajouter la dépendance

Accédez au Podfile de l'application et ajoutez la bibliothèque de tâches TensorFlow Lite (texte) dans les dépendances de l'application. Assurez-vous d'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

Ensuite, nous chargerons le modèle d'analyse des sentiments téléchargé depuis Firebase à l'aide du 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

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

// TODO: Add an TFLNLClassifier property.

Remplacez TODO par le code suivant :

private var classifier: TFLNLClassifier?

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

// TODO: Initialize an NLClassifier from the downloaded model

Remplacez TODO par le code suivant :

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

Classer le texte

Une fois l'instance de classifier configurée, vous pouvez exécuter l'analyse des sentiments avec 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écutez l'application finale

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

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

classification_result_screen.png

9. Alimentez l'application avec plus de fonctionnalités Firebase

Outre l'hébergement de vos modèles TFLite, Firebase fournit plusieurs autres fonctionnalités pour optimiser vos cas d'utilisation de machine learning :

  • Firebase Performance Monitoring pour mesurer la vitesse d'inférence de votre modèle en cours d'exécution sur l'appareil des utilisateurs.
  • Firebase Analytics pour mesurer les performances de votre modèle en production en mesurant la réaction des utilisateurs.
  • Firebase A/B Testing pour tester plusieurs versions de votre modèle
  • Vous souvenez-vous que nous avons formé deux versions de notre modèle TFLite plus tôt ? Les tests A/B sont un bon moyen de savoir quelle version fonctionne le mieux en production !

Pour en savoir plus sur l'utilisation de ces fonctionnalités dans votre application, consultez les ateliers de programmation ci-dessous :

10. Félicitations !

Dans cet atelier de programmation, vous avez appris à former un modèle TFLite d'analyse des sentiments et à le déployer sur votre application mobile à l'aide de Firebase. Pour en savoir plus sur TFLite et Firebase, consultez d'autres exemples de TFLite et les guides de démarrage de Firebase.

Ce que nous avons couvert

  • TensorFlow Lite
  • Firebase ML

Prochaines étapes

  • Mesurez la vitesse d'inférence de votre modèle avec Firebase Performance Monitoring.
  • Déployez le modèle de Colab directement sur Firebase via 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.
  • Testez A/B le modèle Average Word Vector et le modèle MobileBERT avec Firebase A/B testing.

Apprendre encore plus

Avoir une question?

Signaler des problèmes