想象你是一位跑突发新闻的记者。凌晨四点接到报料电话后,你翻到四份零散笔记:有人拍到了震后照片、有人记下了确切时间、有人在一条旁白里提到“泸州”、还有一份转述“当地震感强烈”。每一份单独看都缺胳膊少腿,但把所有线索摊在桌面上,你就能写出一篇完整报道:“昨日,四川泸州发生地震,震感强烈。”篇章级事件抽取要做的事,就是让计算机学会记者的这套功夫——不再满足于在单个句子里抓碎片,而是把整篇文档当作一个案发现场,跨句子、跨段落地把“谁、何时、何地、发生了什么事”拼成一张完整的事件卡。凡是牵涉长文档的信息抽取场景,无论是金融公告监测、舆情分析还是情报挖掘,都离不开这项能力。

岗位关联

掌握篇章级事件抽取,意味着你能解决真实业务中最头疼的“信息碎片化”问题——从一纸长篇公告里提炼出结构化事件,这是信息抽取工程师和 NLP 算法工程师的核心竞争力。

目录
  1. 可视化演示
  2. 篇章建模基础
  3. 论元链接算法
  4. 跨句推理机制
  5. 评估指标体系
  6. 长文档优化
  7. 应用场景实战
  8. 部署优化要点
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示文档图结构建模、跨段落论元链接推理与P/R/F1评估匹配,切换模式查看篇章级抽取不同维度。

本节配有交互动效(进入视口后自动加载,约 3KB)。

文档图结构建模 多段落词节点构建文档级图结构 跨段落节点间建立推理边连接 G_doc = (V_words, E_cross_sent) 图结构捕获跨句语义关系

篇章建模基础

记者拿到成堆笔记后,第一件事不是动笔写稿,而是把所有材料摊在桌上通读一遍。只看一句话就开工,一定会漏掉关键信息。计算机也一样——想要看明白一整篇文档里的事件,必须先让模型“通读全文”,让每个词都携带整篇文档的上下文信息。这一步就叫篇章建模,它是整个篇章级事件抽取的地基。

句子级模型只盯着一句话;篇章级模型则要把整篇文档编码成一个全局表示。这相当于给每个词都配了一份“全文通讯录”,让它知道在文档的哪个角落还有跟自己相关的线索。主流做法是用预训练语言模型(比如 RoBERTa)处理整篇文档,输出一串向量,序列有多长,向量就有多长,每一个向量都融合了全文的信息。

通读之后,笔记里任何一句话的“分量”都变了——“泸州”不再只是某一页上的地名,而是在全文语境下被确认的重要地点。有了这份全局表示,后续把论元链接给事件,才真的站得住脚。

hdoc=Encoder⁡([x1,x2,…,xN])\mathbf{h}_{\text{doc}} = \operatorname{Encoder}([x_1, x_2, \dots, x_N])
把文档中 N 个词的输入向量交给一个编码器,得到 N 个携带全局语义的输出向量,每个词的位置都被全文“重新解释”了一遍。
  1. 输入向量 xᵢ文档被切成 N 个基本单元(词或子词),先在词表里查表得到初始向量,好比“每个词在字典里的基本含义”。
    xi∈Rdx_i \in \mathbb{R}^{d}
  2. 编码器 Encoder用预训练语言模型(如 RoBERTa)作为主干,它一层层融合上下文,好比“记者逐字逐句通读全部笔记的大脑”。
    Encoder⁡:RN×d→RN×d\operatorname{Encoder}: \mathbb{R}^{N \times d} \to \mathbb{R}^{N \times d}
  3. 全局表示 h_doc输出的每个向量不再只代表一个词,而是“这个词在全文语境下的综合语义”,这正是跨句建模的基础。
    hdoc=[h1;h2;… ;hN]\mathbf{h}_{\text{doc}} = [\mathbf{h}_1; \mathbf{h}_2; \dots; \mathbf{h}_N]

论元链接算法

材料摊开后,记者开始往稿件框架里填细节:谁是施事者、在哪里、什么时间、经过如何。这些细节散落在不同句子甚至不同段落,记者盯着原文判断“这个细节该放进哪个事件槽位”——这件事在技术上就叫论元链接。

早期的抽取系统先标出实体,再用句法规则判断实体和触发词的关系,但一旦论元出现在距离触发词好几句话的位置,局部规则就大量失手。现代做法是训练一个“链接分类器”:对每个事件触发词和每个候选论元,判断它们是否构成该事件的某个角色。触发词就是那个让事件“浮出水面”的词,比如“地震”“袭击”“签署”。

这就像记者对着稿件框架逐个打钩打叉:“张伟”跟“地震”有关,归入受伤者;“北京救援队”也跟“地震”有关,归入救援方。每一个判定都带着全文上下文,而不是只看词面挨得近不近。

P(a→e∣D)=softmax⁡(W⊤[ht;ha])P(a \to e \mid D) = \operatorname{softmax}\left(\mathbf{W}^\top [\mathbf{h}_t ; \mathbf{h}_a]\right)
基于触发词和候选论元的上下文向量,预测该论元是否从属于这个事件,输出一个 0 到 1 之间的链接概率。
  1. 触发词向量 h_t文档中触发词位置的输出向量,它携带了“这个事件正在发生”的信号。
    ht\mathbf{h}_t
  2. 候选论元向量 h_a文档中某个候选论元(人名、地名、时间词等)位置的输出向量。
    ha\mathbf{h}_a
  3. 向量拼接 [ ; ]把两个向量首尾相连,合成“触发词-论元”的联合特征,让分类器同时看到双方语境。
    [ht;ha][\mathbf{h}_t ; \mathbf{h}_a]
  4. 权重矩阵与 softmax学习一组权重把联合特征映射成两个分数,再经 softmax 归一化为“链接/不链接”的概率。
    softmax⁡(W⊤v)\operatorname{softmax}(\mathbf{W}^\top \mathbf{v})

跨句推理机制

记者碰到过一个棘手问题:笔记里写着“当地震感强烈”,可“当地”究竟是哪?通读后才知道前文说的是泸州。读者不会看到原始笔记,稿子里必须写成“泸州震感强烈”才专业。把代词还原成具体所指,就是跨句推理的日常工作。

论元链接要做得准,光匹配词面不够。共指消解把“他”“她”“当地”这类指代词和文档中的真实实体对齐;时序推理判断“先地震、后余震”的先后关系;因果推理判断“地震导致受伤”。这些推理的目标是一致的:把分散的线索归拢到正确的事件上。

有了共指消解,“当地”才能变回“泸州”,“他”才能变回“张伟”。记者的稿件因此干净而准确;机器的事件表也因此拿到了一串“真实参与者”,而不是一堆孤立的名词。

coref(i,j)=σ(Wc⊤[hi;hj])\text{coref}(i, j) = \sigma\left(\mathbf{W}_c^\top [\mathbf{h}_i ; \mathbf{h}_j]\right)
计算文档中两个指称指向同一实体的概率,分数越高,两者越可能是同一个论元。
  1. 指称向量 h_i 与 h_j文档中两个候选指称的上下文表示,比如“当地”的向量和“泸州”的向量。
    hi,hj\mathbf{h}_i, \mathbf{h}_j
  2. 拼接联合特征把两个向量拼在一起,让模型能同时对比两者的语境是否吻合。
    [hi;hj][\mathbf{h}_i ; \mathbf{h}_j]
  3. 线性映射加 sigmoid输出 0 到 1 之间的共指概率,越接近 1 表示越可能是同一实体。
    σ(Wc⊤v)∈(0,1)\sigma(\mathbf{W}_c^\top \mathbf{v}) \in (0, 1)

评估指标体系

稿子写完要过主编这一关:事件讲全了吗?每个细节都核实了吗?主编不看文笔,只看信息完整性。篇章级事件抽取的评估方式也如此——不单看触发词找得准不准,更看论元有没有正确归位、事件有没有集齐关键要素。

句子级事件抽取常用触发词识别的 F1 衡量;篇章级则强调事件完整性:一个事件必须把时间、地点、参与方等关键论元都集齐,才算被完整抽取。同时也要衡量每个论元链接判定得对不对。把这两个角度合起来,就需要精确率、召回率和 F1。

主编不会因为稿子长就给好评,也不会因为细节多就放行。P 低说明写了一大堆无关信息,R 低说明关键信息被漏掉,F1 就是那个“既要找得全、又要找得准”的行业标尺。

F1=2×P×RP+RF_1 = \frac{2 \times P \times R}{P + R}
精确率 P 和召回率 R 的调和平均,任何一个偏低,F1 都会被明显拉低,避免模型“只求全不求准”或“只求准不求全”。
  1. 精确率 P预测为正确的论元里,真正正确的比例——“报出来的料里,有多少是真的”。
    P=TPTP+FPP = \frac{TP}{TP + FP}
  2. 召回率 R真实存在的论元里,被成功找出来的比例——“真实事件里的细节,找回了多少”。
    R=TPTP+FNR = \frac{TP}{TP + FN}
  3. 调和平均两个指标取调和平均,各项都不能差,逼着系统同时追求准确与完整。
    2PRP+R\frac{2PR}{P + R}

长文档优化

记者的采访笔记如果只有两三页还好办,一旦拿到几十页的会议纪要、上市公司公告,一次通读就非常吃力。聪明的记者会把笔记分成几册,先逐册精读,再在脑子里汇总成整体印象。长文档处理正是这个思路。

Transformer 的注意力计算量随序列长度平方增长,一篇 5000 字的文档全部塞进模型,算力和显存都会吃不消。于是“切分—局部编码—聚合”成为主流策略:保证每段内部语义不丢,再把各段信息汇总成文档级表示。

记者分册阅读后明白“第一册是背景,第二册是现场,第三册是救援”,每册的分量不同。模型通过注意力权重也学会了同样的轻重取舍——这是长文档场景下保持事件完整性的关键一招。

hdoc=∑i=1Mαi hsegi\mathbf{h}_{\text{doc}} = \sum_{i=1}^{M} \alpha_i \,\mathbf{h}_{\text{seg}_i}
把长文档切分成 M 段,分别编码后,用模型学到的权重把各段表示加权加起来,得到全局表示。
  1. 切分段数 M文档被切成的段落数量,段与段之间可以重叠,避免事件被拦腰截断。
    MM
  2. 段表示 h_segᵢ第 i 段经过编码器后得到的向量,好比“一本分册的核心要点”。
    hsegi\mathbf{h}_{\text{seg}_i}
  3. 聚合权重 αᵢ模型自动学习的权重,重要段落权重高,无关段落权重低。
    αi=exp⁡(ei)∑j=1Mexp⁡(ej)\alpha_i = \frac{\exp(e_i)}{\sum_{j=1}^{M} \exp(e_j)}

应用场景实战

记者练就的这套“拼线索”功夫,换一个版面依然管用。财经版的并购公告、政法版的突发事件通报、地方版的救灾报道,全是线索散落的长文本。篇章级事件抽取天然适配三类场景:金融事件监测、舆情全景分析、情报关系挖掘。

以金融为例,一份十几页的收购公告可能在首段提到“达成协议”,中间段落写明交易金额,末尾才披露交割时间。句子级模型只能提取碎片,篇章级模型则输出一张结构化的完整事件卡。评估这类系统时,除了 F1,还要看事件完整度——论元齐全的事件占真实事件的比例。

财经记者拿着系统输出的完整事件卡,等于拿到了“一键成稿”的半成品。技术在实际场景里创造价值的方式,就是把记者最耗时的“翻旧闻、对细节”变成机器自动完成。

Completeness=∣Earg-complete∣∣Etrue∣\text{Completeness} = \frac{|E_{\text{arg-complete}}|}{|E_{\text{true}}|}
在全部真实事件中,成功集齐所有关键论元(时间、地点、参与方、金额等)的事件占比,是衡量“跨段拼接能力”的直接指标。
  1. 真实事件集合 E_true人工标注的文档级完整事件,是评估的“标准答案”。
    EtrueE_{\text{true}}
  2. 论元齐全事件子集模型输出中关键论元全部正确归位的事件。
    Earg-completeE_{\text{arg-complete}}
  3. 完整度比值比值越高,说明系统真正做到了跨段拼接,而非只抓碎片。
    ∣Earg-complete∣∣Etrue∣×100%\frac{|E_{\text{arg-complete}}|}{|E_{\text{true}}|} \times 100\%

部署优化要点

截稿时间永远是记者的宿敌。素材再全,发不出去就是废稿。生产环境里的模型也一样:长文档推理慢是家常便饭,必须在“质量”和“速度”之间找到平衡。

篇章级事件抽取的部署主要有三个痛点:文档超长导致输入被截断、单条样本推理时延过高、长文档消耗大量显存。对应的优化方向是推理加速、模型压缩和延迟控制。推理加速常用批处理与特征缓存,模型压缩常用量化和蒸馏,延迟控制则依赖动态切分与并行化。

截稿时间逼着记者优化工作流,线上延迟逼着工程师优化模型。篇章级事件抽取要真正落地,比的不仅是模型精度,更是工程系统与文档规模赛跑的能力。

Throughput=Btbatch\text{Throughput} = \frac{B}{t_{\text{batch}}}
吞吐量等于批次大小除以单批处理时间,批次越大、单批越快,单位时间能处理的文档就越多。
  1. 批次大小 B一次前向传播同时处理的文档数量。
    BB
  2. 单批耗时 t_batch处理整个批次所需的秒数,由模型复杂度、硬件和输入长度共同决定。
    tbatcht_{\text{batch}}
  3. 吞吐量每秒处理的文档数,数值越高,系统越能扛住线上流量。
    Throughput(文档/秒)\text{Throughput(文档/秒)}

AI 应用场景

金融机构并购事件监测

阶段:事件抽取与信息聚合

解决的问题:分析师人工阅读长篇收购公告,手工摘录金额、时间、交易方等关键论元,极易漏掉分布在公告不同章节的信息。篇章级事件抽取自动扫描全文,把分散的论元链接成一个结构化事件。

具体案例:某券商用篇章级事件抽取处理 1.2 万份上市公司公告,自动提取并购方、目标方、交易金额、支付方式、交割时间等论元,事件完整度从句子级方案的 58% 提升到 86%。

突发事件舆情全景分析

阶段:跨文档事件合并与推理

解决的问题:一条突发新闻衍生出几十篇报道,每篇只包含事件的一个侧面,单句抽取会得到大量互相矛盾的事件碎片。

具体案例:某地地震后,系统把“凌晨发生地震”“泸州震感强烈”“救援队已出发”等分散在五篇报道中的信息合并为一个完整事件,并自动排出时间线,舆情分析师打开系统即可看到事件全景。

情报文档跨段关系挖掘

阶段:论元链接与关系组装

解决的问题:情报报告常把人物、地点、行动分散在长段落里,人工阅读耗时且容易遗漏关联。

具体案例:针对一批多页报告,系统先做文档结构化,再做篇章级事件抽取,将“某人某日在某地采购敏感物资”这类跨段信息组装成事件表,辅助情报人员快速排查线索。

Python 演示

python81 行
# -*- coding: utf-8 -*-"""篇章级事件抽取简化Demo:跨段落论元链接"""import re  class DocEventExtractor:    """基于规则 + 共指合并的篇章级事件抽取器"""     def __init__(self):        self.triggers = {  # 事件类型 -> 触发词表            "地震": ["地震", "震中", "余震"],            "袭击": ["袭击", "攻击", "爆炸"],            "签约": ["签署", "签约", "达成"],        }        self.entities = {  # 实体类型 -> 词典(模拟NER)            "人名": ["张伟", "李明", "王芳"],            "地名": ["北京", "四川", "泸州", "上海"],            "时间词": ["昨天", "上午", "3月12日", "2024年"],        }        self.pronouns = {"他": "人名", "她": "人名", "当地": "地名"}     def parse(self, doc):        sents = [s for s in re.split(r"[。!?]", doc) if s.strip()]        mentions = []        for sid, sent in enumerate(sents):            for w, tp in self.pronouns.items():                if w in sent:                    mentions.append({"text": w, "type": tp, "sent": sid})            for tp, vocab in self.entities.items():                for w in vocab:                    if w in sent:                        mentions.append({"text": w, "type": tp, "sent": sid})        resolved = self._resolve(mentions)        events = []        for sid, sent in enumerate(sents):            for etype, words in self.triggers.items():                for w in words:                    if w in sent:                        events.append({                            "type": etype,                            "trigger": w,                            "trigger_sent": sid,                            "arguments": self._link(resolved, sid),                        })        return events     def _resolve(self, mentions):        """共指消解:代词指向前文最近的同类型实体"""        out = list(mentions)        for m in out:            if m["text"] not in self.pronouns:                continue            for o in out:                if o["sent"] < m["sent"] and o["type"] == m["type"]:                    m["antecedent"] = o["text"]                    break        return out     def _link(self, mentions, trigger_sent):        """跨句论元链接:距离超过两句的论元暂不链接"""        args = {"agent": "?", "place": "?", "time": "?"}        for m in mentions:            if abs(m["sent"] - trigger_sent) > 2:                continue            text = m.get("antecedent", m["text"])            if m["type"] == "人名" and args["agent"] == "?":                args["agent"] = text            elif m["type"] == "地名" and args["place"] == "?":                args["place"] = text            elif m["type"] == "时间词" and args["time"] == "?":                args["time"] = text        return args  if __name__ == "__main__":    doc = ("昨天,四川省泸州市发生地震。当地震感强烈,"           "张伟在地震中受伤。王芳称,上午余震不断。"           "北京救援队已经出发。")    extractor = DocEventExtractor()    for ev in extractor.parse(doc):        print(ev)
目的:演示一个极简的篇章级事件抽取流程——先按句切分文档、识别实体与代词,再通过共指消解把代词还原成前文实体,最后把跨句子出现的论元链接到触发词所在的每个事件上。
  1. sents = [s for s in re.split(r"[。!?]", doc) if s.strip()]先把整篇文档按句号切分成句子列表,这是“记者把笔记分页”的第一步。
  2. for sid, sent in enumerate(sents)记录每个句子编号,后续判断“论元与触发词隔了几句”全靠这个编号。
  3. resolved = self._resolve(mentions)先做共指合并,让“他”“当地”这些代词指向前文出现的真实实体。
  4. events.append({... "trigger_sent": sid})每个触发词生成一个待填充的事件框架,并记住它出现在第几句。
  5. if abs(m["sent"] - trigger_sent) > 2: continue论元离触发词超过两句就暂时放弃,这是简化版的“长距离依赖控制”。
  6. text = m.get("antecedent", m["text"])若该论元是代词,则输出其先行词(如“当地”→“泸州”),保证事件卡里是可读的实体名。
  7. args["agent"] = text把姓名论元放入 agent 槽位,完成跨句论元链接。

常见误区

误区“我句子级事件抽取已经跑通了,把每句话都抽一遍,再拼起来不就行了?为什么要费劲做篇章级?”

正解句子级模型看不到跨句信息。“当地震感强烈”这句里没有泸州,单独抽只能得到“地点未知”。就像记者只看某一页笔记永远拼不出完整报道。篇章级把全文统一编码后,才知道“当地”就是泸州。

为何常见:句子级方案部署简单、成本低,初学者容易先入为主,忽略了真实文档中论元高度分散的事实。

误区“我的模型很厉害,把 5000 字全文直接塞进去,信息一定比切分后更全。”

正解Transformer 的注意力是平方级复杂度,超长输入会耗尽显存;即便塞得下,注意力也会被大量无关段落稀释,模型反而“抓不住重点”。分块聚合是兼顾全局与局部的主流解法。

为何常见:直觉上“信息越多越好”,但忽略了模型的计算瓶颈和注意力稀释问题,属于典型的“想当然”。

误区“只要把代词都换成实体名,跨句论元链接就百分之百搞定了。”

正解共指消解只是跨句推理的一部分。时序先后、因果关系、事件边界划分同样关键。比如“余震不断”不是新事件,而是“地震”事件的后续描述,这需要事件级推理,不是把代词换掉就能做到的。

为何常见:代词的干扰最直观,学习者容易把最显眼的问题当成全部问题。

误区“离线评测 F1 到了 90%,上线肯定没问题。”

正解离线 F1 只能说明模型在测试集上的论元匹配能力,线上还要看长文档的首尾截断、推理延迟、事件完整度、不同领域的泛化能力。评测指标齐全、部署链路扎实,系统才算真正可用。

为何常见:学术界习惯用 F1 一锤定音,工程新人容易把学术指标直接当成产品指标。

误区“既然要做篇章级,句子级抽取就彻底淘汰了,全部用文档级模型。”

正解句子级和篇章级是互补关系。句子级适合快速定位触发词候选,篇章级负责跨句论元归位。很多生产系统先用句子级粗筛、再用篇章级精链接,两级级联能兼顾速度与精度。

为何常见:看到“篇章级”三个字就以为它包办一切,忽略了工程落地中分层设计的现实。

面试题

Q1. 篇章级事件抽取与句子级事件抽取最本质的区别是什么?

单选题 · easy

  • A.只用预训练大模型
  • B.跨句跨段链接论元← 正确答案
  • C.输出事件的概率
  • D.不依赖触发词标注

答案:B。篇章级事件抽取的核心是把散落在不同句子、段落中的论元链接到同一事件上,而句子级只看单句。选 B。选项 A、C 是技术细节差异,D 是完全错误的说法,篇章级同样需要触发词信息。

Q2. 论元链接任务通常被建模成什么?

单选题 · mid

  • A.序列到序列生成
  • B.触发词与论元的二分类← 正确答案
  • C.无监督的聚类问题
  • D.词性标注的辅助任务

答案:B。论元链接本质是判断“某候选论元是否属于某事件触发词的角色”,通常建模为二分类或排序问题。选 B。A 是文本生成建模,C 没有利用触发词标签,D 与论元归属无关。

Q3. 在篇章建模中,把整篇文档直接输入 Transformer 的主要挑战是什么?

单选题 · mid

  • A.注意力平方复杂度大← 正确答案
  • B.无法处理中文文本
  • C.不需要位置编码
  • D.词表必须覆盖全文

答案:A。Transformer 注意力计算量随序列长度平方增长,长文档直接输入会引发算力和显存问题。选 A。B 与语言无关,C 和 D 都不构成“长文档特有”的挑战。

Q4. F1 分数中,P 代表什么?

单选题 · hard

  • A.预测正确论元的占比← 正确答案
  • B.真实论元中找回的比例
  • C.事件类型的种类数量
  • D.文档切分的段落数量

答案:A。P 是精确率(Precision),衡量预测为正确的论元里真正正确的比例;B 描述的是召回率 R。C 和 D 与 F1 无关。选 A。

Q5. 共指消解在篇章级事件抽取中主要解决什么问题?

单选题 · easy

  • A.分词歧义问题
  • B.指代词与实体对齐← 正确答案
  • C.语法树结构解析
  • D.词向量维度选择

答案:B。共指消解把“他”“当地”等指代词对齐到文档中的真实实体,是跨句推理的基础。分词、句法、词向量都不是它的核心任务。选 B。

Q6. 下列哪个场景最适合使用篇章级事件抽取?

单选题 · mid

  • A.单句商品评论情感分类
  • B.新闻长文中的连续事件← 正确答案
  • C.图片中的文字识别
  • D.语音信号的降噪处理

答案:B。新闻长文中事件和论元常跨句分散,是篇章级事件抽取的典型场景。A 是句子级短文本任务,C、D 属于计算机视觉与语音领域。选 B。

Q7. 长文档建模的常见优化手段包括哪些?

多选题 · mid

  • A.窗口化注意力机制← 正确答案
  • B.分块后聚合表示← 正确答案
  • C.所有词全连接注意力
  • D.层次化文档编码← 正确答案

答案:ABD。窗口化注意力、分块聚合、层次化编码都能降低长文档计算开销并保留全局语义。C 正是引发平方复杂度的原始做法,属于被优化的对象而非优化手段。

Q8. 跨句论元分散的常见表现有哪些?

多选题 · mid

  • A.触发词出现在首句← 正确答案
  • B.论元在后续句子出现← 正确答案
  • C.论元被代词间接指代← 正确答案
  • D.论元全部与触发词同句

答案:ABC。触发词与论元分离在不同句子、论元以代词间接出现,都是典型的跨句分散现象。D 描述的其实是句子级场景,与“跨句分散”矛盾。

Q9. 事件完备率 Completeness 的分子表示什么?

单选题 · hard

  • A.模型预测的事件总数
  • B.论元齐全的事件数量← 正确答案
  • C.触发词的词频总数
  • D.文档包含的句子数

答案:B。事件完备率 = 论元齐全的事件数 / 真实事件总数,衡量系统把事件“拼完整”的能力。A 是预测规模,C、D 与事件完整性无关。选 B。

Q10. 部署篇章级事件抽取系统时需要考虑哪些问题?

多选题 · hard

  • A.输入长度超出模型限制← 正确答案
  • B.长文档带来高推理延迟← 正确答案
  • C.批次大小受显存约束← 正确答案
  • D.切分文档不影响推理

答案:ABC。超长输入、推理延迟和显存约束是长篇部署的三大现实问题。D 是错误说法——切分文档会影响跨段推理,必须用聚合策略弥补,不能假装没有影响。