999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用RNNLM面向主題的特征定位方法*

2017-10-12 03:40:10尹春林熊文軍周小煊
計算機與生活 2017年10期
關鍵詞:特征實驗方法

尹春林,王 煒,2+,李 彤,2,何 云,熊文軍,周小煊

1.云南大學 軟件學院,昆明 650091

2.云南省軟件工程重點實驗室,昆明 650091

利用RNNLM面向主題的特征定位方法*

尹春林1,王 煒1,2+,李 彤1,2,何 云1,熊文軍1,周小煊1

1.云南大學 軟件學院,昆明 650091

2.云南省軟件工程重點實驗室,昆明 650091

Abstract:Software feature location is the guarantee of software evolution.Textual based feature location method is an important part of the current research on feature location.The current feature location method based on text regards the code key words as the independent identically distributed individual,and ignores the context of the code.For this question mentioned above,this paper proposes a source code topic modeling method by using deep learning language model RNNLM(recurrent neural networks language model),and realizes localization features on this basis.The experimental results show that the precision rate is improved by 8.61%and 2.61%compared with the text feature localization based on LDA(latent Dirichlet allocation)and LSI(latent semantic indexing),indicating that the method has better precision.

Key words:software feature location;software evolution;RNNLM;topic modeling

軟件特征定位是軟件演化活動順利展開的保證?;谖谋镜奶卣鞫ㄎ环椒ㄊ悄壳疤卣鞫ㄎ谎芯康囊粋€重要組成部分。當前基于文本的特征定位方法將代碼關鍵詞視為獨立同分布的個體,忽略了代碼間的語境。針對上述問題,基于深度學習語言模型RNNLM(recurrent neural networks language model)提出了一種源代碼主題建模方法,并在此基礎上實現了特征定位。實驗結果表明,與基于LDA(latent Dirichlet allocation)和LSI(latent semantic indexing)的文本特征定位相比較,查準率提高8.61%和2.61%,表明該方法具有較優的查準率。

軟件特征定位;軟件演化;RNNLM;主題建模

1 引言

特征定位(feature location)[1]也被稱為概念定位(concept location)[2-3]或者軟件偵測(software reconnaissance)[4],是程序理解領域一個重要的組成部分[5-6]。該研究旨在建立特征與源代碼之間映射關系,而特征(features)[1]是指可被定義和評估的軟件功能屬性。

對特征定位的研究最早可以追溯到1992年,Wilde等人提出了最早的特征定位方法——軟件偵測(software reconnaissance)[4]。在軟件維護/演化領域,沒有任何一個維護/演化任務能夠脫離特征定位的支持[1,7]。維護/演化活動是在現有系統的約束下實施的受限開發。因此,理解特征與代碼之間的映射關系,并據此確定執行維護/演化活動的起始點和范圍,是成功實施維護/演化活動的基礎。確定維護/演化活動影響范圍的過程稱為波及效應分析[8-9]。該分析的前提通常是使用特征定位方法確定維護/演化活動的起始點[1]??勺匪菪詮驮璠10]試圖建立軟件實體(代碼、需求文檔、設計文檔等)之間的映射關系。特征定位旨在建立軟件功能屬性與源代碼之間的映射關系,因此可以認為特征定位研究是可追溯性復原研究的一個重要組成部分。建立高效的特征定位方法不僅可以豐富程序理解研究內涵,同時對推動多個研究領域的共同發展具有重要意義。

按分析方式的不同特征定位可以分為靜態特征定位、動態特征定位、基于文本的特征定位和混合特征定位。經過實驗驗證,基于文本的特征定位較靜態特征定位和動態特征定位具有較高的查準率,因而受到了業界的廣泛重視。

當前基于文本的特征定位方法大致可以分為3類:基于模式識別、基于自然語言處理和基于信息檢索的特征定位方法?;谀J阶R別的特征定位方法是3種方法中最簡單的一種,其思想是程序員使用正則表達式描述軟件特征,定位算法根據特征描述對代碼進行檢索,并將檢索結果作為特征定位結果進行輸出。

基于自然語言處理的特征定位方法試圖將自然語言處理在詞性標注、分詞、組塊分析等方面的研究成果嫁接于特征定位問題。而實驗證明,基于自然語言處理的特征定位方法較基于模式匹配的特征定位方法在查準率和執行效率方面都有不同程度的提高。

基于信息檢索的特征定位方法顧名思義是將信息檢索領域成熟的方法應用于特征定位問題。其思想是程序員使用自然語言對特征進行描述,通過度量特征描述與代碼之間的語義相似度實現特征定位?;居嬎懔鞒倘缦拢?/p>

(1)生成語料庫。根據不同的粒度,為源代碼中每一個實體(類、方法等)建立一個文本文件。文件中保存著代碼實體中出現過的關鍵詞。所有文本文件構成語料庫。

(2)預處理。包含去除停詞(stop words)、分詞、詞干還原三部分。在去除停詞步驟中將刪除與特征知識不相關的詞,例如代碼中出現的冠詞、不定冠詞等。代碼中的變量名經常按照一定的法則由多個實詞組合而成(例如駝峰命名法)。分詞操作將連續的字符序列按照一定的規則拆分成若干單詞,例如tableOpen拆分成為table和open兩個詞。詞干還原將意義相近的同源詞和同一個單詞的不同形態進行歸并,例如inserting還原成為insert。

(3)數值化表示。將經過預處理的語料轉換為便于計算的數值化形式。常見的數值化方法是基于“詞袋”模式[11]的Document Term Matrix[12]矩陣或TFIDF[13]矩陣。

(4)特征描述數值化表示。將程序員提供的特征描述數值化,使之與經過轉換的代碼矩陣具有相同的維度。

(5)特征定位。使用信息檢索算法對步驟(3)生成的源代碼矩陣進行索引、語義分析、主題建模等操作。計算特征描述與信息檢索結果之間的相似度。設定閾值,凡大于閾值的代碼實體被認為是特征定位結果。

常用的信息檢索方法有隱語義索引(latent semantic indexing,LSI)[14]、隱狄利克雷分布(latent Dirichlet allocation,LDA)[15]、向量空間模型(vector space model,VSM)[16]、依賴性語言模型(dependence language model,DLM)[17]。由于代碼也是一種特殊的文本,致使信息檢索技術應用于特征定位研究并不需要太多的轉換,從而定位算法查準率較傳統動態、靜態定位方法有所提高[1,5],恰當地發揮了信息檢索研究成果對特征定位研究的支持。然而,基于信息檢索的特征定位方法在實踐中也暴露出一些問題。代碼的數值化抽象是特征定位的基礎,但源代碼具有區別于自然語言的構詞法則(例如變量的駝峰構詞法)、關鍵詞(例如編程語言定義的操作符)、段落標識(自然語言以回車符作為段落標識,而程序則以“}”等符號作為標識)、關鍵詞上下文語義關聯性更弱等特點。當前主流的代碼數值化方式(LDA、LSI等)均使用“詞袋”模型[11],即認為源代碼對應的概率分布函數僅與關鍵詞本身有關,與關鍵詞的上下文環境無關,是一種上下文無關模型。該模型的缺陷在于:(1)無法刻畫代碼上下文對關鍵詞的影響;(2)非平滑性,測試數據中若有一些關鍵詞在訓練數據中沒有出現,導致整個代碼的概率為0;(3)代碼向量維度高、稀疏,給后續計算造成了維度災難(curse of dimension)。

針對當前基于信息檢索特征定位方法存在的問題,本文提出了一種基于深度學習語言模型RNNLM(recurrent neural networks language model)的面向主題的特征定位方法。

本文的主要貢獻有以下幾方面:

(1)利用深度學習語言模型RNNLM獲取程序上下文語義,以期支持特征定位。

(2)提出了代碼類標定義方法。RNN(recurrent neural network)屬于監督學習,需要帶標簽數據,源代碼本身沒有標簽數據,本文以“類”為粒度,提出了一種代碼標簽定義方法。

(3)源代碼數值化。即詞向量的生成,將源代碼數值化可以更精準、良好地表達文本上下文語義相似性關系,使得特征定位的基礎更牢靠。

本文組織結構如下:第2章給出了利用深度學習算法RNN進行特征定位的基本框架。第3章對實驗環節進行描述,設定了基線方法,設計了實驗步驟,并定義了實驗效果的量化指標。通過對比基線方法與本文方法的實驗結果,對有效性進行了分析。第4章對本實驗的不足及將來的研究工作進行總結。

2 本文方法

本文方法框架如圖1所示,主要分為三部分:生成語料庫,代碼數值化轉換和特征定位。其中,語料庫生成使用文本分析方法,利用循環神經網絡語言模型生成詞向量,最后對給定查詢進行相似度計算并輸出按相似度降序的結果,也就是特征定位的過程。

Fig.1 Method frame of this paper圖1 本文方法框架圖

2.1 生成語料庫

一個軟件系統可以被劃分成不同的功能或者不同的模塊,一個主題對應于一個功能或者一個模塊。基于文本的特征定位方法[18-19]認為源代碼中的變量名、函數名、class(類)名、API函數、注釋等關鍵詞中蘊含了豐富的主題知識,可以通過它們建立源代碼與特征之間的映射關系?;赗NNLM的特征定位方法本質上是先對語料庫進行主題知識建模再對查詢語句進行分類,精準的主題劃分對主題建模結果的好壞具有決定性的作用,不同粒度的主題劃分獲得的實驗效果也不一樣。本文進行方法/函數粒度、類粒度、文件夾粒度和包粒度4種劃分。函數級的劃分粒度過小,可能需要多個函數才能共同表達一個主題知識,為此需要先進行聚類運算;文件夾和包級別的劃分粒度偏大,適合大型軟件系統的特征定位。結合本文所選源代碼系統,認為“類”級的劃分對體現本文方法的主題知識更加理想,因此選擇在類一級上進行主題知識分析。主題知識的獲取如下:

(1)獲取語料

源代碼中一個class能夠體現一個主題。本文使用的源代碼系統是一個完整的原始系統,系統中除了包含類文件還包含其他一些無關文檔,因此首先需要從源代碼系統中將class文件提取出來。將源代碼中的所有class文件提取出來后,就獲得了一個初始語料庫。

(2)語料標注

由于使用的RNN屬于監督學習,在訓練時需要有標定的數據,而目前的語料還是無標簽數據,接下來的工作就是給這些數據貼上標簽。本文使用數字作為標簽名,標注方式如表1所示。

Table 1 Labelling method表1 貼標簽標記方法

表1表示由3個帶標簽的class組成的一個語料庫,其中第一列表示一個從源代碼中提取出來的classID,第二列表示該行所對應class的文本內容,第三列表示該行所對應class的標簽。

(3)預處理

傳統的文本特征定位需要對獲得的語料庫進行預處理,主要包含分詞、詞根還原和去除停用詞三方面的操作。分詞就是將源代碼中的復合詞拆分,比如一個方法名由ActionSet組成,則將其拆分為Action和Set兩個詞;詞根還原用于將同義詞進行歸并,以及將一個詞的不同形態進行還原;去除停用詞將謂詞、運算符等不包含主題知識的詞匯剔除。

由于本文使用RNNLM進行特征定位,而RNNLM是可以提取復雜的上下文語義關系的。僅將每一個.java文件里的所有內容提取出來作為一個數據,保留文件中各關鍵詞出現的順序和形式。因此并不需要像傳統的文本特征定位那樣進行繁瑣的預處理,僅需將代碼中的部分注釋(有一些注釋僅僅表達了開源軟件使用的開源協議,對表達程序功能語義毫無作用,為了節省運行時間和計算機資源等,需要對這類符號進行一個簡單的處理,處理方式是將它刪除)刪除后就可以作為輸入。這樣與傳統的文本特征定位相比,本文方法更能完整地保留主題知識。

2.2 代碼數值化轉換

通常的“詞袋”語言模型可以抽象為關鍵詞的概率分布函數。形式化地來說,假設源代碼SC是由{w1,w2,…,wn}構成的文本序列,則SC對應的概率分布函數如式(1):

其中,條件概率P(w1),P(w2|w1),…,P(wn|w1,w2,…,wn-1)是源代碼聯合概率模型P(SC)的參數。之前提到這樣的模型存在非平滑,向量維度大、稀疏,無法反映關鍵詞上下文語境等問題。如何將以字符串為基礎的源代碼抽象為對應的數值化形式,解決傳統源代碼向量維度大、稀疏,無法反映關鍵詞上下文語境等問題決定了特征定位方法的好壞。本文采用可以對更復雜的上下文進行建模的RNNLM對代碼進行抽象。

該抽象機制不是像普通的神經網絡那樣直接對P(wi|wi-(n-1),…,wi-1)進行式(2)這樣的近似計算,RNNLM是直接對P(wi|wi-(n-1),…,wi-1)進行建模求解。RNNLM也并不像n-gram model那樣對n元近似求解,而是使用迭代的方式對其進行建模求解。RNNLM可以利用所有的上文信息,對當前詞進行預測。實驗直接利用RNNLM對語料庫進行建模,映射出每一個class與其標簽的一一對應關系。class與標簽名建立對應關系的過程大概如下:

(1)將語料庫中每一個class源代碼用one-hot表示成詞向量。

(2)將第1步生成的詞向量進行RNN訓練,最終轉換成類似于[0.056,-0.267,-0.898,0.111,-0.281,0.567,…]這樣的低維實數短向量。

(3)利用第2步獲得的詞向量通過Softmax建立每個class與其對應類標的映射,即獲得RNN隱藏層中的激活函數Softmax的參數θ:

這樣的低維實數短向量可以避免傳統抽象方法帶來的稀疏性,從而可以避免相關或者相似詞之間的獨立性,兩個相似詞之間的距離可能就更短了。同時,相似詞的詞向量之間的距離相近了,這就讓基于詞向量設計的一些模型自帶平滑功能[20-21]。

2.3 特征定位

特征定位是將程序員提供的特征描述與模型中的主題進行匹配的過程,即識別特征描述與哪些程序源代碼相關。同樣將程序員提交的query(查詢語句)經過像2.2節一樣的數值化后用RNN進行訓練,訓練完成后就可以將訓練生成的詞向量交給2.2節獲得的Softmax參數模型進行分類。這一分類過程其實就是計算查詢語句的詞向量與哪一個class詞向量的相似度最高的過程。本質上這也是一個多分類問題。Softmax分類函數如式(3):

Softmax回歸其實就相當于多類別情況下的邏輯回歸,式(3)中Softmax有k個類,并且函數將(-θ*X)作為指數的系數,因此就有j=1…k項。然后除以它們的累加和,這樣做就實現了歸一化,使得輸出的k個數的和為1。因此Softmax的假設函數輸出的是一個k維列向量,每一個維度的值就代表與該維度索引值對應的類出現的概率,比如輸出這樣一個列向量[0.5,0.3,0.2],0.5就代表第0類出現的概率為0.5。這樣計算出每個特征描述與每一個class的概率,然后依次按概率降序排列。為此,獲得一個概率相關列表,越在前面的class就是相關度越大的class。本文獲得的特征定位的結果就是每個查詢語句與每個class的相似度。

3 實驗過程及結果分析

為了對實驗結果進行客觀、有效的評估,將文獻[18,23]的方法作為基線方法進行對比論證。

3.1 實驗源代碼

為了確保實驗結果的客觀性和正確性,本文使用文獻[1]提供的iEdit 4.3[1]基準數據集進行測試。該數據集源代碼包含531個類(class),6 400余個方法(method),1.9萬行源代碼。同時,還有272個通過使用IST(issue tracking system)和SVN(subversion)工具分析獲得的特征。每一個特征對應于兩個數據文件。

(1)Queries:以“ShortDescription[ID].txt”和“Long-Description[ID].txt”命名的文件,特征的文本描述,該數據主要來源于jEdit版本更新時的改動說明文本。LongDescription是詳細描述,ShortDescription是概括性短語描述。在實驗中,把ShortDescription作為定位特征時的查詢內容。

(2)GoldSet:以“GoldSet[ID].txt”命名的文件,記錄了與特征實際相關的源代碼,這個數據用于驗證定位結果的正確性[22]。

3.2 模型訓練

3.2.1 模型挑選

第2章已經介紹了語料庫的生成過程,這里就不再做詳細介紹。有了語料庫,人們就可以對語料庫進行建模訓練,本文選用RNN語言模型來獲取主題知識。對語料庫進行簡單的預處理后就可以用作實驗的輸入數據了,但當前的數據還是文本數據,并不能被計算機處理,因此還要將這些數據數值化,即詞向量的生成。在RNNLM中詞向量的訓練生成是伴隨著循環神經網絡語言模型的訓練生成產生的,詞向量相當于是以參數的形式存在于RNNLM中。因此本文的詞向量與RNN模型是捆綁在一起訓練的。

為了能得到一個好的模型,本文設定了一組驗證集(實驗中因為531個數據沒有兩個屬于同一類,所以驗證集同樣是531個訓練數據中的一小部分),設置驗證集的目的是用來選取模型,挑選對驗證集預測準確率高的模型來做特征定位。圖2是其中訓練的兩個模型的統計結果,橫坐標是訓練模型時迭代的次數,縱坐標是驗證集準確率。兩個模型訓練的不同之處是模型1迭代一次訓練10個數據,模型2迭代一次訓練50個數據,兩個模型都迭代了100次。由此可知模型預測的準確率與迭代次數和每次訓練的實驗數目有關。因為數據集都是不相同的,但又想將每個數據都用于模型的訓練,所以驗證集就和訓練集有交叉,即驗證集是訓練集的子集。但實驗也發現并不是對驗證集準確率高的模型特征定位結果的準確率也高。本文選擇了模型2這樣相對穩定單調的模型來進行下一步的實驗。

Fig.2 Comparison of models圖2 模型對比

3.2.2 參數設定

本文使用的RNNLM模板并不需要設置太多的參數,其中需要設置的參數有以下幾個。

隱藏層(layers)中的Embedding、GatedRecurrent和Dense設置。

(1)Embedding(詞向量):size=128;

(2)GatedRecurrent(門機制循環):size=256,激活函數activation=tanh;

(3)Dense(輸出設置):size=531,激活函數activation=softmax,訓練生成softmax的參數θ,輸出531個類。

RNN模型(model)僅有兩個參數需要設置。

(1)layers=layers,隱藏層使用上面設置好的layers;

(2)cost=cce,“cce”為以softmax為輸出的多分類損失函數。

3.3 實驗標準定義

在傳統的特征定位中評判實驗結果好壞通常使用信息檢索中常用的兩個指標:查全率(Recall)和查準率(Precision)[22]。

定義1Recall表示查全率,correct代表與特征相關的代碼總量,retrieved代表使用特征定位方法檢索出來的代碼量,則查全率的定義為:

定義2Precision表示查準率,correct代表與特征相關的代碼總量,retrieved代表使用特征定位方法檢索出來的代碼量,則查準率的定義為:

由定義可以看出,查全率和查準率之間存在一定的互逆關系。從定義1可見,特征相關代碼總量固定,當增加檢索出來的代碼量retrieved時會獲得較高的查全率,極端情況下檢索出所有代碼可以獲得百分之百的查準率。但從定義2知道,當檢索出來的代碼量增加也就意味著分母增加,查準率下降。

特征定位的目的是找到特征相關的源代碼,并不是很注重查全率的提高,而是更加看重查準率的提升,原因是只有找到一個與特征相關的源代碼就可以把接下來的工作交給波及效應分析來處理。傳統的基于文本的特征定位方法使用經驗閾值α=0.075作為判定文本與特征是否具有相關性的標準[18],但在數據規模較大時,取α=0.075效果并不理想。而文獻[22]推薦取相似度最高的10%~15%的源代碼作為結果,然而這樣的判定方式通常會擴大后續軟件演化的范圍和降低演化的效率。同時,目前在特征定位中已有很多學者都認為可以通過判定實驗檢索出代碼中第一個與實際特征相關的代碼排在第幾位來衡量實驗方案的好壞。

綜上看來,最理想的特征定位應該是只定位出一個相關代碼,該代碼恰好是與特征相關的代碼,接下來的工作交給波及效應分析來進行。傳統特征定位在計算查準率時通常取檢索結果的前10%~15%(即定義2中的retrieved)來計算,如本實驗中有531個class,則取檢索出來的高相似度的前10%有53.1個。假設有這樣一個例子:在定位特征f時,輸入query描述語句,方法檢索出來的高相似度的前10%個class為retrieved={r1,r2,…,r50},ri表示檢索出來的一個類。假設實際與特征f相關的代碼類個數有20個,即correct={c1,c2,…,ci,…,c20},ci表示一個與特征f實際相關的類,假如retrieved中有5個類與correct中的類相同,則查準率約為10%。然而人們并不能確定在retrieved中與correct中相同的這5個類是前5個,最壞的情況可能這5個類在retrieved中是排在最后的5個。在這個例子中用定義2的方法獲得的查準率為10%。然而不難發現這種情況下前48個類都不是與特征相關的類,這10%的查準率是虛的,對進行軟件維護并沒有太大實際意義。因此綜合以上幾種觀點,本實驗只檢索出一個認為高度與特征實際相關的源代碼類來計算查準率,也就是只取前1.9%(1/531)個類進行查準率的計算。此時的查準率計算由定義3進行闡述。

定義3Precision代表查準率,若Ri是實驗檢索出的與特征i相似度最高的代碼,Ri的確與特征i相關,則記Resulti=1,否則Resulti=0,則查準率定義為:

其中,n表示特征的數量。本文對50個特征進行了實驗。本實驗只檢索出一個相似度最高的代碼類出來,因此就不做查全率的計算。但認為這不會對實驗的評價造成影響。

3.4 實驗結果分析

為了驗證本文方法的有效性,將文獻[18,23]提出的LSI和LDA方法作為基線方法,使用基準數據集進行正面對比實驗。本文實驗測試了50個數據計算查準率,基線方法僅測試了10個數據。圖3是本文方法與兩種方法查準率和檢索率(即實驗檢索出來用于計算查準率的代碼量與實驗代碼總量的比值)的對比情況。本文方法獲得的平均查準率為11.11%,檢索率為1.9%;而基線方法的平均查準率為8.5%和2.5%,檢索率卻為15.0%和5.0%。

Fig.3 Comparison of experimental result圖3 實驗結果對比

表2對3種方法的數據進行了對比。從表2中可以看出ArgoUML類個數要比jEdit大,取5%仍然有78個類,jEdit取10%~15%有53~79個類,本文方法測試的數據個數比文獻[18,23]都多40個。為了更有效地驗證本文方法的有效性和公正性,本文還做了一組自我對照組,同樣挑選出了與文獻[18]方法相同的10個數據進行了測試,表3是被測試的10個數據,“ID”是每個數據對應的ID號,“GoldSet”是與對應特征實際相關的class數。

Table 2 Test data and retrieve amount表2 測試數據和檢索量對比

10個相同數據測試結果如表4。表4中“本文實驗1”是測試了50個數據的結果,“本文實驗2”是測試了10個實驗的結果,然而測試10個數據的查準率為20%,比“本文實驗1”測試了50個數據的查準率11.11%和文獻[18]方法測試了10個數據的查準率8.5%都要高。這說明在這10個測試中有2個正確地匹配到了相關特征。

通過實驗的對比論證可以看出,本文方法較其他方法都有更優的查準率。

Table 3 10 data sets表3 10個數據集

Table 4 10 experimental test results表4 10個實驗測試結果

3.5 其他標注方式

使用的RNN是監督學習,監督學習在訓練階段需要有標簽數據,而人們常用的基準實驗數據集jEdit、muCommander、JabRef和 ArgoUML 等都是無標簽數據集,這就需要手動對源代碼進行劃分。劃分的依據是按主題知識進行劃分,劃分的好壞將會影響分類的結果。作者嘗試過不同的劃分方式,比如將系統中的同一個文件夾下的所有源代碼類劃分成一個大類,然而實驗發現這樣做存在一個問題,數據集jEdit中與實際特征相關的代碼是類一級的粒度,那么同一個文件夾下可能有多個類,但這些類都被標注到了同一個類簇中,最后定位出來的就是同一個文件夾下的所有類,這個類簇中包含類的數量多少不一,有的與實際特征相關,有的不相關。這樣即使定位出一個文件夾,也不能確定該文件夾下的這些類到底哪一個與特征更相關,即不能夠確定該文件夾下的類的相關權重,因此還要進行二次篩選。這就給計算查準率等帶來了很大麻煩。

定義4假設S是源代碼系統,該系統包含50個文件夾,S={s1,s2,…,si,…,s50},si是該系統中的一個文件夾,該文件夾包含n(n<531)個類,T是S的一個子集T={t1,t2,…,ti},i≤50,其中ti文件夾下至少包含一個源代碼類。ti={c1,c2,…,ci},i<531,ci代表一個類。

每一個文件下的類能表達同一個主題知識,于是將系統S按文件夾劃分成50個類簇,每個類簇至少包含一個類對象,到此已給系統S貼上標簽,接下來用RNN訓練,最后進行特征定位。然而按這樣的思路定位出來的是一個類簇,而每個類簇的類對象個數多少不一,有的甚至多于源代碼總類個數的15%,而有的僅有一個類,這樣劃分得出的結果難以確定每一個文件夾下哪些類是與相關特征有關。

4 小結及未來研究方向

自從2006年Hinton等人提出深度學習到現在,其在很多領域取得了令人矚目的成就,特別是在語音、圖像識別和自然語言處理等方面。然而基于文本的特征定位大部分工作是與文本打交道,本文提出運用深度學習算法RNN來進行基于文本的特征定位。與傳統的軟件特征定位不同,深度學習在訓練模型前運用了數值化的方式對文本進行預處理,使特征的主題知識得以更完好地保存下來,這就避免了分詞、停詞、詞根還原和使用TF-IDF矩陣來表達主題知識產生的特征表達不好的短板,對后來主題知識的分類打下了很好的基礎。同時由于波及效應分析的發展,縮小檢索范圍對軟件演化、軟件維護更具有實際意義。目前一些學者認為可以通過評估檢索出來的代碼中第一個與實際特征一致的代碼排在第幾個位置來評估實驗方案的好壞,本文只是用提取出的代碼中相似度最高的一個代碼類來做查準率的計算,自然也就去掉了查全率的計算,但是這樣評估研究結果的查準率更有助于后續軟件演化效率的提高。然而本文利用最低的檢索量獲得了更高的查準率,從另一方面來說這也是特征定位最理想的狀況,也更具有普遍意義和實際意義。

RNN是一個監督學習,需要有標注的數據集,但是通常用在特征定位的數據集都是無標簽數據集,并且數據標簽標注的標準、粒度及方法等都會影響到領域主題知識的表達。實驗中嘗試將同一個文件夾下的所有類劃分成同一個主題,但并沒有取得很好的效果。這也提示人們探索更好的標注方式。

同時,訓練RNN需要大量的數據集才能取得良好的效果,而本文實驗采用的是jEdit4.3按類級粒度進行劃分,劃分后僅有531個數據集,這對本文的模型訓練增加了一定的難度。因此未來可以將數據集劃分粒度減小一些,比如按方法進行劃分,或者找一個更大的系統來進行訓練,以獲得更好的結果。同時希望在目前的基礎上增加動態層來提高查準率。

[1]Dit B,Revelle M,Gethers M,et al.Feature location in source code:a taxonomy and survey[J].Journal of Software Maintenance&Evolution Research&Practice,2013,25(1):53-95.

[2]Abebe S L,Alicante A,Corazza A,et al.Supporting concept location through identifier parsing and ontology extraction[J].Journal of Systems and Software,2013,86(11):2919-2938.

[3]Scanniello G,Marcus A,Pascale D.Link analysis algorithms for static concept location:an empirical assessment[J].Empirical Software Engineering,2015,20(6):1666-1720.

[4]Wilde N,Gomez JA,Gust T,et al.Locating user functionality in old code[C]//Proceedings of the 1992 Conference on Software Maintenance,Orlando,USA,Nov 9-12,1992.Piscataway,USA:IEEE,1992:200-205.

[5]Alhindawi N,Alsakran J,Rodan A,et al.A survey of concepts location enhancement for program comprehension and maintenance[J].Journal of Software Engineering and Applications,2014,7:413-421.

[6]Dit B,Revelle M,Poshyvanyk D.Integrating information retrieval,execution and link analysis algorithms to improve feature location in software[J].Empirical Software Engineering,2013,18(2):277-309.

[7]Rajlich V,Gosavi P.Incremental change in object-oriented programming[J].IEEE Software,2004,21(4):62-69.

[8]Li Bixin,Sun Xiaobing,Leung H,et al.A survey of codebased change impact analysis techniques[J].Software Testing,Verification&Reliability,2013,23(8):613-646.

[9]Wang Wei,Li Tong,He Yun,et al.A hybrid analysis method for ripple effect of software evolution activities[J].Journal of Computer Research and Development,2016,53(3):503-516.

[10]Lucia A D,Marcus A,Oliveto R,et al.Information retrieval methods for automated traceability recovery[M]//Software and Systems Traceability.London:Springer,2012:71-98.

[11]Wikipedia.Bag of words model[EB/OL].[2016-07-18].https://en.wikipedia.org/wiki/Bag-of-words_model.

[12]Salton G,Buckley C.Term-weighting approaches in automatic text retrieval[J].Information Processing&Management,1988,24(5):513-523.

[13]Robertson S.Understanding inverse document frequency:on theoretical arguments for IDF[J].Journal of Documentation,2004,60(5):503-520.

[14]Dumais S T,Dumais S T,Landauer T K,et al.Latent semantic analysis[J].Annual Review of Information Science and Technology,2004,38(1):188-230.

[15]Blei D M,Ng A Y,Jordan M I.Latent Dirichlet allocation[J].Journal of Machine Learning Research,2003,3:993-1022.

[16]Salton G,Wong A,Yang C S.A vector space model for automatic indexing[J].Communications of the ACM,1975,18(11):613-620.

[17]Gao Jianfeng,Nie Jianyun,Wu Guangyuan,et al.Dependence language model for information retrieval[C]//Proceedings of the 27th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval,Sheffield,UK,Jul 25-29,2004.New York:ACM,2004:170-177.

[18]Marcus A,Sergeyev A,Rajlich V,et al.An information retrieval approach to concept location in source code[C]//Proceedings of the 11th Working Conference on Reverse Engineering,Delft,Netherlands,Nov 8-12,2004.Washington:IEEE Computer Society,2004:214-223.

[19]Petrenko M,Rajlich V,Vanciu R.Partial domain comprehension in software evolution and maintenance[C]//Proceedings of the 16th International Conference on Program Comprehension,Amsterdam,Jun 10-13,2008.Washington:IEEE Computer Society,2008:13-22.

[20]Licstar.Deep learning in NLP[EB/OL].[2016-07-18].http://licstar.net/archives/328.

[21]Lai Siwei.Word and document embeddings based on neural network approaches[D].Beijing:University of Chinese Academy of Sciences,2016.

[22]Ju Xiaolin,Jiang Shujuan,Zhang Yanmei,et al.Advances in fault localization techniques[J].Journal of Frontiers of Computer Science and Technology,2012,6(6):481-494.

[23]Han Junming,Wang Wei,Li Tong,et al.Feature locationmethod of evolved software[J].Journal of Frontiers of Computer Science and Technology,2016,10(9):1201-1210.

附中文參考文獻:

[9]王煒,李彤,何云,等.一種軟件演化活動波及效應混合分析方法[J].計算機研究與發展,2016,53(3):503-516.

[21]來斯惟.基于神經網絡的詞和文檔語義向量表示方法研究[D].北京:中國科學院大學,2016.

[22]鞠小林,姜淑娟,張艷梅,等.軟件故障定位技術進展[J].計算機科學與探索,2012,6(6):481-494.

[23]韓俊明,王煒,李彤,等.演化軟件的特征定位方法[J].計算機科學與探索,2016,10(9):1201-1210.

Using RNNLM to Conduct Topic Oriented Feature Location Method*

YIN Chunlin1,WANG Wei1,2+,LI Tong1,2,HE Yun1,XIONG Wenjun1,ZHOU Xiaoxuan1
1.College of Software,Yunnan University,Kunming 650091,China
2.Key Laboratory for Software Engineering of Yunnan Province,Kunming 650091,China

A

TP311.5

+Corresponding author:E-mail:wangwei@ynu.edu.cn

YIN Chunlin,WANG Wei,LI Tong,et al.Using RNNLM to conduct topic oriented feature location method.Journal of Frontiers of Computer Science and Technology,2017,11(10):1599-1608.

ISSN 1673-9418 CODEN JKYTA8

Journal of Frontiers of Computer Science and Technology

1673-9418/2017/11(10)-1599-10

10.3778/j.issn.1673-9418.1609035

E-mail:fcst@vip.163.com

http://www.ceaj.org

Tel:+86-10-89056056

*The National Natural Science Foundation of China under Grant Nos.61462092,61262024,61379032(國家自然科學基金);the Key Project of Natural Science Foundation of Yunnan Province under Grant No.2015FA014(云南省自然科學基金重點項目);the Natural Science Foundation of Yunnan Province under Grant No.2013FB008(云南省自然科學基金);the Science Research Fund of Yunnan Provincial Department of Education under Grant No.2016YJS007(云南省教育廳科學研究基金).

Received 2016-09,Accepted 2016-11.

CNKI網絡優先出版:2016-11-25,http://www.cnki.net/kcms/detail/11.5602.TP.20161125.1530.006.html

YIN Chunlin was born in 1991.He is an M.S.candidate at Yunnan University,and the member of CCF.His research interests include software engineering,software evolution and data mining.

尹春林(1991—),男,云南保山人,云南大學碩士研究生,CCF會員,主要研究領域為軟件工程,軟件演化,數據挖掘。主持云南省教育廳科學基金研究生項目1項。

WANG Wei was born in 1979.He received the Ph.D.degree in system analysis and integration from Yunnan University in 2009.Now he is an associate professor at Yunnan University,and the member of CCF.His research interests include software engineering,software evolution and data mining.

王煒(1979—),男,云南昆明人,2009年于云南大學系統分析與集成專業獲得博士學位,現為云南大學副教授,CCF會員,主要研究領域為軟件工程,軟件演化,數據挖掘。發表學術論文15篇,出版教材1部,主持省部級項目5項。

LI Tong was born in 1963.He received the Ph.D.degree in software engineering from De Montfort University in 2007.Now he is a professor and Ph.D.supervisor at Yunnan University,and the senior member of CCF.His research interests include software engineering and information security.

李彤(1963—),男,河北石家莊人,2007年于英國De Montfort大學軟件工程專業獲得博士學位,現為云南大學軟件學院院長、教授、博士生導師,CCF高級會員,主要研究領域為軟件工程,信息安全。發表學術論文100余篇、專著2部、教材5部,主持國家級項目5項、省部級項目14項、其他項目20余項。

HE Yun was born in 1989.He is a Ph.D.candidate at Yunnan University,and the student member of CCF.His research interests include software engineering,software evolution and data mining.

何云(1989—),男,云南建水人,云南大學博士研究生,CCF學生會員,主要研究領域為軟件工程,軟件演化,數據挖掘。

XIONG Wenjun was born in 1988.He is an M.S.candidate at Yunnan University.His research interests include software repository mining and software requirement prediction.

熊文軍(1988—),男,云南臨滄人,云南大學碩士研究生,主要研究領域為軟件倉庫挖掘,軟件需求預測。

ZHOU Xiaoxuan was born in 1993.She is an M.S.candidate at Yunnan University,and the student member of CCF.Her research interests include software engineering,software evolution and data mining.

周小煊(1993—),女,吉林長春人,云南大學碩士研究生,CCF學生會員,主要研究領域為軟件工程,軟件演化,數據挖掘。

猜你喜歡
特征實驗方法
記一次有趣的實驗
如何表達“特征”
做個怪怪長實驗
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
抓住特征巧觀察
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
主站蜘蛛池模板: 97超级碰碰碰碰精品| 日韩高清中文字幕| 园内精品自拍视频在线播放| 国产不卡国语在线| 香蕉精品在线| 久久无码高潮喷水| 亚洲一级色| 呦系列视频一区二区三区| 欧美日韩国产综合视频在线观看| 青青久久91| 亚洲国产黄色| 亚洲国产精品无码AV| 日韩视频福利| 国产拍揄自揄精品视频网站| 欧美不卡视频在线观看| 久久黄色小视频| 国产亚洲男人的天堂在线观看 | 麻豆AV网站免费进入| 久久久久久尹人网香蕉| 波多野结衣无码AV在线| 人妻出轨无码中文一区二区| 激情综合图区| 国产在线拍偷自揄拍精品| 精品久久人人爽人人玩人人妻| 国产一区二区三区精品欧美日韩| 亚洲精品国产精品乱码不卞| av在线无码浏览| 99在线观看视频免费| a亚洲天堂| 色综合狠狠操| 久久大香香蕉国产免费网站| 沈阳少妇高潮在线| 久草视频一区| 狠狠色丁婷婷综合久久| 亚洲伊人电影| 亚洲一区无码在线| 日韩午夜片| 免费全部高H视频无码无遮掩| 男女男免费视频网站国产| 国产白浆视频| 亚洲香蕉在线| 一区二区三区成人| 激情视频综合网| 毛片视频网| 国产成人亚洲无吗淙合青草| 国产综合日韩另类一区二区| 欧美精品H在线播放| 在线免费观看AV| 女人18毛片一级毛片在线 | 国产交换配偶在线视频| 婷婷伊人久久| 成人在线观看不卡| 91一级片| 天天摸天天操免费播放小视频| 高清国产va日韩亚洲免费午夜电影| 国产日产欧美精品| 国产美女免费网站| 欧美日韩精品综合在线一区| 一区二区欧美日韩高清免费| 性欧美久久| 亚洲天堂高清| 免费人成黄页在线观看国产| 成人国产精品网站在线看| 黄色网址手机国内免费在线观看| 久久久无码人妻精品无码| 97精品久久久大香线焦| 永久在线播放| 国产福利大秀91| 免费中文字幕在在线不卡 | 亚洲精品天堂自在久久77| 国产美女丝袜高潮| 欧美一道本| 亚国产欧美在线人成| 亚洲天堂久久久| 欧美一道本| 免费亚洲成人| 亚洲精品你懂的| 刘亦菲一区二区在线观看| 激情综合五月网| 在线中文字幕网| 天天视频在线91频| 欧美亚洲一二三区|