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.
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
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
Structured JSONL schema
{
"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.
