Spaces:
Paused
Paused
| from sentence_transformers import SentenceTransformer | |
| from sklearn.metrics.pairwise import cosine_similarity | |
| import numpy as np | |
| from accelerate import Accelerator | |
| import gradio as gr | |
| # Inicializa el Accelerator | |
| accelerator = Accelerator() | |
| # Cargar el modelo y colocarlo en el dispositivo adecuado | |
| model = SentenceTransformer('Maite89/Roberta_finetuning_semantic_similarity_stsb_multi_mt') | |
| model, _ = accelerator.prepare(model, model) | |
| # Funci贸n para obtener embeddings del modelo | |
| def get_embeddings(sentences): | |
| # Preparar los datos para ejecuci贸n acelerada | |
| sentences = accelerator.prepare(sentences) | |
| return model.encode(sentences, show_progress_bar=False, convert_to_tensor=True) | |
| # Funci贸n para calcular la similitud | |
| def calculate_similarity(arguments): | |
| source_embedding, compare_embedding = arguments | |
| return cosine_similarity([source_embedding], [compare_embedding])[0][0] | |
| # Funci贸n para comparar oraciones | |
| def compare(source_sentence, compare_sentences): | |
| compare_list = compare_sentences.split("--") | |
| # Obtener todos los embeddings de una vez para acelerar el proceso | |
| all_sentences = [source_sentence] + compare_list | |
| all_embeddings = get_embeddings(all_sentences) | |
| # No se necesita multiprocesamiento si usamos Accelerate ya que esto se maneja internamente | |
| source_embedding = all_embeddings[0] | |
| similarities = [calculate_similarity((source_embedding, emb)) for emb in all_embeddings[1:]] | |
| return ', '.join([str(sim) for sim in similarities]) | |
| # Define las interfaces de entrada y salida de Gradio | |
| iface = gr.Interface( | |
| fn=compare, | |
| inputs=["text", "text"], | |
| outputs="text", | |
| live=False | |
| ) | |
| # Iniciar la interfaz de Gradio | |
| iface.launch() | |