突破故事中心:Attribute-Guided Genre Expansion 框架扩展创意写作数据
- 关联论文:2608.13947
- 作者:Tom
- 更新:2026-08-20
一句话结论
高质量创意写作数据长期被"故事文"垄断,限制了 LLM 对诗歌、说唱、剧本、游戏设计等结构性格式的掌握;通过将"主题广度"与"类型-形式控制"解耦,论文的 Attribute-Guided Genre Expansion 框架构建了一个 50K 样本、覆盖 13 种创意类型的 Multi-Genre Collection,让微调模型在分布外写作基准和留存类型诊断上同时超越基线和现有写作语料。
解决什么真问题
LLM 的创意写作能力受限于训练数据的主题分布——现有高质量创意写作数据大量来自 story-centric 来源(小说、散文等),导致模型对诗歌的韵律格式、说唱的押韵结构、剧本的分镜规范、游戏设计的系统化描述等非故事类创作格式掌握不足。核心问题:如何在不降低主题质量的前提下,系统性扩展 LLM 能驾驭的创意类型数量?
核心方法
机制三段式
第一段:解耦主题广度与类型-形式控制 现有数据构建方法将主题(theme)和格式(format)混为一谈——"写一个爱情故事"既是主题控制也是格式控制,限制了数据多样性。本文提出两维分离: - Thematic breadth:用人写的 story prompts 作为 creative seeds,保证主题丰富度 - Genre-form control:用人工标注的 genre attributes(结构规范、文体惯例、格式要求)独立控制输出格式
第二段:LLM 生成 + 质量过滤 将上述两维结合,用强 LLM 生成 genre-faithful query-response pairs,再经过质量过滤保留高质量样本:
伪代码示意:
def genre_expansion(story_prompts, genre_attributes):
corpus = []
for prompt in story_prompts:
for genre in GENRE_LIST:
attrs = genre_attributes[genre] # 结构/文体/格式规则
response = strong_LLM.generate(prompt, attrs)
if quality_filter(response):
corpus.append((prompt, genre, response))
return corpus
第三段:controlled genre expansion 优于 story-centric scaling 消融实验证明,增加 genre 数量比单纯扩增 story 数据更能提升模型对分布外写作任务的泛化能力。
数据集:Multi-Genre Collection
| 统计项 | 数值 |
|---|---|
| 样本总数 | 50,000 |
| 覆盖类型数 | 13(story, rap, lyrics, scripts, game design, character design 等) |
| 来源 | 人类编写 story prompts + 人工标注 genre attributes |
| 过滤方式 | 质量过滤(具体阈值原文未明确) |
关键实验与数据
论文在两类测试上验证:
- Out-of-distribution 写作基准:在未见过的写作主题/格式上测试微调模型
- Held-out genre 诊断:保留部分 genre 类型不出现在训练数据中,测试模型 zero-shot 泛化能力
结果显示:在这两类测试上,Multi-Genre Collection 微调的模型一致超越: - Base models(未微调) - 现有写作专项基线(existing writing corpora) - 单纯扩大 story 数据量的基线
⚠️ 数字核验:50K 样本 / 13 types 来自 abstract;各类型具体样本分配比例未公开;对比实验中"一致超越"的具体胜出幅度(如胜出 5% 还是 20%)未给出;CIKM 2026 接受状态可查,但最终 Camera-Ready 数据可能与 preprint 有出入。
亮点与局限
亮点: - 解耦思路清晰:主题 vs 格式控制分离,直接命中数据分布问题的根源 - genre expansion > story scaling 的消融结论有说服力,给出了明确的数据 scaling 方向建议 - 覆盖 13 种 creative genres,类型多样性在现有创意写作数据集中较高
局限: - Genre attributes 仍需人工标注:规模扩展受限于人工标注成本,框架本身未完全自动化 - 质量过滤标准未公开:具体过滤阈值、人类评估协议不可复现 - 评估协议存疑:OOD 写作基准和 held-out genre 诊断的具体指标(BLEU / 人工评估 / 专用评分器?)未明确 - LLM 生成 bias:使用强 LLM 生成训练数据本身可能引入格式幻觉(看似符合 genre 但实际不符合人类创作者预期) - CIKM 2026 接受论文,preprint 数据可能有小幅修订
对工程落地的启发
- 多类型创意写作产品:游戏 NPC 对话、歌词生成、剧本辅助写作等场景可直接受益
- 数据构建 pipeline:主题 prompt 库 + 类型属性标注 + 强 LLM 生成 + 质量过滤的四步流程可复用于其他垂直领域数据构建
- 解耦思想可迁移:不只是 creative writing,任何"主题 + 格式"可分离的领域(技术文档、客服话术等)均可借鉴
- vs 现有写作语料:在选型时,Multi-Genre Collection 相比 story-centric 数据有明显优势,值得评估
⚠️ 实用边界:目前代码/数据未公开(CIKM 2026 接受后可能发布);人工标注 genre attributes 的成本需单独评估;生成质量取决于底层 LLM 能力。
与同方向工作的关系
- vs 现有创意写作数据集(如 WritingPrompts、RO-STORY):后者以 story 为主;本文明确指出这限制了非故事类格式的能力
- vs Prompt injection 类数据增强:本文的 genre attributes 控制比简单 prompt 模板更结构化
- 相关方向:LLM fine-tuning for creative tasks、multi-format text generation、controlled text generation — 这是数据工程侧的重要补充
- 后续工作方向:自动化 genre attribute 标注、跨语言 genre expansion、自动质量评估
适合谁读
- LLM 数据工程师:关注训练数据多样性构建 pipeline 的实践者
- NLP 研究者:关注 controllable text generation、creative writing LLM 的研究者
- 内容产品 PM/工程师:需要 LLM 生成多类型创意内容的应用开发者
- 数据构建团队:想了解如何系统化扩展 LLM 能力边界的团队
⚠️ 本稿数字均来自论文 abstract / arXiv 原文;50K/13 types 数字已核实;对比实验中具体精度/胜出幅度原文未明确;CIKM 2026 接受但非最终 camera-ready 版本。
工程落地与核查(Jay)
事实核查
| 核查项 | 结论 | 风险等级 |
|---|---|---|
| 50K 样本 / 13 types | 来自 abstract,可信度高 | ✅ 已核实 |
| "一致超越"基线和现有写作语料 | "一致"的具体幅度未量化,⚠️ 原文仅描述性表达,无具体数字 | ⚠️ 存疑 |
| CIKM 2026 接受 | arXiv 原文显示 submitted to CIKM 2026,需核实最终接收状态 | ⚠️ 待核实 |
| genre expansion > story scaling | 消融实验,但具体 genre 数量与泛化能力的对应曲线未披露 | ⚠️ 需原论文 |
| 质量过滤阈值 | 原文未公开过滤标准,第三方无法精确复现 | ⚠️ 需原论文 |
| 13 种 genre 的样本分布 | "50K 样本"如何分配到 13 个 genre,平衡还是长尾分布未说明 | ⚠️ 需原论文 |
| 评估指标 | OOD 写作基准和 held-out genre 诊断使用 BLEU/人工评估/专用评分器均未明确 | ⚠️ 存疑 |
存疑最高项:对比实验的具体胜出幅度——"一致超越"是描述性表达,若原文未给具体数字,则本解读无法给出有意义的量化引用,工程选型时无法做收益评估。
可读性精修
- "伪代码示意"中的
strong_LLM.generate(prompt, attrs)函数签名合理,但quality_filter的实现(规则过滤 / LLM-as-judge / 人类审核?)未说明,建议原文明确 - "held-out genre 诊断"可改为"留出类型诊断"或"保留类型零样本测试"以避免 jargon
- 全文术语较统一,逻辑流顺畅
工程落地一节
实际系统怎么用
适用场景选型: 1. 游戏 NPC 对话系统:游戏设计(game design)是 13 种覆盖类型之一,且结构化程度高(技能描述/世界观设定/角色对话规范),可直接构建微调训练集 2. 歌词/说唱生成:rap 和 lyrics 是传统 story-centric 数据集的盲区,若产品需歌词生成可优先评估 3. 剧本写作辅助:分镜规范(script)有强结构约束,适合作为 controllable generation 的测试场景 4. 多风格客服/话术系统:"主题 × 格式"解耦思路可迁移到客服场景(主题=产品类别,格式=正式/口语/安抚等)
pipeline 复现步骤:
阶段1:构建 Genre Attributes 库
- 为目标 genre 定义结构规范(可参考既有创作规范手册或专家访谈)
- 人工标注或 LLM 辅助生成 attributes JSON(结构化文体规则)
阶段2:准备 Theme Seeds
- 使用人类撰写的 story prompts 或从已有数据集中抽取
- 质量要求:主题丰富、与目标 genre 无关(解耦核心)
阶段3:LLM 生成
- strong_LLM (GPT-4o / Claude-3.5 等) 按 (prompt, genre_attrs) 生成
- 控制 temperature / top_p 避免格式漂移
⚠️ 注意:LLM 对"非母语 genre"(如 rap)可能生成含偏见的样本,需二次校验
阶段4:质量过滤
- 规则过滤(格式合规性检查,如 rap 是否押韵、script 是否有 scene heading)
- 可选:LLM-as-judge 二次过滤(成本高但质量更好)
- ⚠️ 本文未公开过滤阈值,建议自行定义 genre-specific 评分规则
阶段5:Human Evaluation(可选但推荐)
- 随机抽样 5% 样本进行人工审核
- 纠正 LLM 生成幻觉(如看似押韵但韵律错误的 rap)
主流替代对比:
| 方案 | 规模 | 类型覆盖 | 开源 | 工程难度 |
|---|---|---|---|---|
| Multi-Genre Collection (本文) | 50K | 13 types | 待定 | 中(需重建 pipeline) |
| WritingPrompts (Reddit) | ~500K | story 为主 | ✅ | 低 |
| RO-STORY | ~300K | story 为主 | ✅ | 低 |
| 自建 genre attributes + GPT-4o | 可扩展 | 可自定义 | N/A | 高(标注成本) |
常见坑
坑 1:Genre Attributes 人工标注瓶颈 - 13 种类型的结构规范需要领域专家参与,单类型标注成本 $500-$2,000(按每小时 $25-50 计) - 缓解:优先对核心 2-3 种类型(story + 目标 genre)做高质量标注,其余类型先用 LLM 草拟+人工抽查
坑 2:LLM 生成格式幻觉 - 模型可能生成"看起来像 rap 但韵律完全错误"或"格式正确但内容荒谬"的样本 - 缓解:引入 genre-specific 格式校验器(如 rap 用韵律检测库、script 用场景标签检测);人工抽检比例不低于 3%
坑 3:质量过滤阈值无法复现 - 本文未公开过滤标准,自建 pipeline 时阈值设定依赖主观判断 - 缓解:参考同类数据集(如 CommonGen 过滤标准)+ 内部人工评估协议;明确记录阈值设定依据以便后续迭代
坑 4:"一致超越"无法量化导致选型困难 - 工程选型需要量化收益,但原文只给描述性结论,无法做 ROI 评估 - 缓解:在引入本文 pipeline 前,先对目标 genre 用小样本(500-1,000 条)做 A/B 测试;对比基线(纯 story 数据扩增)的实际效果差异
坑 5:Code / Data 未发布(CIKM 2026 接收后可能发布) - 当前无法直接使用官方实现,需自行复现整个 pipeline - 缓解:可等待 CIKM camera-ready 版本发布;或先用本文描述自行实现核心逻辑(解耦思路是关键,框架可复现)
快速启动(伪代码骨架)
# Genre Expansion Pipeline 骨架
# ⚠️ 基于摘要描述的合理推断,非官方实现
from typing import List, Dict
import anthropic
GENRE_ATTRIBUTES = {
"rap": {
"rhyme_scheme": "ABAB or AABB",
"line_count": 16, # typical verse length
"structures": ["verse", "hook", "bridge"],
},
"script": {
"scene_heading": True,
"character_prefix": True,
"max_stage_direction_len": 100,
},
# ... 其他 genre
}
def genre_expansion_pipeline(
theme_seeds: List[str],
genres: List[str],
llm_client: anthropic.Anthropic,
quality_threshold: float = 0.7,
):
corpus = []
for prompt in theme_seeds:
for genre in genres:
attrs = GENRE_ATTRIBUTES[genre]
# 构建格式控制 prompt
formatted_prompt = f"""
Theme: {prompt}
Format requirements: {attrs}
Output a {genre} piece following the above format.
"""
response = llm_client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": formatted_prompt}]
)
text = response.content[0].text
# 格式校验
if not format_check(text, genre, attrs):
continue
# 质量过滤(⚠️ 阈值未标准化,需自行定义)
if quality_score(text, genre) < quality_threshold:
continue
corpus.append({
"prompt": prompt,
"genre": genre,
"text": text,
"attrs": attrs,
})
return corpus
工程核查清单
- [ ] 代码/数据发布状态:当前 GitHub 未找到官方 repo;等待 CIKM 2026 camera-ready(预计 2026-09 月前)
- [ ] CIKM 接收状态核实:访问 arXiv 或 CIKM 2026 官方页面确认最终接收状态
- [ ] 具体泛化数字:联系作者或等 camera-ready 获取对比实验具体数字(胜出 5% 还是 20% 对选型决策影响大)
- [ ] Genre Attributes 标注成本:按 13 types × 3 人 × 4h × $25 预估约 $3,900,建议小范围试点再扩展
- [ ] 质量过滤标准:在引入生产前先定义 genre-specific 评分协议,避免 LLM 生成幻觉渗入训练集