• 
    

    
    

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

      基于深度文本摘要的開(kāi)源軟件缺陷挖掘研究

      2022-08-15 07:10:28汶東震張帆TADESSEMichaelMesfin徐博林鴻飛楊亮林原
      關(guān)鍵詞:軟件缺陷開(kāi)源向量

      汶東震,張帆,TADESSE Michael Mesfin,徐博,林鴻飛,楊亮,林原

      (1.大連理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,遼寧 大連 116024;2.大連理工大學(xué) 人文與社會(huì)科學(xué)學(xué)部,遼寧 大連 116024;3.大連理工大學(xué) 軟件學(xué)院,遼寧 大連 116024)

      0 引言

      自軟件系統(tǒng)產(chǎn)生伊始,軟件缺陷(Software Defeat/Bug)始終伴隨在各類軟件開(kāi)發(fā)與使用過(guò)程中。輕微的軟件缺陷會(huì)導(dǎo)致用戶體驗(yàn)不佳、系統(tǒng)效率降低等問(wèn)題;而嚴(yán)重的軟件缺陷則會(huì)對(duì)社會(huì)經(jīng)濟(jì)安全穩(wěn)定產(chǎn)生重大影響(如:千年蟲(chóng)問(wèn)題、北美電網(wǎng)控制系統(tǒng)問(wèn)題、蘇聯(lián)核預(yù)警系統(tǒng)誤報(bào)等)。因此針對(duì)軟件缺陷的識(shí)別和修復(fù)逐漸成為軟件工程研究的重要內(nèi)容。

      典型的軟件開(kāi)發(fā)過(guò)程可以分為兩個(gè)嚴(yán)密組織的重要階段:軟件開(kāi)發(fā)與軟件維護(hù)。如圖1所示,軟件工程的核心是為用戶提供良好穩(wěn)定的軟件系統(tǒng),在軟件開(kāi)發(fā)過(guò)程中經(jīng)歷用戶需求分析、軟件設(shè)計(jì)和軟件編碼開(kāi)發(fā)三個(gè)環(huán)節(jié)不斷迭代。當(dāng)軟件系統(tǒng)具備一定規(guī)模時(shí),測(cè)試人員針對(duì)性地對(duì)軟件系統(tǒng)進(jìn)行測(cè)試并反饋軟件缺陷問(wèn)題,再交由開(kāi)發(fā)者進(jìn)行修復(fù)。在測(cè)試—修復(fù)迭代過(guò)程中逐漸形成穩(wěn)定可用的軟件系統(tǒng)最終交付用戶。在此過(guò)程中,軟件測(cè)試環(huán)節(jié)負(fù)責(zé)盡可能多地發(fā)現(xiàn)軟件缺陷從而針對(duì)性地進(jìn)行解決。測(cè)試過(guò)程包括:?jiǎn)卧獪y(cè)試、回歸測(cè)試、功能性測(cè)試、安全性測(cè)試等多個(gè)方面。而受限于軟件交付期限與測(cè)試人員人力成本,交付后的軟件系統(tǒng)仍可能存在大量缺陷。

      圖1 軟件工程整體流程Fig.1 A workflow of software engineering

      而開(kāi)源軟件(Open Source Software)運(yùn)動(dòng)的興起則為軟件開(kāi)發(fā)和維護(hù)提供了全新的理論指導(dǎo)。以Linux系統(tǒng)為代表的一系列成功且優(yōu)秀的開(kāi)源軟件表明,基于少數(shù)核心開(kāi)發(fā)者主導(dǎo)、部分貢獻(xiàn)者助力、大量外部人員參與的“集市”式開(kāi)發(fā)流程也能夠產(chǎn)生極為精密并且穩(wěn)定可用的軟件系統(tǒng)。其中Linux系統(tǒng)的開(kāi)發(fā)者Linus針對(duì)開(kāi)源軟件維護(hù)提出了Lnius定律:“足夠多的眼睛關(guān)注,就可讓所有問(wèn)題浮現(xiàn)”(Given enough eyeballs,all bugs are shallow)。這一軟件維護(hù)原則除了基于開(kāi)放源代碼的代碼審查之外,開(kāi)源軟件的大量用戶主動(dòng)地或被動(dòng)地參與到軟件測(cè)試維護(hù)過(guò)程中來(lái)。

      如圖2所示,以開(kāi)源軟件協(xié)作平臺(tái)Github為例,平臺(tái)中每個(gè)開(kāi)源項(xiàng)目均設(shè)有“問(wèn)題”(Issue)板塊,以便于開(kāi)發(fā)者與使用者針對(duì)開(kāi)源軟件項(xiàng)目中包含的問(wèn)題進(jìn)行討論交流。這種社區(qū)對(duì)話式的討論交流一定程度上取代了傳統(tǒng)軟件開(kāi)發(fā)過(guò)程中專業(yè)測(cè)試人員的工作。對(duì)話交流的文本也成為開(kāi)源軟件缺陷的報(bào)告文本。軟件缺陷以用戶需求而非測(cè)試需求為導(dǎo)向被曝光并加以解決,這也是開(kāi)源軟件項(xiàng)目具有良好用戶可用性前提。但“眾包”(Crowdsourcing)式的軟件缺陷曝光方法也存在著信息過(guò)載(Information over?load)等問(wèn)題。

      圖2 Github平臺(tái)中的問(wèn)題討論區(qū)Fig.2 Discussion community of Github platform

      以著名深度學(xué)習(xí)框架Tensorflow在Github上的討論區(qū)為例,從2015年至今(2020),已有36 096個(gè)問(wèn)題得到解決,在項(xiàng)目迭代過(guò)程中仍有3 680問(wèn)題等待解決。海量的開(kāi)源軟件缺陷報(bào)告為開(kāi)發(fā)者帶來(lái)了巨大負(fù)擔(dān),少數(shù)開(kāi)發(fā)者無(wú)法短時(shí)間對(duì)大量的項(xiàng)目反饋進(jìn)行識(shí)別、理解和解決答復(fù)。一方面閱讀這類報(bào)告并分析定位軟件缺陷位置會(huì)消耗大量精力;另一方面待解決的軟件缺陷優(yōu)先度各有不同,進(jìn)行優(yōu)先度識(shí)別也較為困難。

      針對(duì)這些問(wèn)題,研究者提出開(kāi)源軟件缺陷的自動(dòng)挖掘研究以提高軟件開(kāi)發(fā)測(cè)試效率。在自然語(yǔ)言處理研究中,文本摘要技術(shù)能夠很好解決信息過(guò)載問(wèn)題。文本摘要相關(guān)算法能夠從新聞、文學(xué)等篇章文本中抽取核心觀點(diǎn)和重要內(nèi)容。因此結(jié)合文本摘要技術(shù),針對(duì)軟件缺陷報(bào)告能夠很好地進(jìn)行分析和挖掘,并以更為清晰明了的方式展現(xiàn)軟件缺陷類型、位置、可能原因以及嚴(yán)重性情況,以減輕開(kāi)發(fā)者負(fù)擔(dān)并提高開(kāi)發(fā)效率。

      基于以上問(wèn)題,本文設(shè)計(jì)了一系列實(shí)驗(yàn)對(duì)上述問(wèn)題進(jìn)行研究。并在問(wèn)題研究基礎(chǔ)上,結(jié)合自然語(yǔ)言預(yù)訓(xùn)練模型和深度學(xué)習(xí)技術(shù),提出一種基于預(yù)訓(xùn)練自然語(yǔ)言模型的深度文本摘要模型,應(yīng)用于開(kāi)源軟件缺陷報(bào)告挖掘中。相關(guān)對(duì)比實(shí)驗(yàn)表明,本文提出深度文本摘要模型針對(duì)性地提高了開(kāi)源軟件缺陷報(bào)告中缺陷識(shí)別挖掘的效果。

      1 相關(guān)研究工作

      開(kāi)源軟件運(yùn)動(dòng)(Open Source Software move?ment)始于20世紀(jì)80年代美國(guó),標(biāo)志項(xiàng)目是由Richard Stallman發(fā)起的GNU(Gnu is Not Unix)項(xiàng)目。而隨著國(guó)內(nèi)互聯(lián)網(wǎng)產(chǎn)業(yè)在規(guī)模和質(zhì)量上的不斷進(jìn)步和軟件市場(chǎng)的不斷擴(kuò)展,諸如百度、騰訊、華為、阿里巴巴等公司和個(gè)人開(kāi)發(fā)者也積極擁抱開(kāi)源,開(kāi)源軟件倉(cāng)庫(kù)挖掘研究也逐步被國(guó)內(nèi)研究者所重視。

      尹剛等[1]針對(duì)面向開(kāi)源軟件生態(tài)的數(shù)據(jù)挖掘研究做了細(xì)致的綜述。將開(kāi)源軟件倉(cāng)庫(kù)挖掘研究劃分為三大類:軟件資源挖掘研究,包括開(kāi)源軟件資源定位和開(kāi)源軟件可信評(píng)估等內(nèi)容;軟件開(kāi)發(fā)任務(wù)挖掘研究包括缺陷挖掘和優(yōu)先級(jí)預(yù)測(cè)、自動(dòng)化開(kāi)發(fā)任務(wù)指派以及領(lǐng)域?qū)<易R(shí)別與合作者推薦等任務(wù);軟件知識(shí)挖掘研究包含問(wèn)答知識(shí)挖掘、API(Application Program?ming Interface)用例挖掘以及開(kāi)發(fā)環(huán)境的軟件知識(shí)集成等任務(wù)。各子任務(wù)之間關(guān)系如圖3所示,可以看到開(kāi)源軟件挖掘研究重點(diǎn)在于結(jié)合數(shù)據(jù)挖掘技術(shù)針對(duì)開(kāi)源軟件項(xiàng)目以及軟件社區(qū)內(nèi)容進(jìn)行知識(shí)挖掘,以更好地服務(wù)于開(kāi)發(fā)者。而軟件缺陷挖掘在開(kāi)發(fā)任務(wù)挖掘研究處于基礎(chǔ)地位,具有較大的研究?jī)r(jià)值。

      圖3 開(kāi)源軟件挖掘任務(wù)關(guān)系Fig.3 Relationship among software mining tasks

      軟件缺陷識(shí)別主要結(jié)合軟件測(cè)試報(bào)告、軟件缺陷報(bào)告等文本,利用文本挖掘技術(shù)從中定位軟件缺陷,這也是本文主要研究?jī)?nèi)容。現(xiàn)有研究主要結(jié)合從監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)角度均做了一定嘗試。為了便于理解,本文將從軟件缺陷報(bào)告挖掘和文本摘要技術(shù)兩個(gè)方面對(duì)相關(guān)工作進(jìn)行介紹。

      (1)軟件缺陷報(bào)告挖掘

      Rastkar等[2]為軟件缺陷報(bào)告摘要任務(wù)提供了一個(gè)合適的語(yǔ)料庫(kù),作者從University of Brit?ish Colunbia計(jì)算機(jī)科學(xué)系招募了10名研究生來(lái)注釋一組bug報(bào)告。構(gòu)建的語(yǔ)料庫(kù)共有36個(gè)bug報(bào)告,2 361個(gè)句子。Wang等[3]針對(duì)開(kāi)源軟件缺陷報(bào)告中同一問(wèn)題存在大量相似表述和相似術(shù)語(yǔ)的問(wèn)題,結(jié)合復(fù)述獲?。≒araphrase Ac?quisition)技術(shù)對(duì)缺陷報(bào)告中的相關(guān)性詞語(yǔ)進(jìn)行整合對(duì)齊,提高了缺陷挖掘的準(zhǔn)確性。Jiang等[4]將有關(guān)報(bào)告貢獻(xiàn)者的身份特征及其一系列屬性特點(diǎn)融入bug報(bào)告摘要任務(wù)中,可以有效改進(jìn)目前的摘要方法。

      Lotufo等[5]根據(jù)開(kāi)發(fā)人員經(jīng)??焖贋g覽軟件bug報(bào)告的習(xí)慣,提出了Hurried算法,利用了PageRank算法進(jìn)行句子選擇,并且考慮了句子與報(bào)告標(biāo)題之間相似性等因素。Kim等[6]認(rèn)為目前的bug報(bào)告摘要方法還沒(méi)有充分利用其固有特性,他們提出了一種使用加權(quán)PageRank算法的軟件bug報(bào)告摘要方法,并利用了bug報(bào)告之間的“重復(fù)(duplicates)”“塊(blocks)”“依賴(depends on)”關(guān)系,通過(guò)實(shí)驗(yàn)說(shuō)明該方法具有一定的有效性。

      Jindal等[7]提出了一種無(wú)監(jiān)督方法,該方法基于聚集方法提取報(bào)告中的關(guān)鍵單詞或短語(yǔ)以構(gòu)成領(lǐng)域知識(shí)集,從每個(gè)報(bào)告中提取出隸屬度高于設(shè)定閾值的句子,經(jīng)過(guò)去除冗余和重排序后形成摘要。李曉晨[8]提出了一種基于深度學(xué)習(xí)的無(wú)監(jiān)督bug報(bào)告摘要算法,該算法使用了基于bug報(bào)告的無(wú)監(jiān)督步進(jìn)式自編碼網(wǎng)絡(luò),考慮了報(bào)告中的多種特征,通過(guò)實(shí)驗(yàn)表明其方法具備更優(yōu)效果。

      (2)文本摘要技術(shù)

      摘要技術(shù)能夠從海量繁雜文本中抽取出目標(biāo)信息,起到信息過(guò)濾和挖掘的作用。而當(dāng)前文本摘要技術(shù)主要分為兩類,生成式摘要和抽取式摘要,其中生成式摘要技術(shù)主要結(jié)合文本生成模型,在分析文本特征的基礎(chǔ)上生成原始文本對(duì)應(yīng)的摘要內(nèi)容。而抽取式摘要?jiǎng)t結(jié)合文本分類、序列標(biāo)注等技術(shù)對(duì)原文中詞、句子、段落進(jìn)行打分,選擇原始文本作為摘要內(nèi)容。

      軟件缺陷報(bào)告文本具有較強(qiáng)的領(lǐng)域特性,尤其是涉及程序語(yǔ)言的關(guān)鍵詞、變量名、API名稱等,領(lǐng)域特定性較強(qiáng)。因此更適合使用抽取式摘要方法,直接從原始報(bào)告文本中抽取缺陷描述的關(guān)鍵性文本。

      Kupiec等[9]最早在文本自動(dòng)摘要領(lǐng)域使用機(jī)器學(xué)習(xí)技術(shù),在抽取線索詞、句子長(zhǎng)度、句子與文章標(biāo)題的相似性等特征基礎(chǔ)上,作者使用樸素模型進(jìn)行句子打分,從而實(shí)現(xiàn)抽取式摘要。隨著文本表示技術(shù)的發(fā)展,詞嵌入(Word Embedding)技術(shù)成為在多項(xiàng)文本領(lǐng)域任務(wù)上取得較好的效果,基于詞嵌入技術(shù),Nallapati等[10]使用兩個(gè)雙向的GRU(Gated Recurrent Unit)模型分別構(gòu)建句子級(jí)特征與篇章級(jí)特征,其模型充分考慮了信息內(nèi)容、顯著度、新穎度對(duì)結(jié)果的貢獻(xiàn),并取得了當(dāng)年最佳效果(State of the art)。

      隨著預(yù)訓(xùn)練語(yǔ)言模型(Pretrain language model)技術(shù)不斷發(fā)展,結(jié)合預(yù)訓(xùn)練技術(shù)的下游任務(wù)模型不斷刷新榜單。2018年BERT(Bidi?rectional Encoder Representations from Transform?ers)模型[11]發(fā)布,在眾多子任務(wù)上同時(shí)取得了最好的效果,研究者越來(lái)越多的使用BERT應(yīng)用于相應(yīng)的下游任務(wù)。Liu等[12]在BERT模型基礎(chǔ)上進(jìn)行了微調(diào)。作者改進(jìn)了模型輸入文本的方式,構(gòu)建基于BERT的抽取式文本摘要模型,最終在摘要任務(wù)上取得了2019年的最佳結(jié)果。Ahmad 等[13]提出了PLBART,它作為一個(gè)序列到序列模型,可以執(zhí)行廣泛的程序語(yǔ)言理解和生成任務(wù)。PLBART通過(guò)對(duì)大量的Java和Python函數(shù)去噪以及自動(dòng)編碼并進(jìn)行了預(yù)訓(xùn)練,在代碼摘要、代碼生成等基于七種編程語(yǔ)言的任務(wù)上取得了SOTA的性能。

      可以看到,開(kāi)源軟件缺陷挖掘任務(wù)研究中,以開(kāi)源軟件缺陷報(bào)告為對(duì)象,結(jié)合抽取式文本摘要技術(shù)是一種可行的技術(shù)路線。本文重點(diǎn)針對(duì)開(kāi)源軟件缺陷報(bào)告與抽取式文本摘要技術(shù)之間的適應(yīng)性進(jìn)行研究,在此基礎(chǔ)上提出一種基于預(yù)訓(xùn)練自然語(yǔ)言模型的軟件缺陷報(bào)告摘要模型。相關(guān)數(shù)據(jù)集上的對(duì)比實(shí)驗(yàn)表明本文提出的模型有著較好的效果。

      2 模型

      針對(duì)軟件缺陷報(bào)告的句子特征提取問(wèn)題,本文結(jié)合Bert提出了一種基于句子向量特征的軟件缺陷報(bào)告摘要模型。整體模型結(jié)構(gòu)如圖4所示。

      圖4 基于預(yù)訓(xùn)練模型的深度文本摘要模型Fig.4 Text summarization model based on pretrain language-model

      在整個(gè)框架的上半部分,使用了一個(gè)用于單文本分類的Bert模型,[CLS]代表文本序列的開(kāi)始符號(hào),[SEP]作為每個(gè)句子文本的結(jié)束標(biāo)志。對(duì)輸入的文本修改成一個(gè)向量序列X=[w1,w2,…,wn],其中n為序列長(zhǎng)度,每一個(gè)wi為三種向量的簡(jiǎn)單相加,即詞嵌入(Token Em?bedding)、分隔嵌入(Segment Embedding)和位置嵌入(Position Embedding),分別用來(lái)表示詞的含義、句子區(qū)分以及詞在句中的位置。隨后將相加之后的向量X輸入至多層的雙向轉(zhuǎn)換器結(jié)構(gòu)(Transformer)中,即:

      其中,h0為模型的輸入向量X,LN為歸一化(Normalization Operation)操作,MHAtt為多頭注意力機(jī)制(Multi-Head Attention)操作,l代表Transformer的層數(shù)。實(shí)驗(yàn)中的Bert,選用了“bert-base”預(yù)訓(xùn)練模型,因此其輸出維度為768。

      模型以單個(gè)句子文本為單位,輸入主要分為兩個(gè)部分,第一部分需要在句子文本的開(kāi)頭添加[CLS]符號(hào),在句子的結(jié)尾添加[SEP]符號(hào),將其轉(zhuǎn)為Bert模型的Token Embedding序列,并對(duì)每個(gè)不滿足最大長(zhǎng)度的序列使用[PAD]符號(hào)進(jìn)行填補(bǔ)。第二部分為由[0,1]序列組成的MASK掩碼列表,也就是通過(guò)0和1指明PAD的部分。取Bert模型輸出的最后一層的全部向量接入一個(gè)分類層,最終使用Sig?moid函數(shù)進(jìn)行激活。

      在本方法中使用了雙向GRU模型作為分類層,同時(shí)在實(shí)驗(yàn)中對(duì)比了使用雙向LSTM(Long Short-Term Memory)以及普通的線性分類器的性能。

      GRU修改了循環(huán)神經(jīng)網(wǎng)絡(luò)中的隱藏狀態(tài)的計(jì)算方式,加入了重置門(mén)(Reset Gate)和更新門(mén)(Update Gate)機(jī)制,其計(jì)算方式如下:

      σ為Sigmoid函數(shù),Ht?1為上一時(shí)間步的隱藏狀態(tài),Xt為當(dāng)前時(shí)間步的輸入。

      接下來(lái)通過(guò)重置門(mén)Rt來(lái)選擇丟棄無(wú)關(guān)信息來(lái)計(jì)算候選隱藏狀態(tài):

      而當(dāng)前時(shí)間步的隱藏狀態(tài)的計(jì)算與更新門(mén)Zt、上一時(shí)間步的隱藏狀態(tài)Ht?1以及當(dāng)前時(shí)間步的候選隱藏狀態(tài)有關(guān):

      由于單向的GRU模型只能獲取到文本序列的前向信息,為了獲取到上下文信息,采用了雙向的GRU模型,一個(gè)是以原單向GRU為順序訓(xùn)練,另一個(gè)以原模型反轉(zhuǎn)后的序列順序進(jìn)行訓(xùn)練。最后雙向GRU的輸出為兩個(gè)序列輸出拼接而成。設(shè)前向GRU的隱藏層輸出為,反轉(zhuǎn)后的GRU的隱藏層輸出為,雙向GRU的隱藏層輸出為Ht,隱藏層單元數(shù)為m,

      Ht的向量維度為(n,2m),取雙向GRU層的最后一個(gè)時(shí)間步的隱藏狀態(tài)Hn作為輸出,輸入至全連接層并以Sigmoid作為激活函數(shù),得到該句是否為摘要句的概率值:

      訓(xùn)練時(shí)的損失函數(shù)采用二值交叉熵函數(shù)(Binary Cross Entropy Loss),模型最終預(yù)測(cè)目標(biāo)為當(dāng)前輸入的句子是否為軟件缺陷關(guān)鍵描述句。

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

      開(kāi)源軟件缺陷報(bào)告屬于專業(yè)性較強(qiáng)的領(lǐng)域特定文本,類似的如醫(yī)學(xué)文本、法律文書(shū)等。與一般文本不同,這種類型文本中包含著大量在通用領(lǐng)域文本上很少出現(xiàn)的領(lǐng)域特定詞語(yǔ),并且部分常見(jiàn)詞語(yǔ)會(huì)因?yàn)槲谋绢I(lǐng)域的不同發(fā)生詞義、語(yǔ)義的偏移。這使得在通用文本任務(wù)上成熟的方法不能直接用于此類文本任務(wù)之上。

      一份典型的開(kāi)源軟件缺陷報(bào)告的格式,如表1所示(注:已翻譯為中文描述,開(kāi)源軟件缺陷報(bào)告一般為英文文本數(shù)據(jù))。這類報(bào)告數(shù)據(jù)往往來(lái)源于開(kāi)發(fā)者們的郵件列表、開(kāi)發(fā)者論壇、開(kāi)源社區(qū)討論版等位置,是一種對(duì)話形式的數(shù)據(jù)集。其中標(biāo)注為藍(lán)色的為軟件領(lǐng)域一些常見(jiàn)實(shí)體的名稱(如tensorflow、conda);標(biāo)注為黃色的部分為討論者添加的代碼引用(如tf.model);標(biāo)注綠色的部分為程序運(yùn)行編譯器或者集成開(kāi)發(fā)環(huán)境(IDE(Integrated Development Environment))反饋的錯(cuò)誤信息??梢钥吹?,開(kāi)源軟件缺陷報(bào)告是一種摻雜自然語(yǔ)言、程序語(yǔ)言以及通過(guò)模版生成的告知類信息等多種形式文本的雜合體。

      表1 開(kāi)源軟件缺陷報(bào)告格式示例Table 1 Example of reporting format for open source software defect

      針對(duì)軟件缺陷挖掘任務(wù),本文設(shè)計(jì)不同方面的實(shí)驗(yàn)在開(kāi)源軟件缺陷報(bào)告數(shù)據(jù)上進(jìn)行測(cè)試,以尋找軟件缺陷報(bào)告分析的較好實(shí)踐。

      三種實(shí)驗(yàn)針對(duì)結(jié)合文本摘要技術(shù)的開(kāi)源軟件缺陷挖掘任務(wù)進(jìn)行探究,針對(duì)自然語(yǔ)言處理技術(shù)與軟件缺陷文本的結(jié)合進(jìn)行探討,并引出本文方法。

      實(shí)驗(yàn)組1:預(yù)訓(xùn)練語(yǔ)言模型對(duì)自然語(yǔ)言處理任務(wù)提升顯著,本文首先針對(duì)開(kāi)源軟件缺陷報(bào)告對(duì)比了常見(jiàn)的預(yù)訓(xùn)練詞向量技術(shù)。在此基礎(chǔ)上針對(duì)基于開(kāi)源軟件缺陷報(bào)告的挖掘任務(wù)特點(diǎn)進(jìn)行研究。

      實(shí)驗(yàn)組2:在使用預(yù)訓(xùn)練的自然語(yǔ)言模型對(duì)開(kāi)源軟件缺陷報(bào)告文本進(jìn)行表示的基礎(chǔ)上,本文對(duì)比了基于單句的關(guān)鍵句分類模型、基于上下文句子關(guān)系的關(guān)鍵句分類模型、基于主題相關(guān)度的關(guān)鍵句分類模型以及結(jié)合篇章文本的信息檢索模型,對(duì)比實(shí)驗(yàn)表明本文模型最優(yōu)。

      實(shí)驗(yàn)組3:在前兩種實(shí)驗(yàn)的對(duì)比驗(yàn)證基礎(chǔ)上,本文針對(duì)不同神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)針對(duì)關(guān)鍵句的分類能力在軟件缺陷報(bào)告數(shù)據(jù)集上進(jìn)行了驗(yàn)證,證實(shí)本文模型的有效性。

      3.1 數(shù)據(jù)集和評(píng)價(jià)方法

      本文使用兩個(gè)軟件缺陷報(bào)告數(shù)據(jù)集作為進(jìn)行對(duì)比實(shí)驗(yàn)驗(yàn)證。

      SDS(Summary DataSet)[2]:該數(shù)據(jù)集 由Rastkar首次提出,數(shù)據(jù)集共包含從4個(gè)開(kāi)源項(xiàng)目(Eclipse、Mozilla、KDE、Gnome)收集的 36個(gè)軟件缺陷報(bào)告,2 361個(gè)句子。每個(gè)句子由三名注釋者投票決定是否為摘要句,若一個(gè)句子至少獲得兩人贊同,則為摘要句。

      ADS(Authorship DataSet)[4]:由Jiang 等首次提出,數(shù)據(jù)集包含從4個(gè)開(kāi)源項(xiàng)目(Eclipse、Mozilla、KDE、Gnome)收集的 96個(gè)軟件缺陷報(bào)告,每個(gè)項(xiàng)目各24個(gè)缺陷報(bào)告。雇用了7個(gè)大連理工大學(xué)軟件學(xué)院的研究生對(duì)數(shù)據(jù)集進(jìn)行注釋。每個(gè)報(bào)告首先由三個(gè)注釋者用自己的語(yǔ)言進(jìn)行人工摘要(最多不超過(guò)250個(gè)單詞),之后注釋者需要將人工摘要的每個(gè)句子鏈接到原文中的一個(gè)或多個(gè)句子,原文中不少于2票的句子被標(biāo)注為摘要句。

      實(shí)驗(yàn)采用準(zhǔn)確率(Accuracy)、精確率(Preci?sion)、召回率(Recall)、F1值(F1-Measure)作為評(píng)價(jià)指標(biāo),分別計(jì)算如下:

      TP為模型判斷為摘要句且數(shù)據(jù)集中也被標(biāo)記為摘要句的數(shù)量,TN為模型判斷為非摘要句且數(shù)據(jù)集中被標(biāo)記為非摘要句的數(shù)量,F(xiàn)P為模型判斷為摘要句但數(shù)據(jù)集中被標(biāo)記為非摘要句的數(shù)量,F(xiàn)N為模型判斷為非摘要句但數(shù)據(jù)集中被標(biāo)記為摘要句的數(shù)量。

      此處針對(duì)數(shù)據(jù)標(biāo)注的一致性進(jìn)行了檢測(cè),選取組內(nèi)相關(guān)系數(shù)(ICC)和Kappa檢驗(yàn)方法進(jìn)行了驗(yàn)證,如表2所示,二者值越接近于1越好??梢钥吹?,數(shù)據(jù)標(biāo)注一致性尚可,在目前軟件缺陷報(bào)告挖掘任務(wù)數(shù)據(jù)集屬于不錯(cuò)的結(jié)果。

      表2 數(shù)據(jù)標(biāo)注一致性分?jǐn)?shù)Table 2 Data annotation consistency score

      摘要句的選取數(shù)量設(shè)有限制,每個(gè)報(bào)告的摘要句數(shù)量為其總句子數(shù)的30%。

      實(shí)驗(yàn)采取六折交叉驗(yàn)證的方式,對(duì)于SDS數(shù)據(jù)集,即每輪選取30個(gè)報(bào)告作為訓(xùn)練集,6個(gè)報(bào)告作為測(cè)試集,共進(jìn)行6輪。評(píng)價(jià)結(jié)果時(shí)按每個(gè)報(bào)告為單位進(jìn)行計(jì)算,一輪的6個(gè)報(bào)告取平均值,最后6輪結(jié)果再取平均值,即是最終結(jié)果。

      3.2 對(duì)比實(shí)驗(yàn)和訓(xùn)練方案

      本文選擇較為經(jīng)典的摘要抽取算法Tex?tRank[14],以及經(jīng)典的文本分類模型TextCNN[15]作為基礎(chǔ)對(duì)比實(shí)驗(yàn)。

      針對(duì)詞向量對(duì)比實(shí)驗(yàn)(實(shí)驗(yàn)1部分),本文使用基于雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)的文本分類模型(Bi-LSTM)[16]作為基礎(chǔ),將分類器文本表示部分所用的詞嵌入矩陣分別替換為經(jīng)典的word2vector[17]方法 、Glove[18]方6法以及Fast?text[19]方法進(jìn)行對(duì)比。

      針對(duì)軟件缺陷挖掘?qū)Ρ确桨福▽?shí)驗(yàn)2部分),本文結(jié)合BERT模型提出三種對(duì)比方案,基于單句表示的關(guān)鍵句分類模型、基于上下文句子關(guān)系的關(guān)鍵句分類模型、基于主題相關(guān)度的關(guān)鍵句分類模型以及基于篇章表示的信息檢索模型。其中BERT進(jìn)行文本表示的方案如圖5所示。

      圖5 BERT文本表示方案Fig.5 Text representation scheme of BERT

      基于單句表示的關(guān)鍵句分類模型:即本文所用方法。

      基于上下文句子關(guān)系的關(guān)鍵句分類模型:每次訓(xùn)練時(shí)將待判定的句作為句子1,待判定句子之后的一句作為句子2,二者使用[SEP]特殊字符進(jìn)行連接,并在拼接后句子收尾加入[CLS]和[SEP]字符,通過(guò)BERT模型獲得到兩個(gè)句子的聯(lián)合表示后針對(duì)句子1是否為關(guān)鍵句進(jìn)行句子分類判定。

      基于主題相關(guān)度的關(guān)鍵句分類模型:句子嵌入表示方案與上面相似,此處將句子2替換為當(dāng)前開(kāi)源軟件缺陷報(bào)告的標(biāo)題。將標(biāo)題作為當(dāng)前報(bào)告主題,計(jì)算待判定句與主題進(jìn)行相關(guān)度計(jì)算。

      基于篇章表示的信息檢索模型:受Nogueira等[20]工作啟發(fā),本文還對(duì)比了基于信息檢索方案的關(guān)鍵句抽取模型。將待判定的目標(biāo)句作為“查詢句”,以目標(biāo)句為中心設(shè)定一個(gè)局部篇章采樣窗口,取一共W個(gè)詞作為當(dāng)前摘要句所在的局部篇章(包含當(dāng)前句子)。將待判定句與局部篇章使用[SEP]進(jìn)行拼接并輸入BERT模型中得到二者聯(lián)合表示后針對(duì)“查詢句”是否為關(guān)鍵句進(jìn)行判定。

      上述方案中,未進(jìn)行特殊注明的,其文本表示部分均使用BERT進(jìn)行表示,后端分類模型均使用全連接層配合Sigmoid函數(shù)進(jìn)行分類。

      最后,在基于BERT的單句表示基礎(chǔ)上,對(duì)比了句子表示后:直接使用全連接層(Fullyconnected)、雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Bi-LSTM)和雙向門(mén)控循環(huán)單元(Bi-GRU)在開(kāi)源軟件缺陷報(bào)告分類上的效果,驗(yàn)證了本文提出模型在當(dāng)前任務(wù)上的合理性。

      3.3 實(shí)驗(yàn)結(jié)果對(duì)比

      表3為實(shí)驗(yàn)組1的實(shí)驗(yàn)結(jié)果。其中基礎(chǔ)分類模型為雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Bi-LSTM),通過(guò)替換不同的預(yù)訓(xùn)練詞嵌入語(yǔ)言模型,研究不同自然語(yǔ)言詞嵌入模型在軟件缺陷報(bào)告挖掘任務(wù)上的適應(yīng)性。表3中以“自”開(kāi)頭的項(xiàng)目表示結(jié)合當(dāng)前詞向量方法,在軟件缺陷報(bào)告數(shù)據(jù)上進(jìn)行訓(xùn)練得到的詞向量結(jié)果;而以“預(yù)”開(kāi)頭的則為在自然語(yǔ)言語(yǔ)料上訓(xùn)練完成的詞向量結(jié)果。其中w2v表示經(jīng)典的word2vec詞向量訓(xùn)練方法(skip-gram和cbow模型);fastT為fastText詞向量模型。是否參與訓(xùn)練則是在進(jìn)行模型訓(xùn)練時(shí)指定詞嵌入矩陣是否進(jìn)一步參與到具體任務(wù)上的訓(xùn)練。

      表3 不同詞向量對(duì)比結(jié)果Table 3 Comparison among different word vectors

      從表中可以看到在兩個(gè)數(shù)據(jù)集上自行訓(xùn)練word2vec詞向量效果較直接使用預(yù)訓(xùn)練結(jié)果相對(duì)較弱。而在模型訓(xùn)練過(guò)程中將訓(xùn)練好的詞嵌入矩陣也一并參與訓(xùn)練時(shí),模型結(jié)果也會(huì)有一定程度的降低。而綜合三種詞向量在該任務(wù)上的效果,可以看到使用fastText詞向量針對(duì)軟件缺陷報(bào)告進(jìn)行表示相對(duì)取得了最優(yōu)的效果。

      綜合上述實(shí)驗(yàn)對(duì)比的結(jié)果可以看到,軟件缺陷報(bào)告文本作為一種領(lǐng)域特定的文本,其內(nèi)部包含程序語(yǔ)言、自然語(yǔ)言等多種成分,容易產(chǎn)生未登錄詞的情況(Out Of Vocabulary,OOV)。直接使用在自然語(yǔ)言語(yǔ)料上預(yù)訓(xùn)練的word2vector詞向量效果相對(duì)較差。而fastText方法使用詞根詞綴模式對(duì)詞嵌入內(nèi)容進(jìn)行訓(xùn)練,針對(duì)軟件缺陷報(bào)告中出現(xiàn)的代碼文本、特殊的軟件實(shí)體、API名稱等復(fù)合新詞有很好的效果。因此,針對(duì)開(kāi)源軟件缺陷報(bào)告挖掘的重點(diǎn)還是在于如何解決成分摻雜所帶來(lái)的未登錄詞的問(wèn)題,以獲得更好的語(yǔ)義表示。進(jìn)一步的BERT模型相對(duì)能夠更好解決這一問(wèn)題。

      不同實(shí)驗(yàn)方案對(duì)比結(jié)果如表4所示,其中文本表示部分均使用BERT模型,表中“單句”表示直接基于單句的方案,此單句表示后直接使用全連接層進(jìn)行輸出分類;“前后句”表示輸入待判定句子和其后句進(jìn)行聯(lián)合表示建模的方案;“主題”表示輸入帶判定句和文檔標(biāo)題進(jìn)行聯(lián)合建模的方案;而IR方案則代表基于篇章的信息檢索模型;而“單句+G”表示單句表示后使用Bi-GRU進(jìn)行再編碼輸出,即本文模型。

      表4 不同實(shí)驗(yàn)方案對(duì)比結(jié)果Table 4 Comparison among different experimental schemes

      可以看到基于前后句上下文關(guān)系判斷的方案以及基于局部篇章的信息檢索方案效果相對(duì)較差,而基于主題判定的效果相對(duì)直接使用單句有一定提升。在文本表示BERT基礎(chǔ)上通過(guò)Bi-GRU進(jìn)行進(jìn)一步語(yǔ)義編碼能較大地提升模型的預(yù)測(cè)能力。綜合實(shí)驗(yàn)結(jié)果來(lái)看,相比于通用語(yǔ)料上的文本摘要任務(wù),軟件缺陷報(bào)告中關(guān)鍵句的挖掘相對(duì)更加獨(dú)立,即與上下文關(guān)系較小,句子本身信息以及與問(wèn)題主題的相關(guān)性相對(duì)更加重要。而改進(jìn)分類后端為Bi-GRU之后獲得的提升也可以看出進(jìn)一步語(yǔ)義編碼對(duì)于任務(wù)的貢獻(xiàn)。相應(yīng)的,表5中對(duì)比了使用全連接層、使用Bi-GRU以及使用Bi-LSTM(表5中“單句+L”方案)進(jìn)行關(guān)鍵句分類的結(jié)果??梢钥吹?,進(jìn)一步編碼的方案相比于全連接層整體有一定的提升。

      表5 不同分類后端結(jié)果對(duì)比Table 5 Comparison among different classifiers

      上述結(jié)果表明結(jié)合通用的自然語(yǔ)言預(yù)訓(xùn)練模型進(jìn)行軟件缺陷報(bào)告表示后,仍需要進(jìn)行進(jìn)一步語(yǔ)義編碼,才能對(duì)軟件相關(guān)文本進(jìn)行更好的挖掘。相比于LSTM方案,GRU結(jié)果相對(duì)略高,主要是由于數(shù)據(jù)集規(guī)模限制LSTM的進(jìn)一步訓(xùn)練,可以推測(cè)在更大數(shù)據(jù)集上,序列編碼分類方案會(huì)有更好的效果。

      表6為本次實(shí)驗(yàn)選取的基線模型結(jié)果。其中TR表示textRank文本摘要模型,而TC表示textCNN句子分類模型。兩種模型所使用的詞向量均為在自然語(yǔ)言文本上已經(jīng)預(yù)訓(xùn)練好的glove詞向量??梢钥吹奖疚姆桨赶啾扔诨€實(shí)驗(yàn)在性能上有很大的提升。

      表6 基線對(duì)比實(shí)驗(yàn)Table 6 Comparison among differect baselines

      4 結(jié)論

      本文通過(guò)實(shí)驗(yàn)對(duì)軟件缺陷挖掘任務(wù)進(jìn)行了較為詳實(shí)的研究,并在此基礎(chǔ)上提出一種基于預(yù)訓(xùn)練模型的深度文本摘要模型。相關(guān)實(shí)驗(yàn)表明,軟件缺陷報(bào)告數(shù)據(jù)具備更多領(lǐng)域特定內(nèi)容(程序語(yǔ)言、領(lǐng)域特定實(shí)體名稱、模板化生成內(nèi)容等),在處理時(shí)不能直接應(yīng)用通用領(lǐng)域自然語(yǔ)言模型,需要針對(duì)領(lǐng)域特定詞語(yǔ)進(jìn)行處理。同時(shí),在結(jié)合較強(qiáng)的預(yù)訓(xùn)練自然語(yǔ)言模型表示之后,使用循環(huán)神經(jīng)網(wǎng)絡(luò)再次進(jìn)行語(yǔ)義編碼后結(jié)果會(huì)有進(jìn)一步提升。說(shuō)明軟件缺陷報(bào)告這類包含程序語(yǔ)言的自然語(yǔ)言文本在通用領(lǐng)域語(yǔ)言模型表示基礎(chǔ)上還需進(jìn)一步盡心語(yǔ)義挖掘,才能更好地服務(wù)于后續(xù)任務(wù)。

      本文僅僅針對(duì)軟件缺陷挖掘任務(wù)結(jié)合自然語(yǔ)言預(yù)訓(xùn)練模型在兩個(gè)規(guī)模較小的數(shù)據(jù)集上進(jìn)行了探索。從實(shí)驗(yàn)也可以看到,在數(shù)據(jù)集上訓(xùn)練詞向量效果略微有所降低,其中原因可能與數(shù)據(jù)量較小有一定關(guān)系。文中兩個(gè)數(shù)據(jù)集均來(lái)源于開(kāi)源項(xiàng)目,后續(xù)研究中會(huì)在大量數(shù)據(jù)集上進(jìn)行相關(guān)探索,對(duì)開(kāi)源軟件缺陷報(bào)告文本挖掘相關(guān)理論進(jìn)行進(jìn)一步完善。

      猜你喜歡
      軟件缺陷開(kāi)源向量
      向量的分解
      聚焦“向量與三角”創(chuàng)新題
      基于源文件可疑度的靜態(tài)軟件缺陷檢測(cè)方法研究
      五毛錢(qián)能買(mǎi)多少頭牛
      基于NPE-SVM的軟件缺陷預(yù)測(cè)模型
      開(kāi)源程序的軟件缺陷分布特征的量化分析研究
      大家說(shuō):開(kāi)源、人工智能及創(chuàng)新
      開(kāi)源中國(guó)開(kāi)源世界高峰論壇圓桌會(huì)議縱論開(kāi)源與互聯(lián)網(wǎng)+創(chuàng)新2.0
      向量垂直在解析幾何中的應(yīng)用
      向量五種“變身” 玩轉(zhuǎn)圓錐曲線
      海伦市| 张家口市| 定襄县| 弥渡县| 孟连| 闽清县| 施秉县| 青冈县| 当涂县| 女性| 庆安县| 普兰店市| 崇州市| 桐柏县| 曲阜市| 石棉县| 阿坝| 静乐县| 调兵山市| 馆陶县| 怀远县| 潢川县| 阳西县| 白玉县| 云龙县| 隆安县| 林州市| 深圳市| 金塔县| 南和县| 青河县| 拜城县| 白玉县| 绩溪县| 杭锦旗| 故城县| 宾阳县| 仪征市| 北川| 屏山县| 苍南县|