R² 架构流程图
论文: R²: A LLM Based Novel-to-Screenplay Generation Framework with Causal Plot Graphs 作者: Zefeng Lin et al. (USTC, 安徽建筑大学, 安徽大学) 会议: ICLR 2025
Obsidian 显示提示: 如果 Mermaid 图在编辑/阅读模式下过大无法概览,安装社区插件 Mermaid Tools(by dartungar),它提供全屏模式和缩放工具栏。或者直接点击 Mermaid 图(阅读模式),Obsidian 原生支持弹出放大视图。
一、完整 Reader-Rewriter 流水线
flowchart TB NOVEL["📚 原始小说文本<br/>Novel Text"] subgraph READER["📖 Reader 阅读模块"] direction TB SW["🪟 滑动窗口<br/>Sliding Window<br/>分段处理长文本"] EE["📋 事件提取<br/>Event Extraction<br/>时间/地点/背景/描述"] CA["🔗 因果分析<br/>Causal Analysis<br/>LLM 推断事件间因果关系"] end subgraph CPC["🧬 CPC 因果情节图构建"] direction TB GRAPH["📊 因果图 G=⟨E,D,W⟩<br/>E:事件节点 · D:因果边 · W:强度⚡H/🔵M/⬜L"] CB["⚙️ 贪心去环算法<br/>Greedy Cycle-Breaking<br/>Prim 变体 · 按W排序 · 避免成环"] end subgraph REWRITER["✍️ Rewriter 改写模块"] direction TB SO["🎬 场景大纲<br/>Scene Outlines<br/>因果图→场景序列分镜"] SG["📝 剧本生成<br/>Screenplay Generation<br/>场景描述+对白+舞台指导"] end OUTPUT["🎭 完整剧本输出<br/>Final Screenplay<br/>场景号 · 对白 · 舞台指导 · 情感基调"] NOVEL --> SW SW --> EE EE --> CA CA --> GRAPH GRAPH --> CB CB --> SO SO --> SG SG --> OUTPUT style NOVEL fill:#881337,stroke:#e11d48,color:#fda4af style OUTPUT fill:#064e3b,stroke:#059669,color:#34d399
二、HAR 幻觉感知精炼循环
flowchart TB subgraph HAR["🔄 HAR 幻觉感知精炼 Hallucination-Aware Refinement"] direction LR DETECT["🔍 ① 检测 Detect<br/>LLM 自检输出一致性<br/>发现幻觉矛盾/因果断裂"] REFINE["🔧 ② 精炼 Refine<br/>修正输出内容<br/>重新推理·修正因果边·补全情节"] VERIFY["✅ ③ 验证 Verify<br/>一致性交叉检查<br/>通过→输出 / 未通过→返回精炼"] end R_OUT["📖 Reader 输出<br/>因果图/事件序列"] W_OUT["✍️ Rewriter 输出<br/>场景大纲/剧本片段"] FINAL["🎭 最终输出<br/>经验证的完整剧本"] R_OUT --> DETECT W_OUT --> DETECT DETECT -->|"发现问题"| REFINE DETECT -->|"无问题"| VERIFY REFINE --> VERIFY VERIFY -->|"✅ 通过"| FINAL VERIFY -.->|"❌ 未通过,返回精炼"| REFINE style DETECT fill:#164e63,stroke:#0891b2,color:#22d3ee style REFINE fill:#164e63,stroke:#0891b2,color:#22d3ee style VERIFY fill:#164e63,stroke:#0891b2,color:#22d3ee style FINAL fill:#064e3b,stroke:#059669,color:#34d399
三、CPC 因果情节图结构
graph TD subgraph 事件节点["📊 事件节点 Events(E)"] E1["e₁ 🌅<br/>时间: 黄昏<br/>地点: 小镇酒馆<br/>描述: 主角收到密信"] E2["e₂ ⚔️<br/>时间: 次日清晨<br/>地点: 城外树林<br/>描述: 遭遇伏击"] E3["e₃ 🏰<br/>时间: 第三日<br/>地点: 皇宫大殿<br/>描述: 面见国王"] E4["e₄ 🌊<br/>时间: 一周后<br/>地点: 港口<br/>描述: 乘船逃离"] end subgraph 因果边["🔗 因果有向边 D(Directed Causal Edges)"] D1["e₁ → e₂<br/>⚡ 高强度 High<br/>密信导致主角前往树林"] D2["e₂ → e₃<br/>🔵 中强度 Medium<br/>伏击后寻求国王庇护"] D3["e₁ → e₃<br/>🔵 中强度 Medium<br/>密信内容与皇宫相关"] D4["e₃ → e₄<br/>⚡ 高强度 High<br/>国王下令追杀"] end subgraph 去环["⚙️ 贪心去环 Cycle-Breaking"] CB1["排序因果边<br/>High → Medium → Low"] CB2["度数和断平局<br/>优先保留低度数端点"] CB3["逐边检查<br/>若终点已可达起点 → 跳过"] CB4["输出无环因果图 F<br/>保证情节线单向推进"] end E1 --> D1 E2 --> D1 E2 --> D2 E3 --> D2 E1 --> D3 E3 --> D3 E3 --> D4 E4 --> D4 D1 --> CB1 D2 --> CB1 D3 --> CB1 D4 --> CB1 CB1 --> CB2 CB2 --> CB3 CB3 --> CB4 style E1 fill:#0f172a,stroke:#a78bfa,color:#c4b5fd style E2 fill:#0f172a,stroke:#a78bfa,color:#c4b5fd style E3 fill:#0f172a,stroke:#a78bfa,color:#c4b5fd style E4 fill:#0f172a,stroke:#a78bfa,color:#c4b5fd style D1 fill:#451a03,stroke:#f59e0b,color:#fbbf24 style D2 fill:#1e3a5f,stroke:#3b82f6,color:#60a5fa style D3 fill:#1e3a5f,stroke:#3b82f6,color:#60a5fa style D4 fill:#451a03,stroke:#f59e0b,color:#fbbf24 style CB4 fill:#064e3b,stroke:#059669,color:#34d399
符号对照表
| 符号 | 含义 |
|---|---|
| G = ⟨E, D, W⟩ | 因果情节图:事件集合、因果边集合、强度权重集合 |
| E | 事件节点:包含时间地点、背景、描述 |
| D | 有向因果边:eᵢ → eⱼ 表示 eᵢ 导致 eⱼ |
| W ∈ {H, M, L} | 边强度:High(直接显著)、Medium(部分间接)、Low(微弱) |
| F | 去环后的无环因果边集合(最终保留的因果结构) |
| HAR | 幻觉感知精炼:Detect → Refine → Verify 迭代循环 |
| CPC | 因果情节图构建:Causal Plot-Graph Construction |