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()