# 文本到认知图：图构建方法

把一段自然语言（句、段、整篇）压成一张可遍历的 unit 图。

* **输入**：自然语言文本——一句、一段、或一整篇。

* **输出**：一张图——节点（主体 / 论元 / 谓词）+ 边 + 入口标记，整体表达输入承载的持久事实。

* **依赖**：unit 数据模型与四原则定义在 [认知图：以谓词作为概念](认知图：以谓词作为概念.md)。本文档只定义"文本 → 图"的构建过程与渲染契约，不重复抽取原则本身。

***

## 一、输出形式

图的 **ground truth 是 unit 文本**——已有抽取约定的序列化形式：

```
(主体)[谓词](论元, 论元, ...)
()[修饰谓词](值)
```

派生 `(M)[的](B)`、同义 `(A)[同义](B)`、嵌套局部 ID（u_a / u_b / ...）等同 §二「数据模型」。

图示绘制也只用一套记号——`(X)` 表示节点、`[P]` 表示谓词、`──` / `└──` 等表示边——与 unit 文本的括号完全一致。**机器消费一律以 unit 文本为准**，图示只是辅助阅读。

***

## 二、记号约定

下文示例和讨论用以下记号表达 unit 图：

| 记号  | 含义                                                          |
| --- | ----------------------------------------------------------- |
| (X) | 节点。同一 node 全图唯一一个 (X) 实例                                    |
| \[P] | 谓词。每条 unit 引入独立的 \[P] 实例（同名谓词不共享节点）                          |
| ──  | 边：主体 — \[P] — 论元；修饰行 \[P] — 值                                |
| ┄┄  | 节点的外发尾巴：标记该节点的 `subject_mentions` 在全图层面非空、向本输入之外延伸          |

**入口节点 / 仅论元节点的区分**不在记号本身体现，而由 §三 步骤 4 的 `S*` 集合刻画——需要展示时在节点旁加注（如 `(X)*`）或在表格中单列说明。`(X)` 形态相同，是为了让图示和 unit 文本完全同形。

***

## 三、构建流程

输入文本 → 输出 unit 集合 + 图拓扑。共五步，前三步沿用 [认知图：以谓词作为概念](认知图：以谓词作为概念.md) §五 抽取流程，后两步是本文档新增。

### 步骤 1 — 句法解析与语言层预处理

参照原 §五.1–2：识别小句 / 动词 / 论元 / 修饰 / 辖域；指代还原；特殊句式标准化（把字句、被字句、兼语、连动、是 / 有字句、比较句）；句类识别。

**多句 / 多段输入**：跨句指代和零指代在这一步统一还原。代词不能还原时降级为占位 node `?_1` / `?_2`，并打 `()[置信度](low)`。

### 步骤 2 — 复句拆分

按因果 / 转折 / 时序 / 目的 / 条件 / 让步切分小句。保留连接关系，待嵌套层装回（原则 III）。

### 步骤 3 — 抽取 unit 集

逐小句产出 unit：

* 选谓词（归 family 基础成员）；

* 定主体（≥1 个具体 node）；

* 补修饰行；

* 同时满足 §四 四原则——**事实优先 / 最具体标识符 / 嵌套修饰 / 自洽**。

派生 node `(M)[的](B)` 在使用前先声明，渲染名 `MB` 入图。同义命名 `(A)[同义](B)` 在两个标识符首次共现时声明。

**派生 / 同义 不是默认操作**——按以下规则触发：

* **派生**：在两种情况下使用——（a）现有标识符在当前图里有歧义、需要收窄（例：`复杂不完美的环境` ≠ 任意环境）；（b）当前事实的重点就是**描述 / 分类一个实体**——名词短语作主句论元（"设想 X" / "讨论 X" / "考虑 X"）时，X 内部的修饰子句应当用派生节点层级表达，让 `[属于]` 把实例绑到类。

* **同义**：两个**独立来源**的标识符首次共现（例：`论文-IAA ↔ 《深度强化学习的想象增强智能体》`、`想象增强智能体架构 ↔ 想象增强智能体`）。**不**用同义给派生 node 起别名——那是 alias 不是 synonym，没有信息增益。

**两种判别启发**：

1. **重点是描述 vs 事件**：去掉量词 "一位 / 一个 / 一种"，看剩下的是不是个动词主导的完整句。是 → 事件型，主谓宾 + 修饰行；不是（剩下的是名词短语）→ 描述型，派生层级 + `[属于]`。
2. **避免重复编码**：写完一条派生 / 同义后，看是否同一事实在派生名、谓词、修饰行多处重复出现。是 → 简化掉冗余的层（要么删派生留事件，要么删事件留派生）。

**反例 A — 描述错抽成事件**：原文 "一位每天乘坐列车通勤的人"（名词短语）写成 `(通勤者)[通勤]() + [工具](列车) + [频率](每天)`——把描述抽成动作，丢失"她是什么人"的分类语义。正解：`(列车通勤)[的](人) + (每天)[的](列车通勤的人) + (通勤者)[属于](每天列车通勤的人)`。

**反例 B — 派生 + 同义 + 事件四处重复**：同句写成 `(列车通勤)[的](人) + (列车通勤的人)[同义](列车通勤者) + (列车通勤者)[通勤]() + [工具](列车)`——同义被滥用作 alias，"列车通勤" 编码四次。

**段（抽取块）的边界**：决定 `()` 指代的范围、决定局部 ID `u_a / u_b` 的有效域。一般以原文自然段或一两句一组划段；段终止后 `()` 不再有指代，必须重起一条主 unit；跨段引用必须用持久 unit ID。这套规则照搬 §二.2–3，不在本文档重复。

### 步骤 4 — 节点收集与角色判定（全局）

遍历输入产出的**所有** unit 集合 U（跨句、跨段统一收集，不分段重置）：

```
nodes  := ⋃ unit ∈ U {主体, 谓词, 论元, 所有修饰行的值}
S*     := ⋃ unit ∈ U {主体}                 # 含派生 / 同义 / 修饰行所属主 unit 的主体
preds  := { (unit, 谓词位置) }                # 注意：以位置为单位，不去重
```

每个 node 的角色：

* `n ∈ S*` → **入口节点**（`subject_mentions` 非空，可作为反向索引入口）

* 否则 → **仅论元节点**（只在 `context_mentions` 中出现）

* 谓词位置一律渲染为 `[P]`——同一谓词出现两次就是两个 `[P]` 实例（边的关系类型挂在边上，不共享节点）

派生 node 的基础 node `B`（出现在 `(M)[的](B)` 的论元位）：在本输入里若 B 没单独作过主体，仍然是仅论元节点；这条派生声明本身让 M 进 S\*（M 是该 unit 的主体）。

### 步骤 5 — 主线选定

在本段产出的 unit 集中**标记一条 unit 为核心**——它是这一段的 narrative center。通常是：

* 命题态度 wrap（`[认为] / [认知] / [清楚] / [主张] / [怀疑]`）整段事实的那条；
* 或因果链顶层（最末端的 `[导致] / [造成]` unit）；
* 或一段就立人物 / 立场景的描述句，主 unit 是 `[属于] / [是]` 的分类断言。

其余 unit 自动是**分支**——它们仍然是独立 unit、有完整结构 / 反向索引 / 查询语义，**只是叙事地位上从属于主 unit**。

主线选定**没有结构后果**——它不改变图遍历语义，也不影响 unit 文本的 ground truth。它的作用是：

1. **视觉布局**：核心 unit 横向居中排在图的主轴上，分支从主轴节点向下/向上引出；
2. **段查询**：问"这段在讲什么"直接读核心 unit，不必遍历全部 unit 综合；
3. **叙事中心化**：让一段的核心断言和支撑细节在层级上有明确区分。

**主线视觉边标签 vs unit 文本谓词**：视觉图上可用自然连接词（`平时` / `清楚` / `造成`），便于人读；unit 文本里**始终写 family 基础成员**（`属于` / `认为` / `导致`），便于查询。映射例：

| 视觉自然词         | unit 文本 family 谓词           |
| ------------- | ---------------------------- |
| 平时 / 通常 / 是    | `属于` / `是`                   |
| 清楚 / 知道 / 认为 | `认为` / `认知` / `知道`            |
| 造成 / 引发 / 让   | `导致` / `造成`                  |
| 提出 / 介绍       | （元话语，原则 I 降级，不上主线）          |

**空段允许无主 unit**：纯派生 / 同义声明段（如开头铺设词典）可能没有自然中心；这种段标记主 unit 为 `null` 即可。

### 步骤 6 — 图拓扑装配

每条 unit `(S)[P](A_1, ..., A_n)` 装配为一个星形子图：

```
(S) ── [P] ── (A_1)
           ── (A_2)
           ...
           ── (A_n)
```

**修饰行** `()[mod-P](v)` 挂在主 unit 的 `[P]` 上：

```
(S) ── [P] ── (A)
           └── [mod-P] ── (v)
```

**嵌套** —— 当 A_i 是局部 ID（u_a / u_b / ...）：把内层 unit 的 `[P]` 直接接到外层 `[P]` 的论元位，跳过中间节点。读图者沿外层 `[P]` 走到内层 `[P]`，再展开内层 unit。

```
外层：(S)[目的是](u_a, u_b)
渲染：(S) ── [目的是] ── [u_a 的谓词] ── ...
                    └── [u_b 的谓词] ── ...
```

**派生簇** —— `(M)[的](B)` 是一条普通 unit：

```
(M) ── [的] ── (B)
```

派生 node 的渲染名 `MB` 在后续 unit 里被引用时，复用 `(M)` 的位置——不复制 M 节点，整张图里 M 始终一个实例。

**同义簇** —— `(A)[同义](B)` 同样作为 unit 渲染。查询时 ≡ 索引由 `同义` 谓词派生（§六.2）；图上是显式的 `[同义]` 节点和两端的 `(X)`。

**跨段连接** —— 当输入跨多个段时，节点（依靠全局唯一性，§四）天然把不同段产出的星形子图缝合在一起：第一段把 X 作主体 `(X)`，第二段又用 X 作论元 `(X)`，那 `(X)` 同时出现在两段对应的子图里——它们共用同一个实例。

**外发尾巴** —— 给每个入口节点画一条 `┄┄` 尾巴，端点空悬，表示该 `(X)` 在全图层面有 `subject_mentions` 项可达本输入之外。如果该入口节点的所有 unit 都在本输入内被产出，尾巴只是占位；图被并入更大图后尾巴连到外部 unit。

***

## 四、不变量

构建出的图必须满足：

1. **节点全局唯一性**：同一 node 在整段输入产出的图里全局唯一一个 `(X)` 实例。一个 node 在多句多段多条 unit 里出现，对应同一个实例。
2. **谓词独立性**：同一谓词在不同 unit 里是不同 `[P]` 实例。"两次说'具有'"对应两个 `[具有]` 实例。
3. **角色单调性**：节点一旦进入 S\*（成为入口节点），永远是入口节点，不会因后续 unit 倒退为仅论元节点。
4. **修饰行从属性**：修饰行的 `[P]` 必须挂在主 unit 的 `[P]` 上，不能直接连主体 `(X)`——否则就该升格为独立主 unit。
5. **嵌套不绕路**：内层 unit 在外层 unit 的论元位上以"另一个 `[P]`"形态出现，禁止用占位 `(X)` 中转。
6. **段内局部 ID 不外泄**：`u_a / u_b` 等局部 ID 只在所属段内的论元位上出现；跨段引用必须替换成持久 unit ID 或具体节点名。
7. **每段恰有一条主 unit**（或显式标 `null`）；其余 unit 全是分支。主线没有结构后果，仅影响视觉布局和段查询入口。

违反任一条 → 抽取或装配出错。

***

## 五、可序列化形式

实际输出有两层。**主输出 — unit 文本** 是 ground truth；分段、主 unit 用注释标记：

```
# 段 1   spine: u1
(想象增强)[的](智能体)
(想象增强智能体)[需要提升](学习效率)        # u1
()[范围](复杂不完美环境)
()[工具](想象力)
()[证据](DeepMind)

# 段 2   spine: u3
...
```

**派生输出 — 拓扑摘要**（可选，给可视化渲染器消费，由主输出自动派生、不持久化）：

```
graph:
  nodes:
    - id: 想象增强智能体
      entry: true                     # 入口节点（S* 成员）
      out_count: 4
    - id: 学习效率
      entry: false                    # 仅论元节点
    ...
  preds:
    - id: u1
      subject: 想象增强智能体
      predicate: 需要提升
      args: [学习效率]
      modifiers:
        范围: 复杂不完美环境
        工具: 想象力
        证据: DeepMind
    ...
  segments:
    - id: seg-1
      spine: u1                       # 段的主 unit；null 表示无主线
      branches: [u2, u3, u4, ...]     # 该段其余 unit
    ...
```

两者必须一致——若不一致，以 unit 文本为准。

***

## 六、示例

### 例 1 — 单句简单陈述

原文：**深蓝击败卡斯帕罗夫。**

unit 文本：

```
(深蓝)[击败](卡斯帕罗夫)
```

节点角色：S\* = {深蓝} → 入口节点；卡斯帕罗夫 → 仅论元节点；`[击败]` 是谓词实例。

拓扑示意：

```
            ┄┄┄┄ (外发)
              ╲
              (深蓝) ── [击败] ── (卡斯帕罗夫)
```

### 例 2 — 单句派生 + 修饰行

原文：**DeepMind 通过赋予智能体想象力，提升了其在复杂不完美环境中的学习效率。**

unit 文本（取自 [svo_demo_0_processed.txt](../../svo_demo_0_processed.txt) 句 1）：

```
(复杂不完美)[的](环境)
(想象增强)[的](智能体)

(想象增强智能体)[具有](想象力)
()[证据](DeepMind)

(想象增强智能体)[需要提升](学习效率)
()[范围](复杂不完美环境)
()[工具](想象力)
()[证据](DeepMind)
```

节点角色：S\* = {复杂不完美, 想象增强, 想象增强智能体}

| node       | 角色   | 理由                       |
| ---------- | ---- | ------------------------ |
| 复杂不完美      | 入口   | 派生声明 `(复杂不完美)[的](环境)` 的主体 |
| 想象增强       | 入口   | 派生声明 `(想象增强)[的](智能体)` 的主体 |
| 想象增强智能体    | 入口   | 多次作主体（具有 / 需要提升）         |
| 环境         | 仅论元  | 仅作论元                     |
| 智能体        | 仅论元  | 仅作论元                     |
| 想象力        | 仅论元  | 论元 + 修饰行值                |
| 学习效率       | 仅论元  | 仅作论元                     |
| 复杂不完美环境    | 仅论元  | 修饰行值（派生 node 渲染名）        |
| DeepMind   | 仅论元  | 修饰行值（证据）                 |

拓扑示意：

```
(复杂不完美) ── [的] ── (环境)

(想象增强) ── [的] ── (智能体)

                            ┄┄┄ (外发)
                            ╲
   (想象增强智能体) ── [具有] ── (想象力)
                  │       └── [证据] ── (DeepMind)
                  │
                  └── [需要提升] ── (学习效率)
                              ├── [范围] ── (复杂不完美环境)
                              ├── [工具] ── (想象力)
                              └── [证据] ── (DeepMind)
```

匹配手绘图的形态：入口节点（带 `┄┄` 尾巴）是反向索引登记点，手臂上是 `[P] ── (X)`，多条 unit 通过共享 `(X)` 相连。

### 例 3 — 单句嵌套（意图链）

原文：**DeepMind 提出 X，旨在应对真实世界的复杂性，从而提升深度强化学习的性能。**

unit 文本（原则 I 元话语降级 + 原则 III 意图链嵌套）：

```
(真实世界)[具有](复杂性)               # u_a
(深度强化学习)[需要提升](性能)         # u_b

(X)[目的是](u_a, u_b)
()[证据](DeepMind)
```

节点角色：S\* = {真实世界, 深度强化学习, X} → 入口节点；其余 → 仅论元节点。

拓扑示意（嵌套用 `[P]` 直连 `[P]`）：

```
(真实世界) ── [具有] ── (复杂性)
                       ↑
                       │ (作为论元位)
(X) ── [目的是] ────────┤
       │               ↓
       │     (深度强化学习) ── [需要提升] ── (性能)
       └── [证据] ── (DeepMind)
```

注意 `[目的是]` 的两个论元位接的是**另外两个 `[P]`**（u_a / u_b 的谓词），不是中间套 `(X)`——这是嵌套的几何特征。

### 例 4 — 跨句的全局节点缝合

原文（两句一段）：**DeepMind 提出了想象增强智能体。该智能体在复杂环境中具有更高的学习效率。**

unit 文本（两段抽取块，每段独立局部 ID 域；节点跨段共享）：

```
(想象增强)[的](智能体)
(想象增强智能体)[同义](DeepMind 提出的想象增强智能体)
()[证据](DeepMind)
```

```
(复杂)[的](环境)

(想象增强智能体)[具有](学习效率)
()[范围](复杂环境)
()[程度](更高)
```

节点角色（全局收集）：

* 入口节点：想象增强、想象增强智能体、复杂

* 仅论元节点：智能体、DeepMind、环境、学习效率、复杂环境

`想象增强智能体` 在第一段是主体（同义声明）、第二段还是主体（具有）——它是同一个 `(想象增强智能体)`，把两段的子图缝合到一起。这是 §四 不变量 1 在跨句场景的直接体现。

### 例 5 — 整段（三句）综合：主线 + 分支组织

原文：

> 设想一位每天乘坐列车通勤的人。大多数早晨，她的列车都能准时发车，她能轻松有备地赶上早会。但她清楚，一旦有一点意外发生——机械故障、信号失灵，甚至只是碰到雨天——都可能扰乱她原本的模式，造成迟到或慌乱。

这一整段的核心 narrative arc 是**她清楚一旦意外发生会扰乱模式造成迟到 / 慌乱**——句 1 描述她是什么人是 setup，句 2 立常态也是 setup，句 3 是核心断言。整段抽成**一条主线 + 多条分支**，主线由命题态度 wrap 嵌套因果链。

#### 主线（spine）

整段共 3 条 spine units，对应视觉主轴上的 3 条边：

```
# SPINE
(她)[属于](每天列车通勤的人)             # spine.1   视觉边 [平时]
(她)[认为](u_c)                          # spine.2   视觉边 [清楚]
(u_b)[导致](迟到, 慌乱)                  # spine.3 = u_c   视觉边 [造成]
()[模态](可能)
```

视觉边标签 `平时` / `清楚` / `造成` 来自原文，unit 文本里规范化到 family 谓词 `属于` / `认为` / `导致`。

#### 嵌套因果链（spine.2 / spine.3 内部）

```
(意外)[发生]()                            # u_a
()[量化](一点)

(u_a)[扰乱](通勤者原本模式)               # u_b
()[模态](可能)

(u_b)[导致](迟到, 慌乱)                   # u_c   ← 同 spine.3
()[模态](可能)
```

`(她)[认为](u_c)` 通过 u_c → u_b → u_a 的反向链，自动覆盖整条因果链——不需要写成 `[认为](u_a, u_b, u_c)` 把每节点都列出来。

#### 分支（独立 unit，叙事地位从属于主线）

```
# 分支：(她) 的描述（D 决定）
(列车通勤)[的](人)
(每天)[的](列车通勤的人)

# 分支：意外的子类（C 决定）
(机械故障)[属于](意外)
(信号失灵)[属于](意外)
(雨天)[属于](意外)

# 分支：(她) 的原本模式
(她)[的](原本模式)

# 分支：常态背景（句 2）
(列车)[发车]()
()[方式](准时)
()[量化](大多数早晨)
()[模态](能)

(她)[赶上](早会)
()[方式](轻松, 有备)
()[模态](能)
()[量化](大多数早晨)
```

#### 视觉拓扑

按"主轴 + 各节点分支"整合排列，全部以 unit 文本表达。修饰行 `()[mod-P](v)` 缩进 2 格挂在上方最近的一条主 unit 的 `[P]` 上；视觉边标签写在 `#` 注释里，不进入语法。

```
# 主轴 spine
(她)[属于](每天列车通勤的人)              # spine.1   视觉: 平时
(她)[认为](u_c)                           # spine.2   视觉: 清楚
(u_b)[导致](迟到, 慌乱)                   # spine.3 = u_c   视觉: 造成
  ()[模态](可能)

# spine.2 内部嵌套链
(意外)[发生]()                            # u_a
  ()[量化](一点)
(u_a)[扰乱](通勤者原本模式)               # u_b
  ()[模态](可能)
(u_b)[导致](迟到, 慌乱)                   # u_c

# (她) 节点向下分支（D 决定）
(列车通勤)[的](人)
(每天)[的](列车通勤的人)
(她)[的](原本模式)

# (她) 节点的常态分支
(她)[赶上](早会)
  ()[方式](轻松, 有备)
  ()[模态](能)
  ()[量化](大多数早晨)

# (列车) 节点的常态分支
(列车)[发车]()
  ()[方式](准时)
  ()[量化](大多数早晨)
  ()[模态](能)

# (意外) 节点向下分支（C 决定）
(机械故障)[属于](意外)
(信号失灵)[属于](意外)
(雨天)[属于](意外)
```

#### 抽取决策注记

1. **主线选定 — A.a 单一核心断言**：本段是说服性叙述，核心是 "她清楚一条规则"——主 unit 选 `(她)[认为](u_c)`。`属于` / `导致` 也上主线是因为它们共享 `(她)` 起点和 `(迟到, 慌乱)` 终点，构成完整 narrative arc；不是另立两段。
2. **B 主线规范化**：视觉用 `平时 / 清楚 / 造成` 让人读得自然；unit 文本写 family 谓词 `属于 / 认为 / 导致`，让查询沿 family 闭包仍能命中。
3. **C 子类独立**：`机械故障 / 信号失灵 / 雨天` 写成 3 条 `[属于]` unit（不压成 (意外) 节点的 `[子类](机械故障, 信号失灵, 雨天)` 修饰行），保证 "意外的所有子类" 是图遍历一步。
4. **D (她) 的描述独立**：派生 + `[属于]` 链立人物——不降为 (她) 节点的 `[每天行为](乘列车)` 修饰行。这条选择保证 "每天列车通勤的人" 作为类，能挂上 (她)[赶上](早会) 等其他实例的常态属性供继承。
5. **`(她)[认为](u_c)` 单论元嵌套**：u_c → u_b → u_a 反向可达，主线只需写终点 unit ID；不重复 `[认为](u_a, u_b, u_c)`。
6. **常态背景属于分支**：句 2 的 `(列车)[发车]()` / `(她)[赶上](早会)` 不上主线——它们是 setup，不是核心断言。视觉上挂在 (她) / (列车) 节点旁。
7. **元话语 `设想`**：原则 I 降级，不写 `(读者)[设想](...)`。整段假说性可挂 `()[置信度](假设)` 给主 unit。
8. **跨句指代 `她`**：步骤 1 还原为 (她)（直接作为主体 ID）；图里没有 "她" 这个代词节点。

#### 节点角色总览

| 入口节点                  | 来源                                                  |
| --------------------- | --------------------------------------------------- |
| 列车通勤                  | 派生主体 `(列车通勤)[的](人)`                            |
| 每天                    | 派生主体 `(每天)[的](列车通勤的人)`                        |
| 她                     | 中心节点——属于 / 认为 / 赶上 / 派生（原本模式）                |
| 列车                    | 发车                                                  |
| 机械故障 / 信号失灵 / 雨天 | 三条 `属于` unit 的主体                                |
| 意外                    | 发生                                                  |

仅论元节点：人、列车通勤的人、每天列车通勤的人、早会、原本模式、通勤者原本模式（即"她的原本模式"渲染名）、迟到、慌乱、修饰行值（每天、准时、轻松、有备、大多数早晨、一点）。

***

## 七、trade-off

* **图的稀疏 vs 稠密**：单句输入产出小图（5–15 节点）、入口节点的 `┄┄` 尾巴大多是占位；整篇文章产出大图、跨段缝合后入口节点之间连接稠密、尾巴语义实化。规模差异天然，不是错误。

* **谓词不共享 `[P]`**：同义反复的谓词会让图上出现多个相同标签的 `[P]` 实例。优势是边类型清晰、不会因共享谓词节点引起拓扑歧义；查询时再沿 `同义` + `的` 闭包归并。

* **修饰行 `[P]` 视觉密度**：unit 修饰行多时一条 `[P]` 上会挂 4–6 个子 `[P]`——可选折叠为单行标签 `(范围: X, 工具: Y, 证据: Z)`，但折叠版只用于显示，不进图遍历。

* **派生 node 的双重身份**：`(M)[的](B)` 既贡献 `(M)`（入口），又让 `MB` 渲染名指向 `(M)` 实例。查图时基础 node B 上不会展开 M 的具体断言（参照 §三谓词分类，`的` 不传递）。

* **不渲染语言层信息**：焦点 / 主题前置、口吻、句末语气词、被动主动不入图。原则上图与抽取 unit 集等价，不多不少。

* **段边界由抽取者决定**：原文的自然段往往不等于抽取段。把哪些句子合一段（共享 `()` 指代和局部 ID）是抽取者的工程判断——段太大局部 ID 容易冲突，段太小同句的修饰行被迫升格为重复主 unit。

* **主线选定 vs 多焦点段**：主 unit 标记要求抽取者主观判断"本段最核心是哪条断言"。叙事性强的段（人物 / 因果 / 论证）容易选定；纯枚举段（条目列表 / 平行陈述）可能没有自然中心，主 unit 标 `null`，所有 unit 平行。例 5 是叙事段，主线 = `(她)[认为](u_c)` 这条命题态度，立得住；svo_demo 句 4–6 是论文架构介绍的平行枚举，难单选主 unit，可标 `null`。

* **主线视觉边标签 vs unit 谓词**：主线视觉用自然连接词（`平时 / 清楚 / 造成`）让人读着顺，unit 文本写 family 谓词（`属于 / 认为 / 导致`）让查询走 family 闭包。映射不强制一对一——抽取者用判断力让两边都自然，关键是 unit 文本的 ground truth 仍可机器消费。