Loading repository data…
Loading repository data…
IngCarlaPezzone / repository
Este es un proyecto que he creado desde cero hasta deployarlo. Consiste en hacer webscraping para tomar los datos, pasando por la limpieza de los datos y el modelado utilizando redes secuenciales. Luego implementé una interfaz en FastApi, en Streamlit y finalmente lo deploye en Render y lo conecté a una base de datos Postgres.
Este proyecto consiste en la clasificación de textos con un modelo de redes neuronales utilizando LSTM bidireccionales. Para facilitar la interacción con el modelo, se implementó una interfaz usando FastAPI. Luego, en las actualizaciones posteriores, se agregó una interfaz de Streamlit y finalmente el deploy en Render.
Para el entrenamiento se recolectaron 150 URL de wikipedia de tres categorías distintas. Para obtener el listado de las URL se utilizó ChatGPT y con python se automatizó la extracción de los textos, la limpieza y generación del conjunto de datos limpio.
Finalmente, se creó una API donde se puede ingresar un nuevo texto y solicitar la clasificación del mismo.
Se adjunta una Colab (se puede abrir directamente con el botón de Colab) donde explica paso a paso para:
Para realizar la interacción con FastAPI y/o con Streamlit se necesita clonar el repositorio. Para ello, elegir una carpeta donde se quiera guardar el proyecto y abrir una terminal en dicha ubicación.
Hacer git clone https://github.com/IngCarlaPezzone/MI_PROYECTO_Clasificador_de_Texto_NLP_FastAPI.git para clonar el proyecto.
En caso de querer interactuar con el modelo desde la interfaz que proporciona FastAPI, se deberán seguir los siguientes pasos:
Python -m venv envvenv\Scripts\activatepip install -r requirements.txtPesos_modelo.h5 y tokenizador.json y guardarlo en la carpeta de trabajo.uvicorn api:app --reloadhttp://XXX.X.X.X:XXXX (se muestra en la consola)./docs para acceder a ReDoc.Streamlit es una biblioteca de Python que permite crear aplicaciones web interactivas y visualizaciones de datos de manera rápida y sencilla.
Para poder usarlo, se deberán seguir los siguientes pasos:
streamlit run st_app.py desde consola. Se abrirá una nueva pestaña en el navegador.Así se ve la interfaz:

Se hizo el deploy de la aplicación realizada en streamlit en render.com que es una nube unificada para crear y ejecutar aplicaciones y sitios web y despliegues automáticos desde Git. Para poder deployar este proyecto se siguieron estos pasos:
render.com, conectado al presente repositorio y utilizando Docker como Runtime.Se agregaron nuevas funcionalidades a la aplicación de streamlit para guardar el texto ingresado por el usuario, la predicción del modelo y la calificación de la predicción. En este último punto se agregaron secciones a la aplicación para que el usuario califique la predicción como 👍 o 👎. En caso de que el modelo se haya equivocado, y el usuario califique como negativo, se permite al usuario que indique cuál era la predicción real del texto ingresado. De esta manera, se guardan todos estos datos para evaluar el modelo y para un futuro reentrenamiento del modelo.
Para hacer esta integración con la base de datos se realizaron los siguientes pasos:
render.com.pgAdmin conectada a la External Database URL para conectar con la base de datos de Render. Allí se creó una nueva tabla predicciones con los campos id, texto, resultado, probabilidad_formateada y calificacion donde se almacenan los datos generados por la aplicación.A continuación, se muestran algunas imágenes de la aplicación:


Aca se muestran las opciones distintas a la que predijo el modelo. Porque si califica la predicción como 👎 quiere decir que esa categoría no era correcta y debe elegir por alguna de las otras dos categorías.
