劉 燁 黃金筱 馬于濤
(武漢大學(xué)計(jì)算機(jī)學(xué)院 武漢 430072)(ye_liu@whu.edu.cn)
當(dāng)前,以GitHub(1)https://github.com為代表的互聯(lián)網(wǎng)上開(kāi)源、開(kāi)放的社交化軟件開(kāi)發(fā)環(huán)境已然成形并逐漸流行起來(lái).在這種環(huán)境下以社群(community)為主體的群智化軟件開(kāi)發(fā)方法[1],通過(guò)自由競(jìng)爭(zhēng)與合作創(chuàng)新,有望真正釋放軟件開(kāi)發(fā)者乃至軟件用戶的生產(chǎn)力和創(chuàng)造力(也有學(xué)者稱(chēng)之為“群智之力量”[2]),正在改變或?qū)⒅厮苌虡I(yè)軟件的傳統(tǒng)開(kāi)發(fā)方式[3].例如,繼將.NET框架在GitHub上開(kāi)源后,微軟公司還計(jì)劃把Windows操作系統(tǒng)發(fā)布為開(kāi)源軟件.
互聯(lián)網(wǎng)上的群體協(xié)作被認(rèn)為是這種新型開(kāi)發(fā)方法的主要特點(diǎn)[4].然而,在網(wǎng)絡(luò)社群松散的組織結(jié)構(gòu)(相對(duì)于公司的嚴(yán)格管理)下,如何通過(guò)群體協(xié)作來(lái)確保軟件質(zhì)量就成為一個(gè)重要的研究問(wèn)題.軟件缺陷修復(fù)作為軟件演化與維護(hù)中的重要一環(huán),是目前軟件質(zhì)量保證常用的一種手段.隨著軟件項(xiàng)目規(guī)模的日益增長(zhǎng)(生態(tài)化發(fā)展趨勢(shì)),如何提升缺陷修復(fù)的效率和效果已成為群智化軟件開(kāi)發(fā)與維護(hù)亟待解決的問(wèn)題,受到了學(xué)術(shù)界和工業(yè)界的共同關(guān)注.
絕大多數(shù)的軟件項(xiàng)目通常會(huì)采用缺陷跟蹤系統(tǒng)(bug tracking system, BTS)來(lái)追蹤和管理缺陷的修復(fù)過(guò)程[5],如Bugzilla(2)https://www.bugzilla.org.BTS為追蹤缺陷報(bào)告的狀態(tài)提供了一個(gè)公共平臺(tái).當(dāng)開(kāi)發(fā)者或用戶發(fā)現(xiàn)缺陷后,便可以在BTS中創(chuàng)建相應(yīng)的缺陷報(bào)告并進(jìn)行提交,一旦該缺陷報(bào)告被確認(rèn),它就開(kāi)始了其生命周期,直至最后被修復(fù)而關(guān)閉(closed).在這個(gè)過(guò)程中,缺陷分派(bug triaging)是指將一個(gè)新的缺陷報(bào)告分配給一個(gè)合適的開(kāi)發(fā)者進(jìn)行修復(fù)的活動(dòng)[6].考慮在此期間缺陷報(bào)告會(huì)被開(kāi)發(fā)者評(píng)論、重新分配(reassign)乃至修改,缺陷分派在本質(zhì)上是一個(gè)集群體智慧進(jìn)行協(xié)作的過(guò)程,最后提供修復(fù)者(fixer)推薦服務(wù).
2001-10—2010-12期間,知名開(kāi)源項(xiàng)目Eclipse(3)https://www.eclipse.org在Bugzilla上提交的缺陷報(bào)告超過(guò)33萬(wàn)個(gè),平均每天有90個(gè)缺陷報(bào)告等待處理,而參與Eclipse項(xiàng)目的開(kāi)發(fā)者超過(guò)1 800人.人工分配不僅耗時(shí)耗力,而且容易造成缺陷的重新分配(主要是因?yàn)橹概傻拈_(kāi)發(fā)者不合適).在過(guò)去的數(shù)年中,基于機(jī)器學(xué)習(xí)的自動(dòng)分派方法已取代人工分配方法,減少了缺陷修復(fù)所耗費(fèi)的人力成本和時(shí)間成本.根據(jù)文獻(xiàn)[7]的分析,已有的缺陷自動(dòng)分派方法主要分為3類(lèi):基于文本分類(lèi)(text classification)的方法、基于再分配圖(tossing graph)的方法以及混合方法.其中,基于文本分類(lèi)的自動(dòng)分派方法已成為主流技術(shù),其主要思路是從已修復(fù)的缺陷報(bào)告中學(xué)習(xí)表征缺陷與修復(fù)者之間關(guān)系的文本特征,再針對(duì)新的缺陷報(bào)告預(yù)測(cè)可能的開(kāi)發(fā)者.近年來(lái),隨著深度學(xué)習(xí)在自然語(yǔ)言處理(natural language processing, NLP)領(lǐng)域的成功應(yīng)用,研究者開(kāi)始嘗試?yán)迷~向量化(embedding)和深度學(xué)習(xí)技術(shù)來(lái)進(jìn)一步提高缺陷自動(dòng)分派的準(zhǔn)確率.
然而,在這些方法中常用的卷積神經(jīng)網(wǎng)絡(luò)(con-volutional neural network, CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)也存在一定的局限性.一方面,CNN利用卷積核捕捉文本的局部信息來(lái)構(gòu)建特征,但容易丟失文本的序列信息;另一方面,RNN能捕捉文本的序列信息,但缺乏捕捉文本的局部信息的能力.針對(duì)上述問(wèn)題,本文提出了一種基于混合神經(jīng)網(wǎng)絡(luò)和注意力機(jī)制的缺陷自動(dòng)分派方法Atten-CRNN.該方法利用CNN與RNN各自的優(yōu)點(diǎn)來(lái)充分地學(xué)習(xí)缺陷報(bào)告中的(局部)文本特征與序列特征.此外,該方法也利用注意力機(jī)制學(xué)習(xí)CNN抽取的各個(gè)文本特征的權(quán)重,用于加強(qiáng)文本特征對(duì)最終分類(lèi)效果的影響,從而提高缺陷報(bào)告分配的準(zhǔn)確率.
本文的主要貢獻(xiàn)有3個(gè)方面:
1) 針對(duì)缺陷報(bào)告包含的文本信息,我們提出了一種結(jié)合CNN和RNN各自?xún)?yōu)勢(shì)的混合神經(jīng)網(wǎng)絡(luò)模型,用于更全面地捕獲文本特征和序列特征;
2) 在混合神經(jīng)網(wǎng)絡(luò)模型中引入注意力機(jī)制,通過(guò)學(xué)習(xí)獲得的文本特征對(duì)于分類(lèi)的貢獻(xiàn)程度(權(quán)重),進(jìn)一步提高文本分類(lèi)的效果;
3) 在2個(gè)大型開(kāi)源軟件項(xiàng)目(本質(zhì)上是包含眾多子項(xiàng)目的2個(gè)軟件生態(tài)系統(tǒng))Eclipse和Mozilla(4)https://www.mozilla.org的數(shù)據(jù)集(分別包含20萬(wàn)和22萬(wàn)個(gè)已修復(fù)的缺陷報(bào)告)上進(jìn)行了驗(yàn)證,實(shí)驗(yàn)結(jié)果表明Atten-CRNN在預(yù)測(cè)準(zhǔn)確率方面優(yōu)于選定的基準(zhǔn)模型.
缺陷自動(dòng)分派常用的方法是將缺陷分派問(wèn)題轉(zhuǎn)換為文本分類(lèi)問(wèn)題,再利用機(jī)器學(xué)習(xí)的方法預(yù)測(cè)可能的開(kāi)發(fā)者.Cubranic等人[8]率先從缺陷報(bào)告的標(biāo)題以及評(píng)論字段的文本內(nèi)容中提取關(guān)鍵字作為特征,用詞袋模型(bag of words, BOW)來(lái)表示每個(gè)缺陷報(bào)告,然后訓(xùn)練出基于條件獨(dú)立假設(shè)的樸素貝葉斯(na?ve Bayes, NB)模型.因此,對(duì)于新提交的缺陷報(bào)告,可以將其分配給后驗(yàn)概率最大的開(kāi)發(fā)者.隨后,Anivk等人[6]在Cubranic等人的工作上進(jìn)行了改進(jìn),他們過(guò)濾掉訓(xùn)練集中無(wú)效的缺陷報(bào)告和修復(fù)缺陷次數(shù)低于9次的開(kāi)發(fā)者,并通過(guò)實(shí)驗(yàn)證明了支持向量機(jī)(support vector machine, SVM)模型能夠取得更好的結(jié)果.Xuan等人[9]提出了一種基于半監(jiān)督學(xué)習(xí)的缺陷自動(dòng)分派方法,將最大期望算法(expectation maximization, EM)與NB模型相結(jié)合,用以提升分類(lèi)的性能.此外,基于主題模型(topic model)的方法則利用抽取的主題來(lái)衡量缺陷報(bào)告之間以及缺陷報(bào)告與開(kāi)發(fā)者技能之間的相似性,進(jìn)而給出預(yù)測(cè)結(jié)果.文獻(xiàn)[10-12]對(duì)隱狄利克雷分配(latent Dirichlet allocation, LDA)模型[13]進(jìn)行了改進(jìn),在Eclipse等項(xiàng)目上取得了不錯(cuò)的預(yù)測(cè)效果.
雖然基于傳統(tǒng)機(jī)器學(xué)習(xí)算法的缺陷自動(dòng)分派方法能夠在一定程度上提升工作效率,但仍存在人工構(gòu)建特征、文本表示能力有限等問(wèn)題.近幾年隨著深度學(xué)習(xí)的飛速發(fā)展,研究者開(kāi)始將深度學(xué)習(xí)引入到缺陷分派領(lǐng)域,取得了優(yōu)于傳統(tǒng)機(jī)器學(xué)習(xí)算法的效果.胡星等人[14]提出了一種基于深度學(xué)習(xí)的缺陷分派方法,選取缺陷報(bào)告中的標(biāo)題、描述、所屬產(chǎn)品及組件字段的內(nèi)容作為文本信息,分別利用CNN模型以及長(zhǎng)短期記憶模型(long short term memory,LSTM)進(jìn)行開(kāi)發(fā)者預(yù)測(cè).Lee等人[15]也將CNN模型應(yīng)用于缺陷自動(dòng)分派中,并從工業(yè)應(yīng)用的角度解決了多語(yǔ)言問(wèn)題;與胡星等人工作不同的是,Lee等人考慮了開(kāi)發(fā)者的活躍度,進(jìn)一步提高了預(yù)測(cè)準(zhǔn)確率.類(lèi)似地,宋化志等人[16]也提出了基于CNN模型的缺陷自動(dòng)分配方法,并驗(yàn)證了其效果優(yōu)于SVM和LSTM.Florea等人[17]則采用并行的CNN與RNN來(lái)解決該問(wèn)題,與前面方法不同的是,該方法采用了Paragraph2Vec對(duì)文本進(jìn)行分布式詞袋表示(簡(jiǎn)稱(chēng)PV-DBOW),并利用并行方式加速模型的學(xué)習(xí).
另一方面,席圣渠等人[18]提出了一種基于RNN模型的缺陷分派方法,該方法利用雙向長(zhǎng)短期記憶模型(bi-directional long short term memory,Bi-LSTM)和池化(pooling)的方法來(lái)提取缺陷報(bào)告中的文本特征,再利用LSTM模型提取特定時(shí)刻的開(kāi)發(fā)者的活躍度特征.結(jié)合上述2種特征,使用監(jiān)督學(xué)習(xí)算法進(jìn)行學(xué)習(xí).Mani等人[19]提出了一種基于Bi-LSTM 和注意力機(jī)制的DBRNN-A模型,將缺陷報(bào)告的標(biāo)題與描述作為缺陷報(bào)告的文本內(nèi)容,使用未分配的缺陷報(bào)告作為訓(xùn)練集來(lái)訓(xùn)練特征器,使用已分配的缺陷報(bào)告訓(xùn)練分類(lèi)器,以此來(lái)提高模型的泛化能力.Xi等人[20]提出了一種SeqTriage模型來(lái)進(jìn)行開(kāi)發(fā)者的預(yù)測(cè),該模型是一種Seq2Seq模型,利用缺陷報(bào)告的文本內(nèi)容作為編碼器(encoder)的輸入,得到相應(yīng)的文本特征,再將該文本特征、缺陷報(bào)告提交者、上下文特征作為解碼器(decoder)的輸入,預(yù)測(cè)可能的修復(fù)者.
基于上述分析,與本研究相關(guān)的基于深度學(xué)習(xí)的缺陷自動(dòng)分派相關(guān)工作的總結(jié)如表1所示:
Table 1 Summary of Related Work Based on Deep Learning表1 基于深度學(xué)習(xí)的相關(guān)研究工作總結(jié)
如引言所述,Bugzilla作為一種缺陷跟蹤系統(tǒng),常被一些軟件項(xiàng)目用于追蹤和管理缺陷的修復(fù)過(guò)程.例如在Eclipse項(xiàng)目中,當(dāng)一個(gè)軟件缺陷被發(fā)現(xiàn)時(shí),開(kāi)發(fā)者會(huì)使用缺陷報(bào)告來(lái)記錄軟件缺陷的詳細(xì)信息,并將其提交到Bugzilla系統(tǒng)中.一個(gè)正規(guī)的缺陷報(bào)告(如6807號(hào)(5)https://bugs.eclipse.org/bugs/show_bug.cgi?id=6807)主要包括預(yù)定義字段、缺陷描述字段、缺陷修復(fù)歷史記錄、評(píng)論字段和相關(guān)附件字段.
缺陷報(bào)告的預(yù)定義字段主要包含bug ID(編號(hào))、title(標(biāo)題)、status(狀態(tài))、reported(提交者及提交時(shí)間)、product(所屬產(chǎn)品)、component(所屬組件)、version(版本)、importance(優(yōu)先級(jí)與重要性)等屬性.這些字段描述了軟件缺陷的屬性信息以及狀態(tài)信息,其中部分字段在軟件缺陷生命周期的不同時(shí)段會(huì)發(fā)生改變.
缺陷報(bào)告的描述字段主要包括description(詳細(xì)描述)和comments(評(píng)論),用于對(duì)軟件缺陷進(jìn)行詳細(xì)描述,以及記錄開(kāi)發(fā)者對(duì)解決該缺陷所進(jìn)行的討論與建議.從以往的研究工作來(lái)看,這部分內(nèi)容對(duì)于分配給合適的開(kāi)發(fā)者來(lái)解決給定的軟件缺陷起著重要作用,因而需要加以利用和分析.
缺陷修復(fù)歷史記錄字段主要記錄了缺陷的處理情況及狀態(tài)變化.每條記錄包含Who,When,What,Removed和Added 5個(gè)屬性,描述了開(kāi)發(fā)者對(duì)某一個(gè)軟件缺陷實(shí)施操作的歷史行為.從該歷史記錄中可以獲得軟件缺陷的最終修復(fù)者,以及該缺陷被成功修復(fù)的時(shí)間.此外,相關(guān)附件字段為attachments(附件),主要是用于管理開(kāi)發(fā)者提交的與該軟件缺陷有關(guān)的其他信息.
近年來(lái),注意力機(jī)制被廣泛應(yīng)用于基于深度學(xué)習(xí)的NLP和計(jì)算機(jī)視覺(jué)各個(gè)任務(wù)中.例如,Google在2017年提出了針對(duì)NLP翻譯任務(wù)的Multi-head self-attention模型[21],該模型是一種摒棄了RNN架構(gòu)的Self-Attention,Scaled-Attention作為該模型的一部分(其具體使用情況討論見(jiàn)4.6節(jié)),其計(jì)算:
(1)
在計(jì)算機(jī)視覺(jué)領(lǐng)域,Chen等人對(duì)常用的Soft-Attention進(jìn)行了改進(jìn),提出了Channel-wise-Attention(CWA)和Spatial-Attention(SA)[22]2種新的注意力機(jī)制,并在圖像描述(image captioning)任務(wù)中取得了良好的效果.在該工作中,CWA模塊和SA模塊被添加在CNN模型的池化層和全連接層之間.對(duì)于N個(gè)同樣大小的卷積核而言,經(jīng)過(guò)卷積與池化后,從圖像中抽取的是不同的特征(一種卷積核抽取一種特征).通過(guò)對(duì)不同特征以及目標(biāo)結(jié)果(如通道和位置)進(jìn)行學(xué)習(xí),能得到不同特征圖的貢獻(xiàn)值(即注意力權(quán)重).再將注意力權(quán)重與特征圖進(jìn)行相乘,對(duì)有積極作用的特征圖進(jìn)行強(qiáng)化,對(duì)無(wú)積極作用的特征圖進(jìn)行弱化,從而達(dá)到提高模型效果的目的.CWA模塊的實(shí)現(xiàn)表示:
b=tanh((Wc?v+bc)⊕Whcht-1),
(2)
(3)
不同于CWA計(jì)算各個(gè)通道上特征圖的注意力權(quán)重,SA(其具體使用情況討論見(jiàn)4.6節(jié))計(jì)算同一特征圖中不同像素點(diǎn)(位置)的注意力權(quán)重.通過(guò)將特征圖中不同通道對(duì)應(yīng)位置的值進(jìn)行相乘并求和,將特征圖從三維結(jié)構(gòu)壓縮到二維結(jié)構(gòu),再將各個(gè)位置元素的值映射到0-1之間,即為特征圖中基于位置的注意力權(quán)重.類(lèi)似地,SA模塊的實(shí)現(xiàn):
a=tanh((WsV+bs)⊕Whsht-1),
(4)
α=softmax(Wia+bi),
(5)
最后,將該注意力權(quán)重與原始特征圖進(jìn)行相乘,得到對(duì)應(yīng)的新的特征圖.
本文所提出的基于混合神經(jīng)網(wǎng)絡(luò)模型與注意力機(jī)制的缺陷自動(dòng)分派方法,其整體流程主要包含3個(gè)步驟:
步驟1.數(shù)據(jù)預(yù)處理.對(duì)收集到的缺陷報(bào)告數(shù)據(jù)集進(jìn)行清洗與整理,包含從原始數(shù)據(jù)集中提取每個(gè)缺陷的修復(fù)時(shí)間、修復(fù)者、所屬產(chǎn)品、所屬組件、標(biāo)題、描述以及評(píng)論.實(shí)施的預(yù)處理工作主要包括:
① 在數(shù)據(jù)集中的缺陷所屬產(chǎn)品與所屬組件字段存在大量的專(zhuān)業(yè)術(shù)語(yǔ)縮略詞,如UI,API等.本文對(duì)上述縮略詞進(jìn)行了替換,如使用user interface替換UI.
② 對(duì)缺陷修復(fù)時(shí)間進(jìn)行了時(shí)區(qū)轉(zhuǎn)換,便于在統(tǒng)一的時(shí)間標(biāo)尺上進(jìn)行分析.
③ 將每個(gè)缺陷的標(biāo)題、描述以及評(píng)論整合成一個(gè)文本,并對(duì)其進(jìn)行分詞、去除停用詞、去除數(shù)字與非字母、提取詞干等操作.此外,將所屬產(chǎn)品和所屬組件信息與上述預(yù)處理后的文本進(jìn)行合并,形成最終的缺陷報(bào)告文本內(nèi)容.
步驟2.增量學(xué)習(xí)(incremental learning)與驗(yàn)證.按照缺陷修復(fù)時(shí)間對(duì)數(shù)據(jù)集進(jìn)行升序排序,并將數(shù)據(jù)均分為11份,并采用“十折增量學(xué)習(xí)”[23]的方法進(jìn)行訓(xùn)練與驗(yàn)證.在第1輪時(shí),使用第1份數(shù)據(jù)作為訓(xùn)練集,第2份數(shù)據(jù)作為測(cè)試集;在第2輪時(shí),使用第1份和第2份數(shù)據(jù)作為訓(xùn)練集,第3份數(shù)據(jù)作為測(cè)試集;依此類(lèi)推,到第10輪時(shí),以第1份到第10份數(shù)據(jù)作為訓(xùn)練集,第11份數(shù)據(jù)作為測(cè)試集.該部分包含4步:
① 利用給定的訓(xùn)練集對(duì)分類(lèi)模型進(jìn)行訓(xùn)練.主要通過(guò)CNN模型提取缺陷報(bào)告的文本特征,以及利用RNN模型提取缺陷報(bào)告的序列特征,具體內(nèi)容見(jiàn)3.2.1節(jié).
② 利用注意力機(jī)制對(duì)CNN模型提取出來(lái)的文本特征進(jìn)行進(jìn)一步學(xué)習(xí)與加強(qiáng),并將加強(qiáng)后的文本特征與序列特征結(jié)合,再使用該組合特征進(jìn)行分類(lèi)模型的訓(xùn)練,具體內(nèi)容見(jiàn)3.2.2節(jié)和3.2.3節(jié).
③ 使用測(cè)試集進(jìn)行預(yù)測(cè).將測(cè)試集進(jìn)行同樣的文本處理后作為分類(lèi)模型的輸入,得到所有開(kāi)發(fā)者的概率值排名,然后推薦前k個(gè)開(kāi)發(fā)者作為給定缺陷的候選修復(fù)者.
④ 計(jì)算分類(lèi)模型的評(píng)價(jià)指標(biāo)值.
步驟3.對(duì)分類(lèi)模型的預(yù)測(cè)效果進(jìn)行評(píng)價(jià).由于使用了“十折增量學(xué)習(xí)”方法對(duì)分類(lèi)模型進(jìn)行訓(xùn)練,使用10輪預(yù)測(cè)結(jié)果的均值作為該分類(lèi)模型的最終評(píng)價(jià)效果.
本文所提方法的核心是基于混合神經(jīng)網(wǎng)絡(luò)模型與注意力機(jī)制的缺陷修復(fù)者分類(lèi)模型Atten-CRNN,主要是基于深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)CNN與循環(huán)神經(jīng)網(wǎng)絡(luò)RNN以及注意力機(jī)制CWA模塊,其結(jié)構(gòu)如圖1所示.
Fig.1 Diagram of the Atten-CRNN model圖1 Atten-CRNN模型的結(jié)構(gòu)圖
3.2.1 文本特征抽取
CNN具有善于捕捉文本局部特征(類(lèi)似于N-gram語(yǔ)言模型)的優(yōu)勢(shì),卻很難獲取文本的長(zhǎng)距離語(yǔ)義特征以及文本的序列特征.另一方面,RNN作為一種循環(huán)遞歸模型,能夠捕獲文本的序列特征和進(jìn)行長(zhǎng)距離記憶.因此,本文利用CNN與RNN抽取缺陷報(bào)告的(局部)文本特征以及序列特征.文本特征與序列特征的抽取主要包含3個(gè)步驟:
步驟1.和表1中列舉的方法一樣,本文也利用word2vec[24]進(jìn)行詞向量化.假設(shè)一個(gè)文本的長(zhǎng)度為l,缺陷報(bào)告文本詞匯表大小為D,使用one-hot編碼對(duì)文本進(jìn)行表示,則文本可用0-1矩陣l×D表示.在經(jīng)過(guò)word2vec進(jìn)行詞向量化后(詞向量維度設(shè)置為d),該文本便可使用一個(gè)維度為l×d的矩陣表示.
① 卷積操作.使用3×d,4×d,5×d大小的卷積核對(duì)文本矩陣S進(jìn)行卷積操作,即使用參數(shù)矩陣Wj×d(j=3,4,5)從上向下滑動(dòng)并與文本矩陣進(jìn)行相乘,表示為
Sj=Wj×d·S[i:i+j-1],
(6)
② 池化操作.對(duì)卷積操作后得到的文本特征向量進(jìn)行池化,即對(duì)于每一個(gè)特征向量,保留向量中的最大值作為對(duì)應(yīng)的文本特征:
vj=max(Sj),
(7)
(8)
步驟3.利用LSTM提取序列特征.將經(jīng)過(guò)word2vec詞向量化后的文本向量作為L(zhǎng)STM模型的輸入,可得到l個(gè)輸出結(jié)果{o1,o2,…,ol},選取每個(gè)輸出向量中的最大值來(lái)構(gòu)成LSTM模型抽取的序列特征向量z:
z=(max(o1),max(o2),…,max(ol)).
(9)
3.2.2 利用注意力機(jī)制強(qiáng)化文本特征
CNN模型特有的卷積結(jié)構(gòu)使得不同的卷積核能從文本內(nèi)容中學(xué)習(xí)到不同的文本特征,類(lèi)似于圖像的特征圖.借鑒CWA對(duì)不同通道的特征圖及其關(guān)系進(jìn)行學(xué)習(xí)的思想,本文希望得到各個(gè)文本特征對(duì)于分類(lèi)結(jié)果的貢獻(xiàn)程度,將其作為權(quán)重加入到文本特征中,從而通過(guò)強(qiáng)化對(duì)于分類(lèi)結(jié)果有積極作用的文本特征來(lái)提高最終的修復(fù)者分配準(zhǔn)確率.因此,在CNN模型的最后一層加入改進(jìn)后的CWA來(lái)學(xué)習(xí)文本特征的注意力權(quán)重.該過(guò)程主要分為2個(gè)步驟:
傳統(tǒng)生物課堂教學(xué)主要是以教為中心,教師以知識(shí)傳授者的身份出現(xiàn),是學(xué)生學(xué)習(xí)的主要信息源,并且教師在整個(gè)教育過(guò)程中控制著學(xué)生的學(xué)習(xí)過(guò)程。在傳統(tǒng)教學(xué)中,教師的教學(xué)行為主要表現(xiàn)以下幾個(gè)方面。
1) 權(quán)重(重要程度)的學(xué)習(xí).針對(duì)M個(gè)大小為j的卷積核抽取的文本特征,學(xué)習(xí)各個(gè)文本特征影響分類(lèi)效果的重要程度(即權(quán)重向量aj),由于這里沒(méi)有同時(shí)使用LSTM進(jìn)行序列特征提取,改進(jìn)后的CWA模塊:
cj=tanh(Wj?Vj+bj),
(10)
aj=sigmoid(cj),
(11)
2) 更新文本特征.利用注意力模型學(xué)習(xí)各個(gè)文本特征的重要程度,并將其與原來(lái)的文本特征進(jìn)行相乘,從而獲得更新后的文本特征.
(12)
3.2.3 特征融合與分類(lèi)
進(jìn)一步地,將強(qiáng)化后的文本特征V′=[V3′,V4′,V5′]與序列特征z進(jìn)行融合,輸入到分類(lèi)模型中進(jìn)行預(yù)測(cè),具體操作:
t=concat(V′,z).
(13)
(14)
(15)
最后,將最小化分類(lèi)的交叉信息熵作為損失函數(shù)(如式(15)所示),利用給定的訓(xùn)練集按照算法1訓(xùn)練分類(lèi)模型.
算法1.基于混合神經(jīng)網(wǎng)絡(luò)模型與注意力機(jī)制的缺陷自動(dòng)分派算法.
輸入:訓(xùn)練集TrainingText、訓(xùn)練集標(biāo)簽TrainingLabel;
輸出:Atten-CRNN模型的參數(shù)集合.
/*生成batch樣本集*/
① {(Batch_Xs,Batch_Ys)}=batches_
generator(TrainingText,TrainingLabel);
② FORBatch_X,Batch_YIN {(Batch_Xs,Batch_Ys)}
/*詞嵌入操作*/
③X=embedding(Batch_X);
/*CNN模型提取文本特征*/
④Conv_X=relu(W1?X+B1);
⑤Pool_X=max_pool(Conv_X);
/*CWA學(xué)習(xí)文本特征權(quán)重*/
⑥Tmp_C=tanh(W2?Pool_X+B2);
⑦Weight_C=sigmoid(Tmp_C);
⑧Weight_X=Wight_C·Pool_X;
⑨Feature_CNN=concatenate(Weight_X);
/*RNN模型(LSTM)提取序列特征*/
⑩Outputs=LSTM(X);
/*特征組合*/
Feature_RNN);
/*分類(lèi)器訓(xùn)練*/
Function并更新變量:W1,B1,W2,
B2,W3,B3;
本文使用Bugzilla中關(guān)于Eclipse與Mozilla兩個(gè)大型軟件項(xiàng)目(軟件生態(tài)系統(tǒng))的歷史缺陷報(bào)告數(shù)據(jù)進(jìn)行驗(yàn)證,原始的實(shí)驗(yàn)數(shù)據(jù)集(6)https://github.com/ssea-lab/BugTriage來(lái)源于文獻(xiàn)[25],其概要情況如表2所示.在該數(shù)據(jù)集中,所有收集的缺陷報(bào)告均為已修復(fù)的,即狀態(tài)為VERIFIED、決議(resolution)為FIXED.
Table 2 Experimental Dataset Used for Bug Fixer Classification表2 缺陷修復(fù)者分類(lèi)實(shí)驗(yàn)數(shù)據(jù)集
該數(shù)據(jù)集中包含關(guān)于Eclipse與Mozilla兩個(gè)項(xiàng)目的缺陷描述信息(包括缺陷編號(hào)、缺陷所屬組件、缺陷所屬產(chǎn)品等信息),文本信息(包括標(biāo)題、描述與評(píng)論),以及缺陷修復(fù)歷史記錄(包括修復(fù)時(shí)間、修復(fù)者、缺陷狀態(tài)變化等).對(duì)于缺陷報(bào)告的類(lèi)別設(shè)定,本文將最后一個(gè)解決缺陷的開(kāi)發(fā)者作為最終的類(lèi)別標(biāo)簽(即修復(fù)者),而不是考慮所有在缺陷分派過(guò)程中出現(xiàn)的開(kāi)發(fā)者以及發(fā)表過(guò)評(píng)論的開(kāi)發(fā)者.雖然這是一個(gè)群體協(xié)作的過(guò)程,但最終的修復(fù)者是唯一的.此外,開(kāi)源軟件社區(qū)中的開(kāi)發(fā)者流失現(xiàn)象是普遍存在的,會(huì)對(duì)缺陷修復(fù)者的推薦效果造成一定的影響.因此,為規(guī)避這種影響帶來(lái)的風(fēng)險(xiǎn),本研究做了假設(shè):這2個(gè)大型項(xiàng)目有長(zhǎng)期穩(wěn)定的核心開(kāi)發(fā)和維護(hù)人員.
根據(jù)表1的分析,深度學(xué)習(xí)模型在Eclipse等數(shù)據(jù)集上的分類(lèi)效果要明顯優(yōu)于NB,SVM等傳統(tǒng)的機(jī)器學(xué)習(xí)算法[6,8,25].此外,word2vec在抽取文本特征方面要優(yōu)于LDA和詞頻-反文檔頻率(term frequency-inverse document frequency, tf-idf)[26]技術(shù).因此,我們將近3年提出的基于CNN,RNN和注意力機(jī)制的缺陷自動(dòng)分派方法作為基準(zhǔn)方法(主要包括3類(lèi))來(lái)驗(yàn)證本文所提方法的有效性.
1) 基于CNN模型的缺陷自動(dòng)分派方法.這類(lèi)方法的核心是設(shè)計(jì)CNN架構(gòu)的(文本)分類(lèi)模型,相關(guān)工作主要包括文獻(xiàn)[14-17],而它們之間最大的區(qū)別在于CNN模型的具體實(shí)現(xiàn),如卷積層、池化層、參數(shù)調(diào)優(yōu)等.因此,在本文中我們將CNN模型作為一類(lèi)基準(zhǔn)方法,而不再特指某篇具體的文獻(xiàn).
2) 基于RNN模型的缺陷自動(dòng)分派方法.RNN因其鏈?zhǔn)竭f歸結(jié)構(gòu)能夠處理序列數(shù)據(jù),并且能夠捕獲文本的序列特征和進(jìn)行長(zhǎng)距離記憶,在NLP任務(wù)中具有天然的優(yōu)勢(shì).于是,文獻(xiàn)[14,17-18]都提出了使用LSTM架構(gòu)的分類(lèi)模型來(lái)解決缺陷分派問(wèn)題.由于文本中包含的上下文信息也在一定程度上影響模型的分類(lèi)效果,一些已有工作[18-19]嘗試使用Bi-LSTM架構(gòu)的分類(lèi)模型,并在相關(guān)任務(wù)中被證明其效果優(yōu)于LSTM模型.
3) 基于深度學(xué)習(xí)和注意力機(jī)制的缺陷自動(dòng)分派方法.例如文獻(xiàn)[19]利用Bi-LSTM架構(gòu)和注意力機(jī)制訓(xùn)練預(yù)測(cè)模型,而文獻(xiàn)[20]則使用Encoder-Decoder架構(gòu)和注意力機(jī)制來(lái)提取對(duì)分類(lèi)更有用的文本特征.如本節(jié)所述,我們也將不同類(lèi)型的神經(jīng)網(wǎng)絡(luò)架構(gòu)和注意力機(jī)制組成的模型作為一類(lèi)基準(zhǔn)方法.
參考文獻(xiàn)[8,16,27-28],本文采用準(zhǔn)確率(命中率)作為缺陷自動(dòng)分派方法分類(lèi)結(jié)果的評(píng)價(jià)指標(biāo).在這里準(zhǔn)確率是指,對(duì)于給定的測(cè)試數(shù)據(jù)集,缺陷自動(dòng)分派方法正確分類(lèi)的缺陷報(bào)告數(shù)與總?cè)毕輬?bào)告數(shù)之比,定義:
(16)
其中,Accuracyk表示Top-k的準(zhǔn)確率,Nk表示缺陷報(bào)告中分類(lèi)正確的缺陷報(bào)告數(shù),N表示缺陷報(bào)告總數(shù).選取預(yù)測(cè)分?jǐn)?shù)排名前k的開(kāi)發(fā)者作為候選修復(fù)者,如果其中存在與真實(shí)標(biāo)簽相同的結(jié)果,那么分類(lèi)正確.例如,Top-5是指為某個(gè)缺陷選取預(yù)測(cè)出的前5名開(kāi)發(fā)者,若其中存在實(shí)際修復(fù)者,則分類(lèi)正確.
此外,本文也使用浮點(diǎn)運(yùn)算次數(shù)(floating point operations,FLOPs)和參數(shù)量#Parameters這2個(gè)常用量化指標(biāo)來(lái)評(píng)估不同方法的(時(shí)間)效率.在確定的硬件資源條件下,方法的效率與計(jì)算開(kāi)銷(xiāo)成反比.相關(guān)結(jié)果使用TensorFlow(7)https://www.tensorflow.org中相應(yīng)的函數(shù)計(jì)算得到.
本文所有實(shí)驗(yàn)是在Dell T5810 Precision工作站上進(jìn)行的.該工作站硬件配置如下:8核Intel Xeon E5-1620 V3 處理器、16 GB內(nèi)存、華碩GTX 1080顯卡;其軟件環(huán)境配置為:Ubuntu 16.04(64位)操作系統(tǒng),Python 3.6.7語(yǔ)言及編程環(huán)境,TensorFlow 1.1.0、CUDA(Compute Unified Device Architecture)8.0深度學(xué)習(xí)工具集,以及NLTK(8)https://www.nltk.org3.2.2 NLP工具.
為保證對(duì)比實(shí)驗(yàn)的一致性和公平性,實(shí)驗(yàn)中采用word2vec模型作為詞向量模型,并設(shè)置詞向量維度為300;CNN架構(gòu)模型的卷積核的大小均設(shè)置為3,4,5,每種大小的卷積核的個(gè)數(shù)設(shè)置為150[16];對(duì)于RNN架構(gòu)模型,設(shè)置其隱藏神經(jīng)元個(gè)數(shù)為150;各種模型均采用Dropout方法進(jìn)行正則化處理,取值為0.5;激活函數(shù)采用線性整流函數(shù)(rectified linear unit, ReLU);其他參數(shù)均為所使用軟件工具的默認(rèn)設(shè)置.
4.5.1 不考慮注意力機(jī)制的對(duì)比結(jié)果
根據(jù)4.2節(jié)的分析,選取CNN,LSTM,Bi-LSTM 3種架構(gòu)的分類(lèi)模型作為基準(zhǔn)模型,與CRNN(Atten-CRNN不考慮注意力的變體)進(jìn)行對(duì)比實(shí)驗(yàn).對(duì)4種模型均采用“十折增量學(xué)習(xí)”的模式進(jìn)行訓(xùn)練,并使用10輪預(yù)測(cè)準(zhǔn)確率的均值作為最終的評(píng)價(jià)結(jié)果,如表3所示.由于篇幅限制,這里只展示CRNN模型在10輪中的所有預(yù)測(cè)結(jié)果,如表4所示.
從表3可以看出,在Eclipse和Mozilla項(xiàng)目中,CRNN模型在Top-1~Top-5上的預(yù)測(cè)準(zhǔn)確率均高于3種基準(zhǔn)模型.相對(duì)于Bi-LSTM模型而言,CRNN模型準(zhǔn)確率的提升幅度最大.在Eclipse項(xiàng)目中,CRNN模型在Top-1~Top-5上比Bi-LSTM模型分別提升了31.94%,30.74%,29.70%,29.49%和17.72%;在Mozilla項(xiàng)目中,前者比后者的預(yù)測(cè)準(zhǔn)確率,提升了59.42%,49.03%,45.02%,38.21%和35.47%.
Table 3 Performance Comparison of Four Classification Models on the Experimental Dataset表3 4種模型在實(shí)驗(yàn)數(shù)據(jù)集上的效果比較
Note: Numbers shown in bold font indicate the best prediction results.
Table 4 Prediction Results of CRNN in the ten-fold Incremental Learning Process表4 CRNN模型在“十折增量學(xué)習(xí)”中的預(yù)測(cè)結(jié)果 %
此外,就方法的效率而言,從FLOPs和參數(shù)量2個(gè)指標(biāo)(值越小越好)來(lái)看,CRNN模型要優(yōu)于Bi-LSTM模型,但比LSTM模型略差,也不如CNN模型.考慮到上述這些模型使用了相同的詞向量方法(word2vec),在計(jì)算表3中的參數(shù)量時(shí)并沒(méi)有包含嵌入層的參數(shù)量(14.180×106).
雖然文獻(xiàn)[14,18]的實(shí)驗(yàn)結(jié)果表明,在解決基于文本分類(lèi)的缺陷自動(dòng)分派問(wèn)題上,RNN架構(gòu)的分類(lèi)模型能取得優(yōu)于傳統(tǒng)機(jī)器學(xué)習(xí)算法的預(yù)測(cè)效果,并且與CNN架構(gòu)分類(lèi)模型的效果沒(méi)有明顯的差別.然而,根據(jù)本文的實(shí)驗(yàn)結(jié)果,LSTM模型的預(yù)測(cè)效果要明顯劣于CNN模型,但仍然優(yōu)于Bi-LSTM模型.這可能是因?yàn)閿?shù)據(jù)集中缺陷報(bào)告的文本內(nèi)容,特別是描述及評(píng)論字段,包含了大量的非正式化的語(yǔ)言表述,導(dǎo)致其上下文關(guān)聯(lián)性較弱,在一定程度上削弱了文本的序列特征.
上述推斷也可以在CRNN模型與CNN模型分類(lèi)效果的對(duì)比中得到驗(yàn)證.相對(duì)于CNN模型而言,CRNN模型還抽取了文本的序列特征,但在Top-1~Top-5上準(zhǔn)確率的提升幅度,在Eclipse中的范圍變化從Top-4的4.80%到Top-5的6.81%,在Mozilla中的范圍變化從Top-5的4.09%到Top-1的10.01%.上述結(jié)果表明抽取的序列特征會(huì)影響最終的預(yù)測(cè)結(jié)果,但是對(duì)分類(lèi)效果的影響有限.
4.5.2 基于注意力機(jī)制的對(duì)比結(jié)果
進(jìn)一步地,為了驗(yàn)證注意力機(jī)制是否有助于提升分類(lèi)模型的預(yù)測(cè)效果,仍舊選取CNN,LSTM,Bi-LSTM 3種架構(gòu)的分類(lèi)模型作為骨架(backbone),然后引入注意力機(jī)制,與本文所提出的Atten-CRNN模型進(jìn)行對(duì)比實(shí)驗(yàn),評(píng)價(jià)方法與4.5.1節(jié)中的一致.4種基于注意力機(jī)制的分類(lèi)模型在實(shí)驗(yàn)數(shù)據(jù)集上的效果對(duì)比結(jié)果表5所示.由于篇幅限制,這里也只展示本文所提出的Atten-CRNN模型在10輪中的所有預(yù)測(cè)結(jié)果,如表6所示.
Table 5 Performance Comparison of Four Attention-based Classification Models on the Experimental Dataset表5 4種基于注意力機(jī)制的模型在實(shí)驗(yàn)數(shù)據(jù)集上的效果對(duì)比
Note: Numbers shown in bold font indicate the best prediction results.
從表5可以看出,本文所提出的Atten-CRNN模型在2個(gè)項(xiàng)目中的準(zhǔn)確率(Top-1~Top-5)均明顯高于3種基準(zhǔn)模型.比較而言,Atten-CRNN模型的準(zhǔn)確率明顯高于Bi-LSTM+Attention模型,并且在Eclipse項(xiàng)目中,Atten-CRNN模型的準(zhǔn)確率在Top-1~Top-5上較Bi-LSTM+Attention模型分別提升了108.09%,77.47%,61.81%,53.79%和48.63%;在Mozilla項(xiàng)目中,前者比后者的預(yù)測(cè)準(zhǔn)確率提升了170.30%,135.21%,116.92%,105.26%和97.08%.對(duì)于CNN+Attention而言,Atten-CRNN的準(zhǔn)確率也仍有提升.其中,在Eclipse項(xiàng)目中,Atten-CRNN模型在Top1~Top-5上的提升幅度分別為5.31%,3.69%,5.72%,4.70%和4.88%;在Mozilla項(xiàng)目中,該模型的預(yù)測(cè)準(zhǔn)確率分別提升了3.31%,5.54%,5.95%,5.53%和4.99%.因此,引入注意力機(jī)制后,Atten-CRNN模型可以更好地捕捉對(duì)分類(lèi)任務(wù)有積極作用的文本特征,通過(guò)對(duì)有積極作用的文本特征進(jìn)行加強(qiáng),從而提升預(yù)測(cè)的準(zhǔn)確率.
通過(guò)比較表3和表5可以發(fā)現(xiàn),引入注意力機(jī)制后,所有模型的FLOPs和參數(shù)量2個(gè)指標(biāo)的值都出現(xiàn)了不同程度的增長(zhǎng).這表明使用注意力機(jī)制會(huì)增加算力和時(shí)間的開(kāi)銷(xiāo),在一定程度上降低效率.總的來(lái)說(shuō),Atten-CRNN模型在效率方面要優(yōu)于使用注意力機(jī)制的Bi-LSTM模型,但比使用注意力機(jī)制的LSTM模型略差,也不如使用注意力機(jī)制的CNN模型,這與4.5.1節(jié)中的結(jié)果是吻合的.
本節(jié)主要用于討論注意力機(jī)制的位置選擇(即使用注意力機(jī)制用于加強(qiáng)文本特征還是序列特征)和種類(lèi)選擇對(duì)缺陷自動(dòng)分派方法準(zhǔn)確率的影響.為保證實(shí)驗(yàn)的一致性,這里采用了與4.4節(jié)相同的參數(shù)配置.
4.6.1 注意力機(jī)制的位置選擇
理論上,注意力機(jī)制可用于單獨(dú)加強(qiáng)文本特征、單獨(dú)加強(qiáng)序列特征,或者同時(shí)加強(qiáng)二者.分別對(duì)混合模型CRNN中的CNN層添加CWA機(jī)制(圖2中用“Text feature”表示),對(duì)RNN層添加CWA機(jī)制(圖2中用“Sequence feature”表示),同時(shí)對(duì)CNN層與RNN層添加CWA機(jī)制(圖2中用“Both”表示),在Top-5上的預(yù)測(cè)結(jié)果如圖2所示:
Fig.2 Effect of the location of attention on the Top-5 prediction results圖2 注意力機(jī)制的位置對(duì)Top-5預(yù)測(cè)結(jié)果的影響
如圖2所示,不論是在Eclipse項(xiàng)目中還是在Mozilla項(xiàng)目中,單獨(dú)使用CWA注意力機(jī)制用于強(qiáng)化文本特征的分類(lèi)效果最好(分別達(dá)到了63.31%和49.00%),但是單獨(dú)強(qiáng)化序列特征的分類(lèi)效果相對(duì)較差,而同時(shí)強(qiáng)化文本特征與序列特征的分類(lèi)效果與單獨(dú)強(qiáng)化序列特征的效果相當(dāng)(61.80%對(duì)61.46%和48.25%對(duì)48.47%).由于缺陷報(bào)告中存在大量的專(zhuān)業(yè)術(shù)語(yǔ)以及非正規(guī)語(yǔ)法,使得缺陷報(bào)告文本內(nèi)容的序列特征較弱,使用注意力機(jī)制對(duì)其進(jìn)行加強(qiáng)的效果并不明顯.然而,使用注意力機(jī)制對(duì)文本特征進(jìn)行學(xué)習(xí)并加強(qiáng),能夠進(jìn)一步提高缺陷自動(dòng)分派的預(yù)測(cè)準(zhǔn)確率.
4.6.2 注意力機(jī)制的種類(lèi)選擇
可用于強(qiáng)化文本特征的注意力機(jī)制主要包括Self-Attention,Spatial-Attention以及CWA,不同的注意力機(jī)制可能對(duì)預(yù)測(cè)準(zhǔn)確率產(chǎn)生不同的影響,在2個(gè)項(xiàng)目中Top-5上的效果分析結(jié)果如圖3所示:
Fig.3 Effects of three attention mechanisms on the Top-5 prediction results圖3 3種注意力機(jī)制對(duì)Top-5預(yù)測(cè)結(jié)果的影響
在2個(gè)項(xiàng)目中,Atten-CRNN模型在使用CWA時(shí)的準(zhǔn)確率最高、在使用Self-Attention時(shí)的準(zhǔn)確率最低,前者比后者在2個(gè)項(xiàng)目上分別提高了40.83%與28.85%,而在使用Spatial-Attention時(shí)的效果稍遜于使用CWA.通過(guò)對(duì)3種注意力機(jī)制進(jìn)行分析可知,CWA用于對(duì)不同文本特征進(jìn)行注意力權(quán)重的學(xué)習(xí);Self-Attention側(cè)重于學(xué)習(xí)文本特征之間的相關(guān)關(guān)系,而這種關(guān)系對(duì)于分類(lèi)效果并無(wú)明顯促進(jìn)作用;Spatial-Attention主要是學(xué)習(xí)同一個(gè)文本特征內(nèi)的位置關(guān)系.在序列特征對(duì)預(yù)測(cè)結(jié)果影響不大的情況下,文本特征內(nèi)的位置關(guān)系對(duì)于模型的分類(lèi)效果也有較大影響(接近使用CWA的效果),在后續(xù)的研究中應(yīng)加以利用.
本文結(jié)合CNN,RNN和注意力機(jī)制的優(yōu)點(diǎn),提出了一種基于混合神經(jīng)網(wǎng)絡(luò)模型與注意力機(jī)制的缺陷自動(dòng)分類(lèi)模型Atten-CRNN,并在Eclipse和Mozilla兩個(gè)大型軟件項(xiàng)目中驗(yàn)證了其有效性.但是,本文所提出的方法及相關(guān)結(jié)論仍舊存在一些潛在的威脅(threat).
對(duì)于內(nèi)部效度(internal validity)的威脅主要包括模型的構(gòu)建和注意力機(jī)制的使用.Atten-CRNN模型中的CNN層結(jié)構(gòu)較為簡(jiǎn)單,僅使用了一層的卷積結(jié)構(gòu),而近年來(lái)深度CNN憑借其深層結(jié)構(gòu)能夠更好地捕獲特征,在計(jì)算機(jī)視覺(jué)和NLP各個(gè)任務(wù)中均有著良好的表現(xiàn).因此,Atten-CRNN模型的CNN層還有進(jìn)一步的提升空間.對(duì)于強(qiáng)化文本特征的注意力機(jī)制,本文僅選取了3種流行的注意力模型進(jìn)行實(shí)驗(yàn)驗(yàn)證,不能否認(rèn)除了這3種模型外,可能存在其他效果更好的注意力模型.此外,實(shí)驗(yàn)中各類(lèi)參數(shù)的設(shè)置也是一個(gè)不容忽視的內(nèi)部效度威脅.在本文中,部分參數(shù)是參考以往文獻(xiàn)的結(jié)果,部分參數(shù)是基于所使用軟件工具的默認(rèn)設(shè)置,還有部分參數(shù)是針對(duì)給定數(shù)據(jù)集進(jìn)行了微調(diào)(fine-tuning).這些參數(shù)的改變可能會(huì)影響實(shí)驗(yàn)結(jié)果.
對(duì)于外部效度(external validity)的威脅主要包括所提方法的通用性.由于本文僅使用了Eclipse與Mozilla兩個(gè)項(xiàng)目的數(shù)據(jù)進(jìn)行實(shí)驗(yàn),無(wú)法保證所提方法在解決其他項(xiàng)目的缺陷分派問(wèn)題時(shí)同樣也具有最好的效果,其通用性還有待進(jìn)一步驗(yàn)證.此外,在缺陷修復(fù)過(guò)程中存在由多個(gè)開(kāi)發(fā)者共同完成修復(fù)工作的情況,文獻(xiàn)[20,23]采用了再分配圖[28-29]的方式進(jìn)行多個(gè)開(kāi)發(fā)者的預(yù)測(cè),且預(yù)測(cè)召回率(recall)明顯高于純文本分類(lèi)方法.這類(lèi)工作的主要思路是將缺陷分派看作是由多個(gè)開(kāi)發(fā)者協(xié)作完成的一個(gè)過(guò)程,從而歸結(jié)為多標(biāo)簽分類(lèi)問(wèn)題.考慮到相關(guān)的開(kāi)發(fā)者在找到最終修復(fù)者的過(guò)程中都發(fā)揮了作用,因此通常一次性推薦一群可能的開(kāi)發(fā)者(有可能是修復(fù)者,也有可能是負(fù)責(zé)再分配給修復(fù)者的開(kāi)發(fā)者),而從確保獲得較高的召回率.但是,這種做法不同于本文的研究思路,即直接推薦可能的修復(fù)者(單標(biāo)簽分類(lèi)).這也是本文沒(méi)有將文獻(xiàn)[20]提出的方法作為基準(zhǔn)方法的原因.但是,未來(lái)可將本文方法與再分配圖進(jìn)行結(jié)合,來(lái)進(jìn)一步提高預(yù)測(cè)的準(zhǔn)確率.
在群智化軟件開(kāi)發(fā)時(shí)代,提高缺陷修復(fù)效率與效果是確保軟件質(zhì)量的一種重要手段.其中,缺陷自動(dòng)分派是一種典型的群體協(xié)作活動(dòng),其輸出是修復(fù)者推薦服務(wù),蘊(yùn)含了專(zhuān)家智慧和機(jī)器智能.已有研究雖然嘗試使用不同的深度學(xué)習(xí)模型來(lái)解決缺陷自動(dòng)分派中的文本特征提取問(wèn)題,但也存在各自的不足.因此,本文提出了一種基于混合神經(jīng)網(wǎng)絡(luò)與注意力機(jī)制的缺陷自動(dòng)分派方法Atten-CRNN,充分利用CNN、RNN和注意力機(jī)制的優(yōu)點(diǎn),更全面、更合理地捕獲缺陷報(bào)告中的文本特征,用于預(yù)測(cè)可能的開(kāi)發(fā)者進(jìn)行缺陷修復(fù).在Eclipse和Mozilla兩個(gè)大型的知名軟件開(kāi)源項(xiàng)目中進(jìn)行了實(shí)證研究,實(shí)驗(yàn)結(jié)果表明,Atten-CRNN模型的預(yù)測(cè)準(zhǔn)確率高于基于CNN架構(gòu)和RNN架構(gòu)的分類(lèi)模型,從而驗(yàn)證了該模型在處理缺陷自動(dòng)分派問(wèn)題上的有效性.
未來(lái)的研究工作主要包括2個(gè)方面:1)在更多的生態(tài)化開(kāi)源軟件項(xiàng)目中驗(yàn)證本文所提方法的通用性和有效性.2)充分利用開(kāi)發(fā)者之間的各種協(xié)作或社交關(guān)系,如再分配關(guān)系、郵件通信關(guān)系、GitHub上的關(guān)注(follow)關(guān)系等,構(gòu)建基于文本分類(lèi)和關(guān)系網(wǎng)絡(luò)的混合模型,并綜合考慮開(kāi)發(fā)者的活躍程度、工作狀態(tài)等特征,從而進(jìn)一步提高缺陷分派的準(zhǔn)確率.
致謝在此向?qū)Ρ疚墓ぷ魈岢鰧氋F評(píng)審意見(jiàn)的審稿專(zhuān)家和編輯表示衷心地感謝,并向在本文實(shí)驗(yàn)過(guò)程中給予技術(shù)支持的宋化志同學(xué)、耿嘯同學(xué)表示感謝!