File size: 1,876 Bytes
5852f36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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)}"