Page 278 - 《软件学报》2025年第10期
P. 278
李靓果 等: 结合大语言模型和领域知识库的证券规则规约方法 4675
过微调、上下文学习等方式将隐式领域知识融入大语言模型, 执行其中的自然语言处理任务, 同时构建外部显式
知识库进行后续的需求可操作化和关系识别, 以充分利用显式领域知识避免幻觉, 提高生成规约的质量和效率. 具
体而言, 我们提出一个 4 步规约框架, 包括业务规则过滤、需求信息抽取、需求可操作化和需求关系识别, 如图 2
所示. 框架输入为自然语言描述的规则文档, 输出数据流形式的需求规约. 第 1 步业务规则过滤利用分类模型将业
务规则文档中的语句分为软件需求相关规则、软件需求无关规则以及领域知识, 从而过滤掉需求无关的规则. 第 2
步需求信息抽取利用抽取模型将文档中所有软件需求相关的自然语言规则转化为形式化的软件需求. 这些形式化
需求采用 Knauf 等人 [15] 定义的形式化业务规则 (formal business rule, FBR) 表示. 第 3 步为基于交易概念知识库的
需求可操作化, 其目的是将不完整的、抽象的需求转换为具体的、可操作化的需求. 最后一步为需求关系识别, 该
步骤基于交易操作序列知识识别需求的隐式依赖关系, 并据此生成数据流.
业务规则 需求信息 需求可操 需求关系
过滤 软件需求 抽取 结构化 作化 可操作 识别
业务规则 ① 相关规则 ② 的需求 ③ 的需求 ④ 数据流
文档
分类模型 抽取模型 交易概念知识库 交易操作序列知识库
图 2 业务规则自动规约框架图
(1) 业务规则过滤. 业务规则过滤任务就是要从所有自然语言规则中筛选出软件需求相关规则, 过滤掉需求无
关的规则. 筛选出的软件需求相关规则将进行后续的需求信息抽取步骤. 由于规则分类的标准通常隐含在文本语
义中, 难以通过一组简单的规则明确定义, 因此我们提出构建一个分类模型, 有效识别规则文本中的关键语义信
息. 该分类模型是通过在我们手动标注的语料库上对预训练模型进行微调而得到的.
(2) 需求信息抽取. 需求信息抽取任务就是要提取业务规则中的关键实体, 识别其类型并组装为形式化的软件
需求. 我们利用大语言模型强大的自然语言理解和信息抽取能力来完成这个任务. 我们首先基于 GPTs 创建了针
对证券领域的需求信息抽取模型, 然后利用创建的抽取模型从预处理后的规则文本中抽取出软件需求相关的关键
信息, 并使用算法将这些信息组装为形式化需求. 为了使大语言模型在执行抽取任务时不遗漏关键信息, 我们构建
了证券领域需求元模型, 并据此设计了信息抽取的提示词, 从而引导模型更加精准地抽取信息.
(3) 需求可操作化. 需求可操作化任务就是要从上述忠于原文的形式化需求结合交易概念知识生成具体可执
行的需求规约. 这一步骤旨在解决自然语言表述抽象的问题. 主要任务包括: 1) 必要约束补全: 单条需求的约束往
往不完整, 需要结合上下文信息和交易概念知识进行补全, 以生成包含全部必要约束的完整需求; 2) 抽象需求具体
化: 需求中的抽象描述需要结合交易概念知识进行具体化, 转换为可操作的需求; 3) 嵌套关系处理: 需要处理需求
间的引用和嵌套, 确保一条需求中包含所有相关的约束; 4) 同属性项需求的组合: 需要组合具有相同属性项的需
求, 确保同一属性相关约束的完整性.
(4) 需求关系识别. 需求关系识别任务是基于交易操作序列知识识别需求间的隐式依赖关系, 生成面向功能的
需求规约. 识别的依赖关系包括: 1) 基于语义的隐式依赖关系: 一些需求在语义上具有前置或后置条件, 我们使用
自然语言处理 (NLP) 工具和启发式规则来识别这些关系, 生成相应的前置或后置需求; 2) 基于状态机的隐式依赖
关系: 一些需求的依赖关系没有在语义上体现, 而是隐含在实际的交易流程中. 我们使用知识库中的状态机来识别
这些关系, 将有关联的规则组织到一起, 并以数据流的形式输出, 形成软件需求规约.
上述前两个步骤中涉及两个特定的大语言模型: 分类模型和抽取模型, 分别实现对业务规则的过滤和需求信
息的抽取. 后两个步骤中使用了两种领域知识: 交易概念知识和交易操作序列知识, 为需求的可操作化和关系识别
提供了丰富且准确的信息来源. 接下来, 我们将讨论这两种大语言模型的创建和领域知识库的构建.
2 大语言模型创建与领域知识库的构建
在本节中, 我们将深入探讨分类模型和抽取模型的创建过程以及领域知识库的构建方法.

