Lessons from the Use of Natural Language Inference (NLI) in Requirements Engineering Tasks笔记
摘要
这项研究旨在探讨自然语言推理 (NLI) 在自动化需求工程 (RE) 任务中的应用和优势。
研究焦点:
- 需求分类
- 识别规格说明缺陷
- 检测需求冲突
核心发现:
- 尽管 NLI 在一般的自然语言处理(NLP)任务中表现出色,但其在软件需求工程领域的潜力尚未得到充分探究。
- 研究设计了实验来评估 NLI 在需求分析中的表现,并将其与一系列先进方法进行对比,包括基于提示的模型、传统迁移学习、大型语言模型 (LLMs) 驱动的聊天机器人模型,以及概率模型。
- 在包括传统学习和零样本学习在内的各种设置下,实验有力证明:NLI 方法在分析需求规格说明时,性能超越了经典的 NLP 方法以及其他基于 LLMs 和聊天机器人的模型。
引言
一、 需求分析背景与挑战
| 字段 | 描述 | 引用 |
|---|---|---|
| 核心活动 | 需求分析是需求工程中的核心活动,涉及审查、分类(如功能性/非功能性)、依赖识别、解决模糊性,确保需求的清晰性、一致性和完整性。 | [1] |
| 主要挑战 | 需求分析耗时费力且极具挑战性,因为需求通常以自然语言表述,容易产生多种规格缺陷和不同解读。 | - |
| 具体问题 | 1. 歧义性: 自然语言需求易产生歧义,导致误解、困惑、需求不完整或不准确。2. 冲突性: 系统背景和需求间的相互依赖可能引发冲突与矛盾,增加分析复杂性。 | [2] |
| 自动化趋势 | 现有研究已尝试自动化特定需求分析任务,并产生了多种技术,如需求分类、子类识别、可追溯性和缺陷检测。 | [3]–[10] |
二、 核心方法:自然语言推理 (NLI)
| 字段 | 描述 | 引用 |
|---|---|---|
| 方法介绍 | 自然语言推理 (NLI),又称文本蕴含识别 (RTE) [11],是一种在软件工程领域外被广泛研究的方法。它确定两个句子(前提与假设)之间的关系,判断是蕴含、矛盾还是中立。 | - |
| NLI 潜力 | NLI 在问答 [12]、语义搜索 [13] 等任务中效果良好,并被证实可作为通用方法,能将多种分类问题巧妙地转化为蕴含问题,尤其适用于数据受限的少样本和零样本学习场景 [14]–[16]。 | - |
| 实现机制 | NLI 通过将类别标签转化为详细句子(即假设),从而对文本输入(前提)及其对应分类进行更细致、更符合语言逻辑的评估。 | [14], [17] |
三、 研究目标与范围
| 字段 | 内容 | 创新点 |
|---|---|---|
| 研究假设 | 探究 NLI 在其他应用领域取得的实用性成果能否迁移到软件需求领域。 | 将 NLI 首次全面引入软件需求规格分析。 |
| 研究范围 | 限制在以下三个核心需求分析任务:(1) 需求分类(功能性与各类非功能性);(2) 识别多种规格缺陷;(3) 检测需求冲突。 | - |
| 对比模型 | NLI 性能对比基准包括:新兴的 Transformer 模型、LLM 聊天机器人模型(如 ChatGPT)、基于提示词的模型、传统 BERT 模型和传统统计分类方法。 | - |
四、 研究问题与主要发现 (RQ1-RQ6)
| 研究问题 (RQ) | 发现结果 (Findings) | NLI 表现指标 |
|---|---|---|
| RQ1: 需求分类效果 | NLI 能精准实现需求规格的分析与分类自动化。 | F1 值超过 83%,优于其他方法。 |
| RQ2: 缺陷检测能力 | NLI 能准确识别各类规格缺陷。 | 缺陷检测 F1 值超过 80%,优于其他所有技术。 |
| RQ3: 与基准模型对比 | 在所有三项需求分析任务中,NLI 的性能均优于所有基准方法(包括 ChatGPT、NoRBERT 等)。 | 全面领先所有基准方法。 |
| RQ4: 冲突检测贡献 | NLI 方法优于基准技术,但准确率低于其他两项任务。 | 准确率相对较低,但仍优于基线。 |
| RQ5: 零样本学习表现 | 在跨项目场景的零样本学习中,NLI 方法的表现优于其他 LLM。 | 在数据受限场景中表现更优。 |
| RQ6: 经验教训与启示 | 1. NLI 模型显著受益于标签文本化和知识整合。2. 证明可将推理和分类任务转化为 NLI 擅长的蕴涵问题。3. NLI 在识别组合冲突方面存在不足(即由两个需求与第三个需求相互作用引起的冲突)。 | - |
五、 本文主要贡献
- 实证研究:首次对 NLI 方法在软件需求规格分析中的实用性进行了全面、实证基础的调查。
- 原型开发:开发了一个可自动描述需求规格特征、检测缺陷和识别冲突的功能原型。
- 全面评估:对 NLI 与 ChatGPT、NoRBERT 等四种模型进行了全面评估与比较,证明 NLI 性能优于所有对比模型。
- 子技术探究:提供了经验证据,证明标签文本化和知识整合等子技术对模型性能具有积极影响。
- 数据集发布:构建并公开发布了两个包含需求规格缺陷和冲突的新数据集,以推动 RE 领域的研究发展。
将NLI应用于需求分析任务的方法论
一、 实验目的与基础
- 目标: 建立实验流程,探究自然语言推理 (NLI) [22] 在自动化需求分析任务中的有效性。
- 核心策略: 通过将需求分析任务重构为 NLI 的蕴涵或矛盾问题,来充分利用 NLI 的功能。
二、 选定的需求分析任务
以下任务在促进需求工程流程中具有普遍性
| 任务编号 | 任务名称 | 任务描述 | 关键点/子类别 | 引用 |
|---|---|---|---|---|
| 任务 #1 | 需求分类与特性描述 | 确定需求的类型和类别,将规格分为功能性 (FR) 和非功能性 (NFR) 需求。 | NFR 子类别包括:安全性、性能、可移植性、可用性、容错性、法律要求、外观和感觉、可维护性、可操作性、可扩展性、可用性。 | [21] |
| 任务 #2 | 检测规格说明缺陷 | 确保需求规格符合最佳实践,且无错误和歧义。 | 关注的缺陷类型:歧义性(常见)[25], [26]、不可测量、非原子性、不确定性等。 | [23], [24], [27]–[29] |
| 任务 #3 | 识别冲突需求 | 确保软件需求的一致性和兼容性,识别规格之间不一致的情况。 | 复杂场景: 冲突不直接发生在两个需求之间,而是由数据集中存在的第三个需求所引发(组合冲突)。 | [30], [31] |
| 类别 | 定义(D)与示例(E) |
|---|---|
| 歧义性需求 | (D)需求规格不清晰、不精确,存在多种解读可能。 (E)“非友好且任务未知或可能在5分钟内进入限制空域的飞机应发出警报” |
| 指令性需求 | (D)要求开发者参考需求之外的额外资源(例如图表或表格)。 (E)“列车故障检测模块应遵循图1中概述的步骤。” |
| 不可度量需求 | (D)需求无法度量或测试,包含无法量化的定性描述(如“一些”“大”“长”)。 (E)“系统应在高峰时段扩展以支持大量用户群体。” |
| 可选性需求 | (D)包含可能有多种解读的术语,将实现方式的选择权留给开发者(如“可以”“可能”“可选地”“按需”“至少”“要么”“最终”“酌情”“若必要”)。 (E)“系统可在必要时提供多因素认证。” |
| 不确定性需求 | (D)包含定义不充分的定性描述(如“好”“坏”“强”“容易”),或包含未明确的引用元素(如“符合标准(未说明具体标准)”)。 (E)“系统必须为用户查询提供快速响应时间,确保等待时间最短。” |
| 非原子性需求 | (D)描述了多个动作,通常包含“和”等连接词。 (E)“系统必须向其报告仪表板添加管理员用户,并允许移动设备订阅报告流程。” |
| 类别 | 类型 | 描述 |
|---|---|---|
| 不相容需求 | 两次操作频率冲突 | (D)同一主体需对同一对象执行相同操作,但频率不同。 (E)R1. 系统应每年使用CDR创建一次CMR账户发票。R2. 系统应每月使用CMR创建一次发票。 |
| 禁止-执行冲突 | (D)同一事件需执行相同操作,但在一个需求中被允许,在另一个需求中被禁止。 (E)“R1. 安装后应禁止删除语音信箱。R2. 呼叫者应能删除其所有订阅者”。 |
|
| 执行-禁止冲突 | (D)同一操作在某条件下被允许执行,但在同一时间、同一环境下被另一需求禁止。 (E)“R1. 在特定条件下,EVT账户应被禁止使用PBX。R2. 在相同虚拟电路下,系统应允许为PBX账户进行已付、未付或未付款操作”。 |
|
| 两种条件事件冲突 | (D)相同操作因不同事件被要求执行、停止或禁止。 (E)“R1. 检测到网络连接丢失时,应自动保存当前用户会话,所有未保存工作应立即终止,软件应立即重启。R2. 检测到网络连接丢失时,应保存当前工作,软件应终止当前操作”。 |
|
| 否定冲突 | (D)两个需求在同一动作上存在冲突关系,一个要求执行该动作,另一个要求否定该动作。 (E)“R1. 系统应本地存储用户信息。R2. 系统不应在本地设备上永久保存用户信息”。 |
|
| 假设变更 | 输入-输出变更 | (D)一个需求的输出成为另一个需求的输入,其中一个需求改变了该对象的状态。 (E)“R1. 买家应能查看所有MLS房源。R2. 买家代理应仅能查看与买家关键标准匹配的MLS房源”。 |
| 输出-输出变更 | (D)两个需求在同一对象上有冲突的输出。 (E)“R1. 产品应支持目标市场国家的语言。R2. 产品应允许用户选择目标市场国家以外的语言”。 |
|
| 组合冲突 | 组合冲突 | (D)两个需求本身不冲突,但与第三个需求结合时产生冲突。 (E)R1. 账户锁定后,系统向账户所有者发送锁定通知邮件。R2. 账户锁定后,系统还向账户所有者发送短信通知。R3. 用户已通过邮件收到通知,则不会通过短信收到相同通知。R1、R2和R3之间存在冲突。 |
三、 NLI 方法论
1. 任务重构策略
| 任务类型 | NLI 应用形式 | 关键创新技术 |
|---|---|---|
| 任务 #1 & #2(分类和缺陷检测) | 新颖重构:将分类或缺陷检测任务重构为推理任务,用于检测句子对中蕴涵或矛盾的存在。 | 标签口头化 和知识整合 [17]。 |
| 任务 #3(冲突检测) | 传统形式:用于推断每对需求之间的冲突关系。 | 额外开发了实验设置以推断更复杂的多需求冲突。 |
2. 标签口头化与知识整合
- 目的: 将抽象的类别名称转化为全面且描述性的自然语言定义(即 NLI 中的“假设”)。
- 作用: 使功能更容易理解。
- 流程核心 (算法 1): 将原始数据转换为 NLI 模型所需的前提、假设和标签格式。
- 样本生成:
- 蕴涵样本 (Label = 1/True): 需求与其所属的类别描述配对。
- 矛盾样本 (Label = 0/False): 需求与其不属于的类别描述配对。
- 标签选择: 采用二分类标签(1: 蕴涵/Entailment,0: 矛盾/Contradiction),而非传统 NLI 的三分类(蕴涵、矛盾、中立),因为每个需求都明确归属于或不归属于某一类别。
- 数据格式 (分词后):
(前提):需求的分词表示。 (假设):类别描述性文本的分词表示(标签口头化结果)。 [CLS]:序列开始和聚合表示。[SEP]:前提与假设分隔符。[EOS]:序列结束标记。
分词(Tokenization)是自然语言处理(NLP)领域中将原始文本转换成机器可理解格式的关键第一步,是在处理数据时必须进行的步骤。
4. NLI 模型选择与训练
- 模型架构: 尽管 NLI 可使用 LSTM [32]、RNNs [22] 或 Transformer 模型,但本文使用 RoBERTa 模型 [33](一种 Transformer 模型),因其先前的良好性能。
- 推理过程:
- 当处理后的输入被送入模型时,模型会生成与输入对应的嵌入向量。具体而言,模型会为特殊的 [cls] 标记创建一个表示,该表示作为整个序列的聚合表示。
- 嵌入向量被传递给全连接神经网络分类器。
- 分类器推断蕴涵或矛盾关系,输出结果。
- 损失函数: 使用 Sigmoid 函数将输出对数映射到概率分布,然后使用二元交叉熵损失函数进行训练(公式 2)。
: 可能代表不同的批次或项目/任务(在跨项目学习中)。 : 代表批次 中的单个样本。 : 代表所有 个批次中样本的总数。 : 第 个批次中第 个样本的输入数据 : 第 个批次中第 个样本的**真实标签 : 模型对样本 的预测概率。 :当概率 接近 0 时, 的值会急剧下降到负无穷大。一旦模型对错误的分类非常确信(即给出了一个非常低的概率),它就会受到巨大的、不成比例的惩罚,从而迫使模型在下一次迭代中大幅度地修正参数,避免再犯同样的错误。 - 为什么要用标签
乘以概率:数学上实现“非此即彼”逻辑的巧妙方式,用于选择公式中哪一部分是有效的
机器不能理解文字,所以必须将文字转换为数字。这个数字化的结果就是嵌入向量(Embedding Vector)。
实验
A. 需求数据集选择
| 任务 | 任务名称 | 数据集来源及创建过程 | 关键信息 |
|---|---|---|---|
| 任务 1 | NFR-分类 (非功能性需求分类) | 采用 Promise 数据集 [34]。出于与先前研究 [19] 类似的做法,排除了样本量仅为 1 的“可移植性”类别。该数据集在需求工程社区经过了广泛评审和使用。 | 包含 255 个功能性需求 (FR) 和 370 个非功能性需求 (NFR)。 |
| 任务 2 | 检测需求规格说明缺陷 | 新建数据集,因为社区缺乏大型公开可用数据集。
|
数据集故意保留了缺陷需求,用于模型检测。 |
| 任务 3 | 识别冲突需求 | 为支撑需求冲突识别任务,研究整合 7 个独特来源的数据集,构建了综合冲突数据集: 1. 公开冲突数据集:从文献 [37] 收集 3 个现成数据集,分别对应图书馆系统、咖啡机系统、欧洲列车控制系统(ETCS); 2. 合成冲突需求:邀请两名主题专家(SMEs),参照表 VII 的冲突需求类型,为经纪系统及 Promise 数据库的 3 个项目(#2、#6、#10)识别或构建冲突需求,所有合成数据均经专家同行评审。 |
结合了多种来源,SMEs 参与了冲突需求的生成和评审。 |
B. 用于比较研究的基准方法
研究采用了四种基准方法进行比较:
基于大型语言模型的聊天机器人 :
- 模型: ChatGPT (基于 GPT-3.5 模型) [38]。
- 用途: 评估其在需求分析任务中的潜力。
- 最优提示 (Prompt): 经过测试,选择 F1 分数最高 的提示:
“给定 [CLASS NAME] 需求的以下定义:[CLASS NAME] : [CLASS DESCRIPTION],识别以下样本是否属于 [CLASS NAME] 类。”
NoRBERT,针对文本分类的微调 RoBERTa:
- 模型: 基于 RoBERTa [46] 的 NoRBERT 模型 [8]。
- 方法: 训练执行多个二元分类,为每个类别训练独立模型。
- 损失函数 (
): 使用 Sigmoid 函数获取类别概率,损失为二元交叉熵损失:
基于提示的分类:
- 模型: 基于微调 RoBERTa 的二元分类模型。
- 方法: 借鉴 [19] 的改进,输入格式为:“{Requirement}. This requirement is [Class_Name].” 模型预测该提示是否匹配(二元指标)。
- 损失函数 (
): 同样使用二元交叉熵损失,针对整个数据集计算:
- 基于概率指示词项的方法:
- 模型/算法: Cleland-Huang 等人 [35], [40] 提出的基于词项的概率算法,适用于每个类别倾向使用特定词项的数据。
- 流程: 预处理(去除非文本字符、小写、分词、停用词去除、Porter 词干提取 [45])
两阶段分类:1) 识别和加权指示词项;2) 使用加权词项确定需求属于各类别的概率。 - 本质是找每个需求类别的 “专属关键词”,再靠这些关键词的出现概率,判断一条需求属于哪一类。
- 拿到一条新需求(比如 “系统应在 3 秒内响应用户请求”):
| 方面 | 详细设置 |
|---|---|
| 硬件/软件 | Python 3.9, PyTorch 1.13.1, NVIDIA T4 (16GB 内存, 4 vCPUs)。 |
| 模型基础 | RoBERTa 模型用于 NoRBERT、基于提示和 NLI 任务。 |
| 数据划分 | 训练集 : 验证集 : 测试集 = 80:10:10。 |
| 训练/评估 | 训练集训练;验证集监控并选择最低损失的最佳模型;测试集最终评估。 |
| 基于RoBERTa模型的三个方法 | Epochs:50;优化器: AdamW;最佳学习率: |
| 基于概率指示词的方法 | 分类阈值: |
| 验证 | 遵循 10 折交叉验证。 |
| ChatGPT 实验 | 每次实验在新聊天窗口进行;每次查询一个样本;要求生成分类结果。 |
| 数据不平衡处理 | 对训练集使用过采样和欠采技术;测试集保持不变。 |
| 测试格式 | 所有模型测试时,对每个类别使用二元格式。 |
D. 评估指标 (Metrics)
本文采用准确率(Accuracy)、精确率(Precision)、召回率(Recall)和F1值(F1)四项指标衡量所提方法的有效性,这些指标基于真阳性(TP)、假阳性(FP)、真阴性(TN)和假阴性(FN)定义。其中,“阳性(positive)”表示“蕴含”关系,“阴性(negative)”表示“矛盾”关系。
核心定义:
- TP(真阳性):正确分类为阳性(蕴含)的样本数量
- FP(假阳性):错误分类为阳性(蕴含)的样本数量
- TN(真阴性):正确分类为阴性(矛盾)的样本数量
- FN(假阴性):错误分类为阴性(矛盾)的样本数量
指标计算公式:
- 准确率(Accuracy)= (TP + TN) / (TP + TN + FP + FN)
- 精确率(Precision)= TP / (TP + FP)
- 召回率(Recall)= TP / (TP + FN)
- F1值(F1)= 2 × 精确率 × 召回率 / (精确率 + 召回率)
最终得分计算:
为呈现最终结果,本文对各项指标采用加权平均计算方式,权重与每个标签对应的样本量相等。该方法可确保得分能根据各类别样本数量的占比,成比例地反映不同类别的表现。
- TP(真阳性):正确分类为阳性(蕴含)的样本数量
- FP(假阳性):错误分类为阳性(蕴含)的样本数量
- TN(真阴性):正确分类为阴性(矛盾)的样本数量
- FN(假阴性):错误分类为阴性(矛盾)的样本数量
指标计算公式:
- 准确率(Accuracy)= (TP + TN) / (TP + TN + FP + FN)
- 精确率(Precision)= TP / (TP + FP)
- 召回率(Recall)= TP / (TP + FN)
- F1值(F1)= 2 × 精确率 × 召回率 / (精确率 + 召回率)
最终得分计算:
为呈现最终结果,本文对各项指标采用加权平均计算方式,权重与每个标签对应的样本量相等。该方法可确保得分能根据各类别样本数量的占比,成比例地反映不同类别的表现。
分析与结果
1. NLI 在三项任务中的核心表现
| 任务 | 目标 | NLI 总体结果 | 主要发现 |
|---|---|---|---|
| 任务 1 | 需求分类 | 总体 F1 分数 83% | NLI 超越所有基准方法,在 Performance 等多数类别中表现最佳。挑战在于,实验处理了更复杂的场景(FR 和 NFR 子类一起分类),而非传统的 FR/NFR 分离分类。 |
| 任务 2 | 检测需求规格说明缺陷 | 总体 F-measure 超过 80% | NLI 大优势超越其他技术,并在 Uncertain 和 Directive 两个类别中达到 100% F1。基于词项的模型因缺陷多源于语法结构而被排除。 |
| 任务 3 | 发现冲突需求 | 总体准确率不理想 | NLI 优于 ChatGPT,但由于数据中多为非平凡的(需要深度理解的)冲突,总体准确率偏低。仅与 ChatGPT 进行了比较。 |
2. NLI 的优势与研究问题 (RQ) 总结
- RQ #1 & #2 (分类与缺陷检测): NLI 在任务 1 和任务 2 中均能准确执行,并优于所有其他基准方法,分别实现 83% 和超过 80% 的总体 F-measure。
- RQ #3 (总体性能): NLI 相对于所有基准(包括 ChatGPT、NoRBERT、基于提示的模型 和概率词项方法)展示了卓越性能。这尤其引人注目,因为 NLI 模型尺寸比 ChatGPT 小得多,且与 NoRBERT 等模型共享相同的预训练基础。
- RQ #4 (冲突发现): NLI 优于 ChatGPT,但任务本身的复杂性导致总体准确率仍有提升空间。
- RQ #5 (零样本学习): NLI 在 零样本 场景中持续优于 ChatGPT。这突显了 NLI 减轻传统监督学习对大量标记数据依赖的能力,及其泛化到新类别的潜力。
3. 经验教训
- 标签口头化至关重要 (Label Verbalization):
- 将分类任务重新构建为蕴含或矛盾问题,结合标签口头化(将类别标签转化为描述性语言),能使 NLI 模型极大地受益,并超越其他技术。
- 难以捕获多需求间的相互依赖关系:
- NLI 仅分析单个前提和单个假设(即两个需求)之间的关系,无法检测由两个以上需求相互依赖引起的复合冲突 (composite conflicts)。
- ChatGPT 由于能够访问所有需求,部分成功发现了复合冲突。研究者建议未来可探索将多个需求组合作为 NLI 的前提。
- 提示/口头化的重要性 (Prompts and Verbalization):
- 无论是 ChatGPT 的提示设计还是 NLI 的口头化,都需要根据特定数据集的特征进行定制化,以实现最佳性能。
- RQ #6 (最终结论): NLI 模型从标签口头化和知识整合中获益匪浅,适用于可重构为蕴含问题的需求分析任务。但在识别组合冲突方面表现不足,ChatGPT 在此方面部分成功。
威胁与限制
1. 结构效度威胁
- 核心问题: 实验中使用的 提示 (prompts) 和 口头化标签 (verbalized labels) 可能无法准确代表它们旨在测量的概念(即 LLMs 在需求工程中的真实能力)。这导致对评估工具精确性的担忧。
- 缓解措施: 研究者采取了使用通用类别描述进行口头化和启发式发现 ChatGPT 最佳提示模板的方法来减轻这一威胁。
- 局限性: 尽管进行了全面实验,但所测试的提示和标签范围不一定代表 LLMs 的最佳或全部性能。因此,将这些技术推广到其他任务和领域时应保持谨慎。
2. 内部效度威胁
- 核心问题: 研究结果可能受到 LLMs 固有的“数据记忆 (data memorization)”现象的影响。
- 后果: 实验得出的性能指标可能仅仅是这种混淆因素 (confounding factors) 的产物,而非模型实际效能的真实指标,从而影响了对所考察因果关系的准确判断。
3. 外部效度威胁
- 核心问题: 研究结果的泛化能力受到限制,仅限于本研究中使用的特定数据集。
- 后果: 这些特定的需求数据集、它们的复杂性、相互关联性及应用领域,可能无法代表需求分析任务中普遍存在的更广泛、更复杂的挑战。
讨论与结论
| 议题 | 研究方法与发现 | 结论/贡献 |
|---|---|---|
| 研究范围 | 探究 NLI (自然语言推理) 在需求工程中 三项核心任务 (分类、缺陷检测、冲突检测) 的潜力,并与多基准对比。 | 发布了两个新数据集 (规格缺陷和冲突)。 |
| 分类方法创新 (任务 1) | 采用单阶段直接分类 (功能性需求 + 非功能性子类),避免了传统两阶段流程导致的准确率虚高,更贴近需求混杂的真实场景。 | 提供了对方法性能更准确的评估。 |
| 方法重构与优势 | 将任务 1 & 2 重构为蕴含问题,启用标签文本化 (Verbalization),充分利用类别描述知识。 | 证实了文本化对性能的提升;NLI 即使基于相同的预训练模型,其知识整合优于基于提示词的简洁上下文。 |
| NLI vs. ChatGPT | 规模更小的 NLI 模型 在所有三项评估任务中性能均超越 ChatGPT。 | 强调 NLI 在领域特定任务中比通用 LLM 更具优势。 |
| 冲突检测 (任务 3) | NLI 优于 ChatGPT,但其句子对分析机制导致难以识别由三个及以上需求相互作用引发的 组合冲突。 | NLI 存在局限性;未来研究方向:调整 NLI 以整合更多上下文信息。 |
环境考量、资源消耗与效率
- 核心关注点: 机器学习的快速发展带来的环境影响和碳足迹。
- NLI 的优势: 实验结果凸显 NLI 模型规模远小于 ChatGPT 且性能优秀,体现了其高能效潜力。
- 号召: 倡导优先选择高能效模型、优化算法、整合可持续软件工程实践,以降低人工智能技术的生态影响。
相关工作
| 领域 | 代表性工作与方法 | 创新点/与本文区别 |
|---|---|---|
| 传统需求分类 | Tong Li 等 [53]:基于本体论/关键词/TF-IDF。 Cleland-Huang 等 [41]:基于概率检索和术语集。 Abad 等 [55]:优化预处理,对比多种分类器 (朴素贝叶斯、k均值等)。 |
本文采用更贴近现实的单阶段分类,并引入 NLI 推理框架。 |
| LLM 与分类 | Hey 等 [8]:提出 NoRBERT (微调 RoBERTa)。 Knauss 等 [56]:贝叶斯分类器识别安全需求 (基于关键词)。 Munaiah 等 [57]:单类 SVM (One-Class SVM) 检测安全需求,优于朴素贝叶斯。 |
本文在相同基础模型 (RoBERTa) 上,通过 NLI 重构和知识整合超越了 NoRBERT。 |
| 缺陷检测 | 基于启发式与模式 [23], [24]。 基于规则 (检测简单句、陈述句等) [23]。 基于关键词分析/信息检索 (检测不确定性) [58]-[60]。 |
本文提供新数据集,验证 NLI 对多种缺陷的检测能力。 |
| NLI 在其他领域 | 仇恨言论 [61]、假新闻 [62]、虚假信息 [63]、临床领域 [65] 等。 | 证明 NLI 是一种跨领域通用推理框架。 |
| ChatGPT 应用对比 | Fantechi 等 [37]:ChatGPT 识别不一致性 (事先接触冲突样本)。Zhang 等 [38]:ChatGPT 零样本检索 4 类 NFR。 | 本文在无事先接触的更真实冲突场景下评估 ChatGPT,并填补了其识别其他 FR/NFR 有效性的空白。 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 宇宙尽头的森林!