Zero-shot learning for requirements classification: An exploratory study

Zero-shot learning for requirements classification: An exploratory study

A B S T R A C T

背景:需求工程(RE)研究人员一直在试验机器学习(ML)和深度学习(DL)方法来完成一系列的需求工程任务,比如需求分类、需求跟踪、歧义检测和建模。然而,今天的大多数ML/DL方法都是基于监督学习技术,这意味着它们需要使用大量特定任务的标记训练数据进行训练。这一限制给可再生能源研究人员带来了巨大的挑战,因为缺乏标记数据使他们难以充分利用先进的ML/DL技术的优势。
目的:本文通过展示如何在不使用任何标记训练数据的情况下使用零射击学习(ZSL)方法来解决这个问题。我们将重点放在分类任务上,因为许多可重构任务可以被定义为分类问题。
方法**:本研究中使用的ZSL方法采用上下文词嵌入和基于transformer的语言模型(lm)。我们通过一系列实验来演示这种方法,以执行三个分类任务**:(1)FR/NFR -分类功能需求与非功能需求;(2) NFR - NFR类别的鉴定;(3)安全性-安全性与非安全性要求的分类
结果:研究表明ZSL方法对FR/NFR任务的F1得分为0.66对于NFR任务,考虑到最频繁的类别,该方法产生F1 ~ 0.72−0.80对于Security任务,F1 ~ 0.66。上述所有F1成绩都是在零训练的情况下取得的
结论:本研究证明了ZSL在需求分类方面的潜力。一个重要的含义是,有可能只有很少或没有训练数据来执行分类任务。因此,该方法有助于解决长期存在的可重构数据短缺问题

Introduction

在需求工程(RE)中,系统和软件需求规范通常是用自然语言(NL)编写的[1,2]。在过去的几年里,基于监督机器学习(ML)的自然语言处理(NLP)技术,以及最近的深度学习(DL),已经被应用于解决几个可重构任务,这是由于这些技术在一系列领域的成功,包括医疗诊断、信用卡欺诈检测和情感分析[3-5]。
迄今为止,基于ml的正则学习的研究主要集中在监督分类方法上[6],因为大多数正则学习任务可以被框架为通过监督学习技术解决的文本分类问题
相关的例子有:将需求划分为不同的类别[7-9];识别软件合同中的需求[10];识别需求和非需求[11];识别错误分类的需求[12];从应用评论中发现与需求相关的内容[13,14]

然而,监督式机器学习有一些主要的局限性。最值得注意的是,监督学习器需要在大量特定任务的标记数据上进行训练,然后才能准备好预测新数据的结果[4,15]。这个问题在RE等领域更加严重,因为收集和标记足够的训练数据通常是昂贵、耗时且容易出错的[10,16]。标记数据还需要大量的领域甚至项目特定知识[12]。此外,以前研究中使用的标记数据经常不可用。根据最近的一项调查(参见[13],第34页),这种情况甚至发生在应用评论分析这一活跃领域,在这一领域,大多数研究都没有发布他们的标记数据集。这一限制阻碍了RE研究人员探索不同的学习技术

有监督学习方法的另一个局限是,模型只能对属于已见类(即训练数据中标注的类)的数据进行分类,但不能将数据分类为以前未见类(即训练数据中未标注的类)[15]。虽然这种限制是有监督学习所固有的,但处理以前未见类别的能力却能为许多现实世界的应用带来巨大的好处,因为在这些应用中,类别是人为定义的,没有共同的共识,或者类别可能会随着时间的推移而演变,新的类别会出现,而旧的类别则会过时。其中一个例子是需求分类,有几种针对非功能需求(NFR)的分类方案[17,18]。

随着软件应用程序、它们的需求和nfr理论本身的发展,分类方案也在不断发展。因此,使用一组类标记的数据集(例如PROMISE NFR dataset[19])不能被重用来训练旨在预测不同组类的方法(例如,基于最新的ISO/IEC/IEEE 29148标准[20])。每次使用新的分类方案时,必须对数据集进行相应的重新标记,从而产生昂贵的数据标记成本。

为了解决这些问题,近年来提出了不同的学习范式[4]。其中一个范例是迁移学习[21],其目的是通过将现有训练良好的机器学习模型适应不同但相关的领域或任务来缓解数据短缺和昂贵的数据标记工作的问题[22]。然而,模型自适应仍然需要成千上万个标记的特定任务实例[23]。

最近,零射击学习(zero-shot learning, ZSL)作为一种很有前途的范式出现[15]。ZSL直接应用先前训练的模型来预测可见类和未见类,而不使用任何标记的训练实例[24,25]。

在我们的初步研究[26]的基础上,本文旨在对使用ZSL进行需求分类进行深入研究,并深入了解可再生能源背景下的这种新范式。

虽然我们的初步研究仅评估了从PROMISE NFR数据集的一部分中选择的安全性和可用性需求分类的ZSL[19],但本文通过在不同的分类任务上评估ZSL,即区分功能需求(FRs)和非功能需求(NFR),识别不同的NFR类别,以及安全与非安全需求的分类,大大扩展了之前的贡献

这些任务在两个数据集上进行:完整的PROMISE NFR数据集和SecReq数据集[27]。此外,我们选择了四种不同的语言模型(LMs)来评估ZSL,以便我们比较ZSL在不同模型下的性能

剩下的论文结构如下:
第2节简要回顾了当前用于需求分类的ML方法
第3节介绍了本文使用的零射击学习方法及其相关概念
第4节定义了我们研究的研究问题,并详细说明了我们的研究设计
第5节分析实验结果
第6节根据这些结果回答我们的研究问题
第7节探讨了对我们实验的有效性威胁和我们的缓解策略
最后,第8部分对全文进行总结。

2. Related work

大多数基于ml的需求分类研究集中在功能性(FR)和非功能性(NFR,或“质量”[28])需求之间的分类,以及不同NFR类别的进一步分类,如安全性、性能、可用性等

然而,FR和NFR之间的区别在RE界一直存在争议[16,29],Eckhardt等人[18]的实证研究表明,NFR可以包括功能方面。

此外,ISO/IEC/IEEE 29148:2018(E)标准[20]给出了更细粒度的FRs和NFR表示,它区分了功能/性能、质量、可用性、界面和其他类别,从而细化了Glinz[17]中NFR分类已经阐述的概念。然而,尽管对什么是nfr以及我们应该如何分类和表示它们缺乏共识,但frr和nfr之间的区分是RE中常见的分类,在下文中我们将使用这种区分,但要记住它是一个人工构建[18]。

Binkhonain和Zhao[6]对基于机器学习的需求分类方法进行了系统的文献综述。在此,我们简要回顾一些密切相关的代表作品。

2.1. Classification of FRs and NFRs

最早将ML应用于RE的是ClelandHuang等人[7],他们提出使用一组指标术语来识别不同类别的NFR。该方法是有监督的,因为它首先在一组手动注释的需求上识别一组指示术语,然后使用这组术语对未见的情况进行分类。该方法的召回率高达0.80,但精度较低,仅为0.21。本研究还引入了被研究界广泛使用的PROMISE NFR数据集[19],这也是我们工作的基准之一。

为了解决数据集标注问题,Casamayor等[30]提出了一种半监督方法,基于类似于主动学习的迭代过程,由用户向分类器提供反馈。他们的方法使用朴素贝叶斯(NB)作为分类算法,并使用PROMISE NFR数据集作为训练集。经过多次迭代,使用越来越多的训练样本,他们在大多数类别上获得了0.80以上的最大精度和0.70以上的最大召回率,除了代表性不足的类别。

另一种著名的机器学习方法由kurtanoviki和Maalej[8]提供,他们使用支持向量机(SVM)进行需求分类。他们使用不同监督分类器的集合选择相关特征,并在PROMISE NFR数据集上识别FRs和NFRs的精度和召回率高达0.92。对于特定NFRs类别的识别,他们在安全性和性能类别中实现了最高的精度和召回率,精度为0.92,召回率为0.90。Dalpiaz等人[16]重建了kurtanoviki和Maalej的研究,并将获得的结果作为基线,评估他们提出的使用可解释语言特征的方法。

为了克服劳动密集型特征工程的问题,Navarro等人[31]提出了使用深度学习(DL)模型的首批方法之一。他们在PROMISE数据集上使用CNN(卷积神经网络)模型,分别获得了0.80和0.79的精度和召回率,从而解决了Cleland-Huang等人观察到的精度有限的问题。Dekhtyar和Fong[32]以及最近的Aldhafer等人[33]也提出了类似的方法。

与我们更密切相关的工作是Hey等人[9],他们提出了NoRBERT,一种用于需求分类的迁移学习方法
他们的方法是基于微调BERT模型(来自变压器的双向编码器表示)[23]。相对于之前的工作,他们取得了类似或更好的结果,在PROMISE数据集上,FR与NFR分类的精度达到0.92,召回率达到0.95。NoRBERT在分类NFRs类别方面也优于最近的方法。最常见的类别分类精度高达0.94,召回率高达0.90。提出的解决方案还应用于PROMISE中不同类型的功能需求关注点的分类,实现了高达0.88的精度和高达0.95的召回率。

2.2. Classification of security requirements

安全需求分类的早期工作之一是Knauss等人[34],他们使用贝叶斯分类器识别了三个工业数据集上的安全相关需求。我们的论文中也使用了这些数据集(汇总到SeqReq数据集中)。他们的准确率> 0.8,召回率> 0.9。在另一部作品里亚兹等人[35]提出了一种从需求文档中提取安全相关句子的方法。他们使用了一个包含10963个句子的数据集,这些句子属于来自医疗保健领域的六个不同文档。该方法是基于KNN (k -近邻)分类的半自动方法。作者实现了0.82的精度和0.79的召回率。

为了解决缺乏特定于领域的数据集的问题,Munaiah等人[36]提出了一个独立于领域的分类模型,用于识别特定于领域的安全需求。所提出的方法是一种单类SVM分类器,用于识别与软件安全漏洞相关的一般描述,而不是实际的安全需求本身,因为分类器是使用Common Weakness Enumeration数据库进行训练的[37]。作者表明,单类分类器的平均准确率和召回率分别为0.67和0.70。Varenov等[38]比较了不同lm (BERT、XLNET和DistilBERT)在安全需求分类方面的性能。他们从多个现有数据集(如PURE[39]、SecReq[34]和Riaz的数据集[35])中收集了7个不同类别的1086个安全需求。与之前的研究不同,Varenov等人[38]的工作旨在将安全需求分类为更细粒度的类,即保密性、完整性、可用性、问责性、可操作性、访问控制和其他。蒸馏酒获得了最好的结果,精密度为0.80,召回率为0.82。

2.3. Our contribution

通过与相关工作的比较,我们的研究旨在对不同的ZSL配置进行需求分类的比较分析。与Hey等人[9]的提议类似,我们在广泛使用的PROMISE数据集上探索深度学习解决方案的潜力。与Hey等人[9]不同的是,这是RE中首次提出使用ZSL来完成分类任务。而Hey等人通过迁移学习解决分类器的泛化问题,
我们的建议:
(1)避免了对标记数据集的需求,从而解决了RE中标注数据集稀缺的众所周知的问题[1,12,39,40];
(2)本质上可推广到不同的项目,从而解决了不可见项目的性能下降问题,这通常会影响需求分类器[9,16]。
在安全需求分类方面,我们的提议克服了Munaiah等人[36]的数据集标注问题。然而,他们的方法是特定于安全需求的,而我们的建议更具通用性,适用于不同的分类任务

3. Zero-shot learning

零短学习是一种新兴的学习范式,旨在不使用训练数据执行学习任务。ZSL最初用于图像处理中预测未见过的图像[41],但最近被用于许多NLP任务,包括实体识别[42]、关系提取[43]、文档分类[44]和文本分类[45]
ZSL的基本思想是,一些先前训练过的语言模型非常准确,可以直接用于预测新的数据,而无需任何训练[24,25]
在本节中,我们首先介绍语言模型的概念,然后重点介绍我们研究中使用的一种特定的ZSL方法——基于嵌入的ZSL

3.1. Language models and transfer learning

语言模型(LMs)是用于表示自然语言中的单词和句子的深度神经网络
这些模型的开发是为了支持NLP任务,如语言理解和推理。传统的lm,如Skip-gram [46], Word2Vec [47],和GloVe[48]使用静态词嵌入,即固定向量表示来表示文本中的单词和句子[46]

最近,基于Transformer的LMs,如OpenAI GPT[49]和BERT[23],在语言表示方面比传统的LMs有了显著的改进,因为它们可以通过动态或上下文词嵌入捕获单词和句子的深层含义[50]
换句话说,传统的lm是静态的,因为它们只是用相关的单词扩展句子中的单词。例如,句子“这不是关于可用性”被映射到一个类似于“这是关于可用性”的向量上,因为这两个句子只有一个词不同。相比之下,对于基于Transformer的lm,这两个句子的向量表示是不同的,因为它们具有相反的含义。这一特征在需求分析中自然地扮演着至关重要的角色,因为需求句通常使用非常有限的词汇[39],但却传达了不同的含义

今天,预训练的lm (plm)广泛可用这些plm通常使用未标记的数据(如应用程序评论和维基百科)对一些通用的NLP任务进行预训练,这些数据可以通过互联网大量获得[51]。这样的LMs可以被适应,即转移到不同的下游任务中[52]。这个概念被称为迁移学习[53]

有两种适应PLM的方法:基于特征和微调[54]

基于特征的方法使用预训练模型的表示作为输入特征来训练下游任务模型(例如ELMo[55])
OpenAI GPT和BERT采用的微调方法涉及修改PLM某些层的权值和参数,以使模型能够执行特定的NLP下游任务
迁移学习有助于降低训练新模型所需的成本和工作量,并允许用户使用相对少量的任务特定标记数据来探索不同的NLP任务。

3.2. Embedding-based zero-shot learning

有两种常见的ZSL方法:基于蕴涵的和基于嵌入的
前者将分类任务视为自然语言推理(NLI)任务[56],而后者使用语言表示来预测输入文本是否与给定的类标签相关
更具体地说,基于蕴涵的方法将输入文本序列视为前提,将标签视为假设,然后推断输入文本是否是任何标签的蕴涵[56]例如,给定句子“系统必须部署在Azure上”作为前提,并且标签字符串“这是关于软件架构的”作为假设,基于蕴意的分类器提供一个分数,然后将其转换为以下输出之一:蕴意(yes),矛盾(no)或未决定这种ZSL方法需要一个大型的基于推理的PLM3,它可以解释输入序列和标签之间的隐含关系

基于嵌入的ZSL方法由Veeranna等人提出[57]在这种方法下,类标签(例如,“可用性”、“安全性”)和输入文本都使用词嵌入表示为词序列。然后,文本分类涉及计算每个标签序列和文本序列之间的语义相似度如果相似度得分大于某一阈值,则可以将文本分类到标签所代表的特定类别中;否则,文本就不属于这一类。请注意,由于标签被视为一个单词序列,因此它可以包含任意数量的单词或它们的组合。

基于嵌入的 ZSL 方法非常简单,因此我们将其应用到了我们的研究中
然而,与 Veeranna 等人[57] 最初提出的建议不同,他们使用的是静态词嵌入技术。

我们的方法与原始方法的另一个区别是,我们不使用相似阈值来确定预测标签;
相反,我们将所有文本分类视为一个多标签分类任务,并根据它们的相似度分数对所有标签进行排序
对于二元或多类分类任务,我们选择相似度得分最高的标签作为预测标签
对于多标签任务,我们检查顶部的𝑛标签。当最高的相似度具有较低的值时,使用相似阈值可以帮助识别错误分类。然而,选择合适的阈值本身就是一项任务,我们在本文中不考虑。

我们在研究中采用的基于上下文词嵌入的方法(图1)可以用一个简单的例子来解释:
给定一个需求“CNG应支持安全认证和与远程管理系统通信的机制”,以及两个类别标签“可用性”和“安全性”我们想知道这个需求应该被划分为“可用性”还是“安全性”类别。
ZSL通过将三个单词序列(需求语句加上两个标签)作为LM的输入来执行此分类任务,以生成三个上下文单词嵌入。然后,它将需求与每个标签进行比较,并使用 相似度 𝐶𝑜𝑠𝑖𝑛𝑒 函数比较将返回𝑛相似度分数每个分数对应一个标签和需求对具有最高相似分数的对意味着需求属于由其关联标签表示的类别。在我们的示例中,ZSL将返回两个相似度分数:“安全性”标签和给定需求为0.86,“可用性”标签和给定需求为0.25。基于这些分数,我们推断给定的需求是安全需求。

在这里插入图片描述
图1所示。基于上下文词嵌入的ZSL方法的示例。

上面的例子表明,基于嵌入的ZSL方法的准确性高度依赖于(1)标签和(2)plm的选择鉴于上面的例子只使用单个单词标签(即,“可用性”和“安全性”),我们的研究将调查不同的标签配置例如,通过使用一组同义词和相关词汇(如指导性的、容易的、有帮助的、有用的、可学习的、可解释的、直观的和可理解的)组合可用性标签,LM可以产生一个更动态的嵌入,可以捕获可用性需求的一系列内涵

4. Experimental design

为了评估基于嵌入的ZSL对需求分类的有效性,我们的研究旨在回答以下三个研究问题(rq):

RQ1:哪种语言模型对哪个零射击需求分类任务更有效?

RQ2:不同的标签配置在多大程度上影响了零射击需求分类的有效性?

RQ3:与相关的监督学习方法相比,零尝试学习对需求分类的效果如何?

我们通过一系列实验来回答这些问题。在本节中,我们描述了我们的实验设计,
包括五个步骤:选择数据集和任务;LMs的选择;标签配置;绩效指标选择;实验的技术设置

4.1. Dataset and task selection

我们的实验选择了以下两个数据集:

PROMISE NFR数据集[19],由Cleland Huang等人引入

[7]:该数据集包含625个需求,分为255个fr和370个nfr。nfr进一步划分为11个不同的类别,即:A =可用性(21个需求),L =法律(13个),LF =外观和感觉(38个),MN =可维护性(17个),O =操作(62个),PE =性能(54个),SC =可扩展性(21个),SE =安全性(66个),US =可用性(67个),FT =容错(10个),PO =可移植性(1个)。这些类别分布不均匀,从67个可用性需求到1个可移植性需求。

每一个最常见的类——可用性、安全性、可操作性和性能——都有50多个例子,而不太常见的类——容错、合法、可维护性和可移植性——每个都有1到17个需求。该数据集已被广泛用于文献中,例如kurtanoviki和Maalej[8],以及Hey等人[9]。

SecReq数据集[27],由Knauss等人[34]引入:
该数据集包含510个需求,由安全相关需求(187)和非安全相关需求(323)组成

需求收集自三个项目:通用电子钱包(ePurse)、客户预置网络(CPN)和全球平台规范(GPS)。该数据集已被使用,例如Varenov等人[38]。

我们选择以下典型的需求分类任务进行研究:

任务FR/NFR - FRs与NFR的二元分类。在这个任务中,我们的目标是区分FR和NFR,假设需求属于FR或NFR类。我们使用PROMISE NFR数据集来完成这项任务

任务 NFR - NFR 的二元、多类和多标签分类该任务旨在根据 PROMISE NFR 数据集的 10 个不同类别对不同类型的 NFR 进行分类(我们排除了可移植性类别,因为该类别在数据集中只有一个样本)。
我们执行了三个子任务,以了解 ZSL 如何对 NFR 的不同分类方式做出反应
(1)二元分类,即判别 NFR 是否属于某个特定类别
(2)多类单标签分类(简称多类分类),即把 NFR 分配到最重要的一类或所有 NFR 类别中
(3)多类多标签分类(简称多标签分类),即把 NFR 分配到一个或多个 NFR 类别中
第三个子任务的目的是检查 ZSL 分类器返回的前 n 个 NFR 类别是否与数据中分配的 NFR 标签相关。数据集中分配的 NFR 标签是否相关。

任务安全性——安全相关需求与非安全相关需求的二元分类
此任务假设需求只属于以下两类中的一类:与安全相关的和与非安全相关的。我们使用SeqReq数据集完成此任务。

选择这些数据集和任务用于我们的实验,因为它们在文献中经常被考虑(参见第2节),并且使我们能够直接将我们的结果与先前工作获得的结果进行比较。

4.2. Language model selection

我们为我们的研究选择了以下四个基于bert的lm:两个通用的和两个特定于领域的lm
两个通用的lm是Sentence-BERT (Sbert) (Sbert)和All-MiniLM-L12 (AllMini),它们可以在HuggingFace网站上免费获得,这是一个著名的NLP社区存储库,提供开源预训练的lm和其他语言资源。两个领域特定的lm, Bert4RE[59]和BERTOverflow (SObert)[60],是为需求和软件工程任务而开发的

我们关注基于bert的模型,因为它们很流行并且适合需求分类[9]。其他的lm,如OpenAI的GPT2和GPT-3,以及XLNet[61],由于它们不适合进行需求分类,因此没有被纳入我们的研究。例如,GPT-2和GPT-3主要用于语言生成任务,如语言翻译和文本摘要[62],而XLN-Net则用于处理段落等长文本的NLP[61]。

需求分类通常在句子级别处理文本。下面我们将介绍我们实验中使用的四种LMs。

Sbert:由Reimers和Gurevych[63]提出的通用LM 是BERT LM的微调版本,旨在丰富语义嵌入表示,即帮助派生语义上有意义的句子嵌入。LM克服了原始BERT模型的缺点,即使用词嵌入生成句子嵌入,从而导致句子的语义表示较弱[63]

AllMini:由Wang等人[64]在微软研究院推出,该LM旨在克服一些lm的复杂性,例如BERT模型,这些模型通常由数百万个参数组成,对于预训练和微调来说可能具有挑战性。AllMini减少(或提炼)BERT模型的大小,同时保留其性能。AllMini的主要目的是支持句子嵌入。在这个实验中,我们使用了一个版本的AllMini (All-MiniLM v2),它使用了10亿个句子对进行了微调。这个LM用于对句子和短段落进行编码,对于语义搜索和句子聚类任务特别有效。

Bert4RE:这是一个特定于RE领域的LM[59]在BERTbase模型上使用来自不同RE相关数据集的700多万个单词进行训练,包括PROMISE NFR数据集、PURE数据集[39]以及来自Google Playstore和app Store的应用评论。尽管Bert4RE旨在支持广泛的可重构任务,但它只在从需求文档中识别语义角色的任务上进行了测试。由于这是唯一公开可用的RE-specific LM,我们将其包含在我们的研究中。BERT4RE LM由作者在Zenodo存储库中提供。

SObert:这是一个特定于SE领域的LM[60],使用来自Stack Overflow的1.52亿个句子进行训练。bert与Bert4RE有着相同的愿景,旨在捕获SE术语的语义。尽管SObert已经被训练来执行特定于SE的命名实体识别(NER)任务,但它是少数几个可能被用于需求分类的特定于SE的lm之一。

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值