ðŽ CÃģmo Crear un Chatbot con INTELIGENCIA ARTIFICIAL en Python
āļāļąāļ
- āđāļāļĒāđāļāļĢāđāđāļĄāļ·āđāļ 5 āļ.āļ. 2024
- ðĨ Aprende a crear en pocos minutos un chatbot completamente funcional al estilo de ChatGPT completamente en espaÃąol y para principiantes.
---------------------------------------------------------------------------------
Ãnete al servidor de Discord!: / discord
Contacto: pabloparper@gmail.com
Clases y mÃĄs informaciÃģn en la pÃĄgina web: dimensionpardo.github.io/Dime...
CÃģdigo en github (actualizado corrigiendo errores que podÃĄis tener): github.com/DimensionPardo/cha...
Sube tu modelo a la web: âĒ âïļ ÂŋCÃģmo Integrar Mode...
0:00 - Intro
0:48 - Definir patrones y respuestas
4:55 - Entrenamiento
24:16 - Predicciones
32:13 - ProbÃĄndolo - āļ§āļīāļāļĒāļēāļĻāļēāļŠāļāļĢāđāđāļĨāļ°āđāļāļāđāļāđāļĨāļĒāļĩ
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ÃĐ ðĒ
Magnifico video! Gracias, saludos!!!
excelente video! muchas gracias!
Excelente video, te felicito gran trabajo!!!!!
Hola, quisiera saber que versiÃģn de Python y de las librerÃas usaste?
para no tener problemas de versiÃģn.
Buenas, que complementos de el VIsual usaste en el video? Es que algunas librerÃas no me las reconoce
Buen video!
Hice algunas modificaciones al codigo para implementarlo en DJANGO y funciona correctamente.
Buen video ð te felicito
explicas muy biennn segui asi
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 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
Buen video , gracias
QuÃĐ librerÃas usas para tener esa apariencia al escribir en JSON?
Muchas gracias por el video funciona ok.
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
ÂŋComo puedo agregar mas tags y que los use?
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
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
Gracias
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 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.
Hola buenas! Has utilizado Rasa para algÚn chatbog?
Nop
que haces aqui fred
cuando le doy imprimir descarga unos archivos, al final se prensenta TypeError: append() takes exactly one argument (2 given)
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, 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
que paquetes son?
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
que genial el chatbot, como se podrÃa integrar a un proyecto django?
Me da error en dense como soluciono porfa?
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
Y si quiero programar un chat bot para que interprete un personaje?
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.
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
No me detecta el comando: Dense, Sequential, WordNetLeammatizer, nltk.stem, keras.layers
Âŋ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
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
ÂĄ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
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
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
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
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.
@@marcocontreras1860 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, 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!!
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
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)
@@rgomez0920 hÃĐroe sin capa! Mil gracias! ðĪĐ
@@rgomez0920 que grande amigo jaja muchas gracias
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)
â@@rgomez0920bro 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 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
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 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
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
Una pregunta como puedo importar los codigos numpy ??
La librerÃa se importa automÃĄticamente cuando escribes import numpy
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?
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)
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
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
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
me dice que output_empty is not defined, a que se debe esto?
tienes que asegurarte de que al principio del cÃģdigo cuando declaramos esa variable lo tienes bien puesto
me pueden decirl que librerias se instalaron?
Todas las que se importan al principio del programa
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
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
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
@@rgomez0920 haciendo eso a mi tampoco me funcionÃģ
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
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Ã
Que app uso al inicio?
VSCode
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
Hola, me aparece que la libreria "numpy" no existe... ðĒ
Me pasa igual y me manda a seleccionar interprete
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 TH-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
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)
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.
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ÃĄ
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Ã
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.
{}
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)
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
Quisiera saber bien lo de las redes neuronales, si podrias hacer un videoooo pliiis
Claro! Lo estarÃĐ haciendo prÃģximamente!
No instala la carpeta chatbot_model.h5
Es que no es una carpeta, sino un archivo
Illegal instruction (core dumped)
me da
Alguien me puede ayudar estoy haciendo un proyecto y me gustarÃa que mi chatbot pudiera responder atraves de una bocina ð
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
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
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
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?
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.
Hola amigo necesito de tu ayuda para crear un bot mandame tu numero para escribirte