Page 249 - 《软件学报》2025年第9期
P. 249
4160 软件学报 2025 年第 36 卷第 9 期
{“role”: “assistant”, “content”: “咀嚼饼干, 吞咽饼干”}]}.
在格式化子事件关系数据集时, 整个数据集由一系列用户和助手之间的交互数据组成, 每条数据都涵盖一个
总事件的问题描述和一组关联的子事件列表. 比如, 上述实例涉及总事件“吃饼干”, 以及子事件“咀嚼饼干”和“吞
咽饼干”.
拿起
买饼干
看见 饼干 张开
饼干 先于 嘴巴
先于 有子事件 有子事件
先于 有子事件 咀嚼 咀嚼
有饼干
饼干 有饼干 饼干
先于 有子事件
吃饼干 吃饼干
能张开 吞咽 能张开 先于 有子事件 吞咽
嘴巴 先于 有子事件 饼干 嘴巴 先于 饼干
想吃 有子事件 放进
饼干 嘴里
(a) 扩展前的 ECKG (b) 扩展后的 ECKG
图 2 扩展 ECKG 实例展示
(2) 验证三元组正确性的数据集构建
使用 LLM 生成新三元组后, 需要对三元组进行正确性评估. 考虑到 LLM 生成的是大规模三元组, 仅依靠人
工评判并不现实. 因此, 本文采用专用于验证任务的微调后的 GPT-3.5-Turbo 模型来对新三元组进行自动评估.
对于评估任务, 本文构建了包含正样本和负样本数据集, 并对事件三元组进行格式化处理, 以便模型能够更全
面地学习事件三元组的特征, 并具有广泛的适应性. 以子事件关系为例, 数据格式化形式如下.
(a) 正样本数据格式化:
{“messages”: [{“role”: “system”, “content”: “这是一个验证事件知识图谱中的有子事件关系的助手.”}.
{“role”: “user”, “content”: “‘吃饼干’有子事件是‘咀嚼饼干’是否正确?”}.
{“role”: “assistant”, “content”: “正确”}]}.
(b) 负样本数据格式化:
{“messages”: [{“role”: “system”, “content”: “这是一个验证事件知识图谱中的有子事件关系的助手.”}.
{“role”: “user”, “content”: “‘吃饼干’有子事件是‘不喜欢饼干’是否正确?”}.
{“role”: “assistant”, “content”: “不正确”}]}.
通过以上步骤, 本文完成了为生成和验证事件三元组任务所需的数据集预处理工作, 再将数据集按照 7:2:1 的
比例划分为训练集、验证集和测试集. 随后, 将训练集和验证集上传到 OpenAI 的服务器进行模型训练, 而测试集
则用来评估微调后模型的性能. 这一过程不仅增强了模型生成事件三元组的能力, 还提高了对三元组评估的准确
性, 为扩展 ECKG 的工作提供了有效的支撑.
3.3 事件共享机制
由于 LLM 是基于大规模数据集预训练的模型, 具有生成多样化回答的能力. 即面对相似或相同的输入, LLM
能够利用其内部强大的语言模式和知识库, 提供多种不同并且合理的答案. 例如, 以图 3 为例 (实线圆表示共同拥
有的事件, 蓝色与橙色圆角矩形是可以共享的事件, 虚线箭头连接共享事件组成新三元组), 当 LLM 扩展“帮助朋
友”和“帮助他人”事件的时序关系时, “收获信任”在这两个事件的三元组中同时出现, 而“获得感激”与“收获感激”
“强化关系”与“增强关系”在语义上相似. 目前, 图 3 中的圆角矩形框的事件分别是“帮助朋友”和“帮助他人”独有的
事件, 但我们认为“帮助朋友”先于“解决难题、获得尊重”, 以及“帮助他人”先于“收到回报、传递正能量”也合理
(如图 3 中的虚线箭头所连接的事件组成的三元组).

