cesaenv's picture
Update app.py
bac6028 verified
import gradio as gr
import numpy as np
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing.sequence import pad_sequences
import pickle
# Cargar el modelo y el tokenizer
model_path = "modelo.h5"
tokenizer_path = "tokenizer.pkl"
modelo = load_model(model_path)
with open(tokenizer_path, 'rb') as file:
tokenizer = pickle.load(file)
# Diccionario de consejerías y números
consejeria_a_numero = {
'Consejería de Agricultura, Ganadería y Medio Ambiente': 0,
'Consejería de Salud': 1,
'Consejería de Políticas Sociales, Familia, Igualdad y Justicia': 2,
'Consejería de Fomento y Política Territorial': 3,
'Consejería de Desarrollo Económico e Innovación': 4,
'Consejería de Desarrollo Económico e InnovaciónII': 5,
'Consejería de Educación, Formación y Empleo': 6,
'Consejería de Administración Pública y Hacienda': 7,
'Consejería de Presidencia, Relaciones Institucionales y Acción Exterior': 8
}
numero_a_consejeria = {v: k for k, v in consejeria_a_numero.items()}
def predict_consejeria(description):
# Preprocesar la descripción
description_sequence = tokenizer.texts_to_sequences([description])
maxlen = 450
description_padded = pad_sequences(description_sequence, maxlen=maxlen)
# Realizar la predicción
prediction = modelo.predict(description_padded)
predicted_class = np.argmax(prediction, axis=1)[0]
predicted_consejeria = numero_a_consejeria[predicted_class]
return predicted_consejeria
# Definir la función respond adaptada a nuestro modelo
def respond(description):
predicted_consejeria = predict_consejeria(description)
return predicted_consejeria
# Crear la interfaz de Gradio
demo = gr.Interface(
fn=respond,
inputs=gr.Textbox(lines=2, label="Descripción"),
outputs="text",
title="Clasificación de Consejerías",
description="Introduce una descripción para predecir a qué consejería pertenece."
)
if __name__ == "__main__":
demo.launch()