eduardmtz commited on
Commit
2bcab4f
verified
1 Parent(s): 930d0f4

Update test1.html

Browse files
Files changed (1) hide show
  1. 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 modelo
31
- let modelo;
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
- const textoPDF = archivoPDF.join(" ");
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 entrenar un modelo simple (esto es solo un ejemplo)
70
- async function entrenarModelo(textoPDF) {
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 (!modelo) {
147
- // Si no hay modelo, intentar cargarlo desde IndexedDB
148
- modelo = await cargarModeloDesdeIndexedDB();
149
  }
150
 
151
- if (modelo && pregunta) {
152
- // Aqu铆 usamos un enfoque simple para tokenizar la pregunta
153
- const tokens = pregunta.split(" "); // Simple divisi贸n en palabras
154
- const input = tf.tensor([tokens.length]);
155
 
156
- const prediccion = modelo.predict(input);
157
- document.getElementById("respuesta").innerText = `Respuesta: ${prediccion.dataSync()}`;
 
 
 
 
 
 
 
158
  } else {
159
- alert("Por favor, cargue el PDF y entrene el modelo primero.");
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
+