hola, gracias por el tutorial. me funcionaba perfectamente hasta ayer. hoy me sale un error con json: Expecting `,' delimiter: line 163 column 4 (char 3909). he bajado tus archivos de nuevo y sale el mismo error... han cambiado alguna cosa? gracias
hola quisiera saver si me podrias ayudar con este problema para hacer el entrenamiento me sale este error ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (10, 2) + inhomogeneous part. me podrias ayudar
yo no recuerdo copiar nada mal, sin embargo, y si aun te sirve, esta fue mi solución al mismo error: for document in documents: bag = [] word_patterns = document[0] word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns] for word in words: bag.append(1) if word in word_patterns else bag.append(0) output_row = list(output_empty) output_row[classes.index(document[1])] = 1 training.append([np.array(bag), np.array(output_row)]) random.shuffle(training) training = np.array(training, dtype=object) print(training)
Hola en la linea 29 de la ñarte del entrenamiemto en la que pone: for intent in intents[intents]: me salta un error que pone: name 'intents' is not defined
Hola, tengo un problema a la hora de compilar el codigo para ver el array de la lista training. tal parece que hay una inhomogeneidad en la lista training pero no llego al error, cualquier ayuda se agradece
Espero hayas solucionado el problema, sino, tuve el mismo error y lo solucioné cambiando un poco como se crea el array: "training = np.array(training, dtype=object)". Esto debería solucionar el problema
y si al chat bot lo haces mas elocuente con formas de describir el texto que el envías con algoritmos para ampliar y conversar de forma más empatizante con el usuario.
muy bueno el video , te hago una consulta, el archivo Json "intents.json" tiene un nombre? me refiero a como podria buscar en internet un json con muchas respuestas elaboradas
Pero hay alguna forma de conectarlo con whatsapp y que las respuestas que de sean porque hemos agregado una base de datos de nuestros servicios ofrecidos, por ejemplo.
Hola. tengo una duda. me sale este erorr al querer hacer el proceso de entrenamiento. np.array(training) ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. que podria ser?
yo no recuerdo copiar nada mal, sin embargo, y si aun te sirve, esta fue mi solución al mismo error: for document in documents: bag = [] word_patterns = document[0] word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns] for word in words: bag.append(1) if word in word_patterns else bag.append(0) output_row = list(output_empty) output_row[classes.index(document[1])] = 1 training.append([np.array(bag), np.array(output_row)]) random.shuffle(training) training = np.array(training, dtype=object) print(training)
@@rgomez09bro quizá algo tarde pero tú respuesta le salvó de verdad gracias de corazón entendiste el problema que muchos teníamos y bueno agraecete de corazón
hola que tal, muy buen video pero tengo algunas dudas y indagando me sale que es por las versiones del tensorflow, python y otros, e intentado con las nuevas versiones donde le agregue un dtype=object pero como resultado me da (6, 2) eso nada mas, me podrias brindar las versiones que usaste para el video
Buenas. Fijese que no puedo areglar algunos errores que me salen en subrayados en color amarillo Por ejemplo Import numpy as np Me sale en color amarillo y quice darle solucionar pero no me soluciona Que ago en ese caso ?
El import va con minúscula no sé si es algo del comentario que pusiste o del código prueba a ejecutarlo en otro editor porque también puede tener que ver con el linter y reinstala la librería
hola, tengo una consulta, estuve mirando el codigo y ajustándolo de acuerdo al enfoque que quiero del chatbot, sucede que al ejecutarlo se queda pegado en la 2da respuesta, por mas que ajuste patrones y respuestas, no hay forma de avanzar en la conversación ¿como puedo arreglar ese problema?
Pues me parece algo curioso. Puedes probar a ponerle un número determinado de mensajes, tratar de usar caracteres internacionales en los patrones y las respuestas e ir imprimiendo parámetros por cada respuesta para ver dónde está el error y si al menos hace bien las predicciones. Espero que lo soluciones
hola, tengo problemas con la librería keras, instale todo pero me sigue saliendo este error from keras.models import Sequential from keras.layers import Dense, Activation, Dropout from keras.optimizers import sgd en estas lineas
Buenos dias!, primero que nada muchas gracias por el increible contenido, tenia una duda a nivel de recomendación, que otros modelos de ML podrias recomendar para usar en el chatbot, con otras librerias distintas a keras y que de igual manera logre tener un buen desempeño en la clasificacion. Gracias, saludos!!!
@@DimensionPardo Hola que tal agradezco el vídeo, estoy iniciando en Python y la explicación es muy buena, me encuentro en la misma situación que @end123b4 A mi me sale el siguiente error ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (6, 2) + inhomogeneous part. Agradezco el apoyo
cuando intento poner un nuevo tag no me lo reconoce :c ayuda AYUDAAAAAAAAAA "tag": "escuela", "patterns": ["cuál es tu escuela?", "a qué escuela vas?"], "responses": ["Universidad x", "x"] }
Hola he utilizado este código para la realización de un IA chatbot pero se me ha presentado el problema que si quiero agregar más de 5 o 7 patterns comienza a equivocarse y no se entrena correctamente. Hay alguna ayuda que me puedas brindar sobre esto por favor.
Claro, hay varios parámetros que puedes tratar de modificar, por un lado puedes probar a añadir más capas en la red neuronal, cambiar el tipo de función de pérdida, aumentar el número de épocas o cambiar el número de neuronas en cada capa. Espero que te funcione
@@ElArtista3D cuanto mejor sea más rápido será en entrenamiento pero no es una tarea que requiera mucho procesamiento, aún así si tienes problemas siempre puedes entrenarlo en la nube con Google colab
me da este error, que hace referencia a este codigo training = np.array(training): ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (6, 2) + inhomogeneous part.
Asegúrate de que cambias el archivo de entrenamiento como explico en el vídeo para adaptarlo a cualquier número de palabras, puede ser que alguna en específico te esté dando problemas, revisa si te da algún error
Alguien sabe ¿por qué me sale este error?: ValueError: establecer un elemento de matriz con una secuencia. La matriz solicitada tiene una forma no homogénea después de 2 dimensiones. La forma detectada fue (6, 2) + parte no homogénea. (no cambié nada en el JSON que tiene los datos de entrenamiento) Lo único que cambié es el importado de esta librería: "from keras.optimizers import sgd_experimental" de esta forma "from keras.optimizers import SGD", debido a un error que tenía porque no se encuentra en la librería (no encontré sgd_experimental ni en la documentación de keras).
Me parece que se debe a que te habrás confundido al copiar alguna de las líneas en la que configuramos las formas de los arrays y sus dimensiones con la función reshape o poniendo el número de neuronas de entrada y de salida en la red neuronal
@@DimensionPardo cloné el código, aún no cambié nada excepto por el importado de la librería SGD, por eso preguntaba sobre ese error, si no cambié nada debería funcionar...🤔por otro lado chatGPT sugirió agregar "dtype=object" para convertir el array en objeto y así pueda ser reconocido creo que no es tan viable que sea objeto pero funcionó.
@@beca1007 no creo que sea por eso la verdad aunque yo creo que lo tuve que instalar desde la consola de comandos puedes buscarlo en internet con los comandos de pip install
@DimensionPardo Ahora al usar el optimizador "sgd = SGD(learning_rate=0.001, decay=1e-6, momentum=0.9, nesterov=True)", genera un error, cambié sgd_experimental a SGD 🤔eso me lleva a otra pregunta ¿Cómo hago para importar sgd_experimental?, ¿Cómo lo hiciste tú? (no se encuentra instalado en las librería de python y cuando intenté instalarlo no lo encontré ni en la documentación de keras).
Solución de problemas de las versiones, descarge la versión 3.11 de Python, después descargue numpy versión 1.23.5, nltk versión 3.8.1, tensorflow versión 2.12 y keras versión 2.12. cuando descargar la versión 2.12 de tensorflow también se te instala la versión de keras correspondiente a la versión de tensorflow, si estás trabajando con múltiples versiones de Python que fue en mi caso selecciona el entorno correcto en tu visual studio code usando el comando Ctrl + Shift + P y selecciona la versión 3.11 de Python si es así
No puedo escribir esa comillas ¿alguien que las escriba para poder copiarlas? No puedo escribir ''intents'' por el error de las comillas, no me acepta las comillas que pongo.
@@DimensionPardo Bueno, en resumen me refiero que no puedo escribir ''intents'' será que lo puede escribir para que lo copie y continúe con el proyecto por favor, se lo agradecería mucho.
En las nuevas versiones de tensorflow movieron algunas cosas al directorio de la api Para que te funcione tienes que agregar api después del ".keras" from keras.api.models import Sequential Esto me funcionó a mí
El modelo al escribirle como te llamas me da respuesta de saludo y no de nombre, no comprendo el error, ya verifique y todo esta bien, pero el chat bot no esta respondiendo de acuerdo al json
Lo he solucionado, he añadido más épocas al entrenamiento del chatbot y he añadido parámetros para mantener la confianza en las respuestas dentro de un rango determinado, de esta forma mi bot ahora es más preciso a la hora de responder, excelente contenido, nuevo sub
Hola, gracias por el video, se puede crear una API REST con este código? y posteriormente consumir la API en alguna librería no oficial de whatsapp como WPPCONNECT, VENOM etc?
El error que mencionas, ImportError: cannot import name 'sgd_experimental' from 'keras.optimizers', indica que hay un problema al importar el nombre sgd_experimental desde el módulo keras.optimizers. Esto puede suceder por varias razones: Actualizaciones en la biblioteca: A veces, los nombres de las funciones o los módulos pueden cambiar en diferentes versiones de las bibliotecas. sgd_experimental podría haber sido cambiado o eliminado en una versión más reciente de Keras. Versiones incompatibles: Si tu código está utilizando una versión antigua de Keras que aún contiene sgd_experimental pero estás intentando importarlo en una versión más nueva donde ha sido eliminado, recibirás este error. Para solucionarlo, puedes intentar lo siguiente: Actualiza las bibliotecas: Asegúrate de tener la versión más reciente de Keras y TensorFlow instalada. Usa pip o conda para actualizar a la versión más reciente de Keras y su backend, que suele ser TensorFlow. bash Copy code pip install --upgrade keras tensorflow Verifica la documentación: Si sgd_experimental ha sido eliminado en la versión actual de Keras, busca alternativas o métodos equivalentes en la documentación más reciente. Puede que haya una nueva forma de lograr lo que estás buscando. Revisa el código: Asegúrate de que no estás utilizando accidentalmente un nombre obsoleto o incorrecto para importar optimizadores en Keras. Revisa tu código para asegurarte de que estás utilizando la sintaxis y los nombres correctos.@@yefersonmogollonmogollon6082
Intenta este codigo actualizado: import random import json import pickle import numpy as np import nltk from nltk.stem import WordNetLemmatizer from keras.models import Sequential from keras.layers import Dense, Activation, Dropout from keras.optimizers import SGD lemmatizer = WordNetLemmatizer() intents = json.loads(open('intents1.json').read()) nltk.download('punkt') nltk.download('wordnet') words = [] classes = [] documents = [] ignore_letters = ['?', '!', '¿', '.', ','] # Clasifica los patrones y las categorías for intent in intents['intents']: for pattern in intent['patterns']: word_list = nltk.word_tokenize(pattern) words.extend(word_list) documents.append((word_list, intent["tag"])) if intent["tag"] not in classes: classes.append(intent["tag"]) words = [lemmatizer.lemmatize(word) for word in words if word not in ignore_letters] words = sorted(set(words)) pickle.dump(words, open('words.pkl', 'wb')) pickle.dump(classes, open('classes.pkl', 'wb')) # Pasa la información a unos y ceros según las palabras presentes en cada categoría para hacer el entrenamiento training = [] output_empty = [0] * len(classes) for document in documents: bag = [] word_patterns = document[0] word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns] for word in words: bag.append(1) if word in word_patterns else bag.append(0) output_row = list(output_empty) output_row[classes.index(document[1])] = 1 training.append([bag, output_row]) random.shuffle(training) # Separar las características (train_x) y las etiquetas (train_y) train_x = [x[0] for x in training] train_y = [x[1] for x in training] # Convertir a arrays NumPy con el tipo de dato adecuado train_x = np.array(train_x) train_y = np.array(train_y) print(train_x.shape) print(train_y.shape) # Creamos la red neuronal model = Sequential() model.add(Dense(128, input_shape=(len(train_x[0]),), activation='relu')) model.add(Dropout(0.5)) model.add(Dense(64, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(len(train_y[0]), activation='softmax')) # Creamos el optimizador y lo compilamos sgd = SGD(learning_rate=0.001, momentum=0.9, nesterov=True) model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) # Entrenamos el modelo y lo guardamos train_process = model.fit(np.array(train_x), np.array(train_y), epochs=100, batch_size=5, verbose=1) model.save("chatbot_modelori.h5", train_process)
Actualización a mayo del 2024 Tenia los problemas de las librerias, modifique las versiones de tensorflow a la 2.15.1 y la de keras a la 3.3 y corrio sin problema, no encontraba mucha informacion al respecto y cambiar de versiones funciono a la perfeccion, si necesitan codigo modificado lo paso.
Si lo pudieras pasar, porque tengo unos problemas, cuando ejecuto el programa training=np.array(training) me da error y cuando la coloco como comentario, se ejecuta bien. Ademas de que no se me descargan los archivos de classes y words
hola , yo tengo el siguiente error alguien sabe porque sucede , según yo, ya instale todas las librerías ModuleNotFoundError: No module named 'tensorflow.python'
voy a instalar la librería y me aparece este error : ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'C:\\Users\\jhonm\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python311\\site-packages\\tensorflow\\include\\external\\com_github_grpc_grpc\\src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\client_load_reporting_filter.h' HINT: This error might have occurred since this system does not have Windows Long Path support enabled. You can find information on how to enable this at pip.pypa.io/warnings/enable-long-paths
Buen tutorial, me lo he visto y he logrado entender gran parte del trabajo detras del chatbot. Sin embargo no puedo compilar el programa debido a que no me reconocen las librerias numpy, nltk, nltk.stem, keras.model, keras.layers y keras.optimizers ¿Tuviste que descargar alguna extension especial para poder usarlas? Gracias
@@DimensionPardo ya pude resolver ese problema de las librerías, gracias. Sin embargo, cuando se hace una conversacion con el bot, antes de arrojar la respuesta aleatoria coloca la lista que reconoció y despues coloca la respuesta. ¿Hay alguna forma de ocultar ese apartado? Los unicos cambios que hice fue colocar el SDG en vez del sdg.experimental
Hola, me sale ImportError: cannot import name 'sgd' from 'keras.optimizers', probé importando el sdg a secas como vi en comentarios anteriores pero me sigue arrojando el mismo error. ;(
Saludos excelente amigo, gracias por compartir tus conocimientos, pero soy principiante ni idea de donde sacaste esa interfaz para colocar los codigos, no se si tengas tutorial de como instalar todas las aplicaciones desde un principio y trabajar desde cero, muchas gracias
hola vengo a expresar mi experiencia tratando de que funcione siguiendo el video, duro un buen tiempo para que pudiera funcionar y cambie unas cosas por nuevas, si alguien quiero el codigo que cambie por si no les funciona el original lo pondre en este comentario con el nombre respectivo del archivo.
chatbot.py import random import json import pickle import numpy as np import nltk from nltk.stem import WordNetLemmatizer from keras.models import load_model lemmatizer = WordNetLemmatizer() #Importamos los archivos generados en el código anterior intents = json.loads(open('intents.json').read()) words = pickle.load(open('words.pkl', 'rb')) classes = pickle.load(open('classes.pkl', 'rb')) model = load_model('chatbot_model.keras') #Pasamos las palabras de oración a su forma raíz def clean_up_sentence(sentence): sentence_words = nltk.word_tokenize(sentence) sentence_words = [lemmatizer.lemmatize(word) for word in sentence_words] return sentence_words #Convertimos la información a unos y ceros según si están presentes en los patrones def bag_of_words(sentence): sentence_words = clean_up_sentence(sentence) bag = [0]*len(words) for w in sentence_words: for i, word in enumerate(words): if word == w: bag[i]=1 print(bag) return np.array(bag) #Predecimos la categoría a la que pertenece la oración def predict_class(sentence): bow = bag_of_words(sentence) res = model.predict(np.array([bow]))[0] max_index = np.where(res ==np.max(res))[0][0] category = classes[max_index] return category #Obtenemos una respuesta aleatoria def get_response(tag, intents_json): list_of_intents = intents_json['intents'] result = "" for i in list_of_intents: if i["tag"]==tag: result = random.choice(i['responses']) break return result #Ejecutamos el chat en bucle while True: message=input("") ints = predict_class(message) res = get_response(ints, intents) print(res)
excelente video.. A diferencia tuya , cada vez que recibo una respuesta del chatbot el terminal me muestra antes el procesamiento del step y luego la respuesta. Hay alguna forma en que pueda ocultarlo? (ejemplo: Hola 1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 69ms/step Como estas?
Veo que sabes mucho de lo que hablas y siento que sabrías responder mi pregunta, te cuento. No sé nada sobre programar pero me gustaría presentarte un problema y a ver si puedes darme una solución. Me gustaría crear una IA con la que poder chatear y que aprenda de las información que va obteniendo de mis propias conversaciones con ella y que, además, tenga acceso a internet para buscar información ella por su cuenta cuando yo se lo ordene. Es decir, me gustaría que tuviera mi personalidad, pero que además tuviera acceso a Internet para acceder a todo el mar de información y que con la ayuda de las cosas que yo le haya explicado aprenda qué clase de información es la que quiero y la que busco. Por ejemplo, al principio me proporcionará información de páginas de google que no me interesan, pero cuando me la envíe yo le diré "no, esa información no me interesa, es demasiado simple, busco algo con un nivel mayor de complejidad". Y a lo mejor ella me responde: "-Qué significa complejidad?" Y yo le explicaré lo qué es la complejidad para mí y con mi concepto de complejidad, buscará en google aquello que se adapte a mi concepto de complejidad. Espero haberme explicado. Si consiguiera crear algo así y me ayudases, estaría dispuesto a pagar dinero por ello. Al menos y si es posible, respóndeme si lo que pido es algo fácil o difícil de hacer o directamente es imposible, para así poder hacerme una idea. Muchas gracias. Añado: ¿Podría también, descargar algún modelo muy básico que cumpla con esas características (que comprenda el lenguaje humano básico) y entrenarlo yo? Mi objetivo es crear una fuente personal de obtención de información y sin ningún filtro a la hora de proporcionarmela. Sería como crear un minihumano pero con acceso a toda la información de internet y mi personalidad. Espero no resulte compleja mi petición y recibir pronta respuesta, un placer.
que gran video, gracias por este gran aporte, quiero preguntar si, se puede integrar este chatbot a un sitio web que se está desarrollando usando react para darle un diseño de interfaz y demás frontend?
Gracias, lo veré, lo otro que quería decir si es que el video es bueno pero no usa inteligencia artificial sino machine learning y esta bueno pero el título del video parece clickbait
@@themagnificence el machine learning es una rama de la inteligencia artificial y la gente está más familiarizada con la IA que con el ML entonces lo puse x eso
@@themagnificence pides consejos para integrar este chatbot a un sitio web que es algo básico y quieres enseñar la diferencia entre IA y ML, mejor no opines.
@@markiwis creo que el que no debería opinar es otro porque alguien que se especializa o conoce más de ciencia de datos no tiene por qué saber tanto de desarrollo web más que lo básico de html css y javascript, y veo que no sabes distinguir la diferencia así que yo que tú me habría quedado callado
Hola excelete explicación, podrias hacer que el chatbot responda sobre temas que se le consulte, pero el chat bot debe consumir la información desde archivos pdf?
Para los que tengan problemas con la libreria tensorflow, es recomendable usar la versión 3.7.4 de Python o pueden consultar la compatibilidad de las versiones con la libreria. Excelente video, Gracias.
¡Buenos días! Quería expresar mi agradecimiento y felicitación por el increíble contenido que compartes. Realmente funciona a la perfección y se comprende con facilidad. Tengo una consulta y espero que puedas orientarme al respecto. Estoy interesado en crear un bot que pueda aprender algunos textos y una base de preguntas y respuestas, con la capacidad de responder a los usuarios sobre esos temas. He estado investigando y he encontrado varias herramientas, como CHATTERBOT, RiveScript, APIs, y también estoy considerando el desarrollo con NLTK y Spacy. Mi objetivo es encontrar una opción funcional y eficiente que no sea demasiado costosa. ¿Cuál sería tu recomendación al respecto? Agradecería mucho tu ayuda en este proceso. ¡Saludos!
Pues no controlo mucho de aplicaciones así. Si entiendes cómo funciona este código puedes modificarlo y adaptarlo a tus necesidades y supongo que podría funcionar pero tengo entendido que tienes muchas opciones comerciales para poder hacerlo también
Esque tengo un proyecto de la escuela y esto me ayuda como base, solo que a mi me piden que el chatbot sea un profesional en el area de la psicologia en mi caso que detecte que tan grave es la depresion. Haremos uso de una escala ya definida que nos ayuda a saber el grado de depresion haciendo una suma por ejemplo: Tienes tristeza 1 nunca 2 a veces 3 muchas veces 4 Siempre Y asi haciendo unas 7 preguntas sumas las respuestas y te da hasta 4 posibles diagnosticos. El problema es que nose como hacer para que mi bot agarre la info y al final la sume para dar el diagnostico
Me da un error pero no encuentro como corregirlo alguien me puede ayudar y este es el mero coodigo de error Se produjo una excepción: ValueError setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (6, 2) + inhomogeneous part. File "/home/fjrr/IA/S4/Python/chatbot.py", line 53, in training = np.array(training) ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (6, 2) + inhomogeneous part.
yo no recuerdo copiar nada mal, sin embargo, y si aun te sirve, esta fue mi solución al mismo error: for document in documents: bag = [] word_patterns = document[0] word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns] for word in words: bag.append(1) if word in word_patterns else bag.append(0) output_row = list(output_empty) output_row[classes.index(document[1])] = 1 training.append([np.array(bag), np.array(output_row)]) random.shuffle(training) training = np.array(training, dtype=object) print(training)
Está muy interesante pero hay algo que no logro controlar, he modificado los intents agregando más opciones, he agregado una opción con una respuesta por defecto en caso de no encontrar una opcion valida pero siempre me devuelve el saludo inicial. Alguna sugerencia?
buen dia juan,muchas gracias por compartir, pues que te digo, le he seguido apenas 31 agosto/2023, muy interesante, me gradue en diciembre, estoy intentando mejorar y cubrir algunos vacios, estoy interesado en conseguir una certificacion de analytics enterprise professional, he visto bootcamps sobre machine learning y eso me causo la curiosidad, al adentrarme en lo del analisis de datos, veo que es importante el manejo de bots para las empresas, pero me gustaria lograr hacer un modelo lo mas cercano a un asistente digital, pues darme una idea, partiendo logico desde este tipo de modelo, no se de pronto una plantilla basica o un paso a paso, seria genial estare atento a lo que publiques, que tengas una feliz semana, muchas bendiciones🙏
Claro, lo que podrías hacer es que en lugar de responderte con texto que cuando detecte lo que le estás pidiendo que ejecute otras acciones con Python, que se conecte a otras librerías o apis y así aumentar su funcionalidad
OYE LA VERDAD DE AGRADEZCO POR ESTE VIDEO, MUY CLARO Y FACIL POR QUE LA VERDAD AUN ME CUESTA COMO PRINCIPANTE ENTEDER ESTE MUNDO, una pregunta, tengo que hacer un chatbot igual como lo has hecho con PLN y que tenga aprendizaje por refuerzo, que debe hacer el chat que te digo, debe ser un agente inteligente que brinde informacion en alimentos y bebidas saludables que le permita mentener un peso saludable y controlar efermedades como la diabete e hipertencion, tu crees que a este chat lo pueda hacer esto y como lo haria, MUCHAS GRACIAS POR TU AYUDA LA VERDAD ME SERVIRIA MUCHO, ES UNA TAREA Y LA TENGO QUE HACER CUANTO ANTES, GRACIAS Y DISCULPA MI IGNORACIA
@@DimensionPardo solo de tu guia, podria tomar este chat para hacerlo y luego añadir aprendizaje por refuerzo, tu me puedes guiar como o donde podria hacerlo, es que ve que el chat te quedo super, podria servir, la verdad estoy muy perdido y creo que tu podrias darme una luz, muchas gracias por tu respuesta
@@swithmerchan92 es que para hacer el aprendizaje por refuerzo sería un modelo completamente distinto y por lo tanto cambiaría todo el código de entrenamiento
@@DimensionPardo entiendo, entiendo, bueno, tu podrias ayduarme a desarrollar lo que busco o darme una idea, te he enviado un correo para que tu peudas revisarlo, oye la verdad muchas gracias por tu respuesta, eres muy amable la verdad muchas gracias por responder tan rapido
@@DimensionPardo sí ya lo hice en Django, pero tengo un problema. Le quiero agregar más tag y no me los lee, mira: { "intents":[ { "tag": "saludo", "patterns": ["hola", "qué tal", "cómo estás", "saludos"], "responses": ["Hola!", "Buenos días!", "¿Cómo estás?"] }, { "tag": "nombre", "patterns": ["cómo es tu nombre", "cómo te llamas"], "responses": ["Me llamo Boris Durán", "Mi nombre es Boris Durán"] }, { "tag": "gato_schrodinger", "patterns": ["gato de Schrodinger", "qué es el gato de Schrodinger", "explicación del gato de Schrodinger"], "responses": ["Es un experimento mental", "El gato está vivo o muerto."] } ] }
@@Magentochile pues no sé hay muchos corchetes asegúrate de que están bien puestos y lo que recomiendo siempre es ir imprimiendo cosas en la consola para detectar donde puede estar el problema ya que fui explicando lo que te debería aparecer en cada parte
Basta de Entrenar BOTS..!!!! Que el chat lea un TXT con la data de interés, lea esa data y responda segun esa info. Basta de entrenar!! La AI ya lo puede hacer. Vos podras diseñar un codigo que haga eso y se pueda incrustar en un chatbot de pagina web? Ese es el paso siguente del los chatbot con AI. Ej: Queres que te responda Freud alguna consulta? Cargale todos los libros de Freud y preguntale!
No entiendo muy bien por qué dices basta de entrenar bots y después que deberíamos entrenar a la IA e integrarlas en páginas web. Es un poco contradictorio
@@DimensionPardo Disculpa si no fui claro.. El entrenamiento implica: suponer una pregunta de un visitante y a esa pregunta determinarle una respuesta, y continuar esa mecánica tantas veces como precisión quieras en la respuesta. Hace una década que se hace eso. En este caso aprovechando la capacidad de interpretación de la IA a un texto, no habría entrenamiento. En el txt pones toda la información de tus productos, y sin que el visitante este sujeto a una pregunta determinada, el chatbot pueda responder con la informacion suministrada en el TXT. Cualquier cosa que pregunten, si esta en el txt, el chatgpt podra responder. No existirá mas la respuesta: DISCULPA, NO COMPRENDO TU PREGUNTA.
@@radiosolution_ar a ver, entiendo lo que quiere decir pero para que un ordenador interprete un txt tiene que haber un proceso de entrenamiento aunque sea distinto a otros métodos pero cualquiera de las formas de aprendizaje automático que usted ha mencionado requieren de algún tipo de entrenamiento por la naturaleza de la propia tecnología
Es muy buena pregunta por un lado si porque está relacionando el significado de las palabras pero por otro lado esas relaciones las establecemos nosotros de forma manual por lo que podría dar lugar a debate
Código actualizado en el github para los que os daba error!
hola, que librerias y versiones usas ?
@Vivian611 las mas recientes en todas
Gracias!!! al fin funciono, estaba estancada, vsc me marcaba error al importar las librerias, pero lo ejecute y si funciono 🥲😁
@@DimensionPardo Hola men, sabes como arreglo el problema de la tipografia de las tildes y los demas
Estimado al finalizar con el shuffle.training me bota un error del shape de la lista de listas training no se porqué 😢
Buen video!
Hice algunas modificaciones al codigo para implementarlo en DJANGO y funciona correctamente.
Magnifico video! Gracias, saludos!!!
Excelente video, te felicito gran trabajo!!!!!
excelente video! muchas gracias!
Muy bueno! En el finde lo pruebo.
Buenas, que complementos de el VIsual usaste en el video? Es que algunas librerías no me las reconoce
El código te va arrojando cuando no reconoce un módulo. Solo velo instalando pop install Numpy, etc. los ínstalas en la consola de visual.
Buen video 🎉 te felicito
hola, gracias por el tutorial. me funcionaba perfectamente hasta ayer. hoy me sale un error con json: Expecting `,' delimiter: line 163 column 4 (char 3909). he bajado tus archivos de nuevo y sale el mismo error... han cambiado alguna cosa? gracias
Que hay que poner en los archivos pkl por ejemplo (word.pkl)
Hola, quisiera saber que versión de Python y de las librerías usaste?
para no tener problemas de versión.
hola quisiera saver si me podrias ayudar con este problema para hacer el entrenamiento me sale este error
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (10, 2) + inhomogeneous part.
me podrias ayudar
Puedes probar a convertir a numpy por un lado el training x y por otro lado el training y en lugar de todo junto y luego separarlo
@@DimensionPardo podrías explicarlo un poco mejor no entendí
yo no recuerdo copiar nada mal, sin embargo, y si aun te sirve, esta fue mi solución al mismo error:
for document in documents:
bag = []
word_patterns = document[0]
word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
for word in words:
bag.append(1) if word in word_patterns else bag.append(0)
output_row = list(output_empty)
output_row[classes.index(document[1])] = 1
training.append([np.array(bag), np.array(output_row)])
random.shuffle(training)
training = np.array(training, dtype=object)
print(training)
@@rgomez09 héroe sin capa! Mil gracias! 🤩
@@rgomez09 que grande amigo jaja muchas gracias
Hola buenas! Has utilizado Rasa para algún chatbog?
Nop
que haces aqui fred
Me da error de agregar intérprete, agregó todas las versiones y la que instaló fuera de visual code me dice que no es validad
Hola en la linea 29 de la ñarte del entrenamiemto en la que pone: for intent in intents[intents]: me salta un error que pone: name 'intents' is not defined
Hola, tengo un problema a la hora de compilar el codigo para ver el array de la lista training. tal parece que hay una inhomogeneidad en la lista training pero no llego al error, cualquier ayuda se agradece
Espero hayas solucionado el problema, sino, tuve el mismo error y lo solucioné cambiando un poco como se crea el array: "training = np.array(training, dtype=object)". Esto debería solucionar el problema
cuando le doy imprimir descarga unos archivos, al final se prensenta TypeError: append() takes exactly one argument (2 given)
explicas muy biennn segui asi
Muchas gracias por el video funciona ok.
y si al chat bot lo haces mas elocuente con formas de describir el texto que el envías con algoritmos para ampliar y conversar de forma más empatizante con el usuario.
Buen video , gracias
Estoy teniendo problemas con el chat bot, me da error y me dice: ModeluNotFound: No module named 'tensorflow'
pon en la terminal pip install tensorflow
muy bueno el video , te hago una consulta, el archivo Json "intents.json" tiene un nombre? me refiero a como podria buscar en internet un json con muchas respuestas elaboradas
xd
Pero hay alguna forma de conectarlo con whatsapp y que las respuestas que de sean porque hemos agregado una base de datos de nuestros servicios ofrecidos, por ejemplo.
Supongo que puedes conectarlo a tu base de datos mediante algún proceso de automatización y después a tu WhatsApp con la librería pywhatkit
No me detecta el comando: Dense, Sequential, WordNetLeammatizer, nltk.stem, keras.layers
Hola. tengo una duda. me sale este erorr al querer hacer el proceso de entrenamiento. np.array(training) ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. que podria ser?
Me parece que te habrás confundido en alguna línea porque al convertir los arrays a numpy no te lo configuro todo
yo no recuerdo copiar nada mal, sin embargo, y si aun te sirve, esta fue mi solución al mismo error:
for document in documents:
bag = []
word_patterns = document[0]
word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
for word in words:
bag.append(1) if word in word_patterns else bag.append(0)
output_row = list(output_empty)
output_row[classes.index(document[1])] = 1
training.append([np.array(bag), np.array(output_row)])
random.shuffle(training)
training = np.array(training, dtype=object)
print(training)
@@rgomez09bro quizá algo tarde pero tú respuesta le salvó de verdad gracias de corazón entendiste el problema que muchos teníamos y bueno agraecete de corazón
hola que tal, muy buen video pero tengo algunas dudas y indagando me sale que es por las versiones del tensorflow, python y otros, e intentado con las nuevas versiones donde le agregue un dtype=object pero como resultado me da (6, 2) eso nada mas, me podrias brindar las versiones que usaste para el video
Funciona con la última versión de python y de tensorflow.
Buenas.
Fijese que no puedo areglar algunos errores que me salen en subrayados en color amarillo
Por ejemplo
Import numpy as np
Me sale en color amarillo y quice darle solucionar pero no me soluciona
Que ago en ese caso ?
El import va con minúscula no sé si es algo del comentario que pusiste o del código prueba a ejecutarlo en otro editor porque también puede tener que ver con el linter y reinstala la librería
@@DimensionPardo como puedo reinstalarla ? , disculpa soy nuevo en esto
@@joelantoniozaldivarsosa7084 pones en la consola de comandos: pip install numpy
@@DimensionPardo tiene algún video explicándolo?
@@joelantoniozaldivarsosa7084 yo no pero hay muchos en youtube
hola, tengo una consulta, estuve mirando el codigo y ajustándolo de acuerdo al enfoque que quiero del chatbot, sucede que al ejecutarlo se queda pegado en la 2da respuesta, por mas que ajuste patrones y respuestas, no hay forma de avanzar en la conversación ¿como puedo arreglar ese problema?
Pues me parece algo curioso. Puedes probar a ponerle un número determinado de mensajes, tratar de usar caracteres internacionales en los patrones y las respuestas e ir imprimiendo parámetros por cada respuesta para ver dónde está el error y si al menos hace bien las predicciones. Espero que lo soluciones
¿Que version se debe instalar de tensorflow keras?
Me parece q a partir d la 2.0 sirve cualquiera pero si tienes la última mejor
hola, tengo problemas con la librería keras, instale todo pero me sigue saliendo este error
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout
from keras.optimizers import sgd
en estas lineas
tengo el mismo problema
Acabo de actualizar el código en github, ahora debería funcionaros
Hola como puedo integrarlo a una base de datos (MySQL) ya que lo subiria a un hosting para que la empresa pueda tenerlo online.
Puedes generar el modelo para tensorflow.js de forma que se pueda integrar en una web
Una pregunta como puedo importar los codigos numpy ??
La librería se importa automáticamente cuando escribes import numpy
Buenos dias!, primero que nada muchas gracias por el increible contenido, tenia una duda a nivel de recomendación, que otros modelos de ML podrias recomendar para usar en el chatbot, con otras librerias distintas a keras y que de igual manera logre tener un buen desempeño en la clasificacion. Gracias, saludos!!!
Pues las librerías más comunes son tensorflow sklearn y pytorch. Cualquiera de esas funcionará bien pero no controlo mucho como se haría
Hola, quiero preguntar algo, no se por que razon es que no me permite convertir a array; en la linea training = np.array(training) me marca un error
Que error te da?
@@DimensionPardo Hola que tal agradezco el vídeo, estoy iniciando en Python y la explicación es muy buena, me encuentro en la misma situación que @end123b4
A mi me sale el siguiente error
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (6, 2) + inhomogeneous part.
Agradezco el apoyo
@@brendamorales7403 aseguraros de que todas vuestras imágenes tienen el mismo tamaño
@@DimensionPardo Agradezco la pronta respuesta, pero descargue el código de GitHub y me muestra el mismo error, sin haber movido nada.
alguien pudo resolver este problema? yo recién sigo el tutorial y me topé con el mismo problema
cuando intento poner un nuevo tag no me lo reconoce :c ayuda AYUDAAAAAAAAAA
"tag": "escuela",
"patterns": ["cuál es tu escuela?", "a qué escuela vas?"],
"responses": ["Universidad x", "x"]
}
Hola he utilizado este código para la realización de un IA chatbot pero se me ha presentado el problema que si quiero agregar más de 5 o 7 patterns comienza a equivocarse y no se entrena correctamente. Hay alguna ayuda que me puedas brindar sobre esto por favor.
Claro, hay varios parámetros que puedes tratar de modificar, por un lado puedes probar a añadir más capas en la red neuronal, cambiar el tipo de función de pérdida, aumentar el número de épocas o cambiar el número de neuronas en cada capa. Espero que te funcione
oye amigo la capacidad de mi procesador influye en la creacion de mi bot?
@@ElArtista3D cuanto mejor sea más rápido será en entrenamiento pero no es una tarea que requiera mucho procesamiento, aún así si tienes problemas siempre puedes entrenarlo en la nube con Google colab
Qué librerías usas para tener esa apariencia al escribir en JSON?
tienes el link de neuralnine?
me da este error, que hace referencia a este codigo training = np.array(training):
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (6, 2) + inhomogeneous part.
Aumentale el tipo dato:
training=np.array(training, dtype=object)
No logro agregarle nuevas palabras, por mucho que modifique el "intents.json" las que agrego, no las dice, ni nada ¿Ayuda? :(
Asegúrate de que cambias el archivo de entrenamiento como explico en el vídeo para adaptarlo a cualquier número de palabras, puede ser que alguna en específico te esté dando problemas, revisa si te da algún error
Justo lo solucione, tenía errores topográficos en el archivo de entrenamiento y no cargaban, ahora ya si!
Gracias por tanto, perdón por tan poco! 🫂♥️
¿Como lo hago?
@@MaxiFernando-e1wcomo lo solucionaste?
Alguien sabe ¿por qué me sale este error?:
ValueError: establecer un elemento de matriz con una secuencia. La matriz solicitada tiene una forma no homogénea después de 2 dimensiones. La forma detectada fue (6, 2) + parte no homogénea.
(no cambié nada en el JSON que tiene los datos de entrenamiento)
Lo único que cambié es el importado de esta librería: "from keras.optimizers import sgd_experimental" de esta forma "from keras.optimizers import SGD", debido a un error que tenía porque no se encuentra en la librería (no encontré sgd_experimental ni en la documentación de keras).
Me parece que se debe a que te habrás confundido al copiar alguna de las líneas en la que configuramos las formas de los arrays y sus dimensiones con la función reshape o poniendo el número de neuronas de entrada y de salida en la red neuronal
@@DimensionPardo cloné el código, aún no cambié nada excepto por el importado de la librería SGD, por eso preguntaba sobre ese error, si no cambié nada debería funcionar...🤔por otro lado chatGPT sugirió agregar "dtype=object" para convertir el array en objeto y así pueda ser reconocido creo que no es tan viable que sea objeto pero funcionó.
@@beca1007 no creo que sea por eso la verdad aunque yo creo que lo tuve que instalar desde la consola de comandos puedes buscarlo en internet con los comandos de pip install
@DimensionPardo Ahora al usar el optimizador "sgd = SGD(learning_rate=0.001, decay=1e-6, momentum=0.9, nesterov=True)", genera un error, cambié sgd_experimental a SGD 🤔eso me lleva a otra pregunta ¿Cómo hago para importar sgd_experimental?, ¿Cómo lo hiciste tú? (no se encuentra instalado en las librería de python y cuando intenté instalarlo no lo encontré ni en la documentación de keras).
Gracias por la respuesta y mil gracias por el vídeo, en serio aprendí mucho.
Tengo un problema ahora en usar la versión de python 3.12 y keras en la actualidad creo no soporta esta versión
Solución de problemas de las versiones, descarge la versión 3.11 de Python, después descargue numpy versión 1.23.5, nltk versión 3.8.1, tensorflow versión 2.12 y keras versión 2.12. cuando descargar la versión 2.12 de tensorflow también se te instala la versión de keras correspondiente a la versión de tensorflow, si estás trabajando con múltiples versiones de Python que fue en mi caso selecciona el entorno correcto en tu visual studio code usando el comando Ctrl + Shift + P y selecciona la versión 3.11 de Python si es así
Me sale este error
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
¿Alguien sabe como puedo solucionarlo?
Sigue el orden de archivos que crea, y pon el mismo nombre que usa en el video.
No puedo escribir esa comillas ¿alguien que las escriba para poder copiarlas? No puedo escribir ''intents'' por el error de las comillas, no me acepta las comillas que pongo.
No se muy bien a qué comillas te refieres, si es por las dobles puedes ponerlas simples
@@DimensionPardo Bueno, en resumen me refiero que no puedo escribir ''intents'' será que lo puede escribir para que lo copie y continúe con el proyecto por favor, se lo agradecería mucho.
@@unasnivy1057 intents.json se refiere a eso?
@@DimensionPardo si pero con las comillas esas comillas que están alado.
{}
Estou teniendo problemas con el keras.models ... y otros, ya instalé el tensorflow, pero em problema sigue.
En las nuevas versiones de tensorflow movieron algunas cosas al directorio de la api
Para que te funcione tienes que agregar api después del ".keras"
from keras.api.models import Sequential
Esto me funcionó a mí
@@pacomemoochoa5733 gracias mi rey, eres lo máximo.
El modelo al escribirle como te llamas me da respuesta de saludo y no de nombre, no comprendo el error, ya verifique y todo esta bien, pero el chat bot no esta respondiendo de acuerdo al json
Lo he solucionado, he añadido más épocas al entrenamiento del chatbot y he añadido parámetros para mantener la confianza en las respuestas dentro de un rango determinado, de esta forma mi bot ahora es más preciso a la hora de responder, excelente contenido, nuevo sub
Hola buenas, como se podría usar este Chatbot en lugares como whattsap, telegram o instagram?
Tendrías que usar una librería tipo pywhatkit para hacer la integración
Disculpen una pregunta soy nuevo y aja .. cuando tengo los código que tengo que hacer 🙂
Cambiar los parámetros en el intents.json y ejecutar los dos archivos
que paquetes son?
Y si quiero programar un chat bot para que interprete un personaje?
¿Como puedo agregar mas tags y que los use?
me pueden decirl que librerias se instalaron?
Todas las que se importan al principio del programa
Hola, me aparece que la libreria "numpy" no existe... 😢
Me pasa igual y me manda a seleccionar interprete
Tienen que instalarla.
Creo era: pip install numpy
Pero en la "Terminal"
Hola, gracias por el video, se puede crear una API REST con este código? y posteriormente consumir la API en alguna librería no oficial de whatsapp como WPPCONNECT, VENOM etc?
hola lo que queres hacer yo lo tengo pero lo compre y funcionando si lo queres te vendo una copia completa con API
hola buenas, ayuda, me manda este error:
ImportError: cannot import name 'sgd_experimental' from 'keras.optimizers'
Prueba a importar SGD a secas y luego cambiarlo en la línea en la que lo usas
HOLA me puedes explicar bien no comprendi y se sigue saliendo ese error
@@DimensionPardo
El error que mencionas, ImportError: cannot import name 'sgd_experimental' from 'keras.optimizers', indica que hay un problema al importar el nombre sgd_experimental desde el módulo keras.optimizers. Esto puede suceder por varias razones:
Actualizaciones en la biblioteca: A veces, los nombres de las funciones o los módulos pueden cambiar en diferentes versiones de las bibliotecas. sgd_experimental podría haber sido cambiado o eliminado en una versión más reciente de Keras.
Versiones incompatibles: Si tu código está utilizando una versión antigua de Keras que aún contiene sgd_experimental pero estás intentando importarlo en una versión más nueva donde ha sido eliminado, recibirás este error.
Para solucionarlo, puedes intentar lo siguiente:
Actualiza las bibliotecas: Asegúrate de tener la versión más reciente de Keras y TensorFlow instalada. Usa pip o conda para actualizar a la versión más reciente de Keras y su backend, que suele ser TensorFlow.
bash
Copy code
pip install --upgrade keras tensorflow
Verifica la documentación: Si sgd_experimental ha sido eliminado en la versión actual de Keras, busca alternativas o métodos equivalentes en la documentación más reciente. Puede que haya una nueva forma de lograr lo que estás buscando.
Revisa el código: Asegúrate de que no estás utilizando accidentalmente un nombre obsoleto o incorrecto para importar optimizadores en Keras. Revisa tu código para asegurarte de que estás utilizando la sintaxis y los nombres correctos.@@yefersonmogollonmogollon6082
Intenta este codigo actualizado:
import random
import json
import pickle
import numpy as np
import nltk
from nltk.stem import WordNetLemmatizer
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout
from keras.optimizers import SGD
lemmatizer = WordNetLemmatizer()
intents = json.loads(open('intents1.json').read())
nltk.download('punkt')
nltk.download('wordnet')
words = []
classes = []
documents = []
ignore_letters = ['?', '!', '¿', '.', ',']
# Clasifica los patrones y las categorías
for intent in intents['intents']:
for pattern in intent['patterns']:
word_list = nltk.word_tokenize(pattern)
words.extend(word_list)
documents.append((word_list, intent["tag"]))
if intent["tag"] not in classes:
classes.append(intent["tag"])
words = [lemmatizer.lemmatize(word) for word in words if word not in ignore_letters]
words = sorted(set(words))
pickle.dump(words, open('words.pkl', 'wb'))
pickle.dump(classes, open('classes.pkl', 'wb'))
# Pasa la información a unos y ceros según las palabras presentes en cada categoría para hacer el entrenamiento
training = []
output_empty = [0] * len(classes)
for document in documents:
bag = []
word_patterns = document[0]
word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
for word in words:
bag.append(1) if word in word_patterns else bag.append(0)
output_row = list(output_empty)
output_row[classes.index(document[1])] = 1
training.append([bag, output_row])
random.shuffle(training)
# Separar las características (train_x) y las etiquetas (train_y)
train_x = [x[0] for x in training]
train_y = [x[1] for x in training]
# Convertir a arrays NumPy con el tipo de dato adecuado
train_x = np.array(train_x)
train_y = np.array(train_y)
print(train_x.shape)
print(train_y.shape)
# Creamos la red neuronal
model = Sequential()
model.add(Dense(128, input_shape=(len(train_x[0]),), activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(len(train_y[0]), activation='softmax'))
# Creamos el optimizador y lo compilamos
sgd = SGD(learning_rate=0.001, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
# Entrenamos el modelo y lo guardamos
train_process = model.fit(np.array(train_x), np.array(train_y), epochs=100, batch_size=5, verbose=1)
model.save("chatbot_modelori.h5", train_process)
Actualización a mayo del 2024
Tenia los problemas de las librerias, modifique las versiones de tensorflow a la 2.15.1 y la de keras a la 3.3 y corrio sin problema, no encontraba mucha informacion al respecto y cambiar de versiones funciono a la perfeccion, si necesitan codigo modificado lo paso.
Si lo pudieras pasar, porque tengo unos problemas, cuando ejecuto el programa training=np.array(training) me da error y cuando la coloco como comentario, se ejecuta bien. Ademas de que no se me descargan los archivos de classes y words
puedes pasar el codigo por favor
🙂
Te agradecería mucho si puedes pasarme el código modificado bro ;D
Lo acabo de actualizar en GitHub
pasalo
comprimido
Me da error en dense como soluciono porfa?
hola , yo tengo el siguiente error alguien sabe porque sucede , según yo, ya instale todas las librerías
ModuleNotFoundError: No module named 'tensorflow.python'
voy a instalar la librería y me aparece este error : ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'C:\\Users\\jhonm\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python311\\site-packages\\tensorflow\\include\\external\\com_github_grpc_grpc\\src\\core\\ext\\filters\\client_channel\\lb_policy\\grpclb\\client_load_reporting_filter.h'
HINT: This error might have occurred since this system does not have Windows Long Path support enabled. You can find information on how to enable
this at pip.pypa.io/warnings/enable-long-paths
Tienes que instalarlo con pip install
@@DimensionPardo claro así he instalado todo, pero lo raro es cuando va a terminar de instalar me sale error y es el segundo comentario que compartí
Buen tutorial, me lo he visto y he logrado entender gran parte del trabajo detras del chatbot.
Sin embargo no puedo compilar el programa debido a que no me reconocen las librerias numpy, nltk, nltk.stem, keras.model, keras.layers y keras.optimizers
¿Tuviste que descargar alguna extension especial para poder usarlas? Gracias
Tienes que instalarlas puedes buscar el comando pip install y el nombre de cada librería para instalarlas desde la terminal, es muy sencillo
@@DimensionPardo ya pude resolver ese problema de las librerías, gracias.
Sin embargo, cuando se hace una conversacion con el bot, antes de arrojar la respuesta aleatoria coloca la lista que reconoció y despues coloca la respuesta.
¿Hay alguna forma de ocultar ese apartado?
Los unicos cambios que hice fue colocar el SDG en vez del sdg.experimental
@@Arguingpit93 claro, tienes que eliminar los prints que fuimos poniendo durante el programa para comprobar que funcionaba bien
@@Arguingpit93 hola me podrias decir como solucionaste el problema de las librerias porfa
@@soypatino tienes que usar el comando pip install en la terminal del visual con cada una de las librerías ejemplo: pip install numpy y le das enter
Que app uso al inicio?
VSCode
Hola, me sale ImportError: cannot import name 'sgd' from 'keras.optimizers', probé importando el sdg a secas como vi en comentarios anteriores pero me sigue arrojando el mismo error. ;(
Hola lo que tenías que hacer era importar como SGD no como sgd
@@rgomez09 haciendo eso a mi tampoco me funcionó
Saludos excelente amigo, gracias por compartir tus conocimientos, pero soy principiante ni idea de donde sacaste esa interfaz para colocar los codigos, no se si tengas tutorial de como instalar todas las aplicaciones desde un principio y trabajar desde cero, muchas gracias
Es visual studio code, un editor de código muy popular y gratuito, próximamente haré un vídeo presentandolo
hola vengo a expresar mi experiencia tratando de que funcione siguiendo el video, duro un buen tiempo para que pudiera funcionar y cambie unas cosas por nuevas, si alguien quiero el codigo que cambie por si no les funciona el original lo pondre en este comentario con el nombre respectivo del archivo.
chatbot.py
import random
import json
import pickle
import numpy as np
import nltk
from nltk.stem import WordNetLemmatizer
from keras.models import load_model
lemmatizer = WordNetLemmatizer()
#Importamos los archivos generados en el código anterior
intents = json.loads(open('intents.json').read())
words = pickle.load(open('words.pkl', 'rb'))
classes = pickle.load(open('classes.pkl', 'rb'))
model = load_model('chatbot_model.keras')
#Pasamos las palabras de oración a su forma raíz
def clean_up_sentence(sentence):
sentence_words = nltk.word_tokenize(sentence)
sentence_words = [lemmatizer.lemmatize(word) for word in sentence_words]
return sentence_words
#Convertimos la información a unos y ceros según si están presentes en los patrones
def bag_of_words(sentence):
sentence_words = clean_up_sentence(sentence)
bag = [0]*len(words)
for w in sentence_words:
for i, word in enumerate(words):
if word == w:
bag[i]=1
print(bag)
return np.array(bag)
#Predecimos la categoría a la que pertenece la oración
def predict_class(sentence):
bow = bag_of_words(sentence)
res = model.predict(np.array([bow]))[0]
max_index = np.where(res ==np.max(res))[0][0]
category = classes[max_index]
return category
#Obtenemos una respuesta aleatoria
def get_response(tag, intents_json):
list_of_intents = intents_json['intents']
result = ""
for i in list_of_intents:
if i["tag"]==tag:
result = random.choice(i['responses'])
break
return result
#Ejecutamos el chat en bucle
while True:
message=input("")
ints = predict_class(message)
res = get_response(ints, intents)
print(res)
Muchas gracias! Si quieres puedes hacer un pull request al repositorio de GitHub y subo el tuyo como otra versión
hola, podrias compartis las modificaciones del codigo original? te lo agradeceria mucho
¿Dónde lo dejaste?
a mi me salen 10 problemas como el numpy, nltk y keras
excelente video..
A diferencia tuya , cada vez que recibo una respuesta del chatbot el terminal me muestra antes el procesamiento del step y luego la respuesta.
Hay alguna forma en que pueda ocultarlo?
(ejemplo:
Hola
1/1 ━━━━━━━━━━━━━━━━━━━━ 0s 69ms/step
Como estas?
En la última actualización también me lo muestra a mí
Veo que sabes mucho de lo que hablas y siento que sabrías responder mi pregunta, te cuento. No sé nada sobre programar pero me gustaría presentarte un problema y a ver si puedes darme una solución.
Me gustaría crear una IA con la que poder chatear y que aprenda de las información que va obteniendo de mis propias conversaciones con ella y que, además, tenga acceso a internet para buscar información ella por su cuenta cuando yo se lo ordene.
Es decir, me gustaría que tuviera mi personalidad, pero que además tuviera acceso a Internet para acceder a todo el mar de información y que con la ayuda de las cosas que yo le haya explicado aprenda qué clase de información es la que quiero y la que busco.
Por ejemplo, al principio me proporcionará información de páginas de google que no me interesan, pero cuando me la envíe yo le diré "no, esa información no me interesa, es demasiado simple, busco algo con un nivel mayor de complejidad".
Y a lo mejor ella me responde: "-Qué significa complejidad?"
Y yo le explicaré lo qué es la complejidad para mí y con mi concepto de complejidad, buscará en google aquello que se adapte a mi concepto de complejidad.
Espero haberme explicado. Si consiguiera crear algo así y me ayudases, estaría dispuesto a pagar dinero por ello.
Al menos y si es posible, respóndeme si lo que pido es algo fácil o difícil de hacer o directamente es imposible, para así poder hacerme una idea.
Muchas gracias. Añado:
¿Podría también, descargar algún modelo muy básico que cumpla con esas características (que comprenda el lenguaje humano básico) y entrenarlo yo?
Mi objetivo es crear una fuente personal de obtención de información y sin ningún filtro a la hora de proporcionarmela.
Sería como crear un minihumano pero con acceso a toda la información de internet y mi personalidad.
Espero no resulte compleja mi petición y recibir pronta respuesta, un placer.
Es complejo, pero posible, suena a una idea genial que puede ser maquetada y aplicada a muchas áreas.
Sgd_experimental no se importa soluciones?
Prueba simplemente con sgd
.....
from keras.optimizers import gradient_descent_legacy,SGD
....
sgdd = SGD(learning_rate=0.001,momentum=0.9, nesterov=True,decay=1e-6)
Buenisimo, me funciono, tenes idea como hacer para que tome informacion de internet para hacer responder?
Puedes usar una librería como beautiful soup para obtener info de internet y pasarla al json y entrenarlo periódicamente con alguna automatización
que gran video, gracias por este gran aporte, quiero preguntar si, se puede integrar este chatbot a un sitio web que se está desarrollando usando react para darle un diseño de interfaz y demás frontend?
Puedes exportar el modelo usando tensorflow.js y JavaScript para importarlo
Gracias, lo veré, lo otro que quería decir si es que el video es bueno pero no usa inteligencia artificial sino machine learning y esta bueno pero el título del video parece clickbait
@@themagnificence el machine learning es una rama de la inteligencia artificial y la gente está más familiarizada con la IA que con el ML entonces lo puse x eso
@@themagnificence pides consejos para integrar este chatbot a un sitio web que es algo básico y quieres enseñar la diferencia entre IA y ML, mejor no opines.
@@markiwis creo que el que no debería opinar es otro porque alguien que se especializa o conoce más de ciencia de datos no tiene por qué saber tanto de desarrollo web más que lo básico de html css y javascript, y veo que no sabes distinguir la diferencia así que yo que tú me habría quedado callado
Gracias
Hola excelete explicación, podrias hacer que el chatbot responda sobre temas que se le consulte, pero el chat bot debe consumir la información desde archivos pdf?
Puedes tratar de automatizarlo para que el archivo intents.json se genere a partir de un pdf
No instala la carpeta chatbot_model.h5
Es que no es una carpeta, sino un archivo
Para los que tengan problemas con la libreria tensorflow, es recomendable usar la versión 3.7.4 de Python o pueden consultar la compatibilidad de las versiones con la libreria. Excelente video, Gracias.
Bro
¡Buenos días! Quería expresar mi agradecimiento y felicitación por el increíble contenido que compartes. Realmente funciona a la perfección y se comprende con facilidad. Tengo una consulta y espero que puedas orientarme al respecto. Estoy interesado en crear un bot que pueda aprender algunos textos y una base de preguntas y respuestas, con la capacidad de responder a los usuarios sobre esos temas. He estado investigando y he encontrado varias herramientas, como CHATTERBOT, RiveScript, APIs, y también estoy considerando el desarrollo con NLTK y Spacy. Mi objetivo es encontrar una opción funcional y eficiente que no sea demasiado costosa. ¿Cuál sería tu recomendación al respecto? Agradecería mucho tu ayuda en este proceso. ¡Saludos!
Pues no controlo mucho de aplicaciones así. Si entiendes cómo funciona este código puedes modificarlo y adaptarlo a tus necesidades y supongo que podría funcionar pero tengo entendido que tienes muchas opciones comerciales para poder hacerlo también
@@DimensionPardo perfecto!!! muchas gracias voy a investigar más haber q encuentro
Buen video hermano, este chatbot tmb aprende?
No como lo hace chatgpt, aprende a distinguir entre las categorías que tú le marcas
Esque tengo un proyecto de la escuela y esto me ayuda como base, solo que a mi me piden que el chatbot sea un profesional en el area de la psicologia en mi caso que detecte que tan grave es la depresion. Haremos uso de una escala ya definida que nos ayuda a saber el grado de depresion haciendo una suma por ejemplo:
Tienes tristeza
1 nunca
2 a veces
3 muchas veces
4 Siempre
Y asi haciendo unas 7 preguntas sumas las respuestas y te da hasta 4 posibles diagnosticos.
El problema es que nose como hacer para que mi bot agarre la info y al final la sume para dar el diagnostico
@@salvafilms591 supongo que tendría que funcionar igual ya que tiene que clasificar el nivel de depresión que tiene y es lo que se hace en el vídeo
Hola, muchas gracias por este vídeo esta genial, una pregunta, este chat bot se puede conectar con Whatsapp?
Puedes usar librerías como pywhatkit para conectarlo
@@DimensionPardo Mil gracias!!
Podes hacer un vídeo explicando los códigos que pones y para que sirven por favor
Intento irlos explicando y detallando durante el vídeo pero estaré sacando uno con las bases del aprendizaje automático pronto
De que sirve copiar y pegar un código si no se sabe que hace desde un inicio
Intento ir explicando línea a linea lo que hace el código
Ya salió problemas con las últimas versiones de python sería bueno que lo actualices porfavor
En mi último vídeo subí el código actualizado
Me da un error pero no encuentro como corregirlo alguien me puede ayudar
y este es el mero coodigo de error
Se produjo una excepción: ValueError
setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (6, 2) + inhomogeneous part.
File "/home/fjrr/IA/S4/Python/chatbot.py", line 53, in
training = np.array(training)
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 2 dimensions. The detected shape was (6, 2) + inhomogeneous part.
Acabo de subir una actualización al Github solucionando ese error
yo no recuerdo copiar nada mal, sin embargo, y si aun te sirve, esta fue mi solución al mismo error:
for document in documents:
bag = []
word_patterns = document[0]
word_patterns = [lemmatizer.lemmatize(word.lower()) for word in word_patterns]
for word in words:
bag.append(1) if word in word_patterns else bag.append(0)
output_row = list(output_empty)
output_row[classes.index(document[1])] = 1
training.append([np.array(bag), np.array(output_row)])
random.shuffle(training)
training = np.array(training, dtype=object)
print(training)
que hace falta tener descargado para hacerlo , yo solo tengo python y el visual estudio y las extensiones de python
Tienes que instalar todas las librerías que nombro al principio que importamos y ya está
Está muy interesante pero hay algo que no logro controlar, he modificado los intents agregando más opciones, he agregado una opción con una respuesta por defecto en caso de no encontrar una opcion valida pero siempre me devuelve el saludo inicial. Alguna sugerencia?
Yo estoy en la misma
Añadí tags
Pero ninguno lo ejecuta
buen dia juan,muchas gracias por compartir, pues que te digo, le he seguido apenas 31 agosto/2023, muy interesante, me gradue en diciembre, estoy intentando mejorar y cubrir algunos vacios, estoy interesado en conseguir una certificacion de analytics enterprise professional, he visto bootcamps sobre machine learning y eso me causo la curiosidad, al adentrarme en lo del analisis de datos, veo que es importante el manejo de bots para las empresas, pero me gustaria lograr hacer un modelo lo mas cercano a un asistente digital, pues darme una idea, partiendo logico desde este tipo de modelo, no se de pronto una plantilla basica o un paso a paso, seria genial estare atento a lo que publiques, que tengas una feliz semana, muchas bendiciones🙏
Claro, lo que podrías hacer es que en lugar de responderte con texto que cuando detecte lo que le estás pidiendo que ejecute otras acciones con Python, que se conecte a otras librerías o apis y así aumentar su funcionalidad
ya que tengo un inconviente es que no me identifica el sgd_experimental
Tienes que instalarlo con pip install sino prueba a usar el sgd normal
que genial el chatbot, como se podría integrar a un proyecto django?
OYE LA VERDAD DE AGRADEZCO POR ESTE VIDEO, MUY CLARO Y FACIL POR QUE LA VERDAD AUN ME CUESTA COMO PRINCIPANTE ENTEDER ESTE MUNDO, una pregunta, tengo que hacer un chatbot igual como lo has hecho con PLN y que tenga aprendizaje por refuerzo, que debe hacer el chat que te digo, debe ser un agente inteligente que brinde informacion en alimentos y bebidas saludables que le permita mentener un peso saludable y controlar efermedades como la diabete e hipertencion, tu crees que a este chat lo pueda hacer esto y como lo haria, MUCHAS GRACIAS POR TU AYUDA LA VERDAD ME SERVIRIA MUCHO, ES UNA TAREA Y LA TENGO QUE HACER CUANTO ANTES, GRACIAS Y DISCULPA MI IGNORACIA
No creo que sea el modelo adecuado ya que no funciona con aprendizaje por refuerzo. Hay muchos tutoriales en UA-cam sobre como podrías hacerlo
@@DimensionPardo solo de tu guia, podria tomar este chat para hacerlo y luego añadir aprendizaje por refuerzo, tu me puedes guiar como o donde podria hacerlo, es que ve que el chat te quedo super, podria servir, la verdad estoy muy perdido y creo que tu podrias darme una luz, muchas gracias por tu respuesta
@@swithmerchan92 es que para hacer el aprendizaje por refuerzo sería un modelo completamente distinto y por lo tanto cambiaría todo el código de entrenamiento
@@DimensionPardo entiendo, entiendo, bueno, tu podrias ayduarme a desarrollar lo que busco o darme una idea, te he enviado un correo para que tu peudas revisarlo, oye la verdad muchas gracias por tu respuesta, eres muy amable la verdad muchas gracias por responder tan rapido
Hola.
Mucho tiempo sin sus vídeos.
Programación se me hace muy, muy difícil, o casi imposible.
Saludos.
Entiendo, le pasa a mucha gente. Intento subir videos variados para llegar a más gente. Ya volverán los vídeos de edición
Illegal instruction (core dumped)
me da
Quisiera saber bien lo de las redes neuronales, si podrias hacer un videoooo pliiis
Claro! Lo estaré haciendo próximamente!
Alguien me puede ayudar estoy haciendo un proyecto y me gustaría que mi chatbot pudiera responder atraves de una bocina 😅
Hola! ¿Y como lo pasamos a un html?
En Django
@@Magentochile puedes hacerlo con flask o Django y usar el backend de Python o usar tensorflow.js y usar el modelo que hemos creado con javascript
@@DimensionPardo sí ya lo hice en Django, pero tengo un problema. Le quiero agregar más tag y no me los lee, mira: {
"intents":[
{
"tag": "saludo",
"patterns": ["hola", "qué tal", "cómo estás", "saludos"],
"responses": ["Hola!", "Buenos días!", "¿Cómo estás?"]
},
{
"tag": "nombre",
"patterns": ["cómo es tu nombre", "cómo te llamas"],
"responses": ["Me llamo Boris Durán", "Mi nombre es Boris Durán"]
},
{
"tag": "gato_schrodinger",
"patterns": ["gato de Schrodinger", "qué es el gato de Schrodinger", "explicación del gato de Schrodinger"],
"responses": ["Es un experimento mental", "El gato está vivo o muerto."]
}
]
}
@@Magentochile pues no sé hay muchos corchetes asegúrate de que están bien puestos y lo que recomiendo siempre es ir imprimiendo cosas en la consola para detectar donde puede estar el problema ya que fui explicando lo que te debería aparecer en cada parte
Basta de Entrenar BOTS..!!!! Que el chat lea un TXT con la data de interés, lea esa data y responda segun esa info. Basta de entrenar!! La AI ya lo puede hacer. Vos podras diseñar un codigo que haga eso y se pueda incrustar en un chatbot de pagina web? Ese es el paso siguente del los chatbot con AI. Ej: Queres que te responda Freud alguna consulta? Cargale todos los libros de Freud y preguntale!
No entiendo muy bien por qué dices basta de entrenar bots y después que deberíamos entrenar a la IA e integrarlas en páginas web. Es un poco contradictorio
@@DimensionPardo Disculpa si no fui claro.. El entrenamiento implica: suponer una pregunta de un visitante y a esa pregunta determinarle una respuesta, y continuar esa mecánica tantas veces como precisión quieras en la respuesta. Hace una década que se hace eso. En este caso aprovechando la capacidad de interpretación de la IA a un texto, no habría entrenamiento. En el txt pones toda la información de tus productos, y sin que el visitante este sujeto a una pregunta determinada, el chatbot pueda responder con la informacion suministrada en el TXT. Cualquier cosa que pregunten, si esta en el txt, el chatgpt podra responder. No existirá mas la respuesta: DISCULPA, NO COMPRENDO TU PREGUNTA.
@@radiosolution_ar a ver, entiendo lo que quiere decir pero para que un ordenador interprete un txt tiene que haber un proceso de entrenamiento aunque sea distinto a otros métodos pero cualquiera de las formas de aprendizaje automático que usted ha mencionado requieren de algún tipo de entrenamiento por la naturaleza de la propia tecnología
@@DimensionPardo gracias por el vídeo. Y por lo que puedo entender de la propuesta del otro usuario: es similar a character Ai.
ya haz hecho uno?
Bueno, lo del fondo verde o la mascara mágica.
Lo elimino con el zoom y lo grabo directamente para ahorrarme edición. Os gusta?
@@DimensionPardo Que muy bien. Ya podrá explicar como lo hace.
Jajaja lo haré en algún vídeo, crees q queda mejor así o con el círculo para la pantalla? Y de forma normal con el fondo real o el virtual?
@@DimensionPardo Me gusta más asi, parece mas natural y no distrae de lo que explica.
Eso podría considerarse como PNL?
Es muy buena pregunta por un lado si porque está relacionando el significado de las palabras pero por otro lado esas relaciones las establecemos nosotros de forma manual por lo que podría dar lugar a debate
Hola amigo necesito de tu ayuda para crear un bot mandame tu numero para escribirte