• 
    

    
    

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

      基于Word2Vec 的缺陷定位方法研究

      2019-03-05 01:37:40萬瑩張光蘭譚武坤
      現(xiàn)代計(jì)算機(jī) 2019年3期
      關(guān)鍵詞:源代碼文檔準(zhǔn)確率

      萬瑩,張光蘭,譚武坤

      (四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)

      0 引言

      隨著軟件規(guī)模和復(fù)雜度的不斷增加,軟件中出現(xiàn)缺陷是不可避免的。對(duì)于軟件中的缺陷,開發(fā)人員通過對(duì)代碼進(jìn)行調(diào)試然后定位到真正的缺陷語句。然而,軟件調(diào)試是一項(xiàng)既困難又昂貴的活動(dòng)。美國國家標(biāo)準(zhǔn)與技術(shù)研究所在2002 年指出,軟件缺陷每年給美國經(jīng)濟(jì)大約造成595 億美元的損失[1],其中為了找到缺陷對(duì)軟件進(jìn)行測(cè)試和調(diào)試的活動(dòng)占了30-90%的花銷[2]。近年來,越來越多國內(nèi)外的學(xué)者開始研究缺陷定位技術(shù),并取得了許多不錯(cuò)的結(jié)果?,F(xiàn)今對(duì)缺陷定位的方法主要分為兩種:動(dòng)態(tài)定位和靜態(tài)定位。動(dòng)態(tài)定位是通過程序執(zhí)行測(cè)試用例,收集程序執(zhí)行跟蹤信息等進(jìn)行定位,其中基于頻譜的缺陷定位方法研究最多。靜態(tài)定位是通過使用缺陷報(bào)告和代碼進(jìn)行各種形式的分析進(jìn)行缺陷定位[3],研究者主要是使用基于信息檢索的方法進(jìn)行缺陷定位,該方法中與缺陷報(bào)告相似度分?jǐn)?shù)越高的源代碼文件越有可能含有缺陷。雖然動(dòng)態(tài)定位方法準(zhǔn)確率較高,但動(dòng)態(tài)方法通常既耗時(shí)又昂貴,而靜態(tài)方法比較易用,且它的即時(shí)推薦性使其具有吸引力。Ngyuen等人提出了BugScout[4],它使用LDA(Latent Dirichlet Allocation)方法進(jìn)行缺陷定位,幾個(gè)大型數(shù)據(jù)集的結(jié)果顯示了其良好的性能。Zhou 等人[5]提出了BugLocator,它使用了TF-IDF 公式,并加入以前修復(fù)過的相似缺陷的報(bào)告。在對(duì)大約3400 個(gè)bug 的大規(guī)模評(píng)估中,BugLocator 顯示出比BugScout 更強(qiáng)的性能。Ripon[6]等人提出的BLUiR 將缺陷報(bào)告以及源代碼進(jìn)行結(jié)構(gòu)化處理后進(jìn)行定位,得到的定位效果更好。但是傳統(tǒng)的靜態(tài)缺陷定位沒有考慮到缺陷報(bào)告是用自然語言進(jìn)行描述的,因此缺陷報(bào)告與源代碼文件中的代碼會(huì)有詞匯不匹配的問題,如果考慮最極端的情況,源代碼文件和缺陷報(bào)告沒有共同的詞,那么它們?cè)跇?biāo)準(zhǔn)TF-IDF 矢量空間模型中的余弦相似度為0。這也是導(dǎo)致靜態(tài)缺陷定位效率低的原因之一。為了提高缺陷定位的準(zhǔn)確率,本文提出使用項(xiàng)目相關(guān)文檔,如用戶手冊(cè)、項(xiàng)目API 說明文檔等進(jìn)行訓(xùn)練獲得Word2Vec 模型,根據(jù)Word2Vec 模型得到缺陷報(bào)告與源代碼文件之間的相似度,解決缺陷報(bào)告與源代碼文件之間的詞匯鴻溝,在基于信息檢索的缺陷定位方法上進(jìn)一步提高了缺陷的準(zhǔn)確度。

      1 基于Word2Vec模型的缺陷定位

      1.1 問題分析

      目前靜態(tài)缺陷定位方法的研究,如基于信息檢索的缺陷定位主要是通過TF-IDF 對(duì)缺陷報(bào)告和源代碼文件進(jìn)行詞向量化后計(jì)算兩者之間的距離,以判斷出含有缺陷的源代碼文件。由于缺陷報(bào)告大多數(shù)是用自然語言進(jìn)行編寫的,而源代碼文件是由編程語言組成,因此直接將缺陷報(bào)告和源代碼文件進(jìn)行詞向量距離的計(jì)算,將會(huì)導(dǎo)致定位的準(zhǔn)確率降低。如圖1、圖2 分別是與Eclipse 項(xiàng)目的缺陷報(bào)告和對(duì)應(yīng)的缺陷源代碼文件。

      圖1 Bugzilla系統(tǒng)上獲取Eclipse項(xiàng)目的缺陷報(bào)告

      圖2 Eclipse項(xiàng)目源代碼文件

      圖3 、圖4 分別是Eclipse 項(xiàng)目的用戶手冊(cè)和API文檔。從圖中可以看出,圖1 的缺陷報(bào)告中關(guān)于缺陷描述的關(guān)鍵詞與缺陷的描述與真正含有缺陷的源代碼文件PartServiceImpl.java 中的代碼單詞不相關(guān),因此如果直接使用信息檢索技術(shù)計(jì)算將會(huì)判斷兩者不相關(guān)。但根據(jù)圖3、圖4 中對(duì)PartServiceImpl.java 中該功能的介紹,可以判斷BugID=384108 的缺陷報(bào)告與PartServiceImpl.java 中的某些方法在語義上是相關(guān)的。

      為了提高傳統(tǒng)靜態(tài)缺陷定位的準(zhǔn)確率,本文提出可以根據(jù)項(xiàng)目的API 說明文檔,用戶手冊(cè)等相關(guān)文檔判斷缺陷報(bào)告和源代碼文件之間的語義相關(guān)進(jìn)行缺陷定位,通過上下文語義可以很好的解決自然語言與編程語言之間的詞匯鴻溝問題。本文的整體框架如圖5。

      圖4 Eclipse項(xiàng)目API文檔

      圖5 基于Word2Vec缺陷定位方法的整體框架

      1.2 Word2Vec模型簡(jiǎn)介

      Harris[7]等人提出了分布假設(shè),即在同一語境下的詞往往具有相似的含義。這一假設(shè)引發(fā)了許多學(xué)者進(jìn)行研究。Pantel 和Lin[8]將Mij 計(jì)算為wi 和cj 之間的點(diǎn)互信息(PMI),以衡量它們之間的相關(guān)性。Landauer和Dumais[9]提出通過“矢量語義空間”來提取文檔與詞中的概念意義,進(jìn)一步分析文檔與詞之間存在的關(guān)系,即潛在語義分析(LSA)。近年來,人們提出可以使用神經(jīng)網(wǎng)絡(luò)模型直接學(xué)習(xí)向量以此來最優(yōu)地預(yù)測(cè)上下文,這類方法稱為“neural embedding”或“word embedding”[10]。這些模型被成功地應(yīng)用于各種NLP 任務(wù)中[11-13]。在這些模型中,Mikolov 在2013 年提出的Word2Vec 模型[14]因其在訓(xùn)練過程中的簡(jiǎn)單和高效而廣受歡迎。

      Word2Vec 模型主要有兩種訓(xùn)練模型:CBOW、Skip-gram。在文獻(xiàn)[11,13]中,可以得到基于信息檢索的一組自然語言處理任務(wù)中,Skip-gram 模型也明顯優(yōu)于其他傳統(tǒng)方法,因此本文使用的訓(xùn)練模型選擇Skipgram 模型。Skip-gram 模型是根據(jù)當(dāng)前詞來優(yōu)化預(yù)測(cè)出它的上下文的概率,因此其目標(biāo)函數(shù)[15]為式(1)。

      其中,T 是語料庫單詞的總個(gè)數(shù),p(wt+j|wt)是已知當(dāng)前詞wt,預(yù)測(cè)周圍詞的總概率對(duì)數(shù)值。其條件概率函數(shù)p(c|w)的計(jì)算公式[15]如式(2)。

      其中wt 是當(dāng)前詞語的詞向量,wk 是任意詞語的詞向量。

      本文使用用戶手冊(cè)、API 文檔作為語料訓(xùn)練三個(gè)單層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)來建立Word2Vec 模型,通過Word2Vec 模型獲得缺陷報(bào)告與源代碼文件的詞向量表示,由于詞向量附加語義級(jí)別的信息,因此即使是兩句話中有不相似或相同的詞匯,只要二者在語義上大意相同,我們?nèi)云渥R(shí)別為相同。Word2Vec 模型的優(yōu)勢(shì)在于其反映了文本的語義信息,即可以將語義相似的句子識(shí)別出來,而不像TF-IDF 算法一樣需要有相同詞匯才能判斷出文本之間的相似性。通過Word2Vec 模型,我們得到了兩文本的向量表示。

      1.3 詞向量的相似度計(jì)算

      本文使用余弦相似度來度量文本之間的相似程度,即將每?jī)蓚€(gè)文本向量映射到空間中的兩個(gè)線段,且線段均從原點(diǎn)出發(fā),兩條線段相交的夾角大小就可以反映出兩個(gè)文本之間的相似程度。

      給定經(jīng)過Word2Vec 模型計(jì)算后的缺陷報(bào)告B={B1,B2,...,Bn}與源代碼文件S={S1,S2,..,Sn},使用余弦相似度公式計(jì)算B 與S 之間的相似距離。余弦相似度計(jì)算公式如式(3)。

      這是兩個(gè)向量的內(nèi)積,用歐幾里德范數(shù)標(biāo)準(zhǔn)化。其WB 代表一個(gè)缺陷報(bào)告的詞向量,WS 代表一個(gè)源代碼文件的詞向量。本文根據(jù)實(shí)驗(yàn)結(jié)果獲得文本相似閾值,當(dāng)最終的結(jié)果高于閾值時(shí),則判斷兩個(gè)文本相似,若低于此閾值則認(rèn)為這兩個(gè)是不相似的,并將最終計(jì)算所得的余弦值按照降序輸出源代碼文件名,該源代碼列表即為缺陷推薦列表,排名越靠前的源代碼文件越有可能含有缺陷。

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

      本文設(shè)計(jì)的基于Word2Vec 模型的缺陷定位系統(tǒng)原型是以缺陷報(bào)告B 作為輸入,從大量的源代碼文件庫中對(duì)所有的源文件S 進(jìn)行排序,排名越靠前的源代碼文件越有可能含有缺陷,本文使用PyCharm 作為實(shí)驗(yàn)過程中的開發(fā)工具。為了研究本文所提方案是否能提高缺陷定位發(fā)準(zhǔn)確率,本文收集了Eclipse、AspectJ等多個(gè)開源項(xiàng)目數(shù)據(jù)來驗(yàn)證所提方法的有效性,各項(xiàng)目的詳細(xì)信息如表1 所示。

      表1 實(shí)驗(yàn)項(xiàng)目的數(shù)據(jù)

      在進(jìn)行缺陷定位前,本文需要對(duì)缺陷報(bào)告文檔、源代碼文檔以及其他與項(xiàng)目相關(guān)文檔進(jìn)行預(yù)處理。其中對(duì)源代碼文件需要使用JDT 技術(shù)對(duì)其構(gòu)建一棵抽象語法樹(AST),該語法樹的程序結(jié)構(gòu)為:類名、方法名、變量名。本文在Bugzilla 缺陷跟蹤系統(tǒng)中爬蟲獲取的缺陷報(bào)告xml 文檔中含有許多字段,如BugID、summary、description 等,在本文中,我們主要使用缺陷報(bào)告的summary 和description 兩個(gè)部分的文本內(nèi)容。本文使用Python 的nltk 庫對(duì)所有文檔進(jìn)行分詞、去停用詞、詞干化等。處理好的項(xiàng)目用戶手冊(cè)、API 文檔等的信息如表2。

      表2 訓(xùn)練Word2Vec 的數(shù)據(jù)

      本文使用與項(xiàng)目相關(guān)文檔用戶手冊(cè)、API 文檔等數(shù)據(jù)訓(xùn)練Word2Vec 模型。使用Word2Vec 模型獲取缺陷報(bào)告與源代碼文件的詞向量,并使用余弦相似度計(jì)算公式計(jì)算兩者相似度。

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

      本文使用目前靜態(tài)缺陷定位研究中使用的評(píng)價(jià)標(biāo)準(zhǔn)平均準(zhǔn)確率(MAP)和平均排序倒數(shù)(MRR)[6]來對(duì)本文所提方案進(jìn)行評(píng)估。其中MRR 和MAP 值越高,說明缺陷定位技術(shù)的性能越好。

      MRR 是第一個(gè)定位到正確的缺陷源代碼文件位置的倒數(shù)的累加均值,它是通過正確的結(jié)果值在所有搜索結(jié)果中的排名來評(píng)估該方法的結(jié)果。因此MRR的值越高,就代表缺陷定位方法的性能越好。MRR 在本文中的計(jì)算方法為公式(4):

      其中Q 是缺陷報(bào)告的數(shù)量,firsti表示第i 個(gè)缺陷報(bào)告為第一個(gè)含有缺陷的源代碼文件的位置。

      MAP 是指第一個(gè)定位到正確的缺陷源代碼文件的準(zhǔn)確率平均值,因此MAP 的值越高,就代表缺陷定位方法的準(zhǔn)確率越高。MAP 在本文中的計(jì)算為公式(5):

      其中ind(R)表示位于第j 個(gè)源代碼文件是否為真正的含有缺陷的源代碼文件(ind(R)=1 代表為是,0代表否),NB(i)表示查找的第i 個(gè)缺陷報(bào)告的源代碼文件數(shù)量。

      本文用WBugLocator 代表本文所提的基于Word2Vec 模型的缺陷定位方法。缺陷報(bào)告與源代碼文件的相似度分?jǐn)?shù)在[0,1]之間,為了找到合適的相似閾值,本文將相似分?jǐn)?shù)按每0.1 劃分為一個(gè)區(qū)間,并統(tǒng)計(jì)每個(gè)區(qū)間找到的缺陷個(gè)數(shù)。結(jié)果如圖6 所示。

      在圖6 中,可以發(fā)現(xiàn)相似分?jǐn)?shù)大于等于0.75 時(shí)反饋給開發(fā)者的源代碼文件排序列表中含有的缺陷最多,因此本文所提方法的相似閾值為0.75。

      WBugLocator 經(jīng)過大量的實(shí)驗(yàn)后,與BugLocator、BLUiR 兩個(gè)工具進(jìn)行比較的實(shí)驗(yàn)結(jié)果如表3。

      與BugLocator、BLUiR 兩個(gè)工具進(jìn)行對(duì)比的MRR與MAP 的值如圖7、圖8。

      圖6 缺陷報(bào)告與源代碼方法的相似閾值

      表3 WBugLocator 與BUGLOCATOR、BLUIR 工具對(duì)比

      圖7 WBugLocator的MRR值

      實(shí)驗(yàn)結(jié)果表明使用BugLocator、BLUiR 方法和本文的WBugLocator 相比,如對(duì)于AspectJ 項(xiàng)目,使用WBugLocator 方法返回的與缺陷相關(guān)源代碼文件位于Top1 的MAP 值為40%,而使用BugLocator、BLUiR 方法定位到的缺陷只有22%左右。并且對(duì)于返回的Top5 和Top10的文件,WBugLocator 方法計(jì)算得到的MAP 和MRR 數(shù)值也都高于BugLocator、BLUiR 方法的MAP 和MRR。因此整體來說,WBugLocator 方法在四個(gè)項(xiàng)目中的MAP、MRR 均高于BugLocator、BLUiR 兩個(gè)工具,可見本文提出的基于Word2Vec 方法提高了缺陷定位準(zhǔn)確性。

      4 結(jié)語

      本文提出了基于Word2Vec 模型的缺陷定位方法,該方法解決了缺陷報(bào)告與源代碼文件之間詞匯不匹配的問題,實(shí)驗(yàn)結(jié)果證明,本文提出的缺陷定位方法提高了定位準(zhǔn)確率,對(duì)之后的研究具有一定的實(shí)際意義。下一步工作將研究該方法與動(dòng)態(tài)缺陷定位方法相結(jié)合是否能進(jìn)一步提高缺陷定位的準(zhǔn)確度。

      猜你喜歡
      源代碼文檔準(zhǔn)確率
      人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
      有人一聲不吭向你扔了個(gè)文檔
      乳腺超聲檢查診斷乳腺腫瘤的特異度及準(zhǔn)確率分析
      健康之家(2021年19期)2021-05-23 11:17:39
      不同序列磁共振成像診斷脊柱損傷的臨床準(zhǔn)確率比較探討
      基于TXL的源代碼插樁技術(shù)研究
      2015—2017 年寧夏各天氣預(yù)報(bào)參考產(chǎn)品質(zhì)量檢驗(yàn)分析
      高速公路車牌識(shí)別標(biāo)識(shí)站準(zhǔn)確率驗(yàn)證法
      軟件源代碼非公知性司法鑒定方法探析
      基于RI碼計(jì)算的Word復(fù)制文檔鑒別
      揭秘龍湖產(chǎn)品“源代碼”
      宜宾县| 嘉黎县| 东平县| 卓尼县| 梅河口市| 临桂县| 慈利县| 丰宁| 仲巴县| 吉安县| 宜川县| 泗洪县| 建阳市| 阳谷县| 镇江市| 灵山县| 黄山市| 梅河口市| 庆阳市| 郓城县| 连山| 荣成市| 滦南县| 武清区| 舟曲县| 景谷| 尚义县| 许昌县| 天祝| 大连市| 廉江市| 绵阳市| 西安市| 米脂县| 阿图什市| 太仓市| 博湖县| 嘉峪关市| 临沂市| 林芝县| 文安县|