1. Antes de comenzar
En este codelab, aprenderás a actualizar el modelo de clasificación de texto creado a partir del conjunto de datos original de comentarios spam de blogs, pero mejorado con comentarios propios para que puedas tener un modelo que funcione con tus datos.
Requisitos previos
Este codelab es parte de la ruta de aprendizaje Comienza a usar la clasificación de texto en apps de Flutter. Los codelabs de esta ruta de aprendizaje son secuenciales. La app y el modelo en el que trabajarás deben haberse creado previamente mientras trabajabas con los codelabs. Si aún no has completado las actividades anteriores, hazlo ahora antes de continuar:
- El codelab Entrena un modelo de detección de comentarios spam con Model Maker de TensorFlow Lite
- El codelab Crea una app de Flutter para detectar comentarios spam
Qué aprenderás
- Cómo actualizar el modelo de clasificación de texto que creaste en el codelab Entrena un modelo de detección de comentarios spam con Model Maker de TensorFlow Lite
- Cómo personalizar tu modelo para que bloquee el spam más frecuente en la app
Requisitos
- La app de Flutter y el modelo de filtro de spam que observaste y creaste en las actividades anteriores.
2. Mejora la clasificación de texto
- Para obtener el código, clona este repositorio y carga la app desde la carpeta
tfserving-flutter/codelab2/finished
. - Después de iniciar la imagen de Docker de TensorFlow Serving, en la app que creaste, ingresa
buy my book to learn online trading
y, luego, haz clic en gRPC > Classify.
La app genera una puntuación de spam baja, porque no hay muchos casos de online trading en el conjunto de datos original y el modelo no ha aprendido que esto es spam. En este codelab, actualizarás el modelo con datos nuevos para que identifique la misma oración como spam.
3. Edita el archivo CSV
Para entrenar el modelo original, se creó un conjunto de datos como un archivo CSV (lmblog_comments.csv
), que contiene casi mil comentarios etiquetados como spam o no spam. (Puedes abrirlo en cualquier editor de texto si deseas inspeccionarlo).
La composición del archivo CSV consiste en que la primera fila describa las columnas etiquetadas como commenttext
y spam
. Cada fila posterior sigue este formato:
A la etiqueta de la derecha se le asigna un valor true
si es spam y uno false
si no es spam. Por ejemplo, la tercera línea se considera spam.
Si las personas envían spam a tu sitio web con mensajes sobre comercio en línea, puedes agregar ejemplos de comentarios de spam en la parte inferior de tu sitio web. Por ejemplo:
online trading can be highly highly effective,true online trading can be highly effective,true online trading now,true online trading here,true online trading for the win,true
- Guarda el archivo con un nombre nuevo, como
lmblog_comments.csv
, de manera que puedas usarlo para entrenar un modelo nuevo.
Para el resto de este codelab, usarás el ejemplo proporcionado, editado y alojado en Cloud Storage con las actualizaciones de “comercio en línea”. Si deseas usar tu propio conjunto de datos, puedes cambiar la URL en el código.
4. Vuelve a entrenar el modelo con los datos nuevos
Para volver a entrenar el modelo, simplemente puedes reutilizar el código de (SpamCommentsModelMaker.ipynb
), pero dirigirlo al nuevo conjunto de datos CSV, que se llama lmblog_comments_extras.csv
. Si quieres el notebook completo con el contenido actualizado, puedes encontrarlo como SpamCommentsUpdateModelMaker.ipynb.
.
Si tienes acceso a Colaboratory, puedes iniciarlo directamente. De lo contrario, obtén el código en el repositorio y ejecútalo en el entorno de notebook que prefieras.
El código actualizado es similar a este fragmento de código:
training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',
origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
lmblog_comments_extras.csv',
extract=False)
Cuando entrenes, deberías ver que el modelo aún se entrena con un alto nivel de exactitud:
Comprime toda la carpeta de /mm_update_spam_savedmodel
y descarga el archivo mm_update_spam_savedmodel.zip
generado.
# Rename the SavedModel subfolder to a version number
!mv /mm_update_spam_savedmodel/saved_model /mm_update_spam_savedmodel/123
!zip -r mm_update_spam_savedmodel.zip /mm_update_spam_savedmodel/
5. Inicia Docker y actualiza la app de Flutter
- Descomprime el archivo
mm_update_spam_savedmodel.zip
descargado en una carpeta. Luego, detén la instancia de contenedor de Docker del codelab anterior y vuelve a iniciarla, pero reemplaza el marcador de posiciónPATH/TO/UPDATE/SAVEDMODEL
por la ruta absoluta de la carpeta donde se alojan los archivos descargados:
docker run -it --rm -p 8500:8500 -p 8501:8501 -v "PATH/TO/UPDATE/SAVEDMODEL:/models/spam-detection" -e MODEL_NAME=spam-detection tensorflow/serving
- Abre el archivo
lib/main.dart
con tu editor de código favorito y, luego, busca la parte que define las variablesinputTensorName
youtTensorName
:
const inputTensorName = 'input_3';
const outputTensorName = 'dense_5';
- Reasigna la variable
inputTensorName
a un valorinput_1'
y la variableoutputTensorName
a un valor'dense_1'
:
const inputTensorName = 'input_1';
const outputTensorName = 'dense_1';
- Copia el archivo
vocab.txt
que descargaste en la carpetalib/assets/
para reemplazar el existente. - Quita manualmente la app de Flutter de clasificación de texto de Android Emulator.
- Ejecuta el comando
'flutter run'
en la terminal para iniciar la app. - En la app, ingresa
buy my book to learn online trading
y haz clic en gRPC > Classify.
Ahora el modelo mejoró la detección de buy my book to online trading como spam.
6. Felicitaciones
Volviste a entrenar el modelo con datos nuevos, lo integraste a la app de Flutter y actualizaste la funcionalidad para detectar nuevas oraciones de spam.