1. Información general
Bienvenido a la clasificación de texto con TensorFlow Lite y el codelab de Firebase. En este laboratorio de código, aprenderá a usar TensorFlow Lite y Firebase para entrenar e implementar un modelo de clasificación de texto en su aplicación. Este laboratorio de programación 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 del Lenguaje Natural (NLP) con amplias aplicaciones como el análisis de sentimientos, el etiquetado de temas, la detección de spam y la detección de intenciones.
El análisis de sentimientos es la interpretación y clasificación de las emociones (positivas, negativas y neutras) dentro de los datos de texto utilizando técnicas de análisis de texto. El análisis de sentimiento permite a las empresas identificar el sentimiento del cliente hacia productos, marcas o servicios en conversaciones y comentarios en línea.
Este tutorial muestra cómo construir un modelo de aprendizaje automático para el análisis de sentimientos, en particular, 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.
lo que aprenderás
- Entrene un modelo de análisis de sentimientos de TF Lite con TF Lite Model Maker
- Implemente modelos TF Lite en Firebase ML y acceda a ellos desde su aplicación
- Realice un seguimiento de los comentarios de los usuarios para medir la precisión del modelo con Firebase Analytics
- Desempeño del modelo de perfil a través de Firebase Performance Monitoring
- Seleccione cuál de los múltiples modelos implementados se carga a través de Remote Config
- Experimente con diferentes modelos a través de Firebase A/B Testing
Lo que necesitarás
- Xcode 11 (o superior)
- CocoaPods 1.9.1 (o superior)
¿Cómo utilizará este tutorial?
¿Cómo calificaría su experiencia con la creación de aplicaciones de Android?
2. Crear proyecto de consola de Firebase
Agregar Firebase al proyecto
- Ve a la consola de Firebase .
- Seleccione Crear nuevo proyecto y nombre su proyecto "Firebase ML iOS Codelab".
3. Obtenga el proyecto de muestra
Descarga el Código
Comience clonando el proyecto de muestra y ejecutando 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 tiene git instalado, también puede descargar el proyecto de muestra desde su página de GitHub o haciendo clic en este enlace . Una vez que haya descargado el proyecto, ejecútelo en Xcode y juegue con la clasificación del texto para tener una idea de cómo funciona.
Configurar base de fuego
Siga la documentación para crear un nuevo proyecto de Firebase. Una vez que tenga su proyecto, descargue el archivo GoogleService-Info.plist
de su proyecto desde la consola Firebase y arrástrelo a la raíz del proyecto Xcode.
Agregue Firebase a su Podfile y ejecute pod install.
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
En el método didFinishLaunchingWithOptions
de su AppDelegate
, importe Firebase en la parte superior del archivo
import FirebaseCore
Y agregue una llamada para configurar Firebase.
FirebaseApp.configure()
Vuelva a ejecutar el proyecto para asegurarse de que la aplicación esté configurada correctamente y no se bloquee al iniciarse.
4. Entrena un modelo de análisis de sentimientos
Usaremos TensorFlow Lite Model Maker para entrenar un modelo de clasificación de texto para predecir la opinión de un texto determinado.
Este paso se presenta como un cuaderno de Python que puede abrir en Google Colab.
Abrir en colaboración
Después de terminar este paso, tendrá un modelo de análisis de opinión de TensorFlow Lite que está listo para implementarse en una aplicación móvil.
5. Implementa un modelo en Firebase ML
La implementación de un modelo en Firebase ML es útil por dos razones principales:
- Podemos mantener el tamaño de instalación de la aplicación pequeño y solo descargar el modelo si es necesario
- El modelo se puede actualizar regularmente y con un ciclo de lanzamiento diferente al de toda la aplicación.
El modelo se puede implementar a través de la consola o mediante programación, usando el SDK de administración de Firebase. En este paso, implementaremos a través de la consola.
Primero, abra Firebase Console y haga clic en Machine Learning en el panel de navegación izquierdo. Haga clic en 'Comenzar' si está abriendo esta primera vez. Luego navegue hasta "Personalizar" y haga clic en el botón "Agregar modelo".
Cuando se le solicite, nombre el modelo sentiment_analysis
y cargue el archivo que descargó de Colab en el paso anterior.
6. Descargar modelo de Firebase ML
Elegir cuándo descargar el modelo remoto de Firebase a su aplicación puede ser complicado, ya que los modelos TFLite pueden crecer relativamente. Idealmente, queremos evitar cargar el modelo inmediatamente cuando se inicia la aplicación, ya que si nuestro modelo se usa solo para una función y el usuario nunca usa esa función, habremos descargado una cantidad significativa de datos sin ningún motivo. También podemos configurar opciones de descarga, como solo buscar modelos cuando está conectado a wifi. Si desea asegurarse de que el modelo esté disponible incluso sin conexión a la red, es importante incluirlo también sin la aplicación como respaldo.
En aras de la simplicidad, eliminaremos el modelo incluido predeterminado y siempre descargaremos un modelo de Firebase cuando la aplicación se inicie por primera vez. De esta forma, al ejecutar el análisis de opiniones, puede estar seguro de que la inferencia se ejecuta con el modelo proporcionado por Firebase.
En la parte superior de ModelLoader.swift
, importe el módulo Firebase.
import FirebaseCore import FirebaseMLModelDownloader
Luego implemente 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
, reemplace la llamada a loadModel()
con 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 }
Vuelva a ejecutar su aplicación. Después de unos segundos, debería ver un inicio de sesión en Xcode que indica que el modelo remoto se ha descargado correctamente. Intente escribir algún texto y confirme que el comportamiento de la aplicación no ha cambiado.
7. Integra el modelo en tu app
La biblioteca de tareas de Tensorflow Lite lo ayuda a integrar modelos de TensorFlow Lite en su aplicación con solo unas pocas líneas de código. Inicializaremos una instancia TFLNLClassifier
usando el modelo TensorFlow Lite descargado de Firebase. Luego lo usaremos para clasificar la entrada de texto de los usuarios de la aplicación y mostrar el resultado en la interfaz de usuario.
Agregar la dependencia
Vaya al Podfile de la aplicación y agregue TensorFlow Lite Task Library (Text) en las dependencias de la aplicación. Asegúrese de agregar la dependencia en la declaración target 'TextClassification'
.
pod 'TensorFlowLiteTaskText', '~> 0.2.0'
Ejecute pod install
para instalar la nueva dependencia.
Inicializar un clasificador de texto
Luego cargaremos el modelo de análisis de sentimiento descargado de Firebase usando el NLClassifier
de la biblioteca de tareas.
ViewController.swift
Declaremos una variable de instancia TFLNLClassifier. En la parte superior del archivo, importa la nueva dependencia:
import TensorFlowLiteTaskText
Encuentre este comentario sobre el método que modificamos en el último paso:
// TODO: Add an TFLNLClassifier property.
Reemplace TODO con el siguiente código:
private var classifier: TFLNLClassifier?
Inicialice la variable textClassifier
con el modelo de análisis de opinión descargado de Firebase. Encuentra este comentario que agregamos en el último paso:
// TODO: Initialize an NLClassifier from the downloaded model
Reemplace TODO con el siguiente código:
let options = TFLNLClassifierOptions()
self.classifier = TFLNLClassifier.nlClassifier(modelPath: customModel.path, options: options)
Clasificar texto
Una vez que se ha configurado la instancia classifier
, puede ejecutar un análisis de opinión con una única llamada de método.
ViewController.swift
En el método classify(text:)
, busque el comentario TODO:
// TODO: Run sentiment analysis on the input text
Reemplace el comentario con 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. Ejecute la aplicación final
Has integrado el modelo de análisis de opiniones en la aplicación, así que vamos a probarlo. Conecte su dispositivo iOS y haga clic en Ejecutar ( ) en la barra de herramientas de Xcode.
La aplicación debería poder predecir correctamente el sentimiento de la reseña de la película que ingresa.
9. Mejora la aplicación con más funciones de Firebase
Además de alojar sus modelos TFLite, Firebase ofrece otras funciones para potenciar sus casos de uso de aprendizaje automático:
- Firebase Performance Monitoring para medir la velocidad de inferencia de su modelo que se ejecuta en el dispositivo de los usuarios.
- Firebase Analytics para medir qué tan bien se desempeña su modelo en producción midiendo la reacción del usuario.
- Pruebas A/B de Firebase para probar varias versiones de su modelo
- ¿Recordaste que entrenamos dos versiones de nuestro modelo TFLite anteriormente? ¡Las pruebas A/B son una buena manera de averiguar qué versión funciona mejor en producción!
Para obtener más información sobre cómo aprovechar estas funciones en su aplicación, consulte los laboratorios de código a continuación:
10. ¡Felicitaciones!
En este laboratorio de programación, aprendió a entrenar un modelo TFLite de análisis de sentimientos y a implementarlo en su aplicación móvil con Firebase. Para obtener más información sobre TFLite y Firebase, eche un vistazo a otras muestras de TFLite y las guías de inicio de Firebase.
Lo que hemos cubierto
- TensorFlow Lite
- Base de fuego ML
Próximos pasos
- Mida la velocidad de inferencia de su modelo con Firebase Performance Monitoring.
- Implemente el modelo de Colab directamente en Firebase a través de la API de administración de modelos de aprendizaje automático de Firebase.
- Agregue un mecanismo para permitir que los usuarios envíen comentarios sobre el resultado de la predicción y use Firebase Analytics para realizar un seguimiento de los comentarios de los usuarios.
- Realice pruebas A/B del modelo Vector de palabra promedio y el modelo MobileBERT con pruebas A/B de Firebase.
Aprende más
- Documentación de aprendizaje automático de Firebase
- Documentación de TensorFlow Lite
- Medir el rendimiento de la aplicación con Firebase
- Pruebas A/B de modelos con Firebase