国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于SWF-BERT的軟件缺陷報告嚴(yán)重性預(yù)測方法

2023-05-23 15:06:58薛詩琦王阿川
小型微型計算機系統(tǒng) 2023年6期
關(guān)鍵詞:軟件缺陷嚴(yán)重性級別

薛詩琦,王阿川

(東北林業(yè)大學(xué) 信息與計算機工程學(xué)院,哈爾濱 150040)

1 引 言

在軟件開發(fā)的整個流程中,大多數(shù)軟件系統(tǒng)都存在不可避免的缺陷,開發(fā)人員通過缺陷報告來記錄軟件的缺陷信息,并利用Bugzilla和Jira等比較主流的缺陷跟蹤系統(tǒng)提取缺陷報告[1].然而,隨著每天提交缺陷報告的數(shù)量增加,人工識別軟件缺陷報告的嚴(yán)重性并手動進(jìn)行標(biāo)注是一項耗時耗力的工作[2].因此,如何用更準(zhǔn)確且高效的方法來實現(xiàn)嚴(yán)重性預(yù)測是當(dāng)前軟件倉庫挖掘領(lǐng)域內(nèi)的一個研究熱點,貫穿整個缺陷報告的生命周期.

軟件缺陷修復(fù)離不開優(yōu)先級的劃分,一般優(yōu)先級主要分為必須在第一時間修復(fù),在下一次產(chǎn)品發(fā)布前修復(fù),延遲修復(fù)和不需要修復(fù)等4類[3].人們通常認(rèn)為優(yōu)先級與嚴(yán)重性等級成正比,優(yōu)先級越高代表缺陷越嚴(yán)重,應(yīng)當(dāng)被立即修復(fù),但是嚴(yán)重性等級與優(yōu)先級在對應(yīng)關(guān)系上并不總是完全吻合[4].優(yōu)先級的排序僅僅體現(xiàn)在當(dāng)前數(shù)據(jù)集中,具有一定的主觀性,并不能說明在其他數(shù)據(jù)集中存在同樣的問題,需要結(jié)合缺陷的嚴(yán)重性進(jìn)行整體的分析.

為了改善軟件缺陷報告嚴(yán)重性模型中分類精度較低、特征提取能力不足的問題,本文提出了一種基于BERT句子級別與詞級別特征融合的SWF-BERT軟件缺陷報告嚴(yán)重性預(yù)測模型,主要工作如下:

1)提取缺陷報告中詞頻最高的前100個單詞,篩選出與缺陷嚴(yán)重性相關(guān)的特征詞并對其進(jìn)行關(guān)鍵詞嵌入操作,將詞向量、句子向量、位置向量和關(guān)鍵詞向量按位置相加,得到帶有軟件缺陷嚴(yán)重性特征的詞向量.通過引入該領(lǐng)域相關(guān)的特征詞,使模型在訓(xùn)練過程中將注意力更多地集中在關(guān)鍵信息上,有效提升了標(biāo)簽分類的性能.

2)將BERT模型經(jīng)過輸出層后得到的詞嵌入(除[CLS]token外)送入多尺度卷積神經(jīng)網(wǎng)絡(luò)結(jié)合長短期記憶網(wǎng)絡(luò)的MC-LSTM模型(Multi-scale CNN combined with LSTM,簡稱MC-LSTM)中,以加強文本的深層語義和上下文的特征關(guān)系.

3)采用BERT模型輸出得到的[CLS]句向量經(jīng)過線性變換的結(jié)果與MC-LSTM模型輸出經(jīng)過線性變換得到的結(jié)果做可學(xué)習(xí)的自適應(yīng)加權(quán)融合,進(jìn)一步增強不同級別融合后的特征抓取能力,提升了模型的預(yù)測精度.

2 相關(guān)工作

2.1 軟件缺陷報告嚴(yán)重性分類

當(dāng)前,針對軟件缺陷報告嚴(yán)重性分類問題,通常采用的文本表征方式可以按照靜態(tài)表征和動態(tài)表征劃分[5].早期很多方法基于靜態(tài)表示,如Tan等人[6]使用One-hot獨熱編碼來預(yù)測缺陷嚴(yán)重性,解決了分類器處理離散數(shù)據(jù)困難的問題,但該方法不考慮詞之間的順序以及容易造成維度災(zāi)難.隨后,Hamdy等人[7]提出使用詞頻(TF)和信息增益(IG)的方法進(jìn)行特征選擇,通過統(tǒng)計特征在缺陷報告中出現(xiàn)的次數(shù)以及計算在某一類別上的IG值來衡量特征的重要性,一定程度上改善了維度災(zāi)難問題,但它沒有考慮報告內(nèi)部特征間的關(guān)系.后來,學(xué)者們逐漸從原始稀疏的詞向量表示過渡到低維空間的密集表示中,這種方式既能表示詞本身又考慮了語義間的相似性.Guo等人[8]使用Word2Vec詞向量來預(yù)測缺陷的嚴(yán)重性,由于加入了對上下文的理解,與之前的詞嵌入方法相比,該方法的維度更少、效果更好.Nnamoko等人[9]對Word2Vec模型進(jìn)行了優(yōu)化,在缺陷嚴(yán)重性預(yù)測中采用Fasttext模型,該模型有著和Word2Vec相同的訓(xùn)練目標(biāo),它把一個詞表示為多個字符的組合,可以推測出未見過詞的意思,緩解了OOV問題.但上述方法是靜態(tài)表征的方式,詞和向量是一對一的關(guān)系,多義詞的問題仍無法解決且無法針對特定任務(wù)做動態(tài)優(yōu)化.

在動態(tài)表征中,Kamal等人[10]提出使用GPT-2模型來預(yù)測軟件缺陷嚴(yán)重性,該模型基于Transformer解碼器結(jié)構(gòu).相比于傳統(tǒng)的詞向量方法,GPT-2能夠利用上文信息進(jìn)行預(yù)測,一定程度上提升了模型預(yù)測的精度.Ardimento等人[11]提出采用BERT模型對缺陷嚴(yán)重性進(jìn)行預(yù)測,該模型能夠利用上下文的語義關(guān)系對被[MASK]掉的token進(jìn)行預(yù)測以及學(xué)習(xí)句子級的語義特征,在該領(lǐng)域中取得了不錯的效果,但語義特征不夠豐富.Isotani等人[12]提出一種Sentence-BERT的方法,在BERT模型中通過添加語義相似度從而預(yù)測缺陷嚴(yán)重性,更好的捕捉句子之間的關(guān)系,有效改善了BERT在語義相似度搜索任務(wù)中的不足.本文對BERT模型中句子級別和詞級別特征采用自適應(yīng)加權(quán)融合的方法,充分考慮到不同語義層次下的特征信息,增強了模型融合后的特征抓取能力.

2.2 BERT預(yù)訓(xùn)練模型

2.2.1 BERT模型

BERT是一個預(yù)訓(xùn)練語言模型,它由Transformer的編碼器結(jié)構(gòu)組成.而Transformer采用了基于雙向上下文依賴的注意力機制,這種機制使句子中每個token在建模時都依賴于序列中其他所有token的語義信息,可以學(xué)到文本中token之間的雙向上下文關(guān)系[13].其中,點乘縮放注意力機制(Scaled Dot-Product Attention)的計算過程見公式(1):

(1)

式中,Q、K、V是經(jīng)過線性變換后的查詢、鍵、值矩陣.dk代表向量的維度,dk的值是768.

模型在對當(dāng)前位置的信息進(jìn)行編碼時,會過度將注意力集中于自身的位置,因此提出多頭注意力機制(Multi-Head Attention)來解決這一問題.Q、K、V先進(jìn)行線性變換,再進(jìn)行點乘縮放操作,得到單個頭的輸出值,見公式(2):

(2)

將12個注意力的輸出結(jié)果拼在一起變成768維的向量矩陣,通過線性變換得到多頭注意力機制,見公式(3):

MultiHead(Q,K,V)=Concat(head1,…,headh)WO

(3)

2.2.2 BERT預(yù)訓(xùn)練和微調(diào)

BERT是以掩碼語言模型(Mask Language Model,MLM)和判斷句子對是否連續(xù)(Next Sentence Prediction,NSP)為目標(biāo)的大規(guī)模預(yù)訓(xùn)練語言模型[14].它由預(yù)訓(xùn)練和微調(diào)兩個階段組成.

1)預(yù)訓(xùn)練

在輸入層中,用[MASK]隨機屏蔽一部分輸入token,對應(yīng)token位置的嵌入向量經(jīng)過全連接層映射到詞匯表中,經(jīng)過SoftMax函數(shù)預(yù)測被[MASK]掉的token在詞匯表對應(yīng)位置的概率值.

2)微調(diào)

對于每個任務(wù),只需將自己數(shù)據(jù)集中的數(shù)據(jù)轉(zhuǎn)換為BERT模型能夠讀取的輸入和輸出形式,并對所有端到端的參數(shù)進(jìn)行微調(diào).在BERT模型最后一層輸出得到的[CLS]句向量后經(jīng)過線性變換就可以用于分類預(yù)測.

3 研究方法

本文提出一種基于BERT句子級別與詞級別特征融合的SWF-BERT軟件缺陷報告嚴(yán)重性預(yù)測模型,整體模型結(jié)構(gòu)如圖1所示.

圖1 SWF-BERT模型結(jié)構(gòu)圖

該模型主要由輸入層、融合關(guān)鍵詞向量的嵌入層、Transformer塊、特征融合層和輸出層構(gòu)成.首先,將缺陷報告中的摘要“summary”和描述“description”合并為一句話,每個文本在句首和句尾分別添加[CLS]和[SEP]token并將字符轉(zhuǎn)為數(shù)字序列的形式.然后,在嵌入層中將融合后的特征向量送入Transformer塊進(jìn)行預(yù)訓(xùn)練,經(jīng)過最后輸出層得到融合所有單詞語義信息的[CLS]句向量和帶有上下文及序列信息的詞向量.最后,使用BERT預(yù)訓(xùn)練模型對軟件缺陷嚴(yán)重性任務(wù)數(shù)據(jù)進(jìn)行微調(diào).在下游任務(wù)中對句子向量接入全連接層進(jìn)行分類,對詞級別向量添加MC-LSTM模型并接入全連接層進(jìn)行分類,兩個級別的特征向量做加權(quán)融合,經(jīng)過SoftMax函數(shù)用于軟件缺陷嚴(yán)重性預(yù)測.

3.1 輸入層

首先分別將缺陷報告中的文本,例如“undo or revert removes error ticks in editor”,在模型訓(xùn)練之前處理成:“[CLS] undo or revert removes error ticks in editor[SEP]”.其中,“[CLS]”表示起始分隔符,“[SEP]”表示結(jié)束分隔符.其次在BERT模型中,通過調(diào)用wordpiece方法將所有單詞進(jìn)一步切分成詞片,使單詞語義更加清晰.例如:將playing分割為play和##ing.最后對文本長度做截斷處理,在[SEP]后添加[PAD]填充符.

3.2 融合關(guān)鍵詞向量的嵌入層

軟件缺陷報告中,關(guān)鍵詞的出現(xiàn)很大程度決定了分類標(biāo)簽的屬性.為了提高關(guān)鍵詞在訓(xùn)練過程中分配更多的權(quán)重,本文通過計算報告中單詞的詞頻,分別提取出數(shù)據(jù)集中詞頻最高的前100個單詞,在這些單詞中進(jìn)一步人工篩選出與缺陷嚴(yán)重性相關(guān)的特征.例如Mozilla數(shù)據(jù)集中,詞頻最高的前20個單詞分別為:mozilla、x、error、window、build、a、debug、crash、make、code、delete、remove、run、search、problem、app、method、failure、object、update.其中mozilla為數(shù)據(jù)集的名字,x、a這種單個字母無實際含義,window、build、make等詞并不具備區(qū)分嚴(yán)重性標(biāo)簽的屬性,只起到解釋說明的作用,本文對這些單詞進(jìn)行刪除.

圖2 嵌入層結(jié)構(gòu)圖

在Mozilla數(shù)據(jù)集中,與缺陷嚴(yán)重性相關(guān)且詞頻前10名的特征為error、debug、crash、delete、remove、problem、failure、a-

larm、broken、disconnect,其頻數(shù)分別為4385、2702、2284、1685、1596、1497、1442、1277、859和832;在Eclipse數(shù)據(jù)集中,與缺陷嚴(yán)重性相關(guān)且詞頻前10名的特征為error、problem、unknown、debug、default、unable、wrong、disable、broken、incorrect,其頻數(shù)分別為4776、3528、3206、2956、2814、2309、1880、1734、1317和928.

3.3 Transformer塊

Transformer塊由多頭注意力機制和全連接前饋神經(jīng)網(wǎng)絡(luò)構(gòu)成,在每部分使用殘差連接和層歸一化,將這部分操作整體重復(fù)12次堆疊起來,得到每個token的輸出向量.為了使詞向量更好的適配軟件缺陷報告的文本語料,本文用[MASK]隨機屏蔽一部分輸入token,然后預(yù)測那些被屏蔽掉的token進(jìn)行預(yù)訓(xùn)練.

3.4 特征融合層

3.4.1 BERT的缺陷嚴(yán)重性分類

在BERT訓(xùn)練過程中,通常會在第1句前加一個[CLS]token.[CLS]句向量通過自注意力機制來獲取句子級別的信息表征(采用加權(quán)平均值計算),相比于對所有的token做平均池化操作,它會和其它時間下的每個token做相似度計算用于建立依賴關(guān)系,使整個句子的語義更加完整[15].將軟件缺陷嚴(yán)重性任務(wù)的數(shù)據(jù)放入預(yù)訓(xùn)練模型中,參數(shù)隨著新的任務(wù)不斷調(diào)整.將最后輸出得到的[CLS]句向量接入全連接層,得到的輸出結(jié)果記為L1,完成句子級別的嚴(yán)重性預(yù)測任務(wù).

3.4.2 MC-LSTM的缺陷嚴(yán)重性分類

1)多尺度CNN模型

本文以詞級別token的向量為基礎(chǔ),通過在CNN的卷積層上添加不同規(guī)模的卷積核,使卷積層的特征尺寸得到擴展,減少卷積層層數(shù)的同時可以有效地獲取并聚焦重要的多尺度特征,以獲得其對應(yīng)的文本深層語義特征[16],多尺度CNN模型結(jié)構(gòu)如圖3所示.

圖3 多尺度CNN模型結(jié)構(gòu)圖

在卷積層中,對詞級別的輸出向量采用不同大小的卷積核進(jìn)行卷積運算,計算見公式(4):

(4)

式中,f表示ReLU激活函數(shù),ωd表示大小為d的卷積核,Vi表示嵌入層中融合后的詞向量,bd表示偏置項.對卷積核1、3、5得到的向量按位相加,最終特征向量集合Hd見公式(5):

(5)

最后,將向量Hd送入LSTM模型進(jìn)行訓(xùn)練.

2)LSTM模型

在多尺度CNN模型后接入長短期記憶循環(huán)神經(jīng)網(wǎng)絡(luò)LSTM[17],該模型在抓取各特征之間相互關(guān)系的同時,能夠有效克服梯度消失或梯度爆炸的問題.

設(shè)遺忘門的輸出為ft,其計算見公式(6):

ft=σ(ωf·[ht-1,xt]+bf)

(6)

記憶門確定從輸入中得到的哪些信息被記憶,其計算見公式(7)、公式(8):

it=σ(ωi·[ht-1,xt]+bi)

(7)

(8)

信息的更新過程見公式(9):

(9)

網(wǎng)絡(luò)單元的輸出值見公式(10)、公式(11):

ot=σ(ω0·[ht-1,xt]+b0)

(10)

ht=ot×tanh(Ct)

(11)

3)MC-LSTM網(wǎng)絡(luò)模型結(jié)構(gòu)

本文將多尺度CNN與LSTM結(jié)合構(gòu)建MC-LSTM缺陷嚴(yán)重性分類預(yù)測模型,先分別利用CNN模型的卷積層(ConvolutionalLayer)對輸入數(shù)據(jù)進(jìn)行特征提取,再將卷積后不同尺度的特征向量按位相加(Multi-scale Feature Vectors),以擴充詞的語義信息.將擴充后的特征向量送入LSTM模型(LSTM Layer)中進(jìn)一步訓(xùn)練,最后通過全連接層獲得的輸出結(jié)果(Output Layer)記為L2,模型結(jié)構(gòu)如圖4所示.

圖4 MC-LSTM模型結(jié)構(gòu)圖

3.4.3 BERT句子級別與詞級別的特征融合方法

本文為句子級別和詞級別的特征做可學(xué)習(xí)的自適應(yīng)加權(quán)融合,進(jìn)一步增強不同級別融合后的特征抓取能力,見公式(12):

L=α×L1+β×L2

(12)

其中α和β分別為句子級別和詞級別所對應(yīng)的自適應(yīng)權(quán)重,通過在模型中學(xué)習(xí)從而確定最優(yōu)值.

3.5 輸出層

將融合后的特征向量L使用SoftMax函數(shù)計算軟件缺陷報告嚴(yán)重性預(yù)測值見公式(13):

(13)

式中,Z表示嚴(yán)重性的類別數(shù),Li表示每個單詞的向量,使用交叉熵?fù)p失函數(shù)對模型進(jìn)行優(yōu)訓(xùn)練,計算見公式(14):

(14)

式中,y*表示真實標(biāo)簽的分布,yi表示訓(xùn)練樣本的預(yù)測值.

4 實驗與分析

4.1 實驗環(huán)境及數(shù)據(jù)集概述

4.1.1 實驗環(huán)境

本文實驗環(huán)境:系統(tǒng)為CentOS 8.5,CPU為Intel Core i9-10900X,GPU為GeForce RTX 3080 Ti 12GB,內(nèi)存大小為32GB,編程語言為Python3.7.3,深度學(xué)習(xí)框架為Pytorch 1.5.1.

4.1.2 實驗數(shù)據(jù)集

本文采用Zhang等人[18]提供的Mozilla和Eclipse數(shù)據(jù)集.首先,對數(shù)據(jù)集中的缺陷報告進(jìn)行屬性增強處理,刪除重復(fù)以及標(biāo)簽為“Normal”和“Enhancement”的文本數(shù)據(jù),并對嚴(yán)重性等級進(jìn)行標(biāo)簽化.然后,針對部分?jǐn)?shù)據(jù)詞干提取后會引起OOV問題,采用詞頻統(tǒng)計的方法,提取報告中出現(xiàn)次數(shù)多且具有缺陷嚴(yán)重性相關(guān)的單詞對它們進(jìn)行后綴還原處理(如“remov”還原成“remove”,“delet”還原成“delete”等).最后,將缺陷報告中摘要“summary”和描述“description”的文本數(shù)據(jù)合并為“Text”.

其中,經(jīng)處理后的Mozilla數(shù)據(jù)集一共有2623條數(shù)據(jù),Blocker、Critical、Major、Minor和Trivial的數(shù)量分別是283、508、696、692、444,Eclipse數(shù)據(jù)集一共有7355條數(shù)據(jù),Blocker、Critical、Major、Minor和Trivial的數(shù)量分別是728、1435、2977、1383、832,部分?jǐn)?shù)據(jù)如表1所示.數(shù)據(jù)按照8:2的比例劃分為訓(xùn)練集和測試集,所有結(jié)果采用10次五折交叉驗證的平均值.

表1 軟件缺陷報告文本示例表

4.1.3 評價指標(biāo)

本文采用平均準(zhǔn)確率(Precision)、平均召回率(Recall)和平均F1值(F1-score)作為評價指標(biāo),計算見公式(15)~公式(17):

(15)

(16)

(17)

其中TP表示將屬于正類樣本正確地劃分到正類的樣本數(shù)目,FN表示將屬于正類的樣本錯誤地劃分為負(fù)類的樣本數(shù)目,FP表示將屬于負(fù)類的樣本劃分為正類的樣本數(shù)目,TN表示將屬于負(fù)類的樣本劃分為負(fù)類的樣本數(shù)目.

4.1.4 模型參數(shù)設(shè)置

本文中BERT模型選用uncased-BERT-base,為了保證實驗結(jié)果的準(zhǔn)確性和有效性,所設(shè)定的參數(shù)如表2所示.

表2 實驗參數(shù)表

4.2 實驗結(jié)果與分析

4.2.1 關(guān)鍵詞嵌入對模型性能的影響

為了驗證關(guān)鍵詞嵌入操作的有效性,分別對Mozilla和Eclipse數(shù)據(jù)集添加關(guān)鍵詞嵌入操作(Keyword embeddings,簡稱Key_emb)和未添加關(guān)鍵詞操作(Non-keyword embeddings,簡稱Non-key_emb)進(jìn)行實驗,結(jié)果如表3所示.

表3 關(guān)鍵詞嵌入的對比結(jié)果

由表3可知,本文添加關(guān)鍵詞嵌入操作后在兩個數(shù)據(jù)集中分類結(jié)果均有明顯的提高.該方法在Mozilla數(shù)據(jù)集上的平均準(zhǔn)確率、平均召回率、平均F1值分別為68.41%、64.60%、64.86%,比傳統(tǒng)BERT預(yù)訓(xùn)練模型,分別提升了2.65%、1.98%、2.2%.在Eclipse數(shù)據(jù)集上的平均準(zhǔn)確率、平均召回率、平均F1值分別為61.32%、62.62%、59.31%,比傳統(tǒng)BERT預(yù)訓(xùn)練模型,分別提升了2.44%、2.25%、2.35%.由此可知,通過在嵌入層中融合關(guān)鍵詞特征的語義信息,增加了軟件缺陷嚴(yán)重性特征的先驗知識,預(yù)訓(xùn)練模型可以更好地進(jìn)行學(xué)習(xí),從而提升了分類效果.

4.2.2 不同分類算法的對比

為了驗證SWF-BERT的有效性,本文將SWF-BERT模型與5種不同的分類算法進(jìn)行對比分析.

CNN[19]:選擇CNN模型,采用Word2Vec詞嵌入模型完成對輸入序列的向量化表示,并輸出至CNN模型進(jìn)行訓(xùn)練,實現(xiàn)軟件缺陷嚴(yán)重性分類.

CNN-LSTM[19]:選擇CNN模型,采用Word2Vec詞嵌入模型完成對輸入序列的向量化表示,并結(jié)合LSTM模型進(jìn)行訓(xùn)練完成分類.

BERT:選擇BERT預(yù)訓(xùn)練模型,完成對輸入序列的向量化表示,并直接輸出至SoftMax層進(jìn)行分類.

BERT-CNN:BERT和CNN的組合,對缺陷嚴(yán)重性的特征進(jìn)行提取,最后通過全連接層的輸出結(jié)果對嚴(yán)重性標(biāo)簽進(jìn)行分類.

BERT-LSTM:BERT和LSTM的組合,增強缺陷嚴(yán)重性特征間的遠(yuǎn)距離時序信息,最后通過全連接層的輸出結(jié)果對嚴(yán)重性進(jìn)行分類.

實驗結(jié)果如表4所示,可以看出本文提出的基于句子級與詞級別的軟件缺陷報告嚴(yán)重性預(yù)測方法在兩個數(shù)據(jù)集中平均F1值分別達(dá)到了64.86%和59.31%,相較于其他5種分類模型在平均準(zhǔn)確率、平均召回率和平均F1值上均有所提升.其中,采用CNN和CNN-LSTM的方法在Mozilla和Eclipse數(shù)據(jù)集上的平均F1值分別為48%、40%和45%、44%.由于這兩種模型在詞向量化方面采用的是Word2Vec方法,分詞不夠準(zhǔn)確且不能解決多義詞的問題,導(dǎo)致詞向量在訓(xùn)練過程中效果不理想,分類結(jié)果較差.將預(yù)訓(xùn)練語言模型替換為BERT時,平均F1值較CNN和CNN-LSTM模型在兩個數(shù)據(jù)集上分別提升了13.38%、21.38%和11%、12%.原因是BERT在動態(tài)表征向量的同時可以根據(jù)現(xiàn)有任務(wù)對模型進(jìn)行微調(diào),提升單詞在上下文中的語義特征,分類效果較好.當(dāng)在BERT模型后接入CNN和LSTM模型時,增加了特征的利用率,相較于BERT模型,其平均F1值在兩個數(shù)據(jù)集中分別提升了0.42%、0.14%和0.48%、0.3%.SWF-BERT模型在BERT模型的基礎(chǔ)上進(jìn)一步獲取了缺陷嚴(yán)重性相關(guān)的特征,將關(guān)鍵詞嵌入向量與嵌入層中的其他向量進(jìn)行融合,使語義信息更加豐富,并對句子級別與詞級別的特征做可學(xué)習(xí)的自適應(yīng)加權(quán)融合操作,從而使模型獲得更多的語義信息.在Mozilla數(shù)據(jù)集上,其平均準(zhǔn)確率較其他5種分類算法分別提升了17.41%、27.41%、3.04%、2.72%、2.83%;平均召回率較其他5種分類算法分別提升了16.6%、24.6%、3.39%、3.01%、3.11%;平均F1值較其他5種分類算法分別提升了16.86%、24.86%、3.48%、3.06%、3.34%.在Eclipse數(shù)據(jù)集上,其平均準(zhǔn)確率較其他5種分類算法分別提升了14.32%、16.32%、3.57%、2.97%、3.31%;平均召回率較其他5種分類算法分別提升了14.62%、15.62%、2.83%、2.25%、2.41%;平均F1值較其他5種分類算法分別提升了14.31%、15.31%、3.31%、2.83%、3.01%.

表4 不同分類算法的對比結(jié)果

4.2.3 消融實驗

為了驗證模型各層網(wǎng)絡(luò)結(jié)構(gòu)對實驗結(jié)果的影響,在Mozilla和Eclipse數(shù)據(jù)集中分別對模型各層網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了消融實驗,結(jié)果如表5所示.

表5 消融實驗的對比結(jié)果

對BERT、BERTK、BERTK+C-LSTM、BERTK+MC-LSTM模型和本文方法進(jìn)行對比,其中BERT表示僅在[CLS]輸出向量后接入全連接層進(jìn)行訓(xùn)練,BERTK表示在BERT的基礎(chǔ)上增加關(guān)鍵詞嵌入,BERTK+C-LSTM表示在BERTK的基礎(chǔ)上,詞級別向量后接入單尺度CNN結(jié)合LSTM模型并使用全連接層進(jìn)行訓(xùn)練,BERTK+MC-LSTM表示在BERTK的基礎(chǔ)上,詞級別向量后接入多尺度CNN結(jié)合LSTM模型并使用全連接層進(jìn)行訓(xùn)練.

實驗結(jié)果表明,添加關(guān)鍵詞嵌入的BERTK模型對比預(yù)訓(xùn)練BERT模型,在Mozilla和Eclipse數(shù)據(jù)集上F1值分別提升了1.39%和0.71%.BERTK+C-LSTM和BERTK+MC-LSTM模型對于BERTK模型,進(jìn)一步擴充詞級別的語義信息和考慮上下文特征間關(guān)系,在兩個數(shù)據(jù)集中性能均有不同幅度的提升.當(dāng)使用SWF-BERT模型方法效果最佳,在兩個數(shù)據(jù)集中平均準(zhǔn)確率、平均召回率、平均F1值分別達(dá)到了68.41%、64.60%、64.86%和61.32%、62.62%、59.31%,有效證明了融合句子級別與詞級別特征方法的可行性,能夠?qū)⒄Z義信息最大化,很好地提升了模型分類的性能.

4.2.4 實驗性能分析

1)損失值和正確率

實驗中,Epoch數(shù)為15,每個Epoch下(從1~15)對應(yīng)了測試集的損失值和正確率(Accuracy).在Mozilla數(shù)據(jù)集中,測試集的損失值為1.4667、1.1836、0.9898、0.9465、0.5671、0.2367、0.1386、0.0723、0.0169、0.0084、0.0078、0.0041、0.0041、0.0041和0.0041,測試集的正確率為43.21%、45.21%、46.21%、46.42%、47.42%、48.42%、49.53%、53.87%、57.77%、61.62%、63.64%、64.64%、64.84%、65.65%和65.65%;在Eclipse數(shù)據(jù)集中,測試集的損失值為0.8299、0.6793、0.4815、0.3918、0.0532、0.0399、0.0190、0.0068、0.0035、0.0034、0.0033、0.0032、0.0032、0.0032和0.0032,測試集的正確率為35.3%、37.53%、39.84%、41.19%、45.82%、48.86%、49.53%、53.87%、54.87%、55.87%、56.45%、56.5%、56.51%、56.51%和56.51%.

觀察數(shù)值變化可知,Mozilla數(shù)據(jù)集的損失值在迅速變小,正確率在緩慢上升,當(dāng)Epoch為12時,損失值和正確率的值趨于穩(wěn)定,模型逐漸收斂,最終正確率達(dá)到65.65%;Eclipse數(shù)據(jù)集的損失值在迅速變小,正確率在逐漸上升,當(dāng)Epoch為11時,損失值和正確率的值趨于穩(wěn)定,模型逐漸收斂,最終正確率達(dá)到56.51%.

2)混淆矩陣

圖5和圖6分別為Mozilla和Eclipse數(shù)據(jù)集的混淆矩陣,從圖中可以看出標(biāo)簽1、2、3預(yù)測為該類別數(shù)量的個數(shù)比標(biāo)簽4、5的好.其原因可能是標(biāo)簽1、2、3存在缺陷嚴(yán)重性相關(guān)的特征數(shù)較多,在關(guān)鍵詞嵌入時對高頻缺陷嚴(yán)重性的單詞進(jìn)行表征并訓(xùn)練,使得語義信息更加豐富,所以分類效果更好.另外數(shù)據(jù)中存在類別不平衡的問題,在實驗中采用交叉熵?fù)p失函數(shù),可以緩解此問題.

圖5 Mozilla數(shù)據(jù)集的混淆矩陣圖

圖6 Eclipse數(shù)據(jù)集的混淆矩陣圖

5 結(jié)束語

本文提出了一種基于SWF-BERT的軟件缺陷報告嚴(yán)重性預(yù)測模型.實驗結(jié)果表明:1)通過在嵌入層中對關(guān)鍵詞向量進(jìn)行融合,使預(yù)訓(xùn)練過程中軟件缺陷嚴(yán)重性的語義信息更加豐富;2)在BERT詞級別的輸出向量后接入MC-LSTM模型能夠增強特征的深層語義和上下文的學(xué)習(xí)能力;3)采用BERT模型最后一層輸出得到的[CLS]句向量經(jīng)過線性變換的結(jié)果與MC-LSTM模型輸出經(jīng)過線性變換得到的結(jié)果做可學(xué)習(xí)的自適應(yīng)加權(quán)融合,進(jìn)一步增強了不同級別融合后的語義特征,通過與5種不同的分類算法相比,分類精度得到了提升.

目前,軟件缺陷報告嚴(yán)重性分類方法準(zhǔn)確率偏低,很大程度受到數(shù)據(jù)集的影響,未來工作應(yīng)更加關(guān)注數(shù)據(jù)處理和數(shù)據(jù)不平衡的問題,從而進(jìn)一步提升模型的分類性能.

猜你喜歡
軟件缺陷嚴(yán)重性級別
嚴(yán)重性
痘痘分級別,輕重不一樣
基于源文件可疑度的靜態(tài)軟件缺陷檢測方法研究
基于NPE-SVM的軟件缺陷預(yù)測模型
邁向UHD HDR的“水晶” 十萬元級別的SIM2 CRYSTAL4 UHD
新年導(dǎo)購手冊之兩萬元以下級別好物推薦
你是什么級別的
開源程序的軟件缺陷分布特征的量化分析研究
血清及滑液中CCL13的水平與膝關(guān)節(jié)骨關(guān)節(jié)炎放射學(xué)之間的關(guān)系
細(xì)菌耐藥性的嚴(yán)重性
涡阳县| 平远县| 井研县| 原平市| 漳州市| 富锦市| 通河县| 中山市| 临城县| 松溪县| 海口市| 类乌齐县| 丘北县| 泾川县| 任丘市| 东安县| 洛阳市| 利津县| 无锡市| 通道| 轮台县| 莫力| 宁河县| 那坡县| 驻马店市| 启东市| 民和| 日照市| 阿克苏市| 兴仁县| 屏南县| 郸城县| 潞西市| 镇原县| 亚东县| 开鲁县| 朝阳县| 黎川县| 高平市| 华亭县| 隆尧县|