1. Descripción general

Te damos la bienvenida al codelab de clasificación de texto con TensorFlow Lite y Firebase. En este codelab, aprenderás a usar TensorFlow Lite y Firebase para entrenar e implementar un modelo de clasificación de texto en tu app. Este codelab se basa en este ejemplo de TensorFlow Lite.
La clasificación de texto es el proceso de asignar etiquetas o categorías al texto según su contenido. Es una de las tareas fundamentales en el procesamiento de lenguaje natural (PLN) con aplicaciones amplias, como el análisis de sentimiento, el etiquetado de temas, la detección de spam y la detección de intenciones.
El análisis de sentimiento es la interpretación y clasificación de emociones (positivas, negativas y neutrales) dentro de los datos de texto mediante técnicas de análisis de texto. El análisis de opiniones permite a las empresas identificar la opinión de los clientes sobre productos, marcas o servicios en conversaciones y comentarios en línea.
En este instructivo, se muestra cómo compilar un modelo de aprendizaje automático para el análisis de sentimiento, en particular, cómo clasificar el texto como positivo o negativo. Este es un ejemplo de clasificación binaria o de dos clases, un tipo de problema de aprendizaje automático importante y ampliamente aplicable.
Qué aprenderás
- Entrenar un modelo de análisis de sentimiento de TF Lite con TF Lite Model Maker
- Implementar modelos de TF Lite en Firebase ML y acceder a ellos desde tu app
- Realizar un seguimiento de los comentarios de los usuarios para medir la precisión del modelo con Firebase Analytics
- Crear perfiles del rendimiento del modelo con Firebase Performance Monitoring
- Seleccionar cuál de los múltiples modelos implementados se carga a través de Remote Config
- Experimentar con diferentes modelos a través de Firebase A/B Testing
Requisitos
- Xcode 11 (o una versión posterior)
- CocoaPods 1.9.1 (o una versión posterior)
¿Cómo usarás este instructivo?
¿Cómo calificarías tu experiencia cuando compilas apps para Android?
2. Crea un proyecto de Firebase console
Agrega Firebase al proyecto
- Dirígete a la Firebase console.
- Selecciona Crear proyecto nuevo y asigna a tu proyecto el nombre "Firebase ML iOS Codelab".
3. Obtén el proyecto de muestra
Descarga el código
Para comenzar, clona el proyecto de muestra y ejecuta pod update en el directorio del proyecto:
git clone https://github.com/FirebaseExtended/codelab-textclassification-ios.git cd codelab-textclassification-ios pod install --repo-update
Si no tienes git instalado, también puedes descargar el proyecto de muestra desde su página de GitHub o haciendo clic en este vínculo. Una vez que hayas descargado el proyecto, ejecútalo en Xcode y juega con la clasificación de texto para familiarizarte con su funcionamiento.
Configura Firebase
Sigue la documentación para crear un proyecto de Firebase nuevo. Una vez que tengas el proyecto, descarga el archivo GoogleService-Info.plist del proyecto desde Firebase console y arrástralo a la raíz del proyecto de Xcode.

Agrega Firebase a tu Podfile y ejecuta pod install.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
En el método didFinishLaunchingWithOptions de tu AppDelegate, importa Firebase en la parte superior del archivo.
import FirebaseCore
Y agrega una llamada para configurar Firebase.
FirebaseApp.configure()
Vuelve a ejecutar el proyecto para asegurarte de que la app esté configurada correctamente y no falle en el lanzamiento.
4. Entrena un modelo de análisis de opiniones
Usaremos TensorFlow Lite Model Maker para entrenar un modelo de clasificación de texto que prediga la opinión de un texto determinado.
Este paso se presenta como un notebook de Python que puedes abrir en Google Colab.
Abrir en Colab
Después de completar este paso, tendrás un modelo de análisis de sentimiento de TensorFlow Lite listo para implementarse en una app para dispositivos móviles.
5. Implementa un modelo en Firebase ML
La implementación de un modelo en Firebase ML es útil por dos motivos principales:
- Podemos mantener pequeño el tamaño de instalación de la app y descargar el modelo solo si es necesario.
- El modelo se puede actualizar con regularidad y con un ciclo de lanzamiento diferente al de toda la app.
El modelo se puede implementar a través de la consola o de manera programática con el SDK de Firebase Admin. En este paso, realizaremos la implementación a través de la consola.
Primero, abre el Firebase console y haz clic en Aprendizaje automático en el panel de navegación izquierdo. Haz clic en "Comenzar" si es la primera vez que lo abres. Luego, navega a "Personalizado" y haz clic en el botón "Agregar modelo".
Cuando se te solicite, asigna al modelo el nombre sentiment_analysis y sube el archivo que descargaste de Colab en el paso anterior.

6. Descarga el modelo de Firebase ML
Elegir cuándo descargar el modelo remoto de Firebase en tu app puede ser complicado, ya que los modelos de TFLite pueden crecer de forma relativamente grande. Lo ideal es evitar cargar el modelo de inmediato cuando se inicia la app, ya que, si nuestro modelo se usa para una sola función y el usuario nunca la usa, habremos descargado una cantidad significativa de datos sin motivo. También podemos configurar opciones de descarga, como solo recuperar modelos cuando se está conectado a Wi-Fi. Si quieres asegurarte de que el modelo esté disponible incluso sin conexión de red, es importante que también lo agrupes sin la app como copia de seguridad.
Para simplificar, quitaremos el modelo agrupado predeterminado y siempre descargaremos un modelo de Firebase cuando la app se inicie por primera vez. De esta manera, cuando ejecutes el análisis de sentimiento, podrás asegurarte de que la inferencia se ejecute con el modelo proporcionado por Firebase.
En la parte superior de ModelLoader.swift, importa el módulo de Firebase.
import FirebaseCore import FirebaseMLModelDownloader
Luego, implementa los siguientes métodos.
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))
}
}
}
En viewDidLoad de ViewController.swift, reemplaza la llamada a loadModel() por nuestro nuevo método de descarga de modelos.
// 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
}
Vuelve a ejecutar la app. Después de unos segundos, deberías ver un registro en Xcode que indica que el modelo remoto se descargó correctamente. Intenta escribir texto y confirma que el comportamiento de la app no haya cambiado.
7. Integra el modelo en tu app
La biblioteca de tareas de TensorFlow Lite te ayuda a integrar modelos de TensorFlow Lite en tu app con solo unas pocas líneas de código. Inicializaremos una instancia de TFLNLClassifier con el modelo de TensorFlow Lite descargado de Firebase. Luego, la usaremos para clasificar la entrada de texto de los usuarios de la app y mostrar el resultado en la IU.
Cómo agregar la dependencia
Ve al Podfile de la app y agrega la biblioteca de tareas de TensorFlow Lite (texto) en las dependencias de la app. Asegúrate de agregar la dependencia en la declaración target 'TextClassification'.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
Ejecuta pod install para instalar la nueva dependencia.
Inicializa un clasificador de texto
Luego, cargaremos el modelo de análisis de sentimiento descargado de Firebase con NLClassifier de la biblioteca de tareas.
ViewController.swift
Declaremos una variable de instancia de TFLNLClassifier. En la parte superior del archivo, importa la nueva dependencia:
import TensorFlowLiteTaskText
Busca este comentario sobre el método que modificamos en el último paso:
// TODO: Add a TFLNLClassifier property.
Reemplaza el TODO por el siguiente código:
private var classifier: TFLNLClassifier?
Inicializa la variable textClassifier con el modelo de análisis de sentimiento descargado de Firebase. Busca este comentario que agregamos en el último paso:
// TODO: Initialize an NLClassifier from the downloaded model
Reemplaza el TODO por el siguiente código:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
Clasificar texto
Una vez que se haya configurado la instancia classifier, puedes ejecutar el análisis de sentimiento con una sola llamada de método.
ViewController.swift
En el método classify(text:), busca el comentario TODO:
// TODO: Run sentiment analysis on the input text
Reemplaza el comentario por el siguiente código:
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. Ejecuta la app final
Integraste el modelo de análisis de sentimiento a la app, así que probémoslo. Conecta tu dispositivo iOS y haz clic en Ejecutar (
) en la barra de herramientas de Xcode.
La app debería poder predecir correctamente la opinión de la reseña de la película que ingreses.

9. Potencia la app con más funciones de Firebase
Además de alojar tus modelos de TFLite, Firebase proporciona varias otras funciones para potenciar tus casos de uso de aprendizaje automático:
- Firebase Performance Monitoring para medir la velocidad de inferencia del modelo que se ejecuta en el dispositivo de los usuarios
- Firebase Analytics para medir el rendimiento del modelo en producción mediante la medición de la reacción del usuario
- Firebase A/B Testing para probar varias versiones de tu modelo
- ¿Recuerdas que entrenamos dos versiones de nuestro modelo de TFLite antes? Las pruebas A/B son una buena manera de averiguar qué versión tiene mejor rendimiento en producción.
Para obtener más información sobre cómo aprovechar estas funciones en tu app, consulta los siguientes codelabs:
10. ¡Felicitaciones!
En este codelab, aprendiste a entrenar un modelo de TFLite de análisis de sentimiento y a implementarlo en tu app para dispositivos móviles con Firebase. Para obtener más información sobre TFLite y Firebase, consulta otros ejemplos de TFLite y las guías de introducción a Firebase.
Temas abordados
- TensorFlow Lite
- Firebase ML
Próximos pasos
- Mide la velocidad de inferencia del modelo con Firebase Performance Monitoring.
- Implementa el modelo de Colab directamente en Firebase a través de la API de Firebase ML Model Management.
- Agrega un mecanismo para permitir que los usuarios envíen comentarios sobre el resultado de la predicción y usa Firebase Analytics para realizar un seguimiento de los comentarios de los usuarios.
- Realiza pruebas A/B del modelo de vector de palabras promedio y del modelo de MobileBERT con Firebase A/B Testing.
Más información
- Documentación de Firebase Machine Learning
- Documentación de TensorFlow Lite
- Mide el rendimiento de la app con Firebase
- Modelos de pruebas A/B con Firebase