想象你是一台计算机,试图阅读一份 100 页的财务报告。对你来说,那不是一份包含章、节和段落的结构化文档,而很可能只是一连串的文本片段,甚至可能被光学字符识别 (OCR) 搞得乱七八糟,单是一个句子就可能断裂在三行里。

你如何判断“3.1 节”是“第三章”的子标题?或者第 50 行那句没说完的话应该连接到第 51 行?

这个问题被称为文档逻辑结构化 (Document Logical Structuring) 。 它是将一连串文本片段转换为层级树状结构的过程。虽然人类凭直觉就能做到这一点,但机器却很难处理,尤其是当文档既长又复杂的时候。

在这篇文章中,我们将深入探讨 SEG2ACT , 这是一篇提出新颖解决方案的研究论文。研究人员没有将其视为标准的分类问题,而是将其重新构建为一项动作生成任务 (action generation task) 。 通过教导模型一步步“表演”出结构构建的过程,他们取得了最先进的成果。

现有方法的问题

在研究解决方案之前,我们需要了解文档逻辑结构化的具体挑战。

如下图 1 所示,目标是获取原始文本片段 (通常来自 OCR 引擎) 并将其映射为逻辑树 (包含标题和段落) 。

图 1: 文档逻辑结构化任务示意图,旨在将文本片段转换为包含文档标题和段落的层级树状结构。

这项任务面临两大障碍:

  1. 复杂性与噪声: 现实世界的文档通常多页且篇幅冗长。OCR 工具往往会将内容打断成不完整的行,而不是语义完整的段落。这使得追踪长距离依赖关系——比如意识到第 10 页的小节属于第 8 页开始的某一章——变得非常困难。
  2. 结构多样性: 财务报告的结构看起来与科学论文截然不同。设计一个能同时处理这两种文档的基于规则的系统几乎是不可能的。

传统的深度学习方法通常将此分解为一个流水线: 首先提取特征,然后检测标题,最后预测节点之间的关系。缺点是什么? 错误传播 (Error propagation) 。 如果第一步失败了,整个结构就会崩溃。此外,这些方法通常孤立地看待文本,或者实际上“忘记”了文档的全局上下文。

SEG2ACT 的方法

SEG2ACT 的核心创新就在其名字中: Segment to Action (从片段到动作)

作者没有孤立地将每一行分类为“标题”或“段落”,而是提出了一个端到端的生成式框架。他们将文档结构化过程视为一个序列决策博弈。模型读取文本片段并生成一系列动作 (actions) , 从而动态地构建树结构。

架构

该框架由三个主要组件组成,它们在一个循环中协同工作:

  1. 动作生成模型 (Action Generation Model) : 一个生成式语言模型 (GLM) ,用于预测如何处理当前文本。
  2. 全局上下文栈 (Global Context Stack) : 一个记忆机制,用于跟踪我们在文档层级中的位置。
  3. 结构更新 (Structure Update) : 执行动作以构建树的实际操作。

让我们看看高层级的工作流程:

图 2: SEG2ACT 的一个生成步骤。动作生成模型将当前的文本片段转换为动作,以增量构建文档逻辑结构。系统维护一个全局上下文栈以增强模型的全局感知能力,生成的动作随后被用来更新该栈。

如图 2 所示,模型将文本片段作为输入。它输出一个“动作序列”。这些动作会更新逻辑树全局上下文栈,然后栈的状态会反馈给模型用于下一步。这种反馈循环确保模型永远不会失去对“全局图景”的把握。

1. 定义动作

为了实现这一点,研究人员将复杂的树构建过程简化为三个基本动作。这使得模型可以使用相同的词汇表处理任何类型的文档。

  1. 新建 k 级标题 (New Level-k Heading, +) : 此动作告诉系统在深度 \(k\) 处创建一个新的标题节点。例如,+++ 可能代表一个 3 级标题 (如 1.1.1 节) 。
  2. 新建段落 (New Paragraph, *) : 这会在当前活动标题下创建一个新的段落节点。
  3. 拼接 (Concatenation, =) : 这对于处理 OCR 噪声至关重要。它告诉系统,“这个片段不是一个新节点;它是前文的延续。”它将当前文本追加到最后添加的节点上。

通过预测 +*=,模型可以构建复杂的树,同时缝合破碎的句子。

2. 全局上下文栈

长文档最大的挑战是长距离依赖 (long-range dependency) 。 当模型处理到第 50 页时,它如何知道自己仍然在“第四章”内?

标准模型可能会尝试编码整个文档的历史记录,这在计算上既昂贵又充满噪声。SEG2ACT 通过全局上下文栈解决了这个问题。

该栈并不存储整个文档历史。相反,它存储层级树中的活动路径 (active path)

  • 当一个新的标题开始时,栈会“弹出 (pop) ”已完成的章节,并“压入 (push) ”新的标题。
  • 当添加段落时,它位于栈顶。
  • 栈有效地将全局信息压缩为一个简洁的相关父节点列表。

表 1 很好地演示了这一点:

表 1: 单个预测步骤中模型模板的演示示例。它利用了全局上下文栈和多片段多动作策略。

在上表中,请看“STACK” (栈) 部分。它显示了通往当前时刻的层级结构:

  • 第 1 级: Government Bonds… (政府债券…)
  • 第 2 级: Credit Quality Analysis… (信用质量分析…)
  • 第 3 级: Use of Proceeds (募集资金用途)

这为模型提供了所需的上下文,以决定输入的文本片段 (“Payment Security Analysis”,支付安全分析) 应该是开始一个新的章节,还是继续当前的章节。

3. 多片段多动作策略

一次处理一行文档速度很慢,而且缺乏局部上下文。SEG2ACT 采用了一种“多片段多动作 (Multi-segment Multi-action) ”策略。

模型读取一个输入窗口 (\(w_I\) 个片段) 并预测相应的输出窗口 (\(w_O\) 个动作) 。

  • 输入: 行 A,行 B,行 C
  • 输出: 动作 A,动作 B,动作 C

这允许模型“向前看”。如果行 A 是标题,行 B 是一个句子,行 C 是该句子的剩余部分,同时看到这三者可以帮助模型正确预测 New Heading (新建标题) 、New Paragraph (新建段落) 和 Concatenation (拼接) 。

训练模型

该模型使用标准的教师强制 (teacher-forcing) 交叉熵损失函数进行训练。本质上,如果模型生成的动作序列与从标注文档派生的真实序列 (ground truth) 不同,模型就会受到惩罚。

公式 1

这里,\(s_i\) 代表全局上下文栈,\(x\) 代表文本片段。目标是最大化正确动作序列 \(y\) 的概率。

实验结果

研究人员将 SEG2ACT 与几个强大的基线模型进行了对比,包括 TRACER (仅文本基线) 和像 MTD 这样的多模态方法 (使用视觉布局特征) 。

他们使用了两个数据集:

  1. ChCatExt: 一个包含标题和段落的中文文档数据集。
  2. HierDoc: 一个专注于目录 (标题) 提取的英文科学数据集。

卓越的性能

结果令人印象深刻。在 ChCatExt 数据集上,SEG2ACT 显著优于基线模型。

表 2: ChCatExt 上的整体性能 (标题、段落、总节点的 F1 分数以及文档级别的逻辑结构准确率) 。TRACER* 指的是我们复现的结果。

请看表 2 中的 DocAcc (文档准确率) 一列。该指标检查整个生成的树是否与真实标签完全匹配。

  • 使用 Baichuan-7B 作为骨干网, SEG2ACT 达到了 63.69% 的准确率 , 而基线 TRACER 仅为 53.85%。
  • 它在单个标题和段落的 F1 分数上也获得了更高的得分。

仅用文本击败多模态模型

最令人惊讶的结果可能来自 HierDoc 数据集。通常,人们会认为能够“看到”文档 (使用视觉布局特征) 的模型在理解结构方面表现会更好。

表 3: HierDoc 上基线模型和 SEG2ACT 的标题检测 (HD) F1 分数和目录 (ToC) TEDS (%)。

如表 3 所示,SEG2ACT (仅使用文本) 的表现优于 MTDCMM (使用文本+布局+视觉) 。

  • ToC (树编辑距离分数) : 96.3% 对比 88.1%。

这表明,凭借足够强大的语言模型和全局上下文栈,语义理解可以在逻辑结构化方面胜过视觉布局线索。

迁移学习能力

文档 AI 的一个主要痛点是,在一类文档 (如发票) 上训练的模型通常会在另一类文档 (如简历) 上失效。研究人员在零样本 (Zero-Shot) 和少样本 (Few-Shot) 设置下测试了 SEG2ACT 的泛化能力。

表 4: 在 ChCatExt 的三个子语料库上的零样本、少样本和全样本设置下的迁移学习实验性能 (总节点的 F1 分数) 。

表 4 显示了不同文档类型 (招标公告、财务公告、信用评级) 的结果。

  • 零样本: 在“FinAnn” (财务公告) 类别中,SEG2ACT 达到了 43.30 的 F1 分数,而基线 TRACER 仅为 11.39
  • 少样本: 仅需极少量的训练数据,SEG2ACT 就能非常快速地适应,接近全样本的性能。

这证明 SEG2ACT 不仅仅是在死记硬背特定的关键词;它正在学习逻辑结构的抽象概念,这使其具有高度的可迁移性。

效率与上下文窗口

最后,“多片段”策略真的有帮助吗?

表 6: 在 ChCatExt 上扩展 SEG2ACT 的输入片段窗口和输出动作窗口长度时的总节点 F1 分数 (及每篇文档的推理时间) 。Baseline 指的是使用 Baichuan-7B 的 TRACER。

表 6 证实了这一点。

  1. 性能: 将输入窗口 (\(w_I\)) 从 1 增加到 3 提高了 F1 分数 (从 91.56 提高到 92.63) ,因为模型拥有了更多的局部上下文。
  2. 速度: 增加输出动作窗口 (\(w_O\)) 显著减少了推理时间。一次生成 5 个动作比逐个生成快了近 5 倍 , 且精度损失极小。

结论

SEG2ACT 论文展示了我们在文档结构化思维上的转变。作者表明, 动作生成是一个强大的范式,而不再依赖复杂的流水线或繁重的多模态特征。

通过结合生成式语言模型和全局上下文栈 , SEG2ACT 解决了困扰以往方法的长距离依赖问题。它有效地记住了自己在文档层级中的“位置”,使其能够为甚至冗长、复杂的文档构建准确的树结构。

给学生的关键要点:

  • 重构任务: 有时,将分类问题转变为生成问题 (序列到序列) 可以释放更好的性能。
  • 记忆很重要: 在长序列 (如文档) 中,标准的注意力机制并不总是足够的。像“栈”这样的显式记忆结构可以引导模型。
  • 少即是多: 你并不总是需要视觉特征。在正确的结构约束引导下,对文本的强大语义理解可以胜过多模态模型。

随着大型语言模型的不断发展,像 SEG2ACT 这样结合了 LLM 的原始力量与结构化、逻辑感知组件的方法,很可能成为处理世界非结构化数据的标准。