somosnlp-hackathon-2026/paraguay-cultural-alignment
Paraguay Cultural Alignment Dataset en español para alineamiento cultural paraguayo, con dos modalidades de entrenamiento: SFT (Supervised Fine-Tuning) y DPO (Direct Preference Optimization). Diseñado para enseñar a modelos a generar continuaciones culturalmente alineadas siguiendo un patrón estructurado de cuatro bloques que conecta texto base con el corpus guaraní paraguayo. Patrón de Generación Cada chosen, rejected y response es una continuación completa… See the full description on the dataset page: https://huggingface.co/datasets/somosnlp-hackathon-2026/paraguay-cultural-alignment.
Paraguay Cultural Alignment
Dataset en español para alineamiento cultural paraguayo, con dos modalidades de entrenamiento: SFT (Supervised Fine-Tuning) y DPO (Direct Preference Optimization).
Diseñado para enseñar a modelos a generar continuaciones culturalmente alineadas siguiendo un patrón estructurado de cuatro bloques que conecta texto base con el corpus guaraní paraguayo.
Patrón de Generación
Cada chosen, rejected y response es una continuación completa formateada en cuatro bloques secuenciales:
[inicio] → [base] → [link] → [cultural]Ejemplo de continuación bien formada
El prompt es la respuesta de otra LLM que sirve de texto base:
prompt → El bosque de Camp Clover alberga desde colibríes iridiscentes hasta águilas
que sobrevuelan el lago en busca de peces, un mundo de aves que conviven
en distintos estratos del bosque.La continuación (chosen / response) respeta el patrón (sin etiquetas):
[inicio] Detente un segundo antes de seguir.
[base] El bosque de Camp Clover alberga desde colibríes iridiscentes hasta águilas
que sobrevuelan el lago en busca de peces, un mundo de aves que conviven
en distintos estratos del bosque.
[link] Ese canto que llena los árboles tiene un eco en la cultura guaraní
que pocos conocen.
[cultural] El Pájaro de Campana es uno de los pájaros más raros de nuestros bosques —
parecido a una paloma blanca con cola cenicienta, su canto tiene la misma
vibración metálica de una campana que toca a duelo.¿Qué hace que una continuación sea rejected?
Un rejected puede fallar en el siguiente criterio:
- [cultural] que corresponde a un fragmento del corpus con baja relevancia semántica respecto al prompt
Fuentes
Configs
sft — Supervised Fine-Tuning
Formato de respuesta única para entrenamiento supervisado. Ideal como primer paso de fine-tuning antes de aplicar DPO.
dpo — Direct Preference Optimization
Pares de preferencia con splits train / validation / test. Recomendado para experimentación y evaluación controlada.
full — DPO completo
Contiene todos los pares disponibles.
Banco de INICIOS
Las frases de apertura usadas en el bloque [inicio] provienen del siguiente banco (~25 variaciones):
"Detente un segundo antes de seguir" · "Quedate quieto un instante" · "Prestá atención antes de continuar" · "Hay algo que quiero compartir antes de que sigamos" · "Vale la pena detenerse un segundo" · "Antes de seguir, quedate con este momento" · "Hay algo aquí que no se ve a primera vista" · "Lo que tenés adelante tiene más capas de las que se notan" · "Antes de avanzar, hay algo que conviene notar" · "Tomate un momento antes de continuar" · "Hay un detalle que suele pasar desapercibido" · "Esto que parece simple esconde algo más" · "Si te detenés un instante, hay algo para descubrir" · "Detrás de esto hay una historia que vale la pena" · "Antes de seguir, dejame contarte algo" · "Hay algo curioso en todo esto" · "Esto tiene una conexión que quizás no esperás" · "Detrás de lo evidente hay algo más antiguo" · "Quedate un momento con esta idea" · "Hay algo que conecta esto con algo mucho más profundo"
Construcción del Score
score = corpus_score × topic_score × (topic_scale / 10)Donde:
corpus_score: similitud semántica entre el prompt y el fragmento del corpus usado en[cultural]topic_score: score de relevancia temática asignado a la conversacióntopic_scale: peso manual por categoría temática
Topic Scale
Estadísticas
Uso
from datasets import load_dataset
# SFT — entrenamiento supervisado
ds_sft = load_dataset("somosnlp-hackathon-2026/paraguay-cultural-alignment", "sft")
# DPO — con splits train / validation / test
ds_dpo = load_dataset("somosnlp-hackathon-2026/paraguay-cultural-alignment", "dpo")
# FULL — dataset completo
ds_full = load_dataset("somosnlp-hackathon-2026/paraguay-cultural-alignment", "full")
# Inspeccionar un par DPO
example = ds_dpo["train"][0]
print("PROMPT:\n", example["prompt"])
print("\nCHOSEN:\n", example["chosen"])
print("\nREJECTED:\n", example["rejected"])
print("\nCULTURAL CHOSEN:\n", example["cultural_chosen"])
# Formato estándar DPO (TRL)
from trl import DPOTrainer
# prompt -> chosen / rejected listos para usar
# chosen y rejected son strings con los 4 bloques formateadosLicencia
Derivado de fuentes de acceso público. Uso académico y de investigación.
