import numpy as np
import gradio as gr
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import load_model
import pickle
---------- CARGA DE MODELO Y TOKENS ----------
Cargar modelo (ajusta el nombre si no es un .h5 o si usas solo pesos)
Si usas solo los pesos, primero debes definir la arquitectura del modelo y luego cargar los pesos.
Aquí asumimos que el modelo ya ha sido cargado correctamente.
model = load_model("mi_modelo.h5") # O define arquitectura y luego: model.load_weights("mis_pesos.h5")
Cargar tokenizer
with open("tokenizer.pkl", "rb") as f:
tokenizer = pickle.load(f)
Define las longitudes máximas usadas en el entrenamiento
max_story_len = 100 # Cambia por la longitud real usada
max_question_len = 20 # Cambia por la longitud real usada
story_padded = pad_sequences(story_seq, maxlen=max_story_len)
question_padded = pad_sequences(question_seq, maxlen=max_question_len)
# Predicción
pred_results = model.predict([story_padded, question_padded])
val_max = np.argmax(pred_results[0])
# Buscar palabra predicha
predicted_word = next((key for key, val in tokenizer.word_index.items() if val == val_max), "Desconocido")
return predicted_word
---------- GRADIO UI ----------
iface = gr.Interface(
fn=predict_answer,
inputs=["text", "text"],
outputs="text",
live=False,
title="Question Answering Chatbot",
description="Enter a story and a question to get an answer from the model."
)