Page 248 - 《软件学报》2025年第9期
P. 248
黄俏娟 等: 基于大语言模型的事件常识知识图谱扩展方法 4159
输出需要进一步指导时才会被加入. 比如, 在扩充 ECKG 的因果关系时, 由于模型生成该关系的三元组具有高的
准确率, 便省略了具体实例.
(3) 问题提出
问题的提出是 ek-prompt 的核心部分, 它直接引导模型针对特定事件关系来生成新三元组. 本文通过精心设
计的问题, 如生成时序关系的尾事件时提问“E 之后, 再发生什么事情?”, 以此激发模型按照特定的事件关系进行
学习和生成. 提出的问题不仅紧扣事件关系的定义, 还促使模型探索并预测事件之间的逻辑联系.
(4) 输出要求
最后, 设定具体的输出标准, 指导模型以结构化形式展示生成的三元组. 这些标准包括输出事件的一致性、包
含必要信息和三元组的展示格式等. 例如, 要求模型输出的事件必须是语义清晰、包含谓语、宾语的一致性, 以及
规定以空格分隔的形式展示三元组, 以确保生成的三元组不仅准确, 也便于数据后处理.
通过以上 4 个部分的结合, ek-prompt 有效地优化并指导了模型生成事件三元组的过程, 提高生成三元组的准
确性与一致性. 这种结构化的 ek-prompt 在提升模型理解复杂事件关系的性能, 以及扩展 ECKG 任务中展现出显
著的效果.
3.2 微调模型
尽管通过第 3.1 节的 ek-prompt 能在一定程度上扩展了 ECKG, 但 ek-prompt 获得的事件依赖于模型的知识库
及其对 ek-prompt 的理解, 以至于生成较为抽象的三元组. 例如, 使用 ek-prompt 生成的“吃饼干”的子事件三元组
为<吃饼干, 有子事件, 选择饼干> 和<吃饼干, 有子事件, 享用饼干>. 为了进一步丰富 ECKG, 除了抽象的三元组
外, 还需要获取更为细致和具体的三元组. 如“吃饼干”的子事件三元组还应包括<吃饼干, 有子事件, 张开嘴巴>、
<吃饼干, 有子事件, 咀嚼饼干> 和<吃饼干, 有子事件, 吞咽饼干> 等.
GPT-3.5-Turbo 是由 OpenAI 开发可以进行微调的模型, 该模型具有较高的响应速度和生成能力, 在许多自然
语言处理任务中展现了卓越的性能. 因此, 本文选择在特定的数据集上微调 GPT-3.5-Turbo 模型, 使模型能够捕捉
到更为细致的信息, 从而更好适应 ECKG 扩展的需求. 具体地, 将 ECKG 的三元组以一种标准的格式传递给 GPT-
3.5-Turbo 模型进行学习, 以增强模型生成事件三元组的能力. 对于微调 LLM 的任务, 数据集的质量对于提高模型
在各种下游任务中的表现至关重要. 针对 GPT-3.5-Turbo 模型生成三元组的任务, 本文为 ECKG 的每种事件关系
标注一个高质量的数据集. 与此同时, 为了验证新三元组的准确性, 还将为每种事件关系准备一个数据集来微调
GPT-3.5-Turbo 模型, 以评估新三元组的正确性. 下面将具体介绍生成新三元组与验证三元组任务的数据集构建
过程.
(1) 生成三元组的数据集构建
在扩展 ECKG 的任务中, 我们的目标是将 ECKG 的任意一个事件在特定关系下关联多个事件, 即多对一和一
对多的数据结构. 如图 2 所示 (图中蓝色的实线圆和箭头代表原始三元组, 橙色的虚线圆和箭头表示新增的三元
组), 对于“吃饼干”事件, 在扩展之前, 其先于关系关联的事件有“有饼干”和“能张开嘴巴”, 而子事件关系下的事件
包括“咀嚼饼干”和“吞咽饼干”. 在扩展之后, 在先于关系下应增加“买饼干”“看见饼干”和“想吃饼干”事件, 子事件
关系下则应该增加“拿起饼干”“张开嘴巴”和“放进嘴里”事件.
因此, 在构建用于生成三元组的数据集时, 本文特别标注了多对一和一对多的数据结构. 如图 2 中, 为扩展“吃
饼干”的头三元组标注的数据为<E, 先于, 吃饼干>; 相似地, 扩展的尾三元组标注为< 吃饼干, 有子事件, E>, 其中
E 表示“吃饼干”事件在 ECKG 中的先于和子事件关系下对应的事件.
完成对每种事件关系三元组的数据集标注后, 将其转换为 GPT-3.5-Turbo 模型可理解的 JSONL 格式, 便于模
型解析和处理. 例如, 将图 2 的“吃饼干”的子事件三元组进行格式化为以下结构.
{“messages”: [{“role”: “system”, “content”: “这是一个生成事件知识图谱中每个总事件对应的所有可能的子事
件的助手.”}.
{“role”: “user”, “content”: “‘吃饼干’的子事件有哪些?”}.

