CoolFace
Datasetpublic

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.

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes28downloads
Dataset Card

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]
BloqueRolRegla
[inicio]Frase de apertura que invita a pausarSeleccionada del banco de INICIOS
[base]Detalle concreto del contextoExtraído ÚNICAMENTE del texto base (el prompt)
[link]Puente narrativo naturalOBLIGATORIO incluir la frase "cultura guaraní"
[cultural]Fragmento cultural de referenciaTexto EXACTO del corpus guaraní paraguayo

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

DatasetDescripción
thinkPy/ultrachat-es-30k-topicsConversaciones en español con tópicos y scores
thinkPy/corpus-cultura-paraguayaCorpus de referencia cultural paraguaya

Configs

sft — Supervised Fine-Tuning

Formato de respuesta única para entrenamiento supervisado. Ideal como primer paso de fine-tuning antes de aplicar DPO.

CampoDescripción
promptRespuesta de otra LLM que actúa como texto base para la continuación
responseContinuación que respeta el patrón de 4 bloques (sin etiquetas)
topicTema de la conversación
culturalFragmento exacto del corpus guaraní usado en el bloque [cultural] de la respuesta
scoreScore ponderado de relevancia cultural de la respuesta
SplitEjemplos
train2,700
validation300

dpo — Direct Preference Optimization

Pares de preferencia con splits train / validation / test. Recomendado para experimentación y evaluación controlada.

CampoDescripción
promptRespuesta de otra LLM que actúa como texto base para la continuación
chosenContinuación que respeta el patrón de 4 bloques (sin etiquetas), con fragmento de alta relevancia
rejectedContinuación mal formada o con fragmento de baja relevancia cultural
topicTema de la conversación
cultural_chosenFragmento exacto del corpus guaraní usado en el bloque [cultural] del chosen
cultural_rejectedFragmento exacto del corpus guaraní usado en el bloque [cultural] del rejected
score_chosenScore ponderado de la continuación elegida
score_rejectedScore ponderado de la continuación rechazada
SplitEjemplos
train1,500
validation200
test300

full — DPO completo

Contiene todos los pares disponibles.

SplitEjemplos
train5,000

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ón
  • —topic_scale: peso manual por categoría temática

Topic Scale

TopicScale
medio ambiente9
literatura8
educación8
humanidades8
cultura8
salud7
histórico7
geografía7
sociedad7
tecnología5
política5
economía5
deportes3
ciencia3
entretenimiento3
matemática3

Estadísticas

MétricaValor
Ejemplos SFT (train + val)3,000
Pares DPO — config dpo (train + val + test)2,000
Pares DPO — config full5,000
Tokens por prompt (mediana)372
Rango de tokens por prompt71 - 519

Uso

python
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 formateados

Licencia

Derivado de fuentes de acceso público. Uso académico y de investigación.