from sentence_transformers import SentenceTransformer from sklearn.metrics.pairwise import cosine_similarity import numpy as np # Cargar el modelo una sola vez modelo_embeddings = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2") # Embeddings simulados de autores literarios famosos (representación simplificada) autores_perfiles = { "Julio Cortázar": modelo_embeddings.encode("La estructura fragmentaria y los juegos de lenguaje son frecuentes."), "Clarice Lispector": modelo_embeddings.encode("Explora la introspección, la emoción cruda y el lenguaje poético."), "Roberto Bolaño": modelo_embeddings.encode("Narración fragmentaria, tensión persistente, humor implícito."), "Gabriel García Márquez": modelo_embeddings.encode("Uso natural de lo mágico y una narrativa fluida y envolvente."), "Juan Carlos Onetti": modelo_embeddings.encode("Tono sombrío, estilo existencial y descripciones minimalistas."), } def comparar_estilo_embeddings(texto_usuario): if not texto_usuario.strip(): return "⚠️ El texto está vacío. Por favor, introduce contenido válido." try: emb_usuario = modelo_embeddings.encode(texto_usuario) resultados = [] for autor, emb_autor in autores_perfiles.items(): similitud = cosine_similarity([emb_usuario], [emb_autor])[0][0] resultados.append((autor, similitud)) resultados.sort(key=lambda x: x[1], reverse=True) md = "## 🧬 Comparación con Estilos de Autores (Embeddings Reales)\n\n" for autor, score in resultados: md += f"- **{autor}** → similitud: `{score:.4f}`\n" md += "\n> _Este análisis se basa en similitud semántica usando embeddings._\n" return md except Exception as e: return f"❌ Error durante la comparación de estilo: {str(e)}"