Page 279 - 《软件学报》2025年第10期
P. 279

4676                                                      软件学报  2025  年第  36  卷第  10  期


                  2.1   分类模型的训练
                    分类模型的目的是对业务规则文档中的规则进行分类. 将规则分类为软件需求相关规则、软件需求无关规则
                 和领域知识, 从而过滤噪声规则. 对于分类模型, 我们选择对预训练模型进行微调, 理由如下: 相对于采用庞大的语
                 言模型, 简单微调已有的预训练模型就能达到良好的分类效果, 有相关实验证明, 经过微调的                           BERT  模型在金融领
                 域文本分类任务上的        F1  分数比  5  样本学习  (5-shot) 的  GPT-4  更高  [16] . 由于目前缺乏公开可用的相关数据集, 需
                 要自行构建句子分类数据集. 为此, 我们首先广泛阅读了证券领域的交易规则文档并与领域专家进行了深入交流,
                 制定了如下分类的标注准则.
                    (1) 领域知识: 这些规则描述了证券领域的专业知识、术语和概念, 用于帮助理解和应用业务规则. 它们不涉
                 及具体的操作细节, 而是提供关于证券领域的背景知识和理论基础. 领域知识规则通常与需求没有直接关联, 而是
                 作为参考和指导. 具体的领域知识分类见第              2.3  节.
                    (2) 软件需求相关规则: 这些规则约束了证券系统行为和操作, 涉及时间、数量、价格、成交方式、定价方式
                 等具体细节, 可以通过观察、测量和操作来验证其准确性和符合性, 是需要软件严格遵循和执行的规则.
                    (3) 软件需求无关规则: 剩余的句子为软件需求无关规则, 这些规则不直接对软件的操作功能提出要求, 例如
                 案例  1  中的规则  3.1.3.
                    基于上述准则, 我们收集并标注了证券领域的               18  篇业务规则文档, 创建了一个规则过滤数据集. 该数据集共
                 包含  3 328  条数据, 其中有  678  条软件需求相关规则、299      条领域知识以及      2 351  条软件需求无关规则. 在训练前,
                 我们按照   9:1  的比例将数据集划分为训练集和验证集, 并且应用               Wei 等人  [17] 的方法对训练集数据进行增强, 使得
                 增强后的训练集拥有超过         33 000  条数据, 从而有效增加数据的多样性. 我们选择中文预训练模型                  Mengzi-BERT-
                 base-fin [18] 作为基础框架, 并通过微调完成规则过滤. Mengzi 是一个在中文金融语料库上预训练的基于                   BERT  的模
                 型, 拥有  103M  参数. 该模型的输入是自然语言描述的规则, 模型的输出是                 3  个数字, 分别代表分类为上述       3  个类
                 别的概率, 分类决策基于这        3  个概率值中的最大值来确定. 在训练过程中, 我们使用交叉熵作为损失函数, 并使用
                 AdamW  优化器  [19] 执行梯度下降方法. 同时, 我们设置了一个线性递减的学习率, 在                20  轮的训练中从    1E–5  递减
                 到  0. 每轮训练中, 8  条规则被同时输入到模型进行训练. 训练完成后, 我们在验证集上评估了模型的性能. 实验结
                 果显示, 模型的准确率达到了         99.1%, 能够较好地判别规则文本的类型.
                  2.2   需求信息抽取模型的创建

                    对于需求信息抽取模型, 我们使用了            OpenAI 推出的  GPTs 功能进行创建. 这是因为在         GPT  的试用过程中我
                 们发现   GPT-4  可以抽取相关信息, 只是缺少对关键信息的把控. 为了提供必要的信息以及保证                        GPT  输出的可控
                 性, 我们首先对证券领域相关需求的构成要素进行了深入分析, 并基于此构建了证券领域需求元模型. 接着, 我们
                 将元模型中的关键概念和例子融入提示词中, 通过上下文学习创建了需求信息抽取模型.
                    (1) 构建证券领域需求元模型. 元模型是关于特定领域模型的模型, 它定义概念并提供用于创建该领域中的模
                 型的构建元素     [20] . 通过构建元模型, 开发者可以在早期阶段更好地捕获和分析系统需求. 元模型提供了一种管理
                 和分析复杂系统的有效手段. 我们通过            4  个步骤构建了证券领域的需求元模型.
                    ① 需求分析: 通过对证券市场的参与者、业务流程、业务规则等的深入研究了解证券领域的核心内容.
                    ② 定义实体和联系: 从业务规则和领域知识中提炼关键实体, 如操作人、交易品种、交易方式、交易约束等,
                 并确定实体之间的关系, 包括“与关系”和“或关系”.
                    ③ 构建需求元模型: 利用已定义的实体和关系构建元模型. 构建好的元模型描述了证券领域的知识和结构,
                 如图  3  所示.
                    ④ 验证和持续完善: 通过领域专家的评审与反馈, 持续调整和优化元模型的内容和结构, 以精确地定义和反
                 映证券领域的相关特征和知识.
                    在我们构建的证券领域需求元模型中, 每条需求由条件子句和结果子句组成. 需求之间可能存在与、或及依
                 赖关系. 每个条件和结果子句都由若干个约束子句构成. 约束子句是元模型中最重要的概念之一, 它包括时间、价
   274   275   276   277   278   279   280   281   282   283   284