juancamval commited on
Commit
5bce286
·
verified ·
1 Parent(s): 0ba5bf2

Update app.py

Browse files

cargo de modelos de clasificacion

Files changed (1) hide show
  1. app.py +82 -39
app.py CHANGED
@@ -1,41 +1,84 @@
1
- from transformers import pipeline
2
  import gradio as gr
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
- # Define el modelo de traducción inglés-español
5
- modelo_traduccion = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
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()