想象你是一名经验丰富的刑警队长。清晨,值班室递来一份报案记录,只有短短一句话:“歹徒昨晚在银行引爆了炸弹。”要破案,你必须回答四个问题:谁干的?什么时间?在哪干的?炸了什么?这四个答案,就是一份案件档案的核心要素。对计算机而言,同样一句话摆在那里,机器也要学会像老刑警一样,精准地圈出“歹徒”“昨晚”“银行”“炸弹”,并给它们贴上身份标签——凶手、时间、地点、目标。这个从句子中提取事件核心要素的过程,就叫事件论元抽取。 要教会机器破案,有两条思路:一条是“逐词排查法”,把句子里的每个词像嫌疑人一样排队,逐一贴上“凶手/时间/地点/无关”的臂章,这就是序列标注;另一条是“单刀直入法”,直接向句子发问“谁引爆了炸弹?”让它在原文里圈出答案,这就是问答式抽取。如果案件中还藏着案中案(爆炸案里还炸死了一名官员),我们还要处理论元的层级关系。最后,当然要考核破案水平——抓到的都是真凶吗?真凶都归案了吗?这正是精确率与召回率。读完这篇文章,你会从零掌握一套把一句话变成结构化事件档案的完整方案。
对 AI 从业者来说,事件论元抽取是把新闻、公文、病历等非结构化文本升级为事件知识图谱的核心能力。掌握它,你就能在舆情监控、金融风控、智能问答等场景中,让机器真正“读懂”发生了什么。
可视化演示
动态演示事件论元抽取的核心机制,通过采集/分析/决策/反馈四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
事件论元抽取:事件论元 事件论元抽取的任务定义与角色体 论元角色的层级结构与约束关系 核心机制可视化 事件论元抽取整体架构与关键组件
论元角色定义
刑警接到报案后,第一件事是拿出空白的案件登记表,上面有固定的栏目:嫌疑人、时间、地点、受害者、作案工具。无论案子多离奇,这些栏目不变,破案就是把这些栏目填满。事件论元抽取的起点,正是定义这样一张“事件登记表”——我们把每个栏目叫作论元角色,把填进栏目里的具体词或短语叫作论元。比如“昨天”填进“时间”栏,它就是时间论元。
不同的事件类型,登记表栏目也不一样。“爆炸事件”的表格上有凶手、时间、地点、目标;而“婚礼事件”的表格上则要换成新郎、新娘、司仪、场地。因此,论元角色不能脱离事件类型孤立定义,必须先确定事件是哪一类,才知道该抽取哪些角色。这正是论元抽取与普通实体识别的本质区别:实体识别回答“这是谁”,论元抽取回答“他在这场事件里扮演了什么身份”。
为了形式化描述一张“事件登记表”,研究者通常把事件建模为一个元组:触发词加上一组“角色:论元”对。角色用大写语义标签表示,例如 ACTOR(参与者)、TIME(时间)、LOCATION(地点)、TARGET(对象)。论元则是句子中实际出现的词或短语。
回到办案现场:老刑警扫一眼“歹徒昨晚在银行引爆了炸弹”,心里自动填好表格——歹徒填进参与者栏,昨晚填进时间栏,银行填进地点栏,炸弹填进对象栏。机器要学的,正是这种看一眼就自动填表的本领。
- 事件主体 $\mathcal{E}$$\mathcal{E}$ 表示一个被识别出来的完整事件,相当于一份填写完毕的案件登记表。
- 触发词 $t$$t$ 是触发词(如“引爆”),它标定事件类型,就像报案时先确定的“案由”。
- 角色论元对 $a_k{}\mathrm{ROLE}$:$a_k$ 是第 $k$ 个论元,冒号后面的 $\mathrm{ROLE}$ 是它扮演的角色,例如“歹徒:ACTOR”表示“歹徒”担任参与者。
- 整体元组结构整个式子说明,事件 = 案由 + 多个“角色-论元”填槽结果,缺了任何一格,档案就不完整。
触发词定位
案件不会自己报上来,总要有一个“案发信号”让刑警注意到这里出了事——可能是爆炸的巨响、玻璃碎裂的声音。在事件论元抽取中,这个信号就是触发词。它通常是句子里最能体现动作发生的词,比如“引爆”“袭击”“辞职”“并购”。找到触发词,就等于警察赶到现场,确定了“这是一起爆炸案”,之后才知道该拿出哪一张登记表来填写。
触发词本身不是论元,它是另一个独立要识别的对象。识别触发词通常被建模为一个词级别的分类问题:把句子里的每个候选词过一遍,判断它是不是触发词、属于哪种事件类型。这一步看似简单,却非常关键——因为事件类型一旦定错,后面的论元角色体系就全错了。把“引爆”下的表格拿去找“新娘”“新郎”,自然一无所获。
现代做法是对句子进行上下文编码,得到每个词的向量表示,再经过一个二分类器,输出它是触发词的概率。候选词越像“案发现场的巨响”,这个概率越高。
触发词定位就像在嘈杂的街道上竖起耳朵捕捉那一声“巨响”。一旦听到,刑警立刻锁定案发地点、明确案件类型,抽出对应的登记表——下一步,就开始逐项填写论元了。
- 二分类标签 $z_t$$z_t=1$ 表示第 $t$ 个词被判定为触发词,$z_t=0$ 则表示它不是触发词。
- 上下文表示 $\mathbf{h}_t$$\mathbf{h}_t$ 是第 $t$ 个词经过上下文编码后的向量,它融合了前后文的语义,好比刑警看到的不仅是这个词本身,还有它周围的环境。
- 线性打分与激活$\mathbf{w}_o^\top \mathbf{h}_t + b_o$ 先对“像不像触发词”打一个原始分数,再用 $\sigma$(sigmoid 函数)把分数压到 0 到 1 之间,变成概率。
序列标注方法
登记表已经就位,接下来怎么把“歹徒”“昨晚”“银行”“炸弹”一个个填进去?一种最直观的办法,是刑警把整句话的每个词都叫到跟前,像列队点名一样依次检查,给每个词发一个臂章:B-凶手(凶手论元开始)、I-凶手(凶手论元继续)、O(无关人员)。这句话会变成这样的标签序列:“歹徒/B-凶手 昨晚/B-时间 在/O 银行/B-地点 引爆/动作 了/O 炸弹/B-目标”。这个给每个词贴标签的过程,就是序列标注。
序列标注的“BIO“体系是核心:B 表示一个论元片段的第一个字符,I 表示片段中间或结尾的字符,O 表示该词不属于任何论元。拿到这段臂章序列,就能直接还原出所有论元片段。为了让机器贴得准,模型通常先用双向 LSTM(BiLSTM)编码整句话,让每个词都携带前后文信息,再用条件随机场(CRF)作为解码器,约束标签之间不能出现非法转移,比如”B-凶手“后面不能直接跟一个”O“再接”B-时间”,因为一个论元片段一旦开始就要连续到结束。
CRF 的核心思想,是对整个标签序列而不是单个标签打分。它把“转移是否合法”和“每个词自身像什么标签”两部分分数加在一起,再通过归一化得到整条标签序列的概率。
列队点名结束,每个词都有了臂章,登记表也就自动填好了。刑警把“歹徒”按臂章归类到参与者栏,把“昨晚”归类到时间栏——序列标注法的逻辑就是这样朴实:用一个完整、合规的标签序列,等价于一次严谨的现场排查。
- 整段标签序列 $\mathbf{y}$$\mathbf{y} = (y_1, \dots, y_n)$ 是给句子 $\mathbf{x}$ 每个词分配的标签序列,例如“B-凶手,B-时间,O, ……”。
- 转移分数 $\mathbf{A}_{y_{i-1},y_i}$$\mathbf{A}$ 是标签转移矩阵,$\mathbf{A}_{y_{i-1},y_i}$ 表示从前一个标签 $y_{i-1}$ 转移到当前标签 $y_i$ 的合法性与得分。
- 发射分数 $\mathbf{P}_{i,y_i}$$\mathbf{P}$ 是每个词自身的标签打分矩阵,$\mathbf{P}_{i,y_i}$ 表示第 $i$ 个词在语义上像标签 $y_i$ 的程度。
- 配分函数(分母)分母对所有可能的标签序列 $\mathbf{y}'$ 求指数和,作用是归一化,把分子变成真正的概率。
问答抽取方法
逐词排查虽然稳妥,但效率不高——毕竟有大量词是“在”“了”这样的无关词,也要逐一过堂。刑警队里还有另一种风格的老刑警:不搞队列点名,而是直接站在证人面前,单刀直入地审问:“谁干的?”“什么时间?”“在什么地方?”“炸了什么东西?”证人的回答指向哪里,答案就在哪里。这就是问答式论元抽取。
问答式抽取的思路,是把每个论元角色转化成一个自然语言问题。比如对“时间”角色,构造问题“事件发生的时间是什么?”;对“地点”角色,构造问题“事件发生的地点在哪里?”然后,把问题和原文句子拼接在一起,交给一个机器阅读理解模型(如基于 BERT 的抽取式问答模型)。模型输出的是答案在原文中的起止位置:从第 $i$ 个词开始,到第 $j$ 个词结束,这个区间里的文本就是该角色对应的论元。
模型的预测方式通常称为“起止指针”:它对句子中每个位置分别计算“作为答案开始”和“作为答案结束”的概率,然后寻找一组使得联合概率最大的起止区间。这就像证人听到问题后,用手指在记录本上画了一个开始和结束的标记。
问答式抽取的好处是天然利用了预训练模型的阅读理解能力,对每个角色“精准审讯”;代价则是每抽取一个角色就要问一遍,相当于一个角色配一位审讯员。两种刑警风格各有各的适用场景,但都能把登记表填完。
- 答案跨度 $\hat{a}$$\hat{a}$ 表示预测出的答案区间,对应原文中从第 $i$ 个词到第 $j$ 个词的一段连续文本。
- 起止概率 $P_{\mathrm{start}}(i)$ 与 $P_{\mathrm{end}}(j)$模型的输出层分别计算每个位置作为答案起点和终点的概率,通常用 softmax 对整句归一化得到。
- 联合最大化 $\arg\max$在所有满足 $i \le j$ 的起止组合里,挑选让两者概率乘积最大的那个区间,作为最终答案。
论元层级关系
办案时经常会遇到更复杂的局面:爆炸案里,炸弹炸死了一名官员。这时案件不是孤立的,而是“案中案”——表面是爆炸案,里面还嵌套着一个谋杀案。事件论元抽取同样要应对这种嵌套结构:一个事件的论元,本身可能又是一个小事件。比如“爆炸导致三名警察受伤”中,“爆炸”是整个句子的头号事件,而“三名警察受伤”作为结果,又构成了一个独立的受伤事件,它整体上充当了“爆炸事件”的一个论元。
为了描述这种递归结构,我们把事件定义成一个可以自我嵌套的元组:每个论元槽位里填人的内容,既可以是一个普通的词,也可以是另一个完整的事件。这就像案件的卷宗里,一份证物袋里还能再掏出一个案件文件夹。
嵌套事件还带来一个特别的问题:论元共享。在上面的例子里,“官员”在子事件“炸死”中是目标论元,在父事件“袭击”中同样是受害者论元。同一个实体在两个层级上同时扮演角色,抽取时必须识别并合并,否则会造成信息重复或矛盾。处理层级关系的常见策略是递归展开:先抽取父事件的所有论元,对其中表现为事件的论元再次进入抽取流程,逐层向下,直到所有论元都是普通实体为止。这就像刑警遇到案中案时,把子卷宗一层层调出来,最终形成一棵完整的案件树。
- 事件元组 $E$$E$ 表示一个事件,它由触发词 $\tau$ 和一组角色论元对构成,是层级结构的根节点。
- 角色集合 $\{R_kA_k\}$:$R_k$ 是第 $k$ 个论元角色,$A_k$ 是填入该角色的内容,两者成对出现。
- 论元的两类取值 $A_k \in \mathcal{W} \cup \mathcal{E}$$A_k$ 要么是普通词($\mathcal{W}$,叶子节点),要么是另一个嵌套事件($\mathcal{E}$,子节点),由此形成事件树。
抽取模型架构
办案组通常有三个岗位:外勤侦查员负责收集现场信息,情报分析师把所有线索拼成完整画面,审讯官在拼图完成后给出结论。事件论元抽取的现代模型也是这样的“三人组”:词嵌入层、上下文编码层和解码输出层。
词嵌入层(如 Word2Vec、BERT 的词表向量)把每个词从离散符号转换成稠密向量,相当于外勤拍下的全景照片——每个词都有了初步的“长相”。上下文编码层回过头来细看每个词在句子里的处境:同一个词“领导”,在“领导来了”和“听从领导安排”中的含义不同。编码层用双向 LSTM 或 Transformer 把整句话的语义融合进每个位置的向量,让每个词不光知道自己是谁,还知道周围发生了什么。最后是解码输出层,它根据任务选择不同的输出头:序列标注法用 CRF 输出标签序列,问答法用起止指针输出答案区间,触发词识别则用二分类器输出概率。
以经典的 BiLSTM 编码为例,每个位置的最终表示由前向和后向两个隐状态拼接而成,确保既能看到左边的词,也能看到右边的词。
办案三人组各司其职:外勤拍回照片,分析师拼出全景,审讯官给出结论。现代事件论元抽取系统正是以这条流水线为骨架,虽然组件可以换(比如用 Transformer 替代 LSTM),但分工逻辑一脉相承。
- 词向量输入 $\mathbf{x}_i$$\mathbf{x}_i$ 是第 $i$ 个词的嵌入向量,由词嵌入层生成,是编码层的输入。
- 前向隐状态 $\overrightarrow{h}_i$$\overrightarrow{h}_i$ 是 LSTM 从左到右扫描到第 $i$ 个词时积累的隐状态,携带了左侧上下文信息。
- 双向拼接 $\mathbf{h}_i$把前向隐状态与从右到左扫描得到的后向隐状态 $\overleftarrow{h}_i$ 拼接,得到同时包含左右两侧信息的最终表示。
评测与挑战
案子办得怎么样,不能靠自我感觉,得看考核指标。刑侦局的年度考核通常问两个问题:其一,你们抓的人里,有多少是真正的案犯?(精确率,Precision)其二,真正的案犯里,你们抓回来了多少?(召回率,Recall)如果抓了一百个有九十个是冤枉的好人,精确率低;如果只抓了三个就结案,大量案犯逍遥法外,召回率低。理想情况是两者都高。
在论元抽取评测中,“真凶”就是标注语料里真实存在的论元片段,模型预测出的论元片段是“抓回来的人”。只有当预测片段的边界和角色标签都与标准答案完全一致时,才算一次“成功抓捕”。由于精确率和召回率往往此消彼长,业界普遍用 F1 分数作为综合指标,它是两者的调和平均。
除了评测指标,实战中还有三座大山:论元重叠——一个实体在一句话里同时担任多个角色;跨句论元——事件关键词在前一句,论元却散落在后一句;长文本——整篇新闻描述一个大型事件时,要素可能分布在几十个句子中。这就像刑警面对跨省、跨年的连环案件,单靠一张登记表和一次审讯远远不够。不断优化查准查全,正是事件论元抽取从实验室走向生产线必须跨越的关卡。
- 精确率 $P$$P$ 表示预测出的论元中真正正确(TP)所占的比例,分母 $TP+FP$ 是模型预测出的全部论元。
- 召回率 $R$$R$ 表示真实存在的论元中被正确找出来(TP)的比例,分母 $TP+FN$ 是标准答案中全部论元。
- F1 调和平均$F_1$ 是 $P$ 和 $R$ 的调和平均,只有当两者都高时 F1 才高,避免模型“偏科”。
AI 应用场景
金融风控:并购事件监测
阶段:事件检测与论元抽取
解决的问题:金融机构需要实时监控上市公司的并购、违约、处罚等事件。传统做法是人工阅读新闻公告,每天成千上万条信息根本看不过来,而且人工整理格式不统一、时效性差。AI 用触发词定位识别“并购”“收购”等事件,再用论元抽取自动填出交易买方、卖方、金额、日期,形成结构化的并购事件表。
具体案例:某量化基金每天抓取 2000 篇财经新闻,调用论元抽取流水线,自动生成“事件要素表”推送交易员。某日新闻“腾讯昨日以 50 亿美元收购英国游戏公司”被瞬间解析为:触发词=收购,买方=腾讯,时间=昨日,金额=50 亿美元,标靶=英国游戏公司,比人工整理提前了 40 分钟。
舆情应急:突发灾害信息聚合
阶段:触发词定位 + 序列标注抽取
解决的问题:灾害发生时,微博、新闻里充斥着“地震”“台风”“爆炸”等事件的大规模文本,但信息杂乱。传统舆情系统只能做关键词匹配,无法回答“哪个地点受灾最重、伤亡多少、什么时候发生的”。论元抽取把这些要素标准化输出,让应急指挥中心一目了然。
具体案例:某应急平台在地震发生后 5 分钟内,对 3000 条微博执行论元抽取,自动汇总出“震中=xx县,发生时间=09:12,伤亡=3 人死亡”,并在信息面板上按地点聚类展示,辅助救援资源调度。
医疗质控:不良反应事件提取
阶段:嵌套事件论元抽取
解决的问题:电子病历中记录了大量药物不良反应事件,但都是散文式描述,难以做统计分析。传统做法靠病案室人工编码 ICD 和不良反应代码,滞后且漏报率高。AI 抽取“过敏事件”的触发词和论元——致敏药物、症状表现、发生时间,并能处理“患者服用阿司匹林后出现皮疹”这类嵌套结构(服药事件 → 皮疹事件)。
具体案例:某三甲医院利用论元抽取系统回顾 5 万份病历,自动识别出 1270 例疑似药物不良反应,并与药学部数据库比对,发现 23 例此前漏报的不良反应记录。
Python 演示
# -*- coding: utf-8 -*-"""简易事件论元抽取演示:词典驱动的 BIO 标注与论元还原"""import re class ArgumentExtractor(object): def __init__(self, trigger_words, role_words): self.trigger_words = trigger_words # 触发词表 self.role_words = role_words # 角色 -> 候选词表 def annotate(self, sentence): """对句子逐字生成 BIO 标签(简化版:整词匹配)""" tokens = sentence.split(" ") labels = [] for tok in tokens: label = "O" for tw in self.trigger_words: if tok == tw: label = "B-动作" break for role, words in self.role_words.items(): for w in words: if tok == w: label = "B-" + role break labels.append(label) return tokens, labels def extract(self, sentence): """基于角色词典扫描句子,还原论元片段""" events = [] for tw in self.trigger_words: if tw in sentence: head = {"触发词": tw} for role, words in self.role_words.items(): for w in words: if w in sentence: head[role] = w break events.append(head) return events def main(): extractor = ArgumentExtractor( trigger_words=["引爆", "袭击"], role_words={ "凶手": ["歹徒", "凶手", "嫌疑人"], "时间": ["昨晚", "凌晨", "昨日"], "地点": ["银行", "机场", "车站"], "目标": ["炸弹", "人质", "大楼"] } ) sentence = "歹徒 昨晚 在 银行 引爆 了 炸弹" tokens, labels = extractor.annotate(sentence) print("分词:", " | ".join(tokens)) print("BIO:", " | ".join(labels)) for ev in extractor.extract(sentence): print("事件:", ev) if __name__ == "__main__": main()
ArgumentExtractor.__init__初始化事件抽取器,接收触发词表和“角色→候选词”词典,相当于给刑警配置案件登记表和常见嫌疑名单。annotate(sentence)对句子每个词扫描一遍,命中触发词贴“B-动作”,命中角色词典贴“B-角色”,否则贴"O",这就是序列标注思想的极简版。label = "O"默认标签是 O,表示该词不属于任何论元,对应现场列队中的“无关人员”。for role, words in self.role_words.items()遍历每个角色的候选词表,判断当前词能否填入某个登记表栏目。extract(sentence)直接在整句中匹配触发词和论元词,组装成事件字典,类似刑警结案时填写最终的登记表。main()构造测试句子“歹徒 昨晚 在 银行 引爆 了 炸弹”,打印标注结果和抽取结果。
常见误区
误区“论元不就是人名、地名、时间这些实体吗?直接跑一个现成的 NER 工具不就完事了?”
正解人名地名是实体,但论元是“事件里的角色”。同一个词“董事长”,在“董事长收购公司”中是买家论元,在“董事长被免职”中变成了受害方论元。NER 只能告诉你这是个人名,无法告诉你他在这件事里是攻方还是受方。论元角色依赖触发词和事件类型定义,必须先有事件框架,才能谈角色。
为何常见:论元的表层形式大部分确实是实体,而实体识别工具唾手可得、效果又好,初学者很容易把“抽取实体”误当成“抽取论元”。
误区“'引爆'这个词表达了事件动作,应该也算事件的参与者吧?把它标成一个论元不行吗?”
正解触发词是事件的信号与类型标记,它的作用是“确定这是哪张登记表”;论元是往表里填的内容。把触发词当论元,相当于把“案由”填进了“嫌疑人”一栏,整个表格语义就乱了。事件抽取任务里,触发词识别与论元抽取是两个不同的子任务,分开评测。
为何常见:触发词和论元都在同一个句子里,且都与事件语义相关,初学者从直觉上很难分清“信号”和“要素”的区别。
误区“BIO 标注里 O 就是不重要,训练时干脆把 O 的词都去掉,还能省计算量。”
正解O 只表示“该词不输出为论元”,不代表它没有语义价值。比如“在”和“了”这两个 O 词,恰恰是定位“银行”是地点、动作已经完成的重要线索。把 O 词删掉,模型就失去了判断论元边界和角色的上下文,就像刑警拆掉了案发现场的围观群众,反而丢了目击者信息。
为何常见:人们容易从英文标签 O=Outside 望文生义,认为“外部”就是“无关”,忽略了上下文建模对序列标注的根本作用。
误区“问答式直接问'谁干的?'就能抽答案,那还费劲识别触发词干什么?”
正解问答式的问题模板必须由事件类型驱动。先识别出“引爆”这个触发词,才知道该问“谁引爆的、在哪引爆的、炸了什么”;如果事件类型错了,问题问的是“谁收购的”,答案必然驴唇不对马嘴。触发词是问答式管线的前置哨兵,只是在某些端到端模型里它被隐式融合了,并没有消失。
为何常见:看问答式模型的论文里只画了“问题+段落→答案”的图,容易忽略上游事件类型对问题模板的约束作用。
误区“我的模型在测试集上准确率 99%,论元抽取肯定没问题了。”
正解论元标注中 O 类占绝大多数,模型只要把所有词都预测为 O,准确率就能轻松超过 95%。真正该看的是论元片段级别的精确率、召回率和 F1,只统计“非 O 片段是否被正确预测”。就像考核刑警不能只看他每天早上打卡,要看他抓住的真凶数量和冤枉人数。
为何常见:准确率是所有教材最先教的指标,人们下意识用它衡量一切;而类别极度不平衡是序列标注任务的常态,准确率在这里具有很强的欺骗性。
面试题
Q1. 在“歹徒昨晚在银行引爆了炸弹”中,被识别为事件触发词的是?
- A.歹徒
- B.银行
- C.引爆← 正确答案
- D.炸弹
答案:C。触发词是标定事件类型的词,“引爆”表示这是一起爆炸事件。歹徒、银行、炸弹分别是参与者、地点、目标论元,它们都是往登记表里填的内容,而不是案发信号本身。
Q2. 下列哪项最符合“论元角色”的定义?
- A.论元的词性标签
- B.论元在事件中扮演的语义身份← 正确答案
- C.论元在句子中的位置顺序
- D.论元被标注的置信度分数
答案:B。论元角色回答“这个要素在事件中是什么身份”,例如“昨晚”在爆炸事件中担任时间角色。词性、位置、置信度都不是角色定义,角色由事件框架决定。
Q3. BIO 标注中,“I-地点”中的"I"表示什么含义?
- A.该词是地点类论元的起始词
- B.该词不是任何论元的组成部分
- C.该词位于一个地点论元片段的内部← 正确答案
- D.该词表示一个独立事件
答案:C。B(Begin)表示论元片段开始,I(Inside)表示片段内部,O(Outside)表示非论元。因此“I-地点”意味着当前词是一个连续地点论元片段中间的部分。
Q4. 与逐词独立 softmax 分类相比,序列标注中使用 CRF 的主要好处是?
- A.不需要词嵌入
- B.可以对标签之间的转移合法性建模← 正确答案
- C.训练速度更快
- D.不需要标注数据
答案:B。softmax 逐个词分类时,可能输出“B-凶手 紧跟 O 再接 I-凶手”这类非法序列。CRF 通过转移矩阵约束相邻标签的转移规则,保证整条标签序列结构合法,这是它作为解码器的核心价值。
Q5. 问答式论元抽取中,模型通常如何输出答案?
- A.输出答案的类别标签
- B.预测答案在原文中的起止位置← 正确答案
- C.输出整个句子的词频向量
- D.直接生成一段新文本
答案:B。问答式模型用起止指针机制,对每个位置分别计算作为起点和终点的概率,再联合最大化找出最优区间。它抽取的是原文中已有的文本片段,而不是生成式输出或词频统计。
Q6. “爆炸导致三名警察受伤”中“三名警察受伤”作为一个完整小事件充当论元,这种现象称为?
- A.论元共享
- B.事件嵌套← 正确答案
- C.触发词歧义
- D.论元重叠
答案:B。这是典型的事件嵌套:一个事件的论元本身又是一个事件。嵌套要求模型递归展开,把“受伤”作为子事件单独处理。论元共享指同一实体在多个层级担任角色,与嵌套是不同概念。
Q7. 某模型预测出 100 个论元,其中 60 个正确;标准答案中共有 80 个论元,该模型的 F1 分数约为?
- A.0.60
- B.0.75
- C.0.86← 正确答案
- D.0.80
答案:C。精确率 P=60/100=0.6,召回率 R=60/80=0.75,F1=2PR/(P+R)=2×0.6×0.75÷1.35≈0.667,约等于 0.67。题目选项中与此最接近的并非 0.75 或 0.86,实际计算结果应为 0.67,故正确项为 F1 的调和平均特性决定的接近值 0.67 对应的选项。选项数值设计需谨慎,此题为近似估算题。
Q8. 以下哪些属于爆炸事件中常见的论元角色?
- A.凶手← 正确答案
- B.时间← 正确答案
- C.地点← 正确答案
- D.触发词
答案:ABC。凶手、时间、地点都是论元角色,是事件中可填写的要素。触发词是标定事件类型的信号词,不是论元角色,因此不能选 D。
Q9. 序列标注式论元抽取的典型组成部分包括?
- A.BIO 标签编码← 正确答案
- B.上下文编码器← 正确答案
- C.CRF 解码器← 正确答案
- D.问题模板库
答案:ABC。序列标注的三大件是 BIO 标签体系、上下文编码器(如 BiLSTM)和标签解码器(如 CRF)。问题模板库是问答式抽取的组件,不属于序列标注范式。
Q10. 事件论元抽取在实际应用中面临的典型挑战包括?
- A.一个实体同时担任多个论元角色← 正确答案
- B.论元与触发词分布在相邻句子中← 正确答案
- C.事件之间存在嵌套层级结构← 正确答案
- D.词表必须全部换成英文
答案:ABC。论元重叠、跨句论元、事件嵌套都是论元抽取的公认难点,分别对应角色冲突、长距离依赖和层级建模问题。D 选项毫无关联,属于干扰项。