Spaces:
Running
Running
Update test1.html
Browse files- test1.html +23 -95
test1.html
CHANGED
|
@@ -1,4 +1,5 @@
|
|
| 1 |
<!DOCTYPE html>
|
|
|
|
| 2 |
<html lang="es">
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8">
|
|
@@ -27,21 +28,16 @@
|
|
| 27 |
<div id="respuesta"></div>
|
| 28 |
|
| 29 |
<script>
|
| 30 |
-
// Variable global para almacenar el
|
| 31 |
-
let
|
| 32 |
|
| 33 |
// Cargar y procesar el archivo PDF
|
| 34 |
async function procesarPDF() {
|
| 35 |
const archivo = document.getElementById("pdfInput").files[0];
|
| 36 |
if (archivo) {
|
| 37 |
const archivoPDF = await leerPDF(archivo);
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
// Entrenar el modelo con el texto extra铆do
|
| 41 |
-
modelo = await entrenarModelo(textoPDF);
|
| 42 |
-
|
| 43 |
-
// Almacenar los pesos del modelo en IndexedDB
|
| 44 |
-
almacenarPesosEnIndexedDB(modelo);
|
| 45 |
}
|
| 46 |
}
|
| 47 |
|
|
@@ -66,97 +62,28 @@
|
|
| 66 |
});
|
| 67 |
}
|
| 68 |
|
| 69 |
-
// Funci贸n para
|
| 70 |
-
|
| 71 |
-
// Utilizar el texto extra铆do del PDF para crear un modelo simple
|
| 72 |
-
const inputs = tf.tensor([textoPDF.length]);
|
| 73 |
-
|
| 74 |
-
// Crear un modelo simple
|
| 75 |
-
const modelo = tf.sequential();
|
| 76 |
-
modelo.add(tf.layers.dense({ units: 64, inputShape: [1] }));
|
| 77 |
-
modelo.add(tf.layers.dense({ units: 32 }));
|
| 78 |
-
modelo.add(tf.layers.dense({ units: 1, activation: 'sigmoid' }));
|
| 79 |
-
|
| 80 |
-
modelo.compile({ optimizer: 'adam', loss: 'binaryCrossentropy' });
|
| 81 |
-
await modelo.fit(inputs, inputs, { epochs: 10 });
|
| 82 |
-
|
| 83 |
-
return modelo;
|
| 84 |
-
}
|
| 85 |
-
|
| 86 |
-
// Almacenar los pesos del modelo en IndexedDB
|
| 87 |
-
async function almacenarPesosEnIndexedDB(modelo) {
|
| 88 |
-
const pesos = await modelo.getWeights();
|
| 89 |
-
|
| 90 |
-
const request = indexedDB.open("ModeloPDF", 1);
|
| 91 |
-
request.onupgradeneeded = function (event) {
|
| 92 |
-
const db = event.target.result;
|
| 93 |
-
if (!db.objectStoreNames.contains("modelos")) {
|
| 94 |
-
db.createObjectStore("modelos");
|
| 95 |
-
}
|
| 96 |
-
};
|
| 97 |
-
request.onsuccess = function (event) {
|
| 98 |
-
const db = event.target.result;
|
| 99 |
-
const transaction = db.transaction(["modelos"], "readwrite");
|
| 100 |
-
const store = transaction.objectStore("modelos");
|
| 101 |
-
|
| 102 |
-
// Convertir los pesos a un formato serializable (por ejemplo, a un array de floats)
|
| 103 |
-
const pesosSerializados = pesos.map(peso => peso.arraySync());
|
| 104 |
-
store.put(pesosSerializados, "modeloPesos");
|
| 105 |
-
|
| 106 |
-
transaction.oncomplete = function () {
|
| 107 |
-
console.log("Pesos del modelo almacenados en IndexedDB");
|
| 108 |
-
};
|
| 109 |
-
};
|
| 110 |
-
}
|
| 111 |
-
|
| 112 |
-
// Cargar los pesos desde IndexedDB y restaurar el modelo
|
| 113 |
-
async function cargarModeloDesdeIndexedDB() {
|
| 114 |
-
const request = indexedDB.open("ModeloPDF", 1);
|
| 115 |
-
return new Promise((resolve, reject) => {
|
| 116 |
-
request.onsuccess = function (event) {
|
| 117 |
-
const db = event.target.result;
|
| 118 |
-
const transaction = db.transaction(["modelos"], "readonly");
|
| 119 |
-
const store = transaction.objectStore("modelos");
|
| 120 |
-
|
| 121 |
-
const getRequest = store.get("modeloPesos");
|
| 122 |
-
getRequest.onsuccess = async function () {
|
| 123 |
-
const pesosSerializados = getRequest.result;
|
| 124 |
-
if (pesosSerializados) {
|
| 125 |
-
const pesos = pesosSerializados.map(peso => tf.tensor(peso));
|
| 126 |
-
// Crear un nuevo modelo con los pesos cargados
|
| 127 |
-
const modelo = tf.sequential();
|
| 128 |
-
modelo.add(tf.layers.dense({ units: 64, inputShape: [1] }));
|
| 129 |
-
modelo.add(tf.layers.dense({ units: 32 }));
|
| 130 |
-
modelo.add(tf.layers.dense({ units: 1, activation: 'sigmoid' }));
|
| 131 |
-
modelo.setWeights(pesos);
|
| 132 |
-
resolve(modelo);
|
| 133 |
-
} else {
|
| 134 |
-
reject("No se encontraron pesos para el modelo.");
|
| 135 |
-
}
|
| 136 |
-
};
|
| 137 |
-
getRequest.onerror = reject;
|
| 138 |
-
};
|
| 139 |
-
request.onerror = reject;
|
| 140 |
-
});
|
| 141 |
-
}
|
| 142 |
-
|
| 143 |
-
// Funci贸n para responder una pregunta utilizando el modelo
|
| 144 |
-
async function responderPregunta() {
|
| 145 |
const pregunta = document.getElementById("inputPregunta").value;
|
| 146 |
-
if (!
|
| 147 |
-
|
| 148 |
-
|
| 149 |
}
|
| 150 |
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
const tokens = pregunta.split(" "); // Simple divisi贸n en palabras
|
| 154 |
-
const input = tf.tensor([tokens.length]);
|
| 155 |
|
| 156 |
-
|
| 157 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
} else {
|
| 159 |
-
|
| 160 |
}
|
| 161 |
}
|
| 162 |
</script>
|
|
@@ -165,3 +92,4 @@
|
|
| 165 |
|
| 166 |
|
| 167 |
|
|
|
|
|
|
| 1 |
<!DOCTYPE html>
|
| 2 |
+
<!DOCTYPE html>
|
| 3 |
<html lang="es">
|
| 4 |
<head>
|
| 5 |
<meta charset="UTF-8">
|
|
|
|
| 28 |
<div id="respuesta"></div>
|
| 29 |
|
| 30 |
<script>
|
| 31 |
+
// Variable global para almacenar el texto del PDF
|
| 32 |
+
let textoPDF = "";
|
| 33 |
|
| 34 |
// Cargar y procesar el archivo PDF
|
| 35 |
async function procesarPDF() {
|
| 36 |
const archivo = document.getElementById("pdfInput").files[0];
|
| 37 |
if (archivo) {
|
| 38 |
const archivoPDF = await leerPDF(archivo);
|
| 39 |
+
textoPDF = archivoPDF.join(" ");
|
| 40 |
+
alert("PDF cargado y procesado.");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
}
|
| 42 |
}
|
| 43 |
|
|
|
|
| 62 |
});
|
| 63 |
}
|
| 64 |
|
| 65 |
+
// Funci贸n para responder una pregunta utilizando el texto del PDF
|
| 66 |
+
function responderPregunta() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 67 |
const pregunta = document.getElementById("inputPregunta").value;
|
| 68 |
+
if (!textoPDF) {
|
| 69 |
+
alert("Por favor, cargue un PDF primero.");
|
| 70 |
+
return;
|
| 71 |
}
|
| 72 |
|
| 73 |
+
// Tokenizar la pregunta en palabras clave
|
| 74 |
+
const palabrasClave = pregunta.toLowerCase().split(" ");
|
|
|
|
|
|
|
| 75 |
|
| 76 |
+
// Buscar frases que contengan las palabras clave
|
| 77 |
+
const frases = textoPDF.split(".");
|
| 78 |
+
const frasesRelevantes = frases.filter(frase => {
|
| 79 |
+
return palabrasClave.some(palabra => frase.toLowerCase().includes(palabra));
|
| 80 |
+
});
|
| 81 |
+
|
| 82 |
+
if (frasesRelevantes.length > 0) {
|
| 83 |
+
// Devolver la primera frase relevante
|
| 84 |
+
document.getElementById("respuesta").innerText = "Respuesta: " + frasesRelevantes[0];
|
| 85 |
} else {
|
| 86 |
+
document.getElementById("respuesta").innerText = "No se encontraron respuestas relevantes.";
|
| 87 |
}
|
| 88 |
}
|
| 89 |
</script>
|
|
|
|
| 92 |
|
| 93 |
|
| 94 |
|
| 95 |
+
|