CoolFace
Datasetpublic

walter-bd/small-persona-dataset

small-persona-dataset Bilingual (EN/ES) training dataset for a small NPC voice model. The model learns to take a plain factual sentence and rewrite it in a character's voice, conditioned on persona parameters. Task INPUT: TONE:grumpy STYLE:blunt HUMOR:dry RELATION:rival ROLE:blacksmith FACT: Iron swords cost 15 gold. OUTPUT: Fifteen gold. Still overpriced for your work. The model is conditioned on 5 parameters: tone, style, humor, role, and relation.… See the full description on the dataset page: https://huggingface.co/datasets/walter-bd/small-persona-dataset.

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes70downloads
Dataset Card

small-persona-dataset

Bilingual (EN/ES) training dataset for a small NPC voice model. The model learns to take a plain factual sentence and rewrite it in a character's voice, conditioned on persona parameters.

Task

INPUT:  TONE:grumpy STYLE:blunt HUMOR:dry RELATION:rival ROLE:blacksmith
        FACT: Iron swords cost 15 gold.

OUTPUT: Fifteen gold. Still overpriced for your work.

The model is conditioned on 5 parameters: tone, style, humor, role, and relation. Only RELATION changes at runtime (based on game events). The other 4 are fixed per NPC at config time.

Training format (flat text, for Unsloth)

TONE:{value} STYLE:{value} HUMOR:{value} RELATION:{value} ROLE:{value}
FACT: {one plain factual sentence, no voice}
OUT: {same fact rewritten in character voice}

Example (English):

TONE:grumpy STYLE:blunt HUMOR:none RELATION:stranger ROLE:blacksmith
FACT: Iron swords cost 15 gold.
OUT: Fifteen gold. Don't haggle.

Example (Spanish):

TONE:grumpy STYLE:blunt HUMOR:none RELATION:stranger ROLE:blacksmith
FACT: Las espadas de hierro cuestan 15 monedas de oro.
OUT: Quince monedas. No regatees.

Hard rules baked into every row:

  • —Parameters are always in English, even in Spanish rows
  • —FACT reads like a wiki entry — zero voice or emotion
  • —OUT preserves ALL numbers, names, and facts exactly as in FACT
  • —OUT never adds information not present in FACT
  • —Spanish rows use tú (never vos), Latin American Neutral Spanish

Dataset stats

Total rows60,239
Train57,227
Val3,012
English39,272 (65%)
Spanish20,967 (35%)
Avg quality score0.875

Parameter distributions

TONE (11 values): wise 12,786 · cheerful 7,354 · bitter 7,092 · grumpy 7,069 · proud 6,490 · neutral 5,357 · nervous 4,174 · fearful 4,043 · melancholic 3,319 · cunning 1,839 · playful 716

ROLE (8 values): scholar 28,366 · guard 8,945 · merchant 5,956 · priest 4,443 · peasant 3,905 · noble 3,913 · innkeeper 2,779 · blacksmith 1,932

RELATION — Tier A (inferred from real corpus): mentor 10,532 · acquaintance 8,056 · ally 6,726 · stranger 6,137 · witness 3,403 · enemy 2,422 · friend 2,217 · employer 2,089 · employee 1,997 · student 1,852 · victim 1,442 · leader 1,415 · guard 1,448 · suspect 1,322 · outcast 1,263 · follower 1,258 · prisoner 1,002

RELATION — Tier B (synthetic generation only): heretic 807 · exlover 619 · saved 613 · rival 442 · creditor 432 · lover 481 · worshipper 360 · betrayer 339 · bestfriend 316 · gossip 276 · family 254 · debtor 251 · savior 240 · betrayed 228

SOURCE: vgdc 27,455 · opencharacter 19,888 · synthetic 8,467 · multi_character 3,238 · npc_v2 1,191

Files

FileRowsDescription
train.jsonl57,227Full training set, structured JSONL
val.jsonl3,012Validation set, structured JSONL
train.txt57,227Flat text format for Unsloth
val.txt3,012Flat text format for Unsloth
train_en.jsonl37,315English rows only
train_es.jsonl19,912Spanish rows only
train_tier_b_only.jsonl5,658Tier B relations only
train_synthetic_only.jsonl35,515Synthetic rows only (no corpus data)
sample.jsonl200Curated preview across all tones/roles/relations
data_stats.json—Full distribution statistics

Structured JSONL schema

json
{
  "id": "uuid",
  "parent_id": "uuid_or_null",
  "language": "en",
  "source": "vgdc|opencharacter|npc_v2|multi_character|synthetic",
  "origin_type": "original|synthetic",
  "generation_stage": "original|fact_extracted|persona_labeled|variant_generated|polished",
  "recoverability": "exact",
  "tone": "grumpy",
  "style": "blunt",
  "humor": "none",
  "relation": "stranger",
  "role": "blacksmith",
  "fact": "Iron swords cost 15 gold.",
  "out": "Fifteen gold. Don't haggle.",
  "quality_score": 0.91
}

Sources

  • —VGDC — Video Game Dialogue Corpus (public game scripts)
  • —OpenCharacter — HuggingFace: xywang1/OpenCharacter
  • —NPC-Dialogue_v2 — HuggingFace: chimbiwide/NPC-Dialogue_v2
  • —Multi-Character — HuggingFace: agentlans/multi-character-dialogue
  • —Synthetic — Generated using llama3.1:8b, dolphin-llama3:8b, gemma3-UNCENSORED:4b with qwen3.5:9b fact extraction

Pipeline

Built with the small-persona-llm dataset factory. Full pipeline: normalize → extract facts → label personas → generate variants → filter (EN) → translate NLLB-1.3B → polish (Spanish) → filter (ES) → export.

Quality filter: all-MiniLM-L6-v2 semantic similarity + cross-encoder/nli-deberta-v3-small NLI faithfulness check. All rows have quality_score ≥ 0.75.