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”: “‘吃饼干’的子事件有哪些?”}.
   243   244   245   246   247   248   249   250   251   252   253