ancerlop commited on
Commit
f200c06
1 Parent(s): bcd061e

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -0
app.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from glob import glob
3
+ from sentence_transformers import SentenceTransformer
4
+ import gradio as gr
5
+ import numpy as np
6
+ import faiss
7
+
8
+ # Cargar el modelo de Sentence Transformers
9
+ model_name = "quora-distilbert-multilingual"
10
+ model = SentenceTransformer(model_name)
11
+
12
+ # Funci贸n para vectorizar un texto
13
+ def vectorize_text(text):
14
+ return model.encode([text])[0]
15
+
16
+ # Obtener una lista de todos los archivos *.index en el directorio
17
+ archivos_indices = glob("*.index")
18
+
19
+ # Cargar todos los 铆ndices de Faiss
20
+ indices = []
21
+ for archivo_index in archivos_indices:
22
+ index = faiss.read_index(archivo_index)
23
+ indices.append(index)
24
+
25
+ # Funci贸n para predecir la similitud con cada 铆ndice
26
+ def predecir_similitud(texto):
27
+ resultados = []
28
+
29
+ # Vectorizar el texto (usando la misma funci贸n que antes)
30
+ texto_vectorizado = vectorize_text(texto)
31
+
32
+ for i, index in enumerate(indices):
33
+ # Buscar similitud con Faiss
34
+ texto_vectorizado_np = np.array([texto_vectorizado], dtype=np.float32)
35
+ D, I = index.search(texto_vectorizado_np, 1) # Buscar el vector m谩s cercano
36
+ similitud = 1 - D[0][0] # Calcular similitud de coseno
37
+
38
+ # Comparar con el umbral y proporcionar el resultado
39
+ if similitud >= umbral_similitud:
40
+ resultado = f"Coincidencia con 铆ndice {i} (similitud: {similitud:.2f})"
41
+ else:
42
+ resultado = f"No se detect贸 coincidencia con 铆ndice {i} (similitud: {similitud:.2f})"
43
+
44
+ resultados.append(resultado)
45
+
46
+ return resultados
47
+
48
+ # Crear la interfaz de Gradio con un bot贸n de "Predecir"
49
+ iface = gr.Interface(
50
+ fn=predecir_similitud,
51
+ inputs=gr.inputs.Textbox(default="Ingrese su texto aqu铆"),
52
+ outputs=gr.outputs.Textbox(),
53
+ live=False,
54
+ title="Detector de Coincidencias",
55
+ description="Ingrese un texto y haga clic en 'Predecir' para detectar coincidencias con los vectores."
56
+ )
57
+
58
+ # Ejecutar la interfaz
59
+ iface.launch()