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 |
+
|