• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于聚類和關(guān)鍵詞提取的軟件缺陷分析方法

      2021-03-23 09:39:02高俊婷張麗萍趙鳳榮
      關(guān)鍵詞:準(zhǔn)確率權(quán)重聚類

      高俊婷,張麗萍,趙鳳榮

      (內(nèi)蒙古師范大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,內(nèi)蒙古 呼和浩特 010022)

      0 引 言

      軟件缺陷[1-3]通常以缺陷報(bào)告的形式存儲(chǔ)在缺陷跟蹤系統(tǒng)中[4],因此缺陷分析首要工作是對(duì)缺陷報(bào)告進(jìn)行分析。缺陷報(bào)告數(shù)據(jù)量大、信息繁雜,修復(fù)缺陷耗時(shí)長(zhǎng)成本高,傳統(tǒng)的人工分析已經(jīng)無(wú)法滿足大規(guī)模的軟件缺陷修復(fù)需求。

      本文提出一種基于K-Means和主題模型的軟件缺陷分析方法DAKSM(defect analysis method based on K-Means and subject model)。該方法將聚類和關(guān)鍵詞提取共同應(yīng)用于軟件缺陷分析中,在聚類過(guò)程中加入無(wú)用詞和同義詞分析并引入粒子群算法,提高聚類準(zhǔn)確率。在關(guān)鍵詞提取部分加入通用關(guān)鍵詞分析,提高關(guān)鍵詞的針對(duì)性,最終將缺陷的類型和潛在表達(dá)內(nèi)容直觀地呈現(xiàn)給修復(fù)人員。由于目前缺陷追蹤系統(tǒng)大多為英文版本,因此缺陷報(bào)告大部分為英文,該方法只適用于英文缺陷報(bào)告分析。若需要分析中文缺陷報(bào)告,則需在本文方法基礎(chǔ)上將英文文本分析算法改進(jìn)為中文文本分析算法,使之適應(yīng)中文缺陷報(bào)告分析。實(shí)驗(yàn)結(jié)果表明,該方法在英文缺陷報(bào)告的聚類平均準(zhǔn)確率能達(dá)到81%。

      1 相關(guān)工作

      缺陷分析是對(duì)軟件開(kāi)發(fā)過(guò)程中產(chǎn)生的缺陷信息進(jìn)行分類和理解[5],將缺陷相關(guān)信息提供給修復(fù)人員和開(kāi)發(fā)人員,使修復(fù)人員更快速地解決缺陷,了解缺陷產(chǎn)生的原因以避免此類缺陷再次產(chǎn)生。缺陷分析范圍廣泛、方法眾多,現(xiàn)有缺陷分析主要分為人工分析方法和自動(dòng)分析方法。

      人工分析方法是通過(guò)開(kāi)發(fā)人員的經(jīng)驗(yàn)對(duì)缺陷報(bào)告進(jìn)行分析,主要分為單屬性、多屬性分析[6,7]、定性和定量4種分析方法。定性分析主要有根本原因分析法(root cause analysis,RCA)、缺陷注入-發(fā)現(xiàn)矩陣分析法(DRE/DRM)、軟件故障樹(shù)分析法(software fault tree analysis,SFTA)、缺陷消除模型分析(defect removal model analysis,DRM)等方法;定量分析方法主要有(orthogonal defect classification,ODC)[8]和異常分類標(biāo)準(zhǔn)IEEE[9]等。

      由于軟件規(guī)模和數(shù)量的增大,人工分析過(guò)于耗費(fèi)資源,于是研究人員致力于尋找軟件缺陷自動(dòng)分析方法。LiGuo Huang等提出一種自動(dòng)ODC分類方法[8],對(duì)每一個(gè)缺陷類別建立一個(gè)支持向量機(jī)(support vector machine,SVM)分類器。該方法雖然最終分類結(jié)果比較好,但是由于只分析了某公司社交網(wǎng)絡(luò),導(dǎo)致結(jié)論通用性和代表性較低。

      Thung等提出了一種缺陷自動(dòng)分類框架和分類標(biāo)準(zhǔn)[10],獲取源代碼和缺陷報(bào)告,將源代碼轉(zhuǎn)換成抽象語(yǔ)法樹(shù)(abstract syntax tree,AST),然后用SVM對(duì)文本特征和修改特征進(jìn)行分類。該方法分類粒度較粗,且只分析500個(gè)缺陷,數(shù)據(jù)量較少。

      夏鑫等更注重缺陷的觸發(fā)方式,他們提出了基于觸發(fā)方式的缺陷自動(dòng)分類模型[11]。該方法將模糊邏輯作為特征提取方法,使分類效果更加準(zhǔn)確,但該方法只將缺陷分為2個(gè)類型,對(duì)開(kāi)發(fā)人員理解缺陷的幫助有限,還需開(kāi)發(fā)人員進(jìn)一步分析理解缺陷。

      昆明理工大學(xué)的王延飛認(rèn)為由于軟件是給客戶使用的[12],所以軟件的一部分缺陷是用戶提出的,并且軟件缺陷描述大部分存在于軟件的負(fù)面評(píng)論中,所以使用情感傾向分析方法重點(diǎn)分析軟件評(píng)論。但評(píng)論包含無(wú)用信息較多,僅分析評(píng)論不具代表性。

      大連理工大學(xué)的劉文杰等重點(diǎn)分析缺陷的嚴(yán)重性[13],分別組合并對(duì)比了不同特征表示方法和特征選擇方法以及不同分類算法,最終得出各部分最優(yōu)方式,但并未提出最優(yōu)組合方式。

      Indu Chawla等運(yùn)用模糊邏輯的分類方法,將缺陷分為bug、特性增強(qiáng)和其它請(qǐng)求[14],實(shí)驗(yàn)驗(yàn)證該方法優(yōu)于Pingclasai方法。但該方法收集到的原始數(shù)據(jù)集質(zhì)量不高,嚴(yán)重影響分類性能。

      另外,本團(tuán)隊(duì)的劉樹(shù)毅等在缺陷預(yù)測(cè)方向提出了一種融合多策略特征篩選的跨項(xiàng)目軟件缺陷預(yù)測(cè)方法[15]。該方法首先使用多策略篩選方法與過(guò)采樣方法進(jìn)行數(shù)據(jù)預(yù)處理;然后利用代價(jià)敏感的域自適應(yīng)方法進(jìn)行分類。該方法可以較好進(jìn)行軟件缺陷預(yù)測(cè),不足之處在于對(duì)屬性數(shù)量改變所帶來(lái)分類性能突變估計(jì)不足,可能會(huì)導(dǎo)致計(jì)算資源的浪費(fèi)、跨項(xiàng)目失效問(wèn)題。

      綜上所述,大多數(shù)自動(dòng)分析方法都要依據(jù)經(jīng)驗(yàn)先制定分類標(biāo)準(zhǔn),將缺陷進(jìn)行人工標(biāo)注,然后提取特征并用機(jī)器學(xué)習(xí)方法將缺陷進(jìn)行分類,但是這種方法將經(jīng)驗(yàn)與數(shù)據(jù)分離,分類魯棒性較低;在提取特征方面考慮信息單一,沒(méi)有考慮冗余特征和特征之間的位置關(guān)系;另外還需人工標(biāo)注,消耗資源,最終分類后的信息有限。因此,本文針對(duì)這一問(wèn)題,使用聚類和關(guān)鍵詞提取的方法分析軟件缺陷,將缺陷類型和潛在信息提供給修復(fù)人員,使缺陷可理解性更強(qiáng),幫助修復(fù)人員更快速地了解缺陷并能更好地解決缺陷。

      2 基于K-Means和主題模型的缺陷分析方法

      2.1 研究框架

      本文從數(shù)據(jù)角度出發(fā)提出一種軟件缺陷自動(dòng)分析的方法,即基于K-Means和主題模型的缺陷分析方法DAKSM。DAKSM流程如圖1所示。

      圖1 DAKSM流程

      該方法分為2個(gè)階段:聚類和關(guān)鍵詞提取。在聚類階段,首先輸入缺陷報(bào)告,然后對(duì)缺陷報(bào)告預(yù)處理,得到清洗后的缺陷報(bào)告文本。接下來(lái)對(duì)特征進(jìn)行篩選和處理,獲取缺陷有效特征,然后進(jìn)行文本表示和權(quán)重計(jì)算,最后進(jìn)行聚類,輸出缺陷類型。在關(guān)鍵詞提取階段,將聚類后的缺陷類型作為輸入,先提取主題詞,然后過(guò)濾主題詞,最后再一次提取主題詞,將缺陷類型和該類型主題詞作為關(guān)鍵詞輸出。

      2.2 聚 類

      大部分的缺陷分析方法要先確定缺陷的類型,而當(dāng)前的缺陷類型都是對(duì)已有缺陷的總結(jié)和積累。由于缺陷的產(chǎn)生原因和形式是多樣的,這種基于經(jīng)驗(yàn)的方法并不能良好地適應(yīng)缺陷的多樣性。本文從缺陷報(bào)告的數(shù)據(jù)自身出發(fā),采用聚類的方法科學(xué)地將缺陷劃分為幾個(gè)類型,聚類過(guò)程如圖2所示。

      圖2 聚類流程

      本文將缺陷報(bào)告作為輸入,選取摘要、詳細(xì)描述和評(píng)論作為分析對(duì)象。首先對(duì)缺陷報(bào)告進(jìn)行預(yù)處理,包括標(biāo)記化、分詞、去停用詞和詞形轉(zhuǎn)化;接著使用詞頻統(tǒng)計(jì)、特征篩選和特征統(tǒng)一的方法來(lái)獲取有效特征;下一步進(jìn)行文本表示、TF-IDF計(jì)算權(quán)重值和粒子群算法優(yōu)化權(quán)重值;最后用K-Means方法聚類,輸出缺陷類型。聚類實(shí)現(xiàn)方法如算法1所示。

      算法1: 聚類算法

      Input: 缺陷報(bào)告xml文件

      Output: 聚類后結(jié)果

      (1)str=file.readline();//按行讀取文件

      (2)Whilestr=file.readline()!=nulldo

      (3)Ifstr==""||str==""||str=""Then//

      提取bug_id,comment,thetext中的信息。

      (4)str.toLowerCase();//轉(zhuǎn)成小寫(xiě)

      (5)str.remove("’");//去掉單引號(hào)。

      (6)IfWords.count<=3Then

      (7)str.remove(Words);//移除詞頻小于3的單詞。

      (8)Endif

      (9)str.remove(Uselesswords);//去除無(wú)用詞

      (10)Fori=0:Synonym.length-1to

      (11)Forj=0:Synonym[i].length-1to

      (12)str.replace(Synonym[i][j],Synonym[i][0];)//

      一組同義詞都被替換為該組第一個(gè)單詞。

      (13)Endfor

      (14)Endfor

      (15)bug=bug+str+" ";

      (16)Endif

      (17)Endwhile

      (18)fori=0:bug.length-1do

      (19)bug[i].weight=w_TFIDF[i]*w_PSO[i];//計(jì)算每個(gè)特征的權(quán)重值

      (20)Endfor

      (21)Clustering=SimpleKMeans(bug);//K-Means取類后的結(jié)果

      (22)returnClustering;

      2.2.1 預(yù)處理

      首先,獲取缺陷報(bào)告,提取缺陷報(bào)告中的id號(hào)(標(biāo)簽)、摘要(標(biāo)簽)、詳細(xì)描述(第一個(gè)中的標(biāo)簽)和評(píng)論(除第一個(gè)以外的中的標(biāo)簽),然后對(duì)缺陷數(shù)據(jù)進(jìn)行預(yù)處理。預(yù)處理的過(guò)程為標(biāo)記化數(shù)據(jù),去掉數(shù)據(jù)中的標(biāo)點(diǎn)符號(hào)和數(shù)字等;接著對(duì)缺陷報(bào)告進(jìn)行分詞,將句子轉(zhuǎn)換成詞語(yǔ)的模式;然后去掉停用詞,即高頻率出現(xiàn)但是對(duì)文本分析沒(méi)有作用的單詞;最后進(jìn)行詞形還原,將過(guò)去式、分詞、復(fù)數(shù)形式的單詞還原為原型形式,但特殊單詞除外,例如window,這個(gè)單詞單數(shù)的window和復(fù)數(shù)的windows是含義完全不同的2個(gè)單詞,所以不將windows轉(zhuǎn)換成window。

      2.2.2 獲取有效特征

      接下來(lái)進(jìn)入特征提取階段。由于被處理的缺陷數(shù)據(jù)是多樣的語(yǔ)言文本形式,所以會(huì)出現(xiàn)大量單詞。為防止在文本表示時(shí)造成維度爆炸,本文在聚類之前對(duì)單詞進(jìn)行有效特征提取。提取有效特征也會(huì)降低聚類復(fù)雜度,提高聚類準(zhǔn)確率。該階段主要對(duì)單詞特征進(jìn)行處理,目的是提取對(duì)缺陷聚類而言有用處的單詞。

      (1)詞頻統(tǒng)計(jì)和特征移除

      根據(jù)對(duì)數(shù)據(jù)的分析發(fā)現(xiàn)詞頻小于3的大多數(shù)為拼寫(xiě)錯(cuò)誤或?qū)θ毕轃o(wú)用的單詞。因此,該方法首先要去掉出現(xiàn)頻率小于3的單詞,該方法可將特征維度縮減到原來(lái)的1/3。

      (2)特征篩選

      將特征移除后仍然有很多單詞是經(jīng)常出現(xiàn)但是對(duì)缺陷數(shù)據(jù)聚類而言沒(méi)有作用的單詞,特征篩選目的是過(guò)濾掉這些單詞,本文將這些詞稱為無(wú)用詞。首先分析出無(wú)用詞,如yeah、nightly、hmm等單詞可能是評(píng)論中摻雜的無(wú)用詞;然后創(chuàng)建無(wú)用詞列表,表1列舉了部分無(wú)用詞。在分析無(wú)用詞的時(shí)候,我們使用人工分析的方法,考慮該單詞的含義和作用,再考慮去掉該單詞之后對(duì)整個(gè)語(yǔ)句的理解,如果不影響整句話含義,則設(shè)為無(wú)用詞。通過(guò)對(duì)3款軟件1500個(gè)缺陷的人工分析得到無(wú)用詞列表。該列表含有web軟件中大部分無(wú)用詞。然后設(shè)計(jì)特征過(guò)濾算法,在特征移除后的特征子集上自動(dòng)過(guò)濾掉無(wú)用詞列表中的單詞。實(shí)驗(yàn)表明使用經(jīng)過(guò)特征過(guò)濾后的特征子集聚類效果好于未經(jīng)過(guò)特征過(guò)濾的特征子集。

      (3)特征統(tǒng)一

      文檔中可能出現(xiàn)實(shí)際意義相同但是表達(dá)不同的單詞,例如:color可以被表達(dá)為red、blue和black等。這些單詞雖然含義相同,但由于表達(dá)形式不同,所以它們?cè)谖臋n向量中是不同的。基于這個(gè)問(wèn)題,本文提出一種針對(duì)軟件缺陷聚類的特征統(tǒng)一處理方法,特征統(tǒng)一是指在軟件缺陷聚類之前,將隱藏含義相同的單詞統(tǒng)一成實(shí)際意義單詞。這樣做將降低特征維度,使聚類更準(zhǔn)確。該方法首先分析出隱藏含義相同的單詞,創(chuàng)建特征統(tǒng)一列表,部分特征統(tǒng)一見(jiàn)表2,將特征統(tǒng)一列表中的單詞統(tǒng)一成實(shí)際意義單詞。通過(guò)對(duì)3款軟件1500個(gè)缺陷進(jìn)行分析創(chuàng)建了特征統(tǒng)一表,該表包含大部分web軟件應(yīng)該統(tǒng)一含義的單詞。然后設(shè)計(jì)特征統(tǒng)一算法自動(dòng)將單詞進(jìn)行統(tǒng)一。實(shí)驗(yàn)結(jié)果表明,聚類前使用特征統(tǒng)一方法將提高聚類準(zhǔn)確率。

      表1 無(wú)用詞

      表2 特征統(tǒng)一

      2.2.3 文本表示

      文本表示是將計(jì)算機(jī)無(wú)法直接處理的無(wú)結(jié)構(gòu)語(yǔ)言文本轉(zhuǎn)化為可處理形式。向量空間模型(VSM)是一種文本表示模型。該模型由特征項(xiàng)、特征權(quán)重和特征向量組成[16]。使用該模型需要先確定文本的特征項(xiàng)和權(quán)重值,對(duì)于英文文本來(lái)說(shuō),一個(gè)詞即為一個(gè)特征,因此本文選用單詞作為VSM模型中的輸入特征。

      在權(quán)重計(jì)算方面,本文提出一種TF-IDF與粒子群相結(jié)合的權(quán)重計(jì)算方法。一般對(duì)于權(quán)重計(jì)算只選用TF-IDF、信息增益(IG)等方法,由于軟件缺陷的特殊性,我們認(rèn)為缺陷報(bào)告中摘要是缺陷的高度概括,所以將摘要設(shè)為重點(diǎn)分析部分,同時(shí)描述也是缺陷分析不可缺少的部分,評(píng)論集合了不同開(kāi)發(fā)人員的多種角度對(duì)缺陷的描述。因此本文選用摘要、描述和評(píng)論作為分析對(duì)象。由于不同位置的特征提供的信息質(zhì)量不同,所以需要根據(jù)單詞存在位置的不同而設(shè)置不同的權(quán)重。為了分析不同位置與權(quán)重的關(guān)系,本文在權(quán)重計(jì)算上采用粒子群優(yōu)化算法來(lái)計(jì)算特征在不同位置的最優(yōu)權(quán)重。該方法對(duì)權(quán)重值的計(jì)算分為2步,首先通過(guò)TF-IDF計(jì)算出基本權(quán)重,然后再通過(guò)基于粒子群的特征權(quán)重算法計(jì)算出最終最優(yōu)特征權(quán)重。特征權(quán)重計(jì)算公式為

      wword(i)=wTF-IDF×wpso

      (1)

      wword(i)為第i個(gè)特征的權(quán)重;wTF-IDF為通過(guò)TF-IDF所計(jì)算出的權(quán)值;wpso為通過(guò)基于粒子群的特征權(quán)重算法計(jì)算過(guò)后的權(quán)重。

      (1)TF-IDF(term frequency-inverse document frequency)

      首先使用TF-IDF方法計(jì)算基本權(quán)重值,TF-IDF是一種常用的加權(quán)技術(shù)[17]。TF(term frequency)為詞頻,表示單詞在文檔中出現(xiàn)的頻率,TF計(jì)算公式如下

      (2)

      ni,j是該詞在文件中的出現(xiàn)次數(shù),而∑knk,j則是在文件中所有字詞的出現(xiàn)次數(shù)之和。IDF(inverse document frequency)為逆文本頻率,主要思想為包含該詞條的文檔越少,IDF值越大,該詞的區(qū)分度越高,IDF計(jì)算公式如下

      (3)

      其中,|D|為語(yǔ)料庫(kù)中的文件總數(shù),分子為包含詞語(yǔ)的文件數(shù)目,如果該詞語(yǔ)不在語(yǔ)料庫(kù)中,就會(huì)導(dǎo)致分母為零,因此一般情況下使用1+|{d∈D:t∈d}|作為分母。TF-IDF值為T(mén)F*IDF,本文的TF-IDF值由WEKA工具計(jì)算,WEKA是一款JAVA環(huán)境下開(kāi)源的機(jī)器學(xué)習(xí)工具。本文使用StringToWordVector實(shí)現(xiàn)TF-IDF權(quán)重計(jì)算[18]。計(jì)算結(jié)果如圖3所示。

      圖3 TF-IDF計(jì)算結(jié)果

      (2)基于粒子群算法的特征權(quán)重計(jì)算

      粒子群算法是由J.Kennedy和R.Eberhart開(kāi)發(fā)的一種生物啟發(fā)式算法[19]。粒子群算法以其實(shí)現(xiàn)容易、精度高、收斂快等優(yōu)點(diǎn)引起了學(xué)術(shù)界的重視[20,21]。利用粒子群算法可以有效地解決權(quán)重優(yōu)化的問(wèn)題。

      在粒子群算法中,每一個(gè)單詞在不同位置的權(quán)重值數(shù)組被抽象成一個(gè)粒子,由N個(gè)粒子組成一個(gè)種群。其中第i個(gè)粒子的位置被表示成一個(gè)D維的向量Xi=(xi1,xi2,…,xiD),i=1,2,…,N,并且它的速度也被表示成一個(gè)D維的向量Vi=(vi1,vi2,…,viD),i=1,2,…,N。所有粒子的適應(yīng)值都由適應(yīng)度函數(shù)計(jì)算得到,判斷調(diào)整權(quán)重以后結(jié)果的好壞需要從兩方面考慮:一方面是聚類的聚集程度,可以由K-Means算法的SquareError值得到,SquareError值越小分類的結(jié)果越好;另一方面是聚類的準(zhǔn)確率,由正確分類的個(gè)數(shù)除以總個(gè)數(shù)得到,正確率越高分類效果越好。所以本文的適應(yīng)度函數(shù)如下

      (4)

      其中,k1,k2為算法參數(shù),s為聚類的SquareError值,a為聚類的準(zhǔn)確率。此外,每個(gè)粒子還具有記憶功能,會(huì)記錄當(dāng)前搜索到的最優(yōu)位置,稱為個(gè)體極值pbest=(pi1,pi2,…,pgD),i=1,2,…,N,代表個(gè)體經(jīng)驗(yàn)。此外,整個(gè)種群當(dāng)前搜索到的最優(yōu)位置稱為全局極值gbest=(pi1,pi2,…,pgD),代表種群經(jīng)驗(yàn)。每個(gè)粒子的速度更新由3部分組成:第一是慣性速度,代表粒子有維持自己之前速度的趨勢(shì);第二是認(rèn)知速度,代表粒子有靠近個(gè)體最優(yōu)位置的趨勢(shì);第三是社會(huì)速度,代表粒子有靠近群體最優(yōu)位置的趨勢(shì)。速度和位置更新公式如下

      vid=ωvid+c1r1(pid-xid)+c2r2(pgd-xid)

      (5)

      xid=xid+vid

      (6)

      其中,ω是慣性權(quán)重,c1,c2是學(xué)習(xí)因子,r1和r2為[0,1]范圍內(nèi)的隨機(jī)數(shù)。i=1,2,…,N為群體大小。粒子將會(huì)在目標(biāo)搜索空間中追隨當(dāng)前的最優(yōu)粒子在解空間中搜索。

      慣性權(quán)重ω是影響算法性能的重要參數(shù)。文獻(xiàn)[22]提出了一種慣性權(quán)重線性微分遞減的方法,慣性權(quán)重的計(jì)算公式如下

      (7)

      (8)

      由公式可以看出,在算法初期粒子的慣性權(quán)重較大,提高了粒子的全局搜索能力,保證粒子的多樣性。而在算法后期粒子的慣性權(quán)重較小,提高了粒子的局部搜索能力,有利于找到最優(yōu)解。該算法流程如圖4所示。

      圖4 粒子群算法流程

      2.2.4 聚類

      大部分缺陷分析方法都需要在訓(xùn)練模型前將缺陷手工分類,K-Means是一種無(wú)監(jiān)督學(xué)習(xí)技術(shù),可省去人工分類時(shí)間,但是該方法需要在聚類后人工分析聚類結(jié)果。分析發(fā)現(xiàn),某些缺陷可被分到不同類別,相較于只能按照標(biāo)簽分類的方法,該方法靈活度較高。

      在模型構(gòu)建階段,本文采用K-Means算法對(duì)缺陷進(jìn)行聚類。K-Means算法是一種基于距離的聚類方法,該算法認(rèn)為兩個(gè)對(duì)象之間的歐氏距離越近,則它們相似度越大,且屬于同一個(gè)類型的可能性也更大。算法首先需要設(shè)定K個(gè)簇中心點(diǎn),隨機(jī)選取中心點(diǎn)位置,然后計(jì)算對(duì)象與中心的距離,通過(guò)距離進(jìn)行歸類,接著重新計(jì)算距離,迭代2次-3次上述步驟,直到滿足閾值或中心不再改變。

      本文在實(shí)現(xiàn)K-Means算法時(shí)使用WEKA工具里的SimpleKMeans方法。圖5為聚類結(jié)果部分示例。

      圖5 聚類結(jié)果部分示例

      2.3 關(guān)鍵詞提取方法

      每一類缺陷里面還可能包含不同的主題,本節(jié)通過(guò)聚類結(jié)果,進(jìn)一步提取主題與關(guān)鍵詞。經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),主題之間會(huì)出現(xiàn)許多相同關(guān)鍵詞,這些詞為缺陷通用關(guān)鍵詞,例如firefox、bug和error等詞,雖然是關(guān)鍵詞,但由于單詞概括性較強(qiáng),區(qū)分度較差,實(shí)際分析意義不大,所以要在關(guān)鍵詞提取之前將這些單詞去掉。因此關(guān)鍵詞提取分為關(guān)鍵詞識(shí)別、關(guān)鍵詞過(guò)濾和關(guān)鍵詞再提取3個(gè)步驟。

      2.3.1 關(guān)鍵詞識(shí)別

      在該階段,本文使用主題模型中的(latent dirichlet allocation,LDA)提取出主題和主題詞以及主題概率,將主題詞作為該簇不同主題的關(guān)鍵詞,以主題概率從高到低的順序呈現(xiàn)給修復(fù)人員。LDA是一種無(wú)監(jiān)督機(jī)器學(xué)習(xí)技術(shù),用來(lái)生成文檔主題,主要識(shí)別大規(guī)模文檔集或語(yǔ)料庫(kù)的隱藏主題信息[23]。該模型運(yùn)用詞袋模型,忽略詞的排列順序,將無(wú)結(jié)構(gòu)的自然語(yǔ)言編寫(xiě)的文檔信息轉(zhuǎn)化為計(jì)算機(jī)可識(shí)別的模式。該模型包含詞、主題和文檔3層結(jié)構(gòu),對(duì)于一篇文檔,首先通過(guò)LDA模型生成其主題分布與詞分布,然后根據(jù)主題分布隨機(jī)選取一個(gè)主題,再根據(jù)單詞分布生成一個(gè)詞,重復(fù)上述過(guò)程直至生成一篇文檔。

      本文將上一步經(jīng)過(guò)K-Means聚類后的每一類設(shè)置成一個(gè)文件夾,將該類中的缺陷以一個(gè)缺陷一個(gè)文本的形式放入文件夾中,每個(gè)文本以缺陷id命名,內(nèi)容為缺陷摘要、評(píng)論、描述的原始數(shù)據(jù)。將文件夾作為L(zhǎng)DA輸入,經(jīng)過(guò)主題提取后得到每一類的主題以及該主題下的主題詞和主題概率。

      2.3.2 關(guān)鍵詞過(guò)濾

      分析發(fā)現(xiàn),主題之間會(huì)出現(xiàn)許多概括性較強(qiáng)、區(qū)分度較差的單詞,如firefox、bug和error等,這些詞定義為通用關(guān)鍵詞。在關(guān)鍵詞過(guò)濾階段主要過(guò)濾掉通用關(guān)鍵詞,該過(guò)程首先比對(duì)上一步提取出的關(guān)鍵詞,分析重復(fù)的單詞;然后,設(shè)置通用關(guān)鍵詞列表,表3為部分通用關(guān)鍵詞列表;最后,在最原始數(shù)據(jù)集上去掉通用關(guān)鍵詞,迭代提取和過(guò)濾過(guò)程直到分析出的結(jié)果比較符合要求。

      表3 通用關(guān)鍵詞

      2.3.3 關(guān)鍵詞再提取

      經(jīng)過(guò)關(guān)鍵詞過(guò)濾后的文本中單詞都具有高度識(shí)別性,因此,將去掉通用關(guān)鍵詞后的數(shù)據(jù)集上再次提取關(guān)鍵詞,提取結(jié)果以主題概率從高到低的順序呈現(xiàn)給修復(fù)人員,幫助修復(fù)人員快速理解缺陷。

      3 實(shí)驗(yàn)分析

      3.1 驗(yàn)證指標(biāo)

      由于業(yè)界還未有類似方法,所以針對(duì)本文提出的基于聚類和關(guān)鍵詞提取的缺陷分析方法 DAKSM進(jìn)行組內(nèi)評(píng)估驗(yàn)證,本文將從聚類準(zhǔn)確的個(gè)數(shù)、準(zhǔn)確率和評(píng)價(jià)聚類好壞的簇內(nèi)誤差平方和(SSE)這3個(gè)方面進(jìn)行驗(yàn)證,以檢驗(yàn)DAKSM方法的有效性。

      準(zhǔn)確率指經(jīng)過(guò)分析后得出的聚類正確的缺陷數(shù)與全部缺陷數(shù)的比例。SSE值是K-Means聚類中常用的判斷聚類好壞的標(biāo)準(zhǔn)。該值越小證明同一簇之間距離越小,聚類效果越好。該值由WEKA工具完成聚類時(shí)提供。

      3.2 實(shí)驗(yàn)驗(yàn)證

      3.2.1 數(shù)據(jù)源

      Bugzilla是一個(gè)開(kāi)源的缺陷管理系統(tǒng),主要管理軟件開(kāi)發(fā)過(guò)程中存在的缺陷,許多軟件公司使用bugzilla來(lái)進(jìn)行缺陷管理,因此本文從bugzilla中下載缺陷報(bào)告進(jìn)行分析。為了使研究更具有針對(duì)性,本文選用firefox、bugzilla和SeaMonke這3款web軟件,并且為了保證實(shí)驗(yàn)的實(shí)用性,本文在每款軟件中隨機(jī)選取500個(gè)缺陷進(jìn)行分析。

      3.2.2 實(shí)驗(yàn)步驟

      (1)在bugzilla中下載xml形式的缺陷報(bào)告,提取缺陷報(bào)告中的缺陷id、摘要、描述和評(píng)論。

      (2)對(duì)提取出的文本進(jìn)行預(yù)處理。

      (3)將預(yù)處理過(guò)的文本提取有效特征。

      (4)進(jìn)行文本表示和權(quán)重計(jì)算,我們先用WEKA中的StringToWordVector將文本轉(zhuǎn)換成空間向量,初步權(quán)值為T(mén)F-IDF,然后用基于粒子群算法的權(quán)重計(jì)算方法計(jì)算權(quán)重,其中粒子群算法的參數(shù)為:c1=1.49445,c2=1.49445,ωmax=0.8,ωmin=0.5,最大迭代次數(shù)為500次。

      (5)用WEKA里面的SimpleKMeans實(shí)現(xiàn)K-Means聚類,歐氏距離作為算法的相似度測(cè)度,初始化方法選擇k-Means++,最大迭代次數(shù)為500次,種子數(shù)為800,經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,將缺陷分為6個(gè)類別結(jié)果最準(zhǔn)確,所以初始聚類的簇個(gè)數(shù)設(shè)置為6個(gè)。

      (6)將聚類結(jié)果分別保存到不同的文件夾中,再用LDA提取出關(guān)鍵詞,本文主題數(shù)設(shè)置為10個(gè),每個(gè)主題下有20個(gè)主題詞,根據(jù)經(jīng)驗(yàn)將α和β分別設(shè)置為50/K和0.1,其中K為主題數(shù),輸出最終分析結(jié)果。

      3.2.3 實(shí)驗(yàn)結(jié)果與分析

      (1)聚類結(jié)果

      1)不同獲取有效特征方法的實(shí)驗(yàn)結(jié)果

      獲取有效特征:我們分別對(duì)比了未獲取有效特征和使用該方法后的聚類效果:

      方法1:只使用詞頻進(jìn)行特征提取。

      方法2:使用詞頻和特征篩選進(jìn)行特征提取。

      方法3:使用詞頻和特征統(tǒng)一獲取有效特征。

      方法4:使用詞頻、特征篩選和特征統(tǒng)一進(jìn)行獲取有效特征。

      實(shí)驗(yàn)結(jié)果如圖6所示,圖6橫坐標(biāo)表示4種方法,縱坐標(biāo)表示聚類正確的個(gè)數(shù),不同的柱形代表不同的軟件。

      圖6 不同獲取有效特征方法聚類正確的數(shù)量

      由圖6可以看出:①bugzilla聚類時(shí)使用其它方法較方法1有小幅度提升,但使用方法2和方法3時(shí)差距不大,僅僅增加了1個(gè);當(dāng)使用方法4時(shí)準(zhǔn)確個(gè)數(shù)有明顯升高。②firefox對(duì)本文提出的方法較為敏感,準(zhǔn)確個(gè)數(shù)提升較多。但firefox準(zhǔn)確個(gè)數(shù)并不是很多,剛達(dá)到bugzilla使用方法3時(shí)的準(zhǔn)確個(gè)數(shù)。③SeaMonkey軟件在使用方法2時(shí)較方法1有明顯提高,但是使用方法3反而降低了準(zhǔn)確個(gè)數(shù),但仍高于方法1,使用方法4優(yōu)于方法1但與方法2差距不大。

      由以上分析可以看出,方法2和方法3結(jié)果有較大起伏,但方法4對(duì)任何軟件的準(zhǔn)確個(gè)數(shù)都有較大的提升,總體來(lái)看本文提出的獲取有效特征方法優(yōu)于只使用詞頻的方法。

      準(zhǔn)確率如表4所示,方法2和方法3準(zhǔn)確率都高于方法1,但是低于方法4,方法4有效提高準(zhǔn)確率使準(zhǔn)確率平均達(dá)到77.2%。該表看出使用方法1時(shí)firefox, SeaMonkey準(zhǔn)確率較低,但bugzilla有良好的準(zhǔn)確率,當(dāng)使用方法4時(shí)準(zhǔn)確率提高到了80.4%,因此bugzilla對(duì)方法4適應(yīng)性比較好,準(zhǔn)確率提升8.4%,SeaMonkey雖然使用方法1時(shí)準(zhǔn)確率比f(wàn)irefox高,使用方法4后并沒(méi)有太大的提升,反而比f(wàn)irefox準(zhǔn)確率低,但通過(guò)平均準(zhǔn)確率分析來(lái)看使用方法2和方法3差距不大,使用方法4相較于方法1有明顯提高。表5表示不同方法不同軟件的SSE值。由表4和表5綜合來(lái)看,雖然bugzilla的SSE值最高,但是準(zhǔn)確率卻是最高的,firefox的SSE值最低,但是準(zhǔn)確率也是最低的。因?yàn)镾SE為WEKA工具中計(jì)算出來(lái)的簇之間實(shí)例距離,但是在實(shí)際語(yǔ)言中,有些很相似的句子會(huì)有不同的含義,比如:Password is not safe和No prompt when the password is not safe這兩句話可能距離相對(duì)較小,但一個(gè)是安全問(wèn)題,一個(gè)是頁(yè)面設(shè)計(jì)時(shí)出現(xiàn)的問(wèn)題;還有些看起來(lái)不是很相似,但是實(shí)際上應(yīng)該被分成一個(gè)類別的句子,比如:Button should turn blue when clicked和Icon cannot be displayed,這兩句話應(yīng)該都是頁(yè)面設(shè)計(jì)問(wèn)題,但是在聚類時(shí)的距離可能會(huì)被計(jì)算為很大。因此只使用SSE作為評(píng)價(jià)指標(biāo)是不合理的,本文選擇準(zhǔn)確率和SSE值共同作用,由表5可見(jiàn),使用方法4的SSE值略低于使用方法1的SSE值,由此驗(yàn)證使用方法4聚類效果好于使用方法1。

      表4 不同獲取有效特征方法的聚類準(zhǔn)確率/%

      表5 不同方法獲取有效特征方法的聚類的SEE值/%

      2)不同權(quán)重計(jì)算方法的實(shí)驗(yàn)結(jié)果

      我們根據(jù)摘要,描述和評(píng)論來(lái)分析不同位置特征向量的權(quán)重。因?yàn)槌霈F(xiàn)在摘要的特征單詞一定會(huì)出現(xiàn)在描述中,所以一共可以分為5種情況。我們使用粒子群算法可以計(jì)算出單詞在不同位置時(shí)最優(yōu)的一組權(quán)重值,結(jié)果見(jiàn)表6。

      表6 基于粒子群算法權(quán)重計(jì)算結(jié)果

      我們比較了使用了權(quán)重計(jì)算方法和未使用該方法的聚類效果:

      方法1:只使用TF-IDF進(jìn)行權(quán)重計(jì)算。

      方法2:TF-IDF基礎(chǔ)上加入基于粒子群算法的權(quán)重計(jì)算規(guī)則的權(quán)重計(jì)算。

      圖7顯示了不同軟件分別使用方法1和方法2后的準(zhǔn)確率,從實(shí)驗(yàn)結(jié)果可以看出,加入權(quán)重后,所有軟件聚類的準(zhǔn)確率都明顯提高,驗(yàn)證了特征單詞所在位置的不同,其所提供的信息不同,需要通過(guò)加入權(quán)重來(lái)調(diào)整特征向量來(lái)提高聚類的效果。

      圖7 不同權(quán)重計(jì)算方法的聚類結(jié)果

      DAKSM方法實(shí)驗(yàn)結(jié)果:經(jīng)過(guò)實(shí)驗(yàn),使用DAKSM方法后每款軟件的總體結(jié)果見(jiàn)表7。

      (2)關(guān)鍵詞提取結(jié)果

      在聚類基礎(chǔ)上,我們獲得了不同類型的缺陷簇,接著我們提取不同簇的關(guān)鍵詞。本文認(rèn)為關(guān)鍵詞提取時(shí)無(wú)用單詞與聚類時(shí)無(wú)用單詞有很大不同,因此本文在進(jìn)行關(guān)鍵詞提取時(shí)選用的是只經(jīng)過(guò)預(yù)處理的缺陷報(bào)告,基于此本文首先

      表7 聚類總結(jié)果

      提取關(guān)鍵詞,然后分析了通用關(guān)鍵詞,在去掉了通用關(guān)鍵詞后,我們提取了不同簇的不同主題以及關(guān)鍵詞。我們?cè)诒?中列舉了firefox中聚類結(jié)果為cluster 0的3個(gè)主題,每個(gè)主題下分別列舉了5個(gè)關(guān)鍵詞,由關(guān)鍵詞得知,cluster 0是關(guān)于安全的問(wèn)題,topic 0和topic 1為登陸或注冊(cè)的身份安全問(wèn)題,topic 2是支付問(wèn)題,這2種主題同屬于安全問(wèn)題。

      表8 主題與關(guān)鍵詞

      4 缺陷分析結(jié)果

      4.1 web軟件缺陷類別與主題

      經(jīng)過(guò)實(shí)驗(yàn)分析,Web程序缺陷主要分安全、功能、崩潰、文件傳輸、前后臺(tái)傳值和頁(yè)面這6類,通過(guò)對(duì)主題和主題詞分析得出每一類下面的不同關(guān)鍵詞,通過(guò)分析整理后部分見(jiàn)表9。

      4.2 web軟件中缺陷數(shù)量關(guān)系

      經(jīng)過(guò)對(duì)實(shí)驗(yàn)結(jié)果的分析發(fā)現(xiàn)由于本文選擇的3款軟件為web軟件,所以頁(yè)面、前后臺(tái)傳值和功能類缺陷較多,而安全類較少,大部分為木馬病毒攻擊或密碼等信息安全。而且大部分缺陷可被分成多個(gè)類別,比如“點(diǎn)擊下載按鈕

      表9 部分缺陷類別與主題

      無(wú)法進(jìn)行下載”也許是因?yàn)轫?yè)面的按鈕不起作用,也可能是前后臺(tái)傳下載路徑有問(wèn)題,還有可能是文件本身不符合下載規(guī)定。經(jīng)過(guò)分析發(fā)現(xiàn)一個(gè)缺陷可能由多個(gè)原因引起,因此在解決缺陷過(guò)程中不能只關(guān)注該缺陷的一方面,要全面分析才能有效地徹底解決缺陷。

      4.3 開(kāi)發(fā)人員建議

      在對(duì)數(shù)據(jù)集進(jìn)行清洗過(guò)程中發(fā)現(xiàn),許多缺陷描述不是很清楚,這造成了缺陷自動(dòng)分析過(guò)程中準(zhǔn)確率降低,同時(shí)也對(duì)修復(fù)人員造成一定困擾,一般情況下摘要是缺陷的高度概括,應(yīng)該聚集了缺陷的所有特征,但對(duì)數(shù)據(jù)集分析發(fā)現(xiàn)只看摘要并不能快速了解缺陷,還需要仔細(xì)閱讀詳細(xì)介紹才能大概了解缺陷的特征,有時(shí)甚至需要分析評(píng)論才能更好讀懂缺陷,這對(duì)修復(fù)人員是一個(gè)挑戰(zhàn),因此建議開(kāi)發(fā)人員寫(xiě)缺陷報(bào)告時(shí)盡量完善缺陷信息以減少分析時(shí)間,并提高開(kāi)發(fā)人員再培訓(xùn)效率。

      5 有效性威脅

      5.1 內(nèi)部有效性威脅

      首先在特征篩選階段,我們選用人工分析的方式分析出大部分web軟件的無(wú)用詞,在特征處理階段也選用人工分析隱藏含義相同的單詞,主觀影響難以消除。其次在關(guān)鍵詞提取過(guò)程中我們選用LDA提取主題詞,每一次提取出的結(jié)果有一定差異,造成實(shí)驗(yàn)難以重復(fù),另外本文只提取出關(guān)鍵詞,下一步打算提取主題以便修復(fù)人員更高效修復(fù)缺陷。最后在評(píng)價(jià)部分,由于該方法主要針對(duì)修復(fù)人員看缺陷報(bào)告困難的問(wèn)題,所以單用準(zhǔn)確率來(lái)評(píng)價(jià)有些單一,下一步打算將結(jié)果呈現(xiàn)給修復(fù)人員,收集一些評(píng)價(jià)數(shù)據(jù),例如理解時(shí)間、清晰度等值進(jìn)行評(píng)價(jià)。

      5.2 外部有效性威脅

      我們選用了3款web軟件作為分析數(shù)據(jù)驗(yàn)證本文提出的方法,有較強(qiáng)的針對(duì)性,并未分析其它類型軟件,下一步打算使用本文方法進(jìn)行多類型軟件缺陷分析。其次為保證實(shí)驗(yàn)的多樣性,本文隨機(jī)選取3款軟件各500個(gè)缺陷進(jìn)行分析,缺陷數(shù)量略少導(dǎo)致某些類型缺陷過(guò)少,聚類過(guò)程中有嚴(yán)重不平衡現(xiàn)象。今后的工作中打算對(duì)更多的缺陷進(jìn)行分析。

      6 結(jié)束語(yǔ)

      軟件行業(yè)的快速發(fā)展給人們生活帶來(lái)簡(jiǎn)便。但是,當(dāng)軟件存在缺陷的時(shí)候就會(huì)造成諸多威脅。因此,如何快速高效解決軟件缺陷是研究者們一直以來(lái)研究的熱點(diǎn)。本文提出了一種基于聚類和關(guān)鍵詞提取的軟件缺陷分析方法,利用K-Means和LDA主題建模技術(shù)分析缺陷報(bào)告,使缺陷理解性更強(qiáng),使修復(fù)人員更有針對(duì)地尋找解決方法以便高效解決缺陷。另外經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證了該方法的可行性。實(shí)驗(yàn)結(jié)果表明該方法能夠?yàn)樾迯?fù)人員提供缺陷的關(guān)鍵信息。

      在未來(lái)的工作中,我們希望統(tǒng)計(jì)更多類型的軟件得到更多類型的缺陷,并使用增量學(xué)習(xí)來(lái)增加缺陷類型,使方法具有較好的魯棒性。另外希望結(jié)合starckoverflow問(wèn)答系統(tǒng),綜合缺陷關(guān)鍵詞和問(wèn)答系統(tǒng)關(guān)鍵詞自動(dòng)推薦出與該類缺陷相關(guān)的修復(fù)方式,以減少修復(fù)人員的修復(fù)時(shí)間。

      猜你喜歡
      準(zhǔn)確率權(quán)重聚類
      乳腺超聲檢查診斷乳腺腫瘤的特異度及準(zhǔn)確率分析
      健康之家(2021年19期)2021-05-23 11:17:39
      不同序列磁共振成像診斷脊柱損傷的臨床準(zhǔn)確率比較探討
      2015—2017 年寧夏各天氣預(yù)報(bào)參考產(chǎn)品質(zhì)量檢驗(yàn)分析
      權(quán)重常思“浮名輕”
      高速公路車牌識(shí)別標(biāo)識(shí)站準(zhǔn)確率驗(yàn)證法
      為黨督政勤履職 代民行權(quán)重?fù)?dān)當(dāng)
      基于DBSACN聚類算法的XML文檔聚類
      基于公約式權(quán)重的截短線性分組碼盲識(shí)別方法
      基于改進(jìn)的遺傳算法的模糊聚類算法
      一種層次初始的聚類個(gè)數(shù)自適應(yīng)的聚類方法研究
      南川市| 驻马店市| 德钦县| 集贤县| 望谟县| 江孜县| 靖边县| 杨浦区| 尚义县| 江孜县| 青田县| 普兰店市| 迁西县| 广河县| 山东省| 乌兰浩特市| 庐江县| 延庆县| 青川县| 磐安县| 镇安县| 防城港市| 嵊州市| 临潭县| 开鲁县| 会东县| 长丰县| 买车| 龙门县| 连南| 凤阳县| 云和县| 龙南县| 青铜峡市| 蚌埠市| 海安县| 娄底市| 新源县| 冀州市| 凤台县| 嫩江县|