Introducción
¿Alguna vez has comparado dos versiones de un modelo LLM y te has preguntado:¿cuál de ellos mantiene mejor la narrativa en una historia de 10.000 palabras?La respuesta no es sencilla: las métricas estándar (perplejidad, BLEU, ROUGE, F1) no capturan lacoherencia a largo plazo. En este artículo examinamos cuál métrica es la más fiable, cómo construir un benchmark personalizado para tu dominio y cómo implementar una pipeline de pruebas. Al final tendrás las herramientas prácticas para comparar modelos y mejorar tu flujo de desarrollo.
1. Las métricas clásicas y sus limitaciones
Las métricas más difundidas en NLP son:
- Perplejidad: mide la probabilidad media del modelo sobre un texto, pero no distingue entre generaciones coherentes e incoherentes.
- BLEUyROUGE: comparan n-gramas con un referente; excelentes para traducciones, pero no para narrativa.
- F1: mide precisión y recall de entidades; útil para extracción, no para coherencia narrativa.
En la práctica, estas métricas no penalizan una desviación de tono, un cambio de personajes o una distracción temática. Por eso se ha desarrollado una nueva clase de métricas orientadas a lacoherencia narrativa.
2. Métricas de coherencia narrativa
Las métricas más prometedoras son:
- StoryCoh: evalúa la coherencia temática y de personajes en fragmentos largos.
- Puntuación de Impacto Narrativo (NIS): mide el impacto emocional y la linealidad de la trama.
- Coherencia de Discurso (DC): utiliza embeddings de párrafos para calcular la similitud a largo plazo.
Entre ellas,StoryCohse ha demostrado la más fiable para benchmark de LLM: combina un modelo de comprensión textual con un puntaje basado en el contexto global.
StoryCoh en detalle
StoryCoh funciona en tres fases:
- Tokenización y segmentación en párrafos.
- Generación de embeddings con un modelo de representación de lenguaje (por ejemplo
sentence-transformers). - Cálculo de la similitud entre párrafos adyacentes y no adyacentes, sumando los puntajes para obtener un valor global de 0 a 1.
Ejemplo de cálculo consentence-transformers:
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('all-MiniLM-L6-v2')
text = open('story.txt').read().split('\n\n') # párrafos
embs = model.encode(text, convert_to_tensor=True)
cos_scores = util.cos_sim(embs, embs)
# cálculo de la media de similitud adyacente
adj_scores = [cos_scores[i, i+1] for i in range(len(text)-1)]
story_coh = sum(adj_scores)/len(adj_scores)
print('StoryCoh:', story_coh.item())3. Construir un benchmark personalizado
Para un dominio específico (por ejemplo novelas de fantasía, manuales técnicos, diálogos de chatbot), debes:
- Reunir un dataset de alta calidadcon anotaciones de coherencia (puedes usar crowdsourcing o anotadores expertos).
- Definir un criterio de referencia(por ejemplo, una historia "ideal" escrita por un autor humano).
- Evaluar cada modelo con StoryCoh y compararlo con la referencia.
Paso 1: Recolección del dataset
- Descarga textos deProject Gutenbergpara novelas clásicas.
- Para manuales técnicos, usaarXivoOSTI.
- Anota conMTurkevaluaciones de coherencia en escala 1-5.
Paso 2: Creación del archivo de benchmark
Guarda los textos en un archivo JSON:
{
"id": "001",
"text": "...",
"coherence_rating": 4
}4. Pipeline de pruebas para coherencia en textos largos
Aquí tienes una pipeline simplificada en Python:
import json, os
from sentence_transformers import SentenceTransformer, util
import torch
model = SentenceTransformer('all-MiniLM-L6-v2')
def compute_storycoh(text):
paras = [p for p in text.split('\n\n') if p]
embs = model.encode(paras, convert_to_tensor=True)
cos_scores = util.cos_sim(embs, embs)
adj = [cos_scores[i, i+1] for i in range(len(paras)-1)]
return torch.mean(torch.tensor(adj)).item()
results = []
for file in os.listdir('dataset'):
if file.endswith('.json'):
data = json.load(open(os.path.join('dataset', file)))
score = compute_storycoh(data['text'])
results.append({
'id': data['id'],
'score': score,
'rating': data.get('coherence_rating', None)
})
# Guarda resultados
with open('results.json', 'w') as f:
json.dump(results, f, indent=2)Interpretar los resultados
- Puntaje alto (0.8-1.0): el modelo mantiene excelente coherencia.
- Puntaje medio (0.5-0.8): coherencia aceptable, pero vigila los cambios de tono.
- Puntaje bajo (: el modelo tiende a desviarse, necesita fine-tuning.
5. Cómo mejorar los modelos según los resultados
- Fine-tuning en dataset de dominio: entrena el modelo con tus textos para mantener estilo y tono.
- Ingeniería de prompts avanzada: usa prompts de configuración,story promptscon metadata de personajes y trama.
- : aplica un modelo secundario de evaluación para filtrar salidas incoherentes.
- IntegraStoryCohen tu pipeline CI/CD para monitorear la coherencia de forma regular.
Conclusión
Para evaluar la capacidad de un LLM de mantener la coherencia narrativa en textos largos, la métrica más fiable esStoryCoh, que combina embeddings y similitud a largo plazo. Con un benchmark personalizado y una pipeline de pruebas automatizada, puedes medir, analizar y mejorar los modelos de forma continua. Implementa estas estrategias de inmediato y lleva tu generación de texto a un nuevo nivel de coherencia y calidad.
Preguntas Frecuentes
¿Cuáles son las limitaciones de la perplejidad para la coherencia narrativa?
La perplejidad mide solo la probabilidad media del modelo, no captura el contexto a largo plazo, por lo que no penaliza desviaciones de tono o trama.
¿Cómo puedo integrar StoryCoh en mi pipeline CI/CD?
Puedes escribir un pequeño script en Python que calcule StoryCoh sobre nuevas generaciones y lo añada como prueba automática; en caso de puntaje bajo, bloquea el merge o avisa al equipo.