Spaces:
Sleeping
Sleeping
| 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)}" |