Agente-editorial-novela / editor_literario_embeddings.py
Horacio Perez
Upload 11 files
5852f36 verified
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)}"