from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB # Cargar dataset with open("intents.json") as f: data = json.load(f) X = [d["text"] for d in data] y = [d["intent"] for d in data] # Vectorizar texto vectorizer = CountVectorizer() X_vect = vectorizer.fit_transform(X) # Entrenar modelo clf = MultinomialNB() clf.fit(X_vect, y) responses = { "greet": "¡Hola! ¿En qué puedo ayudarte?", "goodbye": "¡Hasta luego! Que tengas un buen día.", "ask_hours": "Estamos abiertos de lunes a viernes de 9 a 18h.", "ask_registration": "Para registrarte, visita nuestra web y completa el formulario." } def chatbot_response(text): X_new = vectorizer.transform([text]) intent = clf.predict(X_new)[0] return responses.get(intent, "Lo siento, no entendí tu pregunta.") while True: msg = input("Tú: ") if msg.lower() in ["salir", "adiós"]: print("Bot:", responses["goodbye"]) break print("Bot:", chatbot_response(msg)) import gradio as gr def chat_gradio(message): return chatbot_response(message) iface = gr.Interface( fn=chat_gradio, inputs="text", outputs="text", title="Chatbot Demo", description="Demo de chatbot entrenado con anotaciones simples" ) iface.launch()