chatbot con tensorflow.js del lado del cliente con tensorflow.js
Fri Dec 16 2022 15:17:07 GMT+0000 (Coordinated Universal Time)
Saved by @modesto59 #html
<!-- Formulario para hacer preguntas al chatbot --> <form id="chatbot-form"> <label for="question">Hacer una pregunta:</label><br> <input type="text" id="question" name="question"><br> <input type="submit" value="Enviar"> </form> <!-- Etiqueta para mostrar la respuesta del chatbot --> <p id="answer"></p> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.5.0/dist/tf.min.js"></script> // Crea una función para procesar el archivo de entrenamiento y devolver un conjunto de datos de entrenamiento const processTrainingData = text => { const lines = text.split('\n') return lines.map(line => { const [question, answer] = line.split(':') return { input: question, output: answer } }) } // Lee el archivo de entrenamiento y procesa los datos de entrenamiento const trainingData = processTrainingData(fs.readFileSync('training-data.txt', 'utf8')) // Crea un modelo de secuencia a secuencia con TensorFlow.js const model = tf.sequential() // Añade una capa de embedding para procesar el texto de entrada model.add(tf.layers.embedding({ inputDim: 10000, outputDim: 64 })) // Añade una capa LSTM para procesar el texto de entrada model.add(tf.layers.lstm({ units: 64, returnSequences: true, recurrentInitializer: 'glorotNormal' })) // Añade una capa de atención para mejorar la precisión del modelo model.add(tf.layers.attention()) // Añade una capa densa para procesar la salida model.add(tf.layers.dense({ units: 64, activation: 'relu' })) // Añade una capa de salida para generar la respuesta model.add(tf.layers.dense({ units: 1, activation: 'sigmoid' })) // Compila el modelo model.compile({ loss: 'binaryCrossentropy', optimizer: 'adam' }) // Entrena el modelo model.fit(trainingData, { epochs: 10 }) // Crea una función para hacer preguntas al chatbot const ask = question => { // Valida que la pregunta no esté vacía if (!question) { console.error("Por favor ingrese una pregunta válida"); return; } // Muestra la pregunta del usuario console.log(`Usuario: ${question}`); // Pide una respuesta a la red neuronal try { const answer = model.predict(question); // Muestra la respuesta del chatbot console.log(`Chatbot: ${answer}`); } catch (error) { console.error("Error al obtener respuesta del chatbot:", error); } }; ______________________________________________________________________________________________ <form id="chatbot-form"> <label for="question">Hacer una pregunta:</label><br> <input type="text" id="question" name="question"><br> <input type="submit" value="Enviar"> </form> <!-- Etiqueta para mostrar la respuesta del chatbot --> <p id="answer"></p> <script> // Crea una función para hacer preguntas al chatbot function ask(question) { // Valida que la pregunta no esté vacía if (!question) { console.error("Por favor ingrese una pregunta válida"); return; } // Muestra la pregunta del usuario console.log(`Usuario: ${question}`); // Pide una respuesta a la red neuronal try { const answer = model.predict(question); // Muestra la respuesta del chatbot console.log(`Chatbot: ${answer}`); // Muestra la respuesta del chatbot en la etiqueta p document.getElementById("answer").textContent = answer; } catch (error) { console.error("Error al obtener respuesta del chatbot:", error); } } // Agrega un manejador de eventos submit al formulario document.getElementById("chatbot-form").addEventListener("submit", event => { // Evita que la página se recargue event.preventDefault(); // Obtiene la pregunta del usuario const question = document.getElementById("question").value; // Hace la pregunta al chatbot ask(question); }); </script> OTRO CÓDIGO const model = tf.sequential(); // Añade una capa de embedding para procesar el texto de entrada model.add(tf.layers.embedding({ inputDim: 10000, outputDim: 64 })); // Añade una capa LSTM para procesar el texto de entrada model.add(tf.layers.lstm({ units: 64, returnSequences: true, recurrentInitializer: 'glorotNormal' })); // Añade una capa de atención para mejorar la precisión del modelo model.add(tf.layers.attention()); // Añade una capa densa para procesar la salida model.add(tf.layers.dense({ units: 64, activation: 'relu' })); // Añade una capa de salida para generar la respuesta model.add(tf.layers.dense({ units: 1, activation: 'sigmoid' })); // Compila el modelo model.compile({ loss: 'binaryCrossentropy', optimizer: 'adam' }); // Entrena el modelo model.fit(trainingData, { epochs: 10 }); // Crea una función para hacer preguntas al chatbot const ask = question => { // Valida que la pregunta no esté vacía if (!question) { console.error("Por favor ingrese una pregunta <!-- Formulario HTML para hacer preguntas al chatbot --> <form id="chatbot-form"> <label for="question">Hacer una pregunta:</label><br> <input type="text" id="question" name="question"><br> <input type="submit" value="Enviar"> </form> <!-- Etiqueta para mostrar la respuesta del chatbot --> <p id="answer"></p> <!-- Incluye la biblioteca TensorFlow.js --> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.5.0/dist/tf.min.js"></script> <script> // Crea una función para procesar el archivo de entrenamiento y devolver un conjunto de datos de entrenamiento const processTrainingData = text => { const lines = text.split('\n') return lines.map(line => { const [question, answer] = line.split(':') return { input: question, output: answer } }) } // Lee el archivo de entrenamiento y procesa los datos de entrenamiento const trainingData = processTrainingData(fs.readFileSync('training-data.txt', 'utf8')) // Crea un modelo de secuencia a secuencia con TensorFlow.js const model = tf.sequential() // Añade una capa de embedding para procesar el texto de entrada model.add CODIGO COMPLETO <!-- Formulario HTML para hacer preguntas al chatbot --> <form id="chatbot-form"> <label for="question">Hacer una pregunta:</label><br> <input type="text" id="question" name="question"><br> <input type="submit" value="Enviar"> </form> <!-- Etiqueta para mostrar la respuesta del chatbot --> <p id="answer"></p> <!-- Incluye la biblioteca TensorFlow.js --> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@2.5.0/dist/tf.min.js"></script> <script> // Crea una función para procesar el archivo de entrenamiento y devolver un conjunto de datos de entrenamiento const processTrainingData = text => { const lines = text.split('\n') return lines.map(line => { const [question, answer] = line.split(':') return { input: question, output: answer } }) } // Lee el archivo de entrenamiento y procesa los datos de entrenamiento const trainingData = processTrainingData(fs.readFileSync('training-data.txt', 'utf8')) // Crea un modelo de secuencia a secuencia con TensorFlow.js const model = tf.sequential() // Añade una capa de embedding para procesar el texto de entrada model.add(tf.layers.embedding({ inputDim: 10000, outputDim: 64 })) // Añade una capa LSTM para procesar el texto de entrada model.add(tf.layers.lstm({ units: 64, returnSequences: true, recurrentInitializer: 'glorotNormal' })) // Añade una capa de atención para mejorar la precisión del modelo model.add(tf.layers.attention()) // Añade una capa densa para procesar la salida model.add(tf.layers.dense({ units: 64, activation: 'relu' })) // Añade una capa de salida para generar la respuesta model.add(tf.layers.dense({ units: 1, activation: 'sigmoid' })) // Compila el modelo model.compile({ loss: 'binaryCrossentropy', optimizer: 'adam' }) // Entrena el modelo model.fit(trainingData, { epochs: 10 }) // Crea una función para hacer preguntas al chatbot const ask = question => { // Valida que la pregunta no esté vacía if (!question) { console.error("Por favor ingrese una pregunta válida"); return; } // Muestra la pregunta del usuario console.log(`Usuario: ${question}`); // Pide una respuesta a la red neuronal try { const answer = model.predict(question); // Muestra la respuesta del chatbot console.log(`Chatbot: ${answer}`); } catch (error) { console.error("Error al obtener respuesta del chatbot:", error); } }; // Asigna un manejador de eventos al botón Enviar del formulario document.getElementById('chatbot-form').addEventListener('submit', event => { // Previene la acción por defecto del formulario event.preventDefault(); // Obtiene la pregunta del usuario const question = document.getElementById('question').value; // Obtiene la pregunta del usuario const question = document.getElementById('question').value; // Hace una pregunta al chatbot ask(question); // Muestra la respuesta del chatbot en la página document.getElementById('answer').textContent = answer; }); </script>
Comments