Spaces:
Runtime error
Runtime error
Update app.py
Browse filescargo de modelos de clasificacion
app.py
CHANGED
@@ -1,41 +1,84 @@
|
|
1 |
-
from transformers import pipeline
|
2 |
import gradio as gr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
def traducir_texto(texto_en):
|
8 |
-
"""
|
9 |
-
Traduce directamente el texto de entrada del inglés al español.
|
10 |
-
"""
|
11 |
-
if not texto_en.strip():
|
12 |
-
return ""
|
13 |
-
try:
|
14 |
-
resultado = modelo_traduccion(texto_en)
|
15 |
-
return resultado[0]['translation_text']
|
16 |
-
except Exception as e:
|
17 |
-
return f"Error en la traducción: {e}"
|
18 |
-
|
19 |
-
def borrar_entrada(texto_entrada):
|
20 |
-
"""
|
21 |
-
Borra el texto del cuadro de texto de entrada.
|
22 |
-
"""
|
23 |
-
return ""
|
24 |
-
|
25 |
-
with gr.Blocks() as interfaz_traductor:
|
26 |
-
"""
|
27 |
-
Define la interfaz gráfica de la aplicación de traducción de inglés a español (básica).
|
28 |
-
"""
|
29 |
-
gr.Markdown("# Traductor Inglés a Español")
|
30 |
-
with gr.Row():
|
31 |
-
with gr.Column():
|
32 |
-
texto_entrada_en = gr.Textbox(label="Texto en inglés", placeholder="Pega aquí el texto en inglés", lines=10)
|
33 |
-
boton_borrar = gr.Button("Borrar todo")
|
34 |
-
with gr.Column():
|
35 |
-
texto_salida_es = gr.Textbox(label="Traducción al español", placeholder="La traducción aparecerá aquí", interactive=False, lines=10)
|
36 |
-
gr.Markdown("*Puedes copiar el texto traducido seleccionándolo y usando Ctrl+C (o Cmd+C en macOS).*")
|
37 |
-
|
38 |
-
texto_entrada_en.change(traducir_texto, inputs=texto_entrada_en, outputs=texto_salida_es)
|
39 |
-
boton_borrar.click(borrar_entrada, inputs=texto_entrada_en, outputs=texto_entrada_en)
|
40 |
-
|
41 |
-
interfaz_traductor.launch()
|
|
|
|
|
1 |
import gradio as gr
|
2 |
+
import tensorflow as tf
|
3 |
+
from transformers import pipeline
|
4 |
+
import os
|
5 |
+
|
6 |
+
# Cargar tus modelos de clasificación (asumiendo que están en la raíz del proyecto)
|
7 |
+
try:
|
8 |
+
model_transformer_encoder = tf.keras.models.load_model('stacked_transformer_encoder.keras')
|
9 |
+
model_transformer_positional_encoding = tf.keras.models.load_model('transformer_encoder_pos.keras')
|
10 |
+
model_simple_rnn = tf.keras.models.load_model('model_simple_rnn.keras')
|
11 |
+
model_lstm = tf.keras.models.load_model('model_lstm.keras')
|
12 |
+
print("Modelos de clasificación cargados correctamente.")
|
13 |
+
except Exception as e:
|
14 |
+
print(f"Error al cargar los modelos de clasificación: {e}")
|
15 |
+
model_transformer_encoder = None
|
16 |
+
model_transformer_positional_encoding = None
|
17 |
+
model_simple_rnn = None
|
18 |
+
model_lstm = None
|
19 |
+
|
20 |
+
# Cargar el pipeline de traducción de Hugging Face (inglés a español)
|
21 |
+
try:
|
22 |
+
translator_en_es = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
|
23 |
+
except Exception as e:
|
24 |
+
print(f"Error al cargar el modelo de traducción (inglés a español): {e}")
|
25 |
+
translator_en_es = None
|
26 |
+
|
27 |
+
def clasificar_noticia(texto, modelo_seleccionado):
|
28 |
+
"""Función para clasificar el texto usando el modelo seleccionado."""
|
29 |
+
modelo_a_usar = None
|
30 |
+
if modelo_seleccionado == "Transformer Encoder Apilado" and model_transformer_encoder is not None:
|
31 |
+
modelo_a_usar = model_transformer_encoder
|
32 |
+
elif modelo_seleccionado == "Transformer Positional Encoding" and model_transformer_positional_encoding is not None:
|
33 |
+
modelo_a_usar = model_transformer_positional_encoding
|
34 |
+
elif modelo_seleccionado == "Simple RNN" and model_simple_rnn is not None:
|
35 |
+
modelo_a_usar = model_simple_rnn
|
36 |
+
elif modelo_seleccionado == "LSTM" and model_lstm is not None:
|
37 |
+
modelo_a_usar = model_lstm
|
38 |
+
|
39 |
+
if modelo_a_usar:
|
40 |
+
# *** IMPORTANTE: Implementa aquí la lógica de preprocesamiento del texto ***
|
41 |
+
# para que coincida con la entrada esperada por el modelo.
|
42 |
+
# Esto incluye tokenización, padding, etc.
|
43 |
+
prediction = modelo_a_usar.predict([texto])
|
44 |
+
# *** IMPORTANTE: Interpreta la salida del modelo para obtener la clase predicha. ***
|
45 |
+
# Esto dependerá de cómo entrenaste tu modelo.
|
46 |
+
return f"Clase predicha ({modelo_seleccionado}): {prediction}"
|
47 |
+
else:
|
48 |
+
return f"El modelo '{modelo_seleccionado}' no está disponible."
|
49 |
+
|
50 |
+
def traducir_texto_en_es(texto_en):
|
51 |
+
"""Función para traducir texto de inglés a español."""
|
52 |
+
if translator_en_es:
|
53 |
+
result = translator_en_es(texto_en)[0]['translation_text']
|
54 |
+
return result
|
55 |
+
else:
|
56 |
+
return "El modelo de traducción (inglés a español) no está disponible."
|
57 |
+
|
58 |
+
def main():
|
59 |
+
with gr.Blocks() as demo:
|
60 |
+
gr.Markdown("# Aplicación de Clasificación y Traducción")
|
61 |
+
|
62 |
+
with gr.TabbedInterface() as tabs:
|
63 |
+
with gr.TabItem("Clasificación de Noticias"):
|
64 |
+
gr.Markdown("## Clasificación de Noticias")
|
65 |
+
input_texto_clasificacion = gr.Textbox(label="Ingresa la noticia aquí:")
|
66 |
+
modelo_seleccion = gr.Dropdown(
|
67 |
+
["Transformer Encoder Apilado", "Transformer Positional Encoding", "Simple RNN", "LSTM"],
|
68 |
+
label="Selecciona el modelo:"
|
69 |
+
)
|
70 |
+
output_clasificacion = gr.Textbox(label="Resultado de la clasificación:")
|
71 |
+
boton_clasificar = gr.Button("Clasificar")
|
72 |
+
boton_clasificar.click(fn=clasificar_noticia, inputs=[input_texto_clasificacion, modelo_seleccion], outputs=output_clasificacion)
|
73 |
+
|
74 |
+
with gr.TabItem("Traducción (Inglés a Español)"):
|
75 |
+
gr.Markdown("## Traducción de Inglés a Español")
|
76 |
+
input_texto_traduccion = gr.Textbox(label="Ingresa el texto en inglés:")
|
77 |
+
output_traduccion = gr.Textbox(label="Texto traducido al español:")
|
78 |
+
boton_traducir = gr.Button("Traducir")
|
79 |
+
boton_traducir.click(fn=traducir_texto_en_es, inputs=input_texto_traduccion, outputs=output_traduccion)
|
80 |
+
|
81 |
+
demo.launch()
|
82 |
|
83 |
+
if __name__ == "__main__":
|
84 |
+
main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|