from sentence_transformers import SentenceTransformer import gradio as gr import numpy as np import faiss # Cargar el modelo de Sentence Transformers model_name="quora-distilbert-multilingual" model = SentenceTransformer(model_name) # Función para vectorizar un texto def vectorize_text(text): return model.encode([text])[0] # Cargar el índice de Faiss index = faiss.read_index("faiss_train_index.index") # Establecer el umbral de similitud (puedes ajustarlo según tus necesidades) umbral_similitud = 0.8 # Función para la predicción def predecir_similitud(texto): # Vectorizar el texto (usando la misma función que antes) texto_vectorizado = vectorize_text(texto) # Buscar similitud con Faiss texto_vectorizado_np = np.array([texto_vectorizado], dtype=np.float32) D, I = index.search(texto_vectorizado_np, 1) # Buscar el vector más cercano similitud = 1 - D[0][0] # Calcular similitud de coseno # Comparar con el umbral y proporcionar el resultado if similitud >= umbral_similitud: resultado = f"Coincidencia detectada (similitud: {similitud:.2f})" else: resultado = f"No se detectó coincidencia (similitud: {similitud:.2f}") return resultado # Crear la interfaz de Gradio con un botón de "Predecir" iface = gr.Interface( fn=predecir_similitud, inputs=gr.inputs.Textbox(default="Ingrese su texto aquí"), outputs=gr.outputs.Textbox(), live=True, title="Detector de Coincidencias", description="Ingrese un texto y haga clic en 'Predecir' para detectar coincidencias con los vectores." ) # Ejecutar la interfaz iface.launch()