• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

    2017-10-12 03:40:10尹春林熊文軍周小煊
    計算機(jī)與生活 2017年10期
    關(guān)鍵詞:查準(zhǔn)率源代碼代碼

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

    1.云南大學(xué) 軟件學(xué)院,昆明 650091

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

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

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

    1.云南大學(xué) 軟件學(xué)院,昆明 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

    軟件特征定位是軟件演化活動順利展開的保證。基于文本的特征定位方法是目前特征定位研究的一個重要組成部分。當(dāng)前基于文本的特征定位方法將代碼關(guān)鍵詞視為獨立同分布的個體,忽略了代碼間的語境。針對上述問題,基于深度學(xué)習(xí)語言模型RNNLM(recurrent neural networks language model)提出了一種源代碼主題建模方法,并在此基礎(chǔ)上實現(xiàn)了特征定位。實驗結(jié)果表明,與基于LDA(latent Dirichlet allocation)和LSI(latent semantic indexing)的文本特征定位相比較,查準(zhǔn)率提高8.61%和2.61%,表明該方法具有較優(yōu)的查準(zhǔn)率。

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

    1 引言

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

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

    按分析方式的不同特征定位可以分為靜態(tài)特征定位、動態(tài)特征定位、基于文本的特征定位和混合特征定位。經(jīng)過實驗驗證,基于文本的特征定位較靜態(tài)特征定位和動態(tài)特征定位具有較高的查準(zhǔn)率,因而受到了業(yè)界的廣泛重視。

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

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

    基于信息檢索的特征定位方法顧名思義是將信息檢索領(lǐng)域成熟的方法應(yīng)用于特征定位問題。其思想是程序員使用自然語言對特征進(jìn)行描述,通過度量特征描述與代碼之間的語義相似度實現(xiàn)特征定位。基本計算流程如下:

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

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

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

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

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

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

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

    本文的主要貢獻(xiàn)有以下幾方面:

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

    (2)提出了代碼類標(biāo)定義方法。RNN(recurrent neural network)屬于監(jiān)督學(xué)習(xí),需要帶標(biāo)簽數(shù)據(jù),源代碼本身沒有標(biāo)簽數(shù)據(jù),本文以“類”為粒度,提出了一種代碼標(biāo)簽定義方法。

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

    本文組織結(jié)構(gòu)如下:第2章給出了利用深度學(xué)習(xí)算法RNN進(jìn)行特征定位的基本框架。第3章對實驗環(huán)節(jié)進(jìn)行描述,設(shè)定了基線方法,設(shè)計了實驗步驟,并定義了實驗效果的量化指標(biāo)。通過對比基線方法與本文方法的實驗結(jié)果,對有效性進(jìn)行了分析。第4章對本實驗的不足及將來的研究工作進(jìn)行總結(jié)。

    2 本文方法

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

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

    2.1 生成語料庫

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

    (1)獲取語料

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

    (2)語料標(biāo)注

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

    Table 1 Labelling method表1 貼標(biāo)簽標(biāo)記方法

    表1表示由3個帶標(biāo)簽的class組成的一個語料庫,其中第一列表示一個從源代碼中提取出來的classID,第二列表示該行所對應(yīng)class的文本內(nèi)容,第三列表示該行所對應(yīng)class的標(biāo)簽。

    (3)預(yù)處理

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

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

    2.2 代碼數(shù)值化轉(zhuǎn)換

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

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

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

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

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

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

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

    2.3 特征定位

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

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

    3 實驗過程及結(jié)果分析

    為了對實驗結(jié)果進(jìn)行客觀、有效的評估,將文獻(xiàn)[18,23]的方法作為基線方法進(jìn)行對比論證。

    3.1 實驗源代碼

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

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

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

    3.2 模型訓(xùn)練

    3.2.1 模型挑選

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

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

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

    3.2.2 參數(shù)設(shè)定

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

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

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

    (2)GatedRecurrent(門機(jī)制循環(huán)):size=256,激活函數(shù)activation=tanh;

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

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

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

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

    3.3 實驗標(biāo)準(zhǔn)定義

    在傳統(tǒng)的特征定位中評判實驗結(jié)果好壞通常使用信息檢索中常用的兩個指標(biāo):查全率(Recall)和查準(zhǔn)率(Precision)[22]。

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

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

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

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

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

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

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

    3.4 實驗結(jié)果分析

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

    Fig.3 Comparison of experimental result圖3 實驗結(jié)果對比

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

    Table 2 Test data and retrieve amount表2 測試數(shù)據(jù)和檢索量對比

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

    通過實驗的對比論證可以看出,本文方法較其他方法都有更優(yōu)的查準(zhǔn)率。

    Table 3 10 data sets表3 10個數(shù)據(jù)集

    Table 4 10 experimental test results表4 10個實驗測試結(jié)果

    3.5 其他標(biāo)注方式

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

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

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

    4 小結(jié)及未來研究方向

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

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

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

    [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.

    附中文參考文獻(xiàn):

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

    [21]來斯惟.基于神經(jīng)網(wǎng)絡(luò)的詞和文檔語義向量表示方法研究[D].北京:中國科學(xué)院大學(xué),2016.

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

    [23]韓俊明,王煒,李彤,等.演化軟件的特征定位方法[J].計算機(jī)科學(xué)與探索,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(國家自然科學(xué)基金);the Key Project of Natural Science Foundation of Yunnan Province under Grant No.2015FA014(云南省自然科學(xué)基金重點項目);the Natural Science Foundation of Yunnan Province under Grant No.2013FB008(云南省自然科學(xué)基金);the Science Research Fund of Yunnan Provincial Department of Education under Grant No.2016YJS007(云南省教育廳科學(xué)研究基金).

    Received 2016-09,Accepted 2016-11.

    CNKI網(wǎng)絡(luò)優(yōu)先出版: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—),男,云南保山人,云南大學(xué)碩士研究生,CCF會員,主要研究領(lǐng)域為軟件工程,軟件演化,數(shù)據(jù)挖掘。主持云南省教育廳科學(xué)基金研究生項目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年于云南大學(xué)系統(tǒng)分析與集成專業(yè)獲得博士學(xué)位,現(xiàn)為云南大學(xué)副教授,CCF會員,主要研究領(lǐng)域為軟件工程,軟件演化,數(shù)據(jù)挖掘。發(fā)表學(xué)術(shù)論文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大學(xué)軟件工程專業(yè)獲得博士學(xué)位,現(xiàn)為云南大學(xué)軟件學(xué)院院長、教授、博士生導(dǎo)師,CCF高級會員,主要研究領(lǐng)域為軟件工程,信息安全。發(fā)表學(xué)術(shù)論文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—),男,云南建水人,云南大學(xué)博士研究生,CCF學(xué)生會員,主要研究領(lǐng)域為軟件工程,軟件演化,數(shù)據(jù)挖掘。

    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—),男,云南臨滄人,云南大學(xué)碩士研究生,主要研究領(lǐng)域為軟件倉庫挖掘,軟件需求預(yù)測。

    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—),女,吉林長春人,云南大學(xué)碩士研究生,CCF學(xué)生會員,主要研究領(lǐng)域為軟件工程,軟件演化,數(shù)據(jù)挖掘。

    猜你喜歡
    查準(zhǔn)率源代碼代碼
    人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
    基于TXL的源代碼插樁技術(shù)研究
    創(chuàng)世代碼
    動漫星空(2018年11期)2018-10-26 02:24:02
    創(chuàng)世代碼
    動漫星空(2018年2期)2018-10-26 02:11:00
    創(chuàng)世代碼
    動漫星空(2018年9期)2018-10-26 01:16:48
    創(chuàng)世代碼
    動漫星空(2018年5期)2018-10-26 01:15:02
    基于數(shù)據(jù)挖掘技術(shù)的網(wǎng)絡(luò)信息過濾系統(tǒng)設(shè)計
    軟件源代碼非公知性司法鑒定方法探析
    大數(shù)據(jù)環(huán)境下的文本信息挖掘方法
    基于深度特征分析的雙線性圖像相似度匹配算法
    日韩欧美三级三区| 精品一区二区三区视频在线 | 人妻夜夜爽99麻豆av| 欧美日韩黄片免| 神马国产精品三级电影在线观看| 国产99白浆流出| ponron亚洲| 无遮挡黄片免费观看| 99久久精品热视频| 亚洲熟妇熟女久久| 久久中文字幕一级| 一本久久中文字幕| 国产麻豆成人av免费视频| 色视频www国产| 亚洲国产中文字幕在线视频| 国产精品电影一区二区三区| 国产熟女xx| 婷婷精品国产亚洲av| 久久国产精品影院| 在线观看66精品国产| 成年女人看的毛片在线观看| 久久欧美精品欧美久久欧美| 国产又色又爽无遮挡免费看| 99热只有精品国产| 国产精品av久久久久免费| 午夜亚洲福利在线播放| 免费看十八禁软件| av女优亚洲男人天堂 | 国产单亲对白刺激| 欧美成人性av电影在线观看| 国产精品自产拍在线观看55亚洲| 日本免费a在线| 免费大片18禁| 久久中文字幕一级| 麻豆av在线久日| 午夜免费激情av| 后天国语完整版免费观看| 一进一出抽搐动态| 波多野结衣巨乳人妻| av在线蜜桃| 岛国视频午夜一区免费看| av在线天堂中文字幕| 少妇裸体淫交视频免费看高清| 噜噜噜噜噜久久久久久91| 1024香蕉在线观看| 床上黄色一级片| 欧美一区二区国产精品久久精品| 国产黄色小视频在线观看| 18禁裸乳无遮挡免费网站照片| 精品熟女少妇八av免费久了| 亚洲欧美激情综合另类| 久久人妻av系列| 91九色精品人成在线观看| 国产精品国产高清国产av| 999久久久精品免费观看国产| 好男人电影高清在线观看| 国产男靠女视频免费网站| 最新中文字幕久久久久 | 午夜亚洲福利在线播放| 两性夫妻黄色片| 两人在一起打扑克的视频| 老司机福利观看| 日本一本二区三区精品| 黑人操中国人逼视频| 婷婷精品国产亚洲av| 亚洲成人久久性| 村上凉子中文字幕在线| 黄色女人牲交| АⅤ资源中文在线天堂| 嫩草影院精品99| 两性夫妻黄色片| 91麻豆av在线| 两个人看的免费小视频| 久久国产精品人妻蜜桃| 亚洲国产欧美网| 黑人操中国人逼视频| 又黄又爽又免费观看的视频| 国产极品精品免费视频能看的| 一级黄色大片毛片| 变态另类成人亚洲欧美熟女| 久久久久久人人人人人| 国产一级毛片七仙女欲春2| 99久久久亚洲精品蜜臀av| 久久欧美精品欧美久久欧美| 美女午夜性视频免费| 国产精品免费一区二区三区在线| 亚洲熟妇熟女久久| 男人舔女人下体高潮全视频| 国产成人系列免费观看| 亚洲成人中文字幕在线播放| 亚洲自拍偷在线| 久久精品国产亚洲av香蕉五月| 村上凉子中文字幕在线| 亚洲 国产 在线| 亚洲片人在线观看| 又粗又爽又猛毛片免费看| 悠悠久久av| 嫩草影视91久久| 国产精品香港三级国产av潘金莲| 精品国产美女av久久久久小说| 99热只有精品国产| 男女之事视频高清在线观看| 18禁美女被吸乳视频| 变态另类丝袜制服| 亚洲成人精品中文字幕电影| 婷婷六月久久综合丁香| 国产私拍福利视频在线观看| 精品国产乱码久久久久久男人| 国产精品九九99| 他把我摸到了高潮在线观看| 国产精品一及| 黄片小视频在线播放| 久久久久久国产a免费观看| 欧美性猛交╳xxx乱大交人| 国产黄色小视频在线观看| 中国美女看黄片| 日韩有码中文字幕| 成熟少妇高潮喷水视频| 男女那种视频在线观看| 搞女人的毛片| 亚洲成人免费电影在线观看| 国产精品影院久久| 国产精品av视频在线免费观看| 成年女人永久免费观看视频| 一本久久中文字幕| 国产激情久久老熟女| 国产精品99久久久久久久久| 成人av一区二区三区在线看| 成人午夜高清在线视频| 久久国产精品人妻蜜桃| 日韩欧美精品v在线| 狠狠狠狠99中文字幕| 亚洲avbb在线观看| 国产高清视频在线播放一区| 免费观看人在逋| 欧美日韩亚洲国产一区二区在线观看| 1000部很黄的大片| 亚洲成人久久爱视频| 国产成人精品久久二区二区免费| 99国产极品粉嫩在线观看| 国产伦人伦偷精品视频| 中文在线观看免费www的网站| 1000部很黄的大片| 日韩av在线大香蕉| 久久久久久久久免费视频了| 91av网一区二区| 免费搜索国产男女视频| 亚洲欧美日韩高清在线视频| 国产一区在线观看成人免费| 高清毛片免费观看视频网站| 国产av麻豆久久久久久久| 最好的美女福利视频网| a在线观看视频网站| 国产在线精品亚洲第一网站| 欧美av亚洲av综合av国产av| 两性夫妻黄色片| 亚洲av成人一区二区三| 国产蜜桃级精品一区二区三区| 欧美乱妇无乱码| 黑人操中国人逼视频| av欧美777| 禁无遮挡网站| www日本在线高清视频| 午夜免费观看网址| 欧美3d第一页| 亚洲人成网站在线播放欧美日韩| 观看美女的网站| 国产精品 欧美亚洲| 日韩中文字幕欧美一区二区| 制服丝袜大香蕉在线| 久久草成人影院| 一区二区三区国产精品乱码| 国产主播在线观看一区二区| 成人午夜高清在线视频| 精品久久蜜臀av无| 午夜两性在线视频| 亚洲av第一区精品v没综合| 国产又黄又爽又无遮挡在线| 美女免费视频网站| 成人av在线播放网站| 一个人看视频在线观看www免费 | 偷拍熟女少妇极品色| 日韩欧美在线二视频| 成人av一区二区三区在线看| 精品久久久久久久末码| 亚洲精品乱码久久久v下载方式 | 国产一级毛片七仙女欲春2| 国产成人福利小说| 麻豆成人午夜福利视频| 精品久久久久久久久久免费视频| 成年女人看的毛片在线观看| 亚洲中文av在线| xxxwww97欧美| 天天一区二区日本电影三级| 国产蜜桃级精品一区二区三区| 久久九九热精品免费| 麻豆一二三区av精品| 嫩草影视91久久| www.999成人在线观看| 操出白浆在线播放| 亚洲 欧美一区二区三区| 亚洲中文字幕一区二区三区有码在线看 | 两个人视频免费观看高清| 久久人妻av系列| 午夜福利在线在线| 免费观看的影片在线观看| 一级毛片高清免费大全| 日本免费一区二区三区高清不卡| 88av欧美| 久久久久久久精品吃奶| 欧美一级毛片孕妇| 日本熟妇午夜| 一区二区三区高清视频在线| 亚洲av免费在线观看| 成人无遮挡网站| www.熟女人妻精品国产| 国语自产精品视频在线第100页| 久久精品aⅴ一区二区三区四区| 老鸭窝网址在线观看| 成人18禁在线播放| 在线观看66精品国产| 国产欧美日韩一区二区三| 亚洲精品久久国产高清桃花| 一本精品99久久精品77| 久久香蕉精品热| 日本精品一区二区三区蜜桃| 亚洲欧美日韩高清专用| 99精品在免费线老司机午夜| 欧美一区二区精品小视频在线| 欧美日韩中文字幕国产精品一区二区三区| 美女 人体艺术 gogo| 国产人伦9x9x在线观看| 美女被艹到高潮喷水动态| 亚洲一区二区三区色噜噜| 亚洲av免费在线观看| 两性夫妻黄色片| 国产精品野战在线观看| 波多野结衣高清无吗| 欧美性猛交╳xxx乱大交人| 桃色一区二区三区在线观看| 亚洲无线观看免费| 国产野战对白在线观看| 91在线精品国自产拍蜜月 | 中文字幕最新亚洲高清| 亚洲成a人片在线一区二区| 国产探花在线观看一区二区| 好男人电影高清在线观看| 亚洲九九香蕉| 色av中文字幕| 成人国产一区最新在线观看| 99riav亚洲国产免费| 国产亚洲精品一区二区www| 中文字幕人妻丝袜一区二区| 久久伊人香网站| 日本五十路高清| 嫁个100分男人电影在线观看| 老司机深夜福利视频在线观看| 久久精品影院6| 欧美另类亚洲清纯唯美| 国产成人系列免费观看| 97超级碰碰碰精品色视频在线观看| 午夜福利在线观看免费完整高清在 | 一进一出抽搐gif免费好疼| 99久久无色码亚洲精品果冻| 老司机深夜福利视频在线观看| 亚洲av成人不卡在线观看播放网| 最好的美女福利视频网| 婷婷亚洲欧美| 国产高潮美女av| 麻豆成人午夜福利视频| 久久久水蜜桃国产精品网| 制服人妻中文乱码| 国产精品 国内视频| 欧美丝袜亚洲另类 | 亚洲五月天丁香| 最新在线观看一区二区三区| 窝窝影院91人妻| 老汉色∧v一级毛片| 丁香欧美五月| 国产精品女同一区二区软件 | 熟女电影av网| 91在线精品国自产拍蜜月 | 亚洲国产高清在线一区二区三| 国产亚洲欧美在线一区二区| 国产在线精品亚洲第一网站| 九九久久精品国产亚洲av麻豆 | av天堂中文字幕网| 午夜福利免费观看在线| 免费观看精品视频网站| 18禁国产床啪视频网站| www国产在线视频色| 99久久久亚洲精品蜜臀av| 国产精品 国内视频| 欧美乱色亚洲激情| 亚洲av日韩精品久久久久久密| av黄色大香蕉| 精品国产三级普通话版| 国产精品美女特级片免费视频播放器 | 欧美午夜高清在线| 男人和女人高潮做爰伦理| 亚洲精品久久国产高清桃花| 国产亚洲精品久久久com| 男插女下体视频免费在线播放| 久久草成人影院| 欧美乱码精品一区二区三区| 久久久久亚洲av毛片大全| 国产精品日韩av在线免费观看| 毛片女人毛片| 日韩大尺度精品在线看网址| 黄色 视频免费看| 国产精品九九99| 熟女人妻精品中文字幕| 一级毛片精品| 久久欧美精品欧美久久欧美| 19禁男女啪啪无遮挡网站| 99久久无色码亚洲精品果冻| 欧美xxxx黑人xx丫x性爽| 亚洲成av人片在线播放无| 免费高清视频大片| 国产久久久一区二区三区| 欧美日本亚洲视频在线播放| 国产成人aa在线观看| 又紧又爽又黄一区二区| 久久精品91无色码中文字幕| 757午夜福利合集在线观看| 欧美日韩中文字幕国产精品一区二区三区| 亚洲在线观看片| av欧美777| 国产视频内射| 一区二区三区高清视频在线| a在线观看视频网站| 亚洲欧美日韩高清在线视频| 久久欧美精品欧美久久欧美| 亚洲人与动物交配视频| 一级黄色大片毛片| 欧美成人一区二区免费高清观看 | 一级毛片高清免费大全| 成年免费大片在线观看| 九九在线视频观看精品| 亚洲国产高清在线一区二区三| av福利片在线观看| 日韩中文字幕欧美一区二区| 日韩欧美精品v在线| 在线视频色国产色| 九色成人免费人妻av| 麻豆av在线久日| 熟女少妇亚洲综合色aaa.| 国产亚洲精品av在线| 色哟哟哟哟哟哟| 国产主播在线观看一区二区| 天堂动漫精品| 久久中文看片网| 嫩草影院入口| 日韩精品中文字幕看吧| 搡老妇女老女人老熟妇| 99国产精品一区二区三区| 淫秽高清视频在线观看| 真人做人爱边吃奶动态| 国产一区二区在线av高清观看| 观看免费一级毛片| 国产欧美日韩一区二区三| 成人三级做爰电影| 五月伊人婷婷丁香| 99久国产av精品| 亚洲真实伦在线观看| 久99久视频精品免费| 成年女人看的毛片在线观看| 黄片大片在线免费观看| 亚洲成人免费电影在线观看| 国产成人影院久久av| 网址你懂的国产日韩在线| 男女之事视频高清在线观看| 免费在线观看视频国产中文字幕亚洲| 亚洲九九香蕉| 一本综合久久免费| 免费大片18禁| 亚洲自偷自拍图片 自拍| 精品久久久久久久毛片微露脸| 日韩大尺度精品在线看网址| 19禁男女啪啪无遮挡网站| 一级毛片女人18水好多| 女生性感内裤真人,穿戴方法视频| 99热这里只有是精品50| 欧美黑人欧美精品刺激| 最近最新中文字幕大全电影3| 热99在线观看视频| av黄色大香蕉| 深夜精品福利| 国产久久久一区二区三区| 一本综合久久免费| 观看免费一级毛片| 国产欧美日韩一区二区精品| 国产成人aa在线观看| 欧美中文综合在线视频| 又紧又爽又黄一区二区| 国产精品综合久久久久久久免费| 国产乱人视频| 国内少妇人妻偷人精品xxx网站 | 亚洲色图 男人天堂 中文字幕| 欧美日韩亚洲国产一区二区在线观看| 午夜日韩欧美国产| 两个人的视频大全免费| 99在线人妻在线中文字幕| 嫁个100分男人电影在线观看| 欧美国产日韩亚洲一区| 老司机在亚洲福利影院| 免费av毛片视频| 午夜福利视频1000在线观看| 日本一本二区三区精品| 12—13女人毛片做爰片一| 18禁黄网站禁片免费观看直播| 很黄的视频免费| 男人舔奶头视频| 日本撒尿小便嘘嘘汇集6| 国产精品影院久久| 欧美3d第一页| av国产免费在线观看| 欧美极品一区二区三区四区| 亚洲片人在线观看| 国内久久婷婷六月综合欲色啪| 免费av毛片视频| 久久人妻av系列| 精品乱码久久久久久99久播| 高潮久久久久久久久久久不卡| 男女床上黄色一级片免费看| 国产激情欧美一区二区| 听说在线观看完整版免费高清| 黑人操中国人逼视频| 最近视频中文字幕2019在线8| 9191精品国产免费久久| 少妇裸体淫交视频免费看高清| 国产成+人综合+亚洲专区| 亚洲av第一区精品v没综合| 国内精品一区二区在线观看| 嫩草影院入口| 国产一级毛片七仙女欲春2| 欧美成狂野欧美在线观看| 999久久久精品免费观看国产| 99在线视频只有这里精品首页| 亚洲 国产 在线| 欧美色欧美亚洲另类二区| 成人三级黄色视频| 法律面前人人平等表现在哪些方面| 亚洲美女视频黄频| 最新美女视频免费是黄的| 欧美黄色片欧美黄色片| 看片在线看免费视频| 综合色av麻豆| 搞女人的毛片| 老鸭窝网址在线观看| 日本成人三级电影网站| 香蕉国产在线看| 日韩人妻高清精品专区| av片东京热男人的天堂| 国内揄拍国产精品人妻在线| 久久午夜亚洲精品久久| 三级国产精品欧美在线观看 | 国产一区在线观看成人免费| 国内久久婷婷六月综合欲色啪| 国产成年人精品一区二区| 成人精品一区二区免费| 91在线精品国自产拍蜜月 | 精品国产美女av久久久久小说| 真实男女啪啪啪动态图| 国产一区二区在线av高清观看| 国产亚洲精品一区二区www| 日日干狠狠操夜夜爽| 免费av不卡在线播放| 美女cb高潮喷水在线观看 | 亚洲欧美精品综合久久99| 免费av毛片视频| 窝窝影院91人妻| 少妇裸体淫交视频免费看高清| 国产精品一区二区精品视频观看| 一本一本综合久久| 国产精品影院久久| 美女扒开内裤让男人捅视频| 久久中文看片网| 波多野结衣巨乳人妻| 少妇裸体淫交视频免费看高清| 国产精品1区2区在线观看.| 毛片女人毛片| 国产高清视频在线播放一区| 男人的好看免费观看在线视频| 国语自产精品视频在线第100页| 亚洲精品一卡2卡三卡4卡5卡| 九色成人免费人妻av| 久久人妻av系列| 草草在线视频免费看| 日本黄色片子视频| 国内少妇人妻偷人精品xxx网站 | 国产亚洲精品一区二区www| 淫秽高清视频在线观看| 丁香六月欧美| 久久久水蜜桃国产精品网| 嫁个100分男人电影在线观看| 麻豆成人av在线观看| 欧美黑人巨大hd| 久久久久国产精品人妻aⅴ院| 性色av乱码一区二区三区2| 成人永久免费在线观看视频| 亚洲九九香蕉| 国产免费男女视频| 极品教师在线免费播放| 成人精品一区二区免费| 亚洲熟妇熟女久久| 中文字幕久久专区| 长腿黑丝高跟| 成人永久免费在线观看视频| 男插女下体视频免费在线播放| 神马国产精品三级电影在线观看| 午夜福利成人在线免费观看| 中文字幕人妻丝袜一区二区| 中文资源天堂在线| 欧美xxxx黑人xx丫x性爽| 男人舔女人的私密视频| 亚洲精品乱码久久久v下载方式 | 在线观看日韩欧美| 99re在线观看精品视频| 国产精品电影一区二区三区| 亚洲av第一区精品v没综合| 亚洲电影在线观看av| 成年免费大片在线观看| 99热只有精品国产| 欧美乱码精品一区二区三区| 一本久久中文字幕| 午夜免费成人在线视频| 伦理电影免费视频| 国产精品日韩av在线免费观看| 亚洲午夜精品一区,二区,三区| 欧美成狂野欧美在线观看| 久久国产乱子伦精品免费另类| 久久国产精品人妻蜜桃| 极品教师在线免费播放| 亚洲电影在线观看av| 国产精品亚洲av一区麻豆| 黄片小视频在线播放| 黑人操中国人逼视频| www.www免费av| 波多野结衣高清无吗| 在线播放国产精品三级| 综合色av麻豆| 黑人巨大精品欧美一区二区mp4| 一进一出抽搐动态| 亚洲片人在线观看| 一区二区三区国产精品乱码| 老鸭窝网址在线观看| 又粗又爽又猛毛片免费看| 99热这里只有精品一区 | 黑人欧美特级aaaaaa片| 国内毛片毛片毛片毛片毛片| 国产午夜福利久久久久久| 成年女人毛片免费观看观看9| 欧美黄色片欧美黄色片| 免费看光身美女| 男人和女人高潮做爰伦理| 18禁黄网站禁片免费观看直播| 国产探花在线观看一区二区| 国产高清有码在线观看视频| 欧美一区二区精品小视频在线| 国产精品久久电影中文字幕| 九九热线精品视视频播放| 日本成人三级电影网站| 欧美丝袜亚洲另类 | 色综合婷婷激情| 丝袜人妻中文字幕| 亚洲精品一区av在线观看| 天堂影院成人在线观看| 在线观看美女被高潮喷水网站 | 淫妇啪啪啪对白视频| 免费观看人在逋| 麻豆久久精品国产亚洲av| 老司机午夜福利在线观看视频| 国产高清视频在线观看网站| 国产精品乱码一区二三区的特点| 欧美成狂野欧美在线观看| 日韩人妻高清精品专区| 欧美3d第一页| 中文字幕av在线有码专区| 男人舔女人下体高潮全视频| 欧美国产日韩亚洲一区| 中文字幕人妻丝袜一区二区| 天堂网av新在线| 色吧在线观看| 精品久久久久久久人妻蜜臀av| 亚洲av第一区精品v没综合| 免费av不卡在线播放| 国产亚洲精品久久久com| 99久久久亚洲精品蜜臀av| e午夜精品久久久久久久| 美女免费视频网站| 亚洲精品乱码久久久v下载方式 | 亚洲真实伦在线观看| 一进一出抽搐动态| 日韩欧美精品v在线| 亚洲国产精品久久男人天堂| 久久久久久大精品| 女同久久另类99精品国产91| 久久草成人影院| 欧美一区二区国产精品久久精品| 亚洲专区国产一区二区| 两人在一起打扑克的视频| 一二三四社区在线视频社区8| 色老头精品视频在线观看| 女警被强在线播放| 国产精品免费一区二区三区在线| www日本在线高清视频| 非洲黑人性xxxx精品又粗又长| 美女高潮喷水抽搐中文字幕| 少妇熟女aⅴ在线视频| 久久这里只有精品19| 在线免费观看的www视频| 不卡av一区二区三区| 国产精品美女特级片免费视频播放器 | 国产亚洲av嫩草精品影院|