juancamval's picture
Update app.py
f9a9420 verified
raw
history blame
4.93 kB
import gradio as gr
import tensorflow as tf
from transformers import pipeline
import os
# Cargar tus modelos de clasificaci贸n (asumiendo que est谩n en la ra铆z del proyecto)
try:
model_transformer_encoder = tf.keras.models.load_model('stacked_transformer_encoder.keras')
model_transformer_positional_encoding = tf.keras.models.load_model('transformer_encoder_pos.keras')
model_simple_rnn = tf.keras.models.load_model('model_simple_rnn.keras')
model_lstm = tf.keras.models.load_model('model_lstm.keras')
print("Modelos de clasificaci贸n cargados correctamente.")
except Exception as e:
print(f"Error al cargar los modelos de clasificaci贸n: {e}")
model_transformer_encoder = None
model_transformer_positional_encoding = None
model_simple_rnn = None
model_lstm = None
# Cargar el pipeline de traducci贸n de Hugging Face (ingl茅s a espa帽ol)
try:
translator_en_es = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
except Exception as e:
print(f"Error al cargar el modelo de traducci贸n (ingl茅s a espa帽ol): {e}")
translator_en_es = None
def clasificar_noticia(texto, modelo_seleccionado):
"""Funci贸n para clasificar el texto usando el modelo seleccionado."""
modelo_a_usar = None
if modelo_seleccionado == "Transformer Encoder Apilado" and model_transformer_encoder is not None:
modelo_a_usar = model_transformer_encoder
elif modelo_seleccionado == "Transformer Positional Encoding" and model_transformer_positional_encoding is not None:
modelo_a_usar = model_transformer_positional_encoding
elif modelo_seleccionado == "Simple RNN" and model_simple_rnn is not None:
modelo_a_usar = model_simple_rnn
elif modelo_seleccionado == "LSTM" and model_lstm is not None:
modelo_a_usar = model_lstm
if modelo_a_usar:
# *** IMPORTANTE: Implementa aqu铆 la l贸gica de preprocesamiento del texto ***
# para que coincida con la entrada esperada por el modelo.
# Esto incluye tokenizaci贸n, padding, etc.
prediction = modelo_a_usar.predict([texto])
# *** IMPORTANTE: Interpreta la salida del modelo para obtener la clase predicha. ***
# Esto depender谩 de c贸mo entrenaste tu modelo.
return f"Clase predicha ({modelo_seleccionado}): {prediction}"
else:
return f"El modelo '{modelo_seleccionado}' no est谩 disponible."
def traducir_texto_en_es(texto_en):
"""Funci贸n para traducir texto de ingl茅s a espa帽ol."""
if translator_en_es:
result = translator_en_es(texto_en)[0]['translation_text']
return result
else:
return "El modelo de traducci贸n (ingl茅s a espa帽ol) no est谩 disponible."
def main():
with gr.Blocks() as demo:
gr.Markdown("# Aplicaci贸n de Clasificaci贸n y Traducci贸n")
with gr.TabbedInterface([
gr.TabItem(
[
gr.Markdown("## Clasificaci贸n de Noticias"),
gr.Textbox(label="Ingresa la noticia aqu铆:", elem_id="input_texto_clasificacion"),
gr.Dropdown(
["Transformer Encoder Apilado", "Transformer Positional Encoding", "Simple RNN", "LSTM"],
label="Selecciona el modelo:",
elem_id="modelo_seleccion"
),
gr.Button("Clasificar", elem_id="boton_clasificar"),
gr.Textbox(label="Resultado de la clasificaci贸n:", elem_id="output_clasificacion")
],
label="Clasificaci贸n de Noticias"
),
gr.TabItem(
[
gr.Markdown("## Traducci贸n de Ingl茅s a Espa帽ol"),
gr.Textbox(label="Ingresa el texto en ingl茅s:", elem_id="input_texto_traduccion"),
gr.Button("Traducir", elem_id="boton_traducir"),
gr.Textbox(label="Texto traducido al espa帽ol:", elem_id="output_traduccion")
],
label="Traducci贸n (Ingl茅s a Espa帽ol)"
)
]) as tabs:
input_texto_clasificacion = gr.get_component("input_texto_clasificacion")
modelo_seleccion = gr.get_component("modelo_seleccion")
output_clasificacion = gr.get_component("output_clasificacion")
boton_clasificar = gr.get_component("boton_clasificar")
boton_clasificar.click(fn=clasificar_noticia, inputs=[input_texto_clasificacion, modelo_seleccion], outputs=output_clasificacion)
input_texto_traduccion = gr.get_component("input_texto_traduccion")
output_traduccion = gr.get_component("output_traduccion")
boton_traducir = gr.get_component("boton_traducir")
boton_traducir.click(fn=traducir_texto_en_es, inputs=input_texto_traduccion, outputs=output_traduccion)
demo.launch()
if __name__ == "__main__":
main()