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

?

深度學習在缺陷修復者推薦中的應(yīng)用*

2017-06-05 15:05王千祥
計算機與生活 2017年5期
關(guān)鍵詞:開發(fā)人員向量卷積

胡 星,王千祥

北京大學 高可信軟件技術(shù)教育部重點實驗室,北京 100871

深度學習在缺陷修復者推薦中的應(yīng)用*

胡 星,王千祥+

北京大學 高可信軟件技術(shù)教育部重點實驗室,北京 100871

目前許多軟件項目使用缺陷追蹤系統(tǒng)來自動化管理用戶或者開發(fā)人員提交的缺陷報告。隨著缺陷報告和開發(fā)人員數(shù)量的增長,如何快速將缺陷報告分配給合適的缺陷修復者正在成為缺陷快速解決的一個重要問題。分別使用長短期記憶模型和卷積神經(jīng)網(wǎng)絡(luò)兩種深度學習方法來構(gòu)建缺陷修復者推薦模型。該模型能夠有效地學習缺陷報告的特征,并且根據(jù)該特征推薦合適的修復者。通過與傳統(tǒng)機器學習方法(如貝葉斯方法和支持向量機方法)進行對比,該方法可以比較有效地在眾多開發(fā)者中找出合適的缺陷修復者。

缺陷追蹤;缺陷報告分配;深度學習

1 引言

目前的許多軟件項目利用缺陷追蹤系統(tǒng)來自動化或半自動化地管理和維護項目過程產(chǎn)生的缺陷報告。常見的缺陷追蹤系統(tǒng)有Bugzilla、JIRA等。人們利用這些缺陷追蹤系統(tǒng)進行軟件缺陷的提交、記錄、管理和追蹤等。

用戶或者開發(fā)人員通過提交缺陷報告來反映軟件存在的問題。開發(fā)人員則根據(jù)這些缺陷報告來進一步完善軟件,提高軟件的質(zhì)量。但是缺陷報告的解決需要顯著的開銷[1],尤其是當一個缺陷報告被提交后,管理員要花費一定時間去審核該報告是一個缺陷,還是一個值得考慮的新的需求,并且檢查這個報告是否是一個重復的缺陷報告,確認之后,再為該報告尋找合適的修復人員。

為了降低缺陷修復分配負擔,已經(jīng)有許多針對軟件缺陷修復者推薦的研究工作,例如利用機器學習的方法推薦缺陷修復者[2-3]。本文提出了利用深度學習的方法來自動推薦缺陷修復者。通過對大量已經(jīng)分配缺陷修復者的缺陷報告進行學習,本文構(gòu)造的模型可以提取缺陷修復者所修復缺陷的特征,從而為新提交的缺陷報告推薦合適的缺陷修復者。

本文分別利用長短期記憶模型(long-short term memory,LSTM)、卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)兩種深度學習方法對Eclipse項目的缺陷報告分別進行訓練,并對得到的模型進行驗證。結(jié)果表明,本文所提出的方法最高準確率分別為58.2%、60.3%,比傳統(tǒng)的機器學習方法如貝葉斯方法和支持向量機(support vector machine,SVM)方法都有較大的提高。

本文組織結(jié)構(gòu)如下:第2章介紹與本文相關(guān)的研究工作;第3章主要研究缺陷報告的相關(guān)內(nèi)容,以及所用到的深度學習方法;第4章討論本文構(gòu)造的模型;第5章通過實驗對本文提出的方法進行評估;第6章總結(jié)全文。

2 相關(guān)工作

自動化地為軟件缺陷推薦修復者可以大幅度減少相關(guān)人員的工作量。目前已經(jīng)有許多研究者針對軟件缺陷修復者推薦展開了研究。

機器學習[4]是人工智能領(lǐng)域最能體現(xiàn)智能的一個分支。許多研究者利用機器學習的方法(例如貝葉斯方法和支持向量機方法)來進行缺陷修復者推薦。?ubrani?將貝葉斯方法用于缺陷報告修復者推薦[2],利用貝葉斯分類法可以有效地進行多分類任務(wù),其準確率在推薦Eclipse缺陷修復者時最高可以達到30%。支持向量機方法在文本分類任務(wù)中顯示出卓越的性能,很快成為機器學習的主流技術(shù)。Anvik等人提出利用支持向量機方法來進行缺陷修復者推薦[3],其準確率最高為57%,相比貝葉斯方法提高了27%。這些機器學習方法通過對缺陷描述的文本進行處理,將文本轉(zhuǎn)化為詞袋形式,再采用機器學習相關(guān)方法進行缺陷修復者推薦。

除此之外,文獻[5]分析了Mozilla和Eclipse開源社區(qū)上的缺陷修復者重復現(xiàn)象,通過建立修復者關(guān)系重置圖來提高推薦缺陷修復者的準確率。

隨著深度學習的發(fā)展,許多研究者將深度學習用于文本分類。Kim[6]在2014年提出用CNN來進行文本分類。該方法采用的網(wǎng)絡(luò)結(jié)構(gòu)非常簡單,但取得了較好的效果。Zhou等人[7]提出利用LSTM方法進行文本分類。本文將缺陷報告看成一種特殊的文本,分別借鑒了Zhou和Kim的工作,將CNN和LSTM方法用于推薦缺陷報告修復者。

3 背景

3.1 缺陷報告

缺陷追蹤系統(tǒng)中的缺陷報告按照一定的格式組織,極大地方便了開源軟件的自動化管理和維護。圖1為Eclipse項目的一個缺陷報告,Eclipse采用Bugzilla作為其缺陷追蹤系統(tǒng)。當一個缺陷報告被創(chuàng)建時,其缺陷報告編號、報告者、創(chuàng)建時間等將會自動生成,報告者可以根據(jù)自己的缺陷報告選擇產(chǎn)生該缺陷的產(chǎn)品或組件,不僅如此,用戶還可以指出其使用的操作系統(tǒng)、版本,缺陷的具體描述等。項目開發(fā)者和用戶以添加評論的方式來對缺陷進行討論,尋找合適的缺陷解決方法。缺陷報告的其他部分如狀態(tài)、分配的修復者等會隨著時間發(fā)生變化,其變化與缺陷報告在其生存周期所處的階段有關(guān)。

Fig.1 Asample of bug report from Eclipse圖1 Eclipse缺陷報告例子

對于一個狀態(tài)為“新建”的缺陷,缺陷追蹤系統(tǒng)相應(yīng)項目管理員會將這個缺陷指派給合適的開發(fā)人員,通知其進行修復,然后將這個缺陷報告的狀態(tài)修改為“已指派”(ASSIGNED)。開發(fā)人員修復指派給自己的缺陷或主動修改缺陷,并將缺陷狀態(tài)改為“已處理”(RESOLVED)。之后管理員對修復后的缺陷進行測試驗證,如果缺陷確實被修復,則將缺陷狀態(tài)改為“已確認”(VERIFIED),然后這個缺陷被關(guān)閉,狀態(tài)最終變?yōu)椤耙殃P(guān)閉”(CLOSED)。

并不是所有的缺陷都會被修復,可能的處理方式還有重復的、不合法的、不可重現(xiàn)的以及無法修復等。對于這樣的缺陷,當開發(fā)人員產(chǎn)生處理方案(RESOLUTION)后(如DUPLICATE、INVALID、WONTFIX等),缺陷狀態(tài)變?yōu)椤耙烟幚怼保≧ESOLVED)。當然,一個缺陷報告被關(guān)閉之后,還可能因為很多原因再次打開,狀態(tài)變?yōu)椤霸俅未蜷_”(REOPEN),再次開啟生命周期。一個缺陷報告的生命周期如圖2所示,其中灰色部分為根據(jù)缺陷報告的內(nèi)容給出的解決方案。

Fig.2 Life-cycle of a bug report圖2 缺陷報告生命周期

3.2 深度學習

隨著云計算與大數(shù)據(jù)時代的到來,計算能力得到大幅度提高,訓練數(shù)據(jù)收集更加方便。這大大緩解了傳統(tǒng)訓練的低效性,降低了過擬合的風險。以“深度學習”為代表的復雜計算模型開始受到人們的關(guān)注。深度學習是機器學習研究中的一個新的領(lǐng)域,多隱層的人工神經(jīng)網(wǎng)絡(luò)具有優(yōu)異的特征學習能力,學習得到的特征對數(shù)據(jù)有更本質(zhì)的刻畫,從而有利于可視化或分類[8]。

3.2.1 LSTM

LSTM模型是RNN[9]的一個變種,循環(huán)神經(jīng)網(wǎng)絡(luò)相對于傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò),其特點是可以存在有向環(huán),將上次的輸出作為本次的輸入[10]。但是原生的RNN存在一定的問題,即后面時間節(jié)點對于前面時間節(jié)點感知力下降。LSTM克服了這一缺點,可以學習長期依賴信息,近期經(jīng)過Graves等人[11]進行改良和推廣后,開始得到廣泛的應(yīng)用。

基本的LSTM單元結(jié)構(gòu)如圖3所示。LSTM模型中,其核心就是細胞(cell)的狀態(tài)。傳統(tǒng)的RNN神經(jīng)元和一般神經(jīng)網(wǎng)絡(luò)的感知機沒什么區(qū)別,而LSTM中,每個神經(jīng)元是一個“記憶細胞”,細胞里有一個“輸入門”、一個“遺忘門”和一個“輸出門”。在“輸入門”中,根據(jù)當前的數(shù)據(jù)流來控制接受細胞記憶的影響;接著,在“遺忘門”中更新該細胞的記憶和數(shù)據(jù)流;然后,在“輸出門”中產(chǎn)生輸出更新后的記憶和數(shù)據(jù)流。LSTM模型的關(guān)鍵就在于“遺忘門”,它可以控制訓練時梯度在這里的收斂性,同時也可以保持長期的記憶性。

Fig.3 Structure of LSTM cell圖3 LSTM細胞結(jié)構(gòu)圖

3.2.2 卷積神經(jīng)網(wǎng)絡(luò)

卷積神經(jīng)網(wǎng)絡(luò)[6]是人工神經(jīng)網(wǎng)絡(luò)的一種,已成為當前語音分析和圖像識別領(lǐng)域的研究熱點。

卷積神經(jīng)網(wǎng)絡(luò)復合多個“卷積層”和“采樣層”對輸入信號進行加工,然后在連接層實現(xiàn)與輸出目標之間的映射。每個卷積層都包括多個特征映射(feature map),每個特征映射是一個由多個神經(jīng)元構(gòu)成的“平面”,通過一種卷積濾波器提取輸入的一種特征。

在文獻[6]中,利用卷積神經(jīng)網(wǎng)絡(luò)來進行文本分類取得了很大進展。其網(wǎng)絡(luò)結(jié)構(gòu)非常簡單,但取得了很好的效果。

鑒于卷積神經(jīng)網(wǎng)絡(luò)可以很好地提取輸入數(shù)據(jù)的特征,本文將卷積神經(jīng)網(wǎng)絡(luò)用于軟件缺陷修復者推薦,利用卷積神經(jīng)網(wǎng)絡(luò)來提取軟件缺陷報告的特征,通過分析軟件缺陷與修復者之間的聯(lián)系,來給未分配缺陷推薦適合的缺陷修復者。

59例受調(diào)查者在初次問卷調(diào)查時均不認為腎臟病患病率與高血壓、糖尿病相近;再次問卷調(diào)查時,23例(39.0%)認為腎臟病患病率與高血壓、糖尿病相近,其中,講座組中認同者多于其他兩組(P<0.01)。

本文將缺陷報告信息看成是一種文本,因此將缺陷推薦修復者問題轉(zhuǎn)化為文本分類問題。利用卷積神經(jīng)網(wǎng)絡(luò)可以很好地提取文本特征,通過訓練提取缺陷特征,從而匹配相應(yīng)的缺陷修復者。

4 方法

4.1 數(shù)據(jù)獲取與預處理

本文選取Eclipse項目已解決的缺陷報告,在獲取數(shù)據(jù)時,采用Scrapy爬蟲框架,獲得的數(shù)據(jù)以json格式存儲。

本文在獲取數(shù)據(jù)時選取分類標識符為“Eclipse”的缺陷報告,并且篩選出報告提交日期為2010年之后的缺陷報告。為了最大程度地獲得有缺陷修復者的缺陷報告,在篩選時還限定了處理方案,只抽取處理方案為“FIXED”的缺陷報告。通過分析發(fā)現(xiàn),Eclipse項目中,assigned-to字段中的缺陷修復者并不完全是真實的開發(fā)人員,而是有些缺陷分配給了默認的郵箱,例如“ProjectInbox”,因此為了減少這種情況的影響,在獲取數(shù)據(jù)時過濾了這種情況。對于每個缺陷報告,獲取“title”、“description”、“product”、“component”、“assigned-to”這5個字段的內(nèi)容,其表示含義如表1所示。

Table 1 Meaning of data field表1 數(shù)據(jù)字段表示含義

通過定義這些抽取規(guī)則,共獲得12 316條缺陷報告,缺陷修復者有208人。

另外,在對開發(fā)人員進行分析時發(fā)現(xiàn),有些開發(fā)人員在近幾年內(nèi)所修復的缺陷數(shù)目較少,可能原因是該開發(fā)人員近幾年在該項目中并不活躍。對于這種情況,將缺陷分配給這些開發(fā)人員并不是一個明智的選擇,因此過濾了解決缺陷個數(shù)不足50個的開發(fā)人員。最終共獲取到11 211條缺陷報告,缺陷修復者有51人。

4.2 數(shù)據(jù)處理

本文利用深度學習方法來學習“title”、“description”、“product”、“component”這4個字段的內(nèi)容,從而提取缺陷報告的特征。通過觀察分析,發(fā)現(xiàn)在Eclipse項目中,一個開發(fā)人員所負責的缺陷大多屬于一個產(chǎn)品和組件。不僅如此,一個缺陷報告的標題高度概括了該缺陷的特征,而缺陷的描述是對這些特征進行展開分析。基于此,將文本進行了權(quán)重處理:

公式中的變量wp、wc、wt、wd分別表示Eclipse項目缺陷報告產(chǎn)品(product)、組件(component)、標題(title)和描述(description)的權(quán)重。

通過觀察缺陷報告的文本,發(fā)現(xiàn)缺陷報告中有許多術(shù)語是縮寫詞,例如“API”,“SWT”等。這些詞在進行文本處理時,會被認為是非英文單詞而被過濾掉。然而這些縮寫詞往往是描述缺陷的關(guān)鍵,對于缺陷報告的分配結(jié)果非常重要。因此,本文將缺陷報告中常見的縮寫詞進行替換,例如:

在缺陷報告的描述中,有許多用戶和開發(fā)人員提供了出現(xiàn)缺陷的程序方法。如圖4,在缺陷報告(缺陷編號為299631)的描述中,開發(fā)人員提出了恢復方法“org.eclipse.jdt.internal.corext.refactoring.reorg. JavaMoveProcessor.canUpdateReferences()”這一需求。普通的文本處理無法對方法名進行處理,這樣導致缺陷的部分特征丟失。針對這一現(xiàn)象,本文對缺陷報告中出現(xiàn)的方法名進行切割,利用切割后的單詞來最大程度地反映方法所表示的含義。首先以方法名中的“.”作為切割符,得到預處理的方法名集合;之后分別對集合中的元素進行處理,利用正則表達式以大寫字母作為單詞之間的界限進行分割;最后處理過后的結(jié)果為“[org”,“eclipse”,“jdt”,“internal”,“corext”,“refactoring”,“reorg”,“Java”,“Move”,“Processor”,“can”,“Update”,“References”]。

Fig.4 Bug description with function圖4 含方法的缺陷描述

除此之外,還對缺陷報告中的文本做了其他一些處理。將所有字母改成小寫;缺陷報告中有許多描述包含html字符,然而這些字符并不是描述缺陷的關(guān)鍵,因此將文本中的html字符去掉;依次進行分句和分詞的操作;分詞操作之后,將非英文單詞、停用詞過濾掉,并且利用正則匹配去除標點符號;對單詞進行詞型轉(zhuǎn)換,例如將does、did統(tǒng)一轉(zhuǎn)化為do。

此時得到的單詞序列還不能直接用于訓練,需要將詞轉(zhuǎn)化為向量。本文利用word2vec[12-13]工具將缺陷報告的信息轉(zhuǎn)化為向量。利用word2vec對缺陷報告進行訓練,可以把對文本內(nèi)容的處理簡化為k維向量空間中的向量運算,本文將單詞轉(zhuǎn)為100維的向量進行處理。而向量空間上的相似度可以用來表示文本語義上的相似度。例如:“Paris”為“France”的首都,“Rome”為“Italy”的首都,因此“Paris”和“France”的向量距離與“Rome”和“Italy”的向量距離很相近。利用word2vec工具經(jīng)過訓練,根據(jù)“Paris”、“France”、“Italy”的向量,可以得到“Rome”的詞向量表示。同樣的對于“king”、“man”、“queen”和“women”,已知其中3個詞的向量,通過word2vec訓練可以得到另一個詞的向量。

4.3 缺陷修復者預測模型

本文利用深度學習方法訓練缺陷修復者推薦模型。該模型的流程如圖5所示。收集到的數(shù)據(jù)經(jīng)過4.2節(jié)的處理后,將缺陷報告生成深度學習模型可以識別的數(shù)據(jù)集。缺陷向量和其對應(yīng)的修復者<bugVec, assignee>組成了用于訓練的數(shù)據(jù)集合。其中bugVec是由4.1節(jié)訓練的詞向量組成的句向量,assignee表示這個缺陷報告所分配的缺陷修復者。數(shù)據(jù)集隨后被分為不相交的兩個集合,一部分用于訓練,另一部分用于驗證所構(gòu)造的模型。通過訓練得到的模型可以提取未分配缺陷修復者的缺陷報告的特征,并根據(jù)這些特征為缺陷報告推薦合適的修復者。

本文分別利用LSTM和CNN兩種方法來對訓練集進行訓練,并對得到的模型進行驗證分析。下面詳細介紹如何利用LSTM和CNN方法進行模型訓練。

Fig.5 Overall workflow of bug report assignment recommendation圖5 缺陷修復者推薦模型流程圖

4.3.1 基于LSTM的訓練模型

Fig.6 Structure of LSTM training model圖6 LSTM訓練模型結(jié)構(gòu)

本文使用最經(jīng)典的LSTM模型[14]來對缺陷報告進行訓練。具體訓練模型如圖6所示。缺陷報告以詞向量組成的句向量形式輸入到網(wǎng)絡(luò)中,經(jīng)過3.2.1節(jié)介紹的LSTM模型加工后與一個全連接的隱藏層相連接。該隱藏層的神經(jīng)元個數(shù)與數(shù)據(jù)集中的缺陷修復者個數(shù)相等。經(jīng)過模型的訓練,得到100個缺陷特征用于缺陷修復者推薦。本文采用Softmax回歸(http://ufldl.stanford.edu/tutorial/supervised/Softmax-Regression/)作為訓練模型的分類器,Softmax分類器在多分類問題上十分有效。

在訓練過程中利用隨機梯度下降(stochastic gradient descent,SGD)算法[15]來自動調(diào)節(jié)學習速度。在訓練過程中選擇缺陷報告最頻繁出現(xiàn)的前20 000個單詞。在訓練過程中還引入了Dropout策略,在每次迭代中隨機放棄一部分訓練好的參數(shù)。通過這種方法,可以防止過擬合現(xiàn)象的產(chǎn)生。

4.3.2 基于CNN的訓練模型

本文借鑒了Kim在句子分類時所用到的卷積神經(jīng)網(wǎng)絡(luò)[6],整個網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。

Fig.7 Structure of CNN training model圖7 CNN訓練模型結(jié)構(gòu)

在進行訓練之前,先對句子進行Embedding處理,將文本轉(zhuǎn)為向量。輸入層是句子中單詞所對應(yīng)的詞向量組成的矩陣。在本文的模型中,句子輸入按照最長的處理,不足的部分進行補0處理(例如圖中灰色部分)。假設(shè)最長的句子有n個單詞,每個單詞對應(yīng)的詞向量維度為k,則輸入的矩陣為n×k。

輸入層通過卷積操作得到若干個特征圖。卷積單元也是k維,因此特征圖的列數(shù)為1維;之后采樣層采用Max-Pooling的方法,重復上述卷積和采樣過程,搭建多層網(wǎng)絡(luò)。經(jīng)過特征學習,提取出缺陷的128個特征,利用這些特征進行缺陷修復者的推薦。與LSTM模型類似,模型的采樣層輸出通過全連接的方式連接一個Softmax的分類層,使用SGD來調(diào)節(jié)訓練速度,并且也使用Dropout策略防止過擬合現(xiàn)象的產(chǎn)生。

文本使用ReLU(rectified linear units)作為神經(jīng)元的激活函數(shù),ReLU在訓練深度結(jié)構(gòu)模型時,不易趨于飽和態(tài),從而加快了訓練的收斂速度。同時ReLU還能生成稀疏的激活輸出向量,從而有效地減少計算開銷。

5 方法評估

對于LSTM、CNN兩種深度學習方法構(gòu)造出來的兩個模型,本文利用Eclipse的缺陷報告的訓練集分別進行訓練,得到兩個缺陷報告修復者推薦模型,然后利用測試集分別進行準確率驗證。

本文通過隨機劃分不同的訓練集來進行缺陷報告的訓練學習,并通過不同的測試集來進行驗證。結(jié)果如圖8所示:對于不同大小的訓練集,LSTM、CNN方法最高準確率分別為58.6%和62.4%。隨著訓練集的增長,兩種深度學習方法準確率總體上都是呈上升趨勢。因為隨著數(shù)據(jù)的增多,深度學習方法能從這些數(shù)據(jù)中學到的特征越多,進而能更加準確地推薦缺陷的修復者。

Fig.8 Precision of LSTM model and CNN model圖8 LSTM和CNN模型的準確率

從圖8中可以看出,LSTM在訓練集大小為7 000~ 8 000這個階段時,效果要優(yōu)于CNN方法,因為LSTM更擅長處理序列數(shù)據(jù),缺陷報告的文本具有一定的上下文語義,所以LSTM在訓練集較少時有較好的效果。然而,隨著訓練集越來越多,CNN方法準確率的增長速度更快。因為CNN在學習文本特征方面要優(yōu)于LSTM方法,CNN方法可以在大批量的數(shù)據(jù)訓練中學到更多的缺陷特征,進而推薦合適的缺陷修復者。

對比參考文獻的結(jié)果,貝葉斯方法[1]和支持向量機[3]方法在Eclipse項目上的準確率最高為30%、57%??梢园l(fā)現(xiàn),利用深度學習方法比傳統(tǒng)的機器學習方法可以更加有效地為缺陷報告推薦缺陷修復者。這是因為利用深度學習方法可以自動地學習缺陷報告的特征,缺陷報告經(jīng)過多層處理,逐漸將初始的“低層”特征表示轉(zhuǎn)化為“高層”特征表示后,可以有效地推薦缺陷修復者。

6 總結(jié)

本文通過利用深度學習方法,分別使用LSTM和CNN模型對Eclipse項目缺陷進行訓練學習,并進行缺陷修復者推薦,其準確率比傳統(tǒng)機器學習方法如貝葉斯分類法和支持向量機方法都有較大的提高。因為利用深度學習方法,可以更好地學習修復缺陷的特征,從而為新提交的缺陷報告分配合適的修復者。

另外,本文僅考慮了對已分配缺陷修復者的缺陷報告進行訓練學習,然后給缺陷報告推薦適合的缺陷修復者。如果進一步對缺陷之間的關(guān)系進行分析,會進一步提高推薦缺陷修復者的準確率。

[1]Kim S,Whitehead E J.How long did it take to fix bugs?[C]// Proceedings of the 2006 International Workshop on Mining Software Repositories,Shanghai,May 22-23,2006.New York:ACM,2006:173-174.

[2]?ubrani? D.Automatic bug triage using text categorization [C]//Proceedings of the 16th International Conference on Software Engineering&Knowledge Engineering,Banff, Canada,Jun20-24,2004.Red Hook,USA:Curran Associates,2004:92-97.

[3]Anvik J,Hiew L,Murphy G C.Who should fix this bug?[C]//Proceedings of the 28th International Conference on Software Engineering,Shanghai,May 20-28,2006.New York: ACM,2006:361-370.

[4]Joachims T.A statistical learning model of text classification with support vector machines[C]//Proceedings of the 24th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval,New Orleans,USA,Sep 9-13,2001.NewYork:ACM,2001:128-136.

[5]Jeong G,Kim S,Zimmermann T.Improving bug triage with bug tossing graphs[C]//Proceedings of the 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering,Amsterdam,Aug 24-28,2009.New York:ACM,2009:111-120.

[6]Kim Y.Convolutional neural networks for sentence classification[J].arXiv:1408.5882v2,2014.

[7]Zhou Chunting,Sun Chonglin,Liu Zhiyuan,et al.A C-LSTM neural network for text classification[J].arXiv:1511. 08630,2015.

[8]Hinton G E,Osindero S,Teh Y W.A fast learning algorithm for deep belief nets[J].Neural Computation,2006,18(7): 1527-1554.

[9]Graves A.Supervised sequence labelling with recurrent neural networks[M]//Studies in Computational Intelligence.Berlin,Heidelberg:Springer,2012:385.

[10]D'Informatique D E,Ese N,Esent P,et al.Long short-term memory in recurrent neural networks[J].EPFL,2001,9(8): 1735-1780.

[11]Graves A,Eck D,Beringer N,et al.Biologically plausible speech recognition with LSTM neural nets[C]//LNCS 3141: Proceedings of the 1st International Workshopon Biologically Inspired Approaches to Advanced Information Technology,Lausanne,Switzerland,Jan 29-30,2004.Berlin, Heidelberg:Springer,2004:127-136.

[12]Mikolov T,Chen K,Corrado G,et al.Efficient estimation of word representations in vector space[J].arXiv:1301.3781, 2013.

[13]Mikolov T,Sutskever I,Chen K,et al.Distributed representations of words and phrases and their compositionality[C]// Proceedings of the 27th Annual Conference on Neural Information Processing Systems,Lake Tahoe,USA,Dec 5-8, 2013:3111-3119.

[14]Hochreiter S,Schmidhuber J.Long short-term memory[J]. Neural Computation,1997,9(8):1735-1780.

[15]Bottou L.Large-scale machine learning with stochastic gradient descent[C]//Proceedings of the 19th International Conference on Computational Statistics,Paris,Aug 22-27,2010. Berlin,Heidelberg:Springer,2010:177-186.

HU Xing was born in 1993.She is a Ph.D.candidate at Peking University.Her research interest is software engineering.

胡星(1993—),女,北京大學博士研究生,主要研究領(lǐng)域為軟件工程。

WANG Qianxiang was born in 1970.He is a professor at Peking University.His research interests include software engineering and system software,etc.

王千祥(1970—),男,博士,北京大學教授,主要研究領(lǐng)域為軟件工程,系統(tǒng)軟件等。

Application of Deep Learning in Recommendation of Bug ReportsAssignment*

HU Xing,WANG Qianxiang+
Key Lab of High Confidence Software Technologies(Peking University),Ministry of Education,Beijing 100871, China

+Corresponding author:E-mail:wqx@pku.edu.cn

HU Xing,WANG Qianxiang.Application of deep learning in recommendation of bug reports assignment. Journal of Frontiers of Computer Science and Technology,2017,11(5):700-707.

Open source projects typically support an open bug repository to which developers and users can report bugs.As the increase in bug reports and developers,it is a challenge to assign large amounts of bug reports effectively to the appropriate developers.This paper applies two deep learning approaches,long-short term memory and convolutional neural network,to learn the features of bug reports and then makes assignments.Deep learning approaches are expert in learning features and making assignments effectively with the help of features.Compared to the traditional machine learning approaches such as Bayesian learning and support vector machine,the proposed approach can assign bug reports to developers effectively.

issue tracking;bug report assignment;deep learning

10.3778/j.issn.1673-9418.1609033

A

:TP311.5

*The National Natural Science Foundation of China under Grant Nos.61672045,61421091(國家自然科學基金);the National Basic Research Program of China under Grant No.2015CB352201(國家重點基礎(chǔ)研究發(fā)展計劃(973計劃)).

Received 2016-08,Accepted 2016-10.

CNKI網(wǎng)絡(luò)優(yōu)先出版:2016-10-31,http://www.cnki.net/kcms/detail/11.5602.TP.20161031.1652.028.html

猜你喜歡
開發(fā)人員向量卷積
向量的分解
基于3D-Winograd的快速卷積算法設(shè)計及FPGA實現(xiàn)
聚焦“向量與三角”創(chuàng)新題
卷積神經(jīng)網(wǎng)絡(luò)的分析與設(shè)計
從濾波器理解卷積
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
基于傅里葉域卷積表示的目標跟蹤算法
向量垂直在解析幾何中的應(yīng)用
向量五種“變身” 玩轉(zhuǎn)圓錐曲線
后悔了?教你隱藏開發(fā)人員選項
宣化县| 伊宁县| 涡阳县| 商水县| 舒城县| 仁布县| 石台县| 隆尧县| 浙江省| 新宁县| 伊通| 东光县| 长岭县| 石门县| 连州市| 洛川县| 米泉市| 康乐县| 永平县| 仁化县| 娄底市| 民县| 河东区| 射洪县| 郓城县| 伊宁县| 丰城市| 牙克石市| 丹凤县| 克什克腾旗| 都兰县| 昌乐县| 宁晋县| 梅州市| 连南| 邹平县| 姚安县| 霍州市| 汉沽区| 广汉市| 德安县|