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

基于RNN進行面向主題的特征定位方法

2017-07-10 10:27:26尹春林
計算機應用與軟件 2017年6期
關鍵詞:特征文本實驗

尹春林 王 煒,2* 李 彤,2 何 云

1(云南大學軟件學院 云南 昆明 650500)2(云南省軟件工程重點實驗室 云南 昆明 650500)

基于RNN進行面向主題的特征定位方法

尹春林1王 煒1,2*李 彤1,2何 云1

1(云南大學軟件學院 云南 昆明 650500)2(云南省軟件工程重點實驗室 云南 昆明 650500)

軟件特征定位是軟件演化活動得以順利展開的前提條件。當前特征定位研究的性能仍有待于進一步提高。為了獲得較好的性能,在文件夾粒度上獲取主題知識,將系統中同一個文件夾下的所有類(class)劃分為同一個主題知識類,提出利用深度學習算法——循環神經網絡RNN(Recurrent Neural Networks) 進行面向主題的特征定位。同時,在該方法的基礎上提出了一種改進的模型。為了使實驗結果更具現實意義,與基線方法和其他一些方法相比,將實驗數據從10組提高到531組和將檢索率從15%縮小到10%,即使在這種情況下,所獲得的實驗結果,無論是從正面與基線方法相比還是從側面與目前的一些特征定位方法相比,該方法都獲得了不錯的性能。

軟件特征定位 軟件演化 深度學習 循環神經網絡 面向主題

0 引 言

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

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

根據分析思路的不同,目前的特征定位方法可歸結為四類[1]:靜態特征定位方法、基于文本的特征定位方法、動態特征定位方法和集成特征定位方法。

靜態方法是試圖對軟件源代碼的依賴關系和結構的進行分析,并建立特征和代碼間的映射關系[1]。動態方法試圖建立用例與執行跡之間的映射關系實現特征定位[11]。基于文本的特征定位方法[12-14]認為,源代碼中的標識符、注釋和其他文檔中蘊含有豐富的主題知識,所以源代碼與特征的關系就可以通過文本分析的方式獲得。當前基于文本的特征定位方法大致可以分為3類:基于模式識別、基于自然語言處理和基于信息檢索的特征定位方法。目前基于自然語言的特征定位查準率是最高的。基于自然語言處理的特征定位方法試圖將自然語言處理研究在詞性標注、分詞、組塊分析等研究成果嫁接于特征定位問題。本文試圖利用基于自然語言的文本特征定位方法進行研究。本文認為不同粒度的劃分、不同的程序模塊代表了不同的領域知識,即代表了不同的主題知識。本文希望獲得一個好的語言模型LM(Language Model),該模型擁有良好的分類能力,能將源代碼系統中不同的主題知識進行準確的區分。所以問題的關鍵轉化為了如何獲得一個擁有良好特征表達的LM。

目前常用的信息檢索方法模型有隱語義索引LSI(Latent Semantic Indexing)[15]、隱狄利克雷分布LDA(Latent Dirichlet Allocation)[16]、向量空間模型VSM(Vector Space Model)[17]、依賴性語言模型DLM(Dependence Language Model)[18]。雖然這些方法都獲得了一定的效果,但并不令人滿意,在實踐中也暴露出一些問題。不難發現,這些方法都不能夠將程序主題知識完整地傳遞給計算機,所以機器也就難以獲得良好的主題知識。良好的數值化方法和良好的上下文語義獲取方法是良好的主題知識表達的第一步。深度學習在自然語言處理NLP(Natural Language Process)方面給出了一些很好的數值化處理方法,如word embedding,即“詞向量”,典型的例子是google的word2vec。循環神經網絡RNN(Recurrent Neural Networks)通過不斷循環的方式更完整的保存上下文語義關系。為此,本文希望通過利用深度學習算法——循環神經網絡來進行基于文本的特征定位以期獲得更好的效果。

本文的創新點和貢獻如下:

(1) 利用RNN語言模型來獲取文本上下文語義;

(2) 文件夾粒度做主題分類;

(3) 兩組實驗對照獲得更有普遍性意義結果。

1 本文方法

本文方法主要分為三個步驟:主題知識生成、主題建模以及特征定位。圖1為本文框架圖。

圖1 本文方法框架圖

1.1 主題知識劃分

一個源代碼系統由不同的程序模塊構成,不同的模塊對應于不同的功能/主題,即不同的功能/主題對應著不同的特征。特征定位的目的就是獲得特征與源代碼之間的映射關系。本文的方法是先將源代碼系統利用RNN按主題知識進行劃分,然后利用獲得的模型將程序員給出的功能描述語句進行分類,抽象地描述就是“輸入功能描述就能輸出目標代碼”,形式化描述:Y=f(X),X表示功能描述,Y表示輸出的目標代碼,f是這種映射關系的表示。研究的目標就是希望獲得這一個能夠準確地建立起特征與源代碼之間的一致性關系的模型。因此,好的主題劃分是獲得好的特征定位的前提條件。

本文提出以下幾種劃分粒度:(1)方法/函數級;(2)類級;(3)文件夾級;(4)包級。方法/函數級劃分將源代碼系統按方法/函數進行拆分,將一個方法/函數看做是一個數據,認為多個方法/函數共同表示一個主題。類級劃分將源代碼系統按“類”進行劃分,將一個類看做是一個數據,認為一個或者幾個類共同代表一個功能/主題。文件夾級劃分將源代碼系統中同一個文件夾下的所有方法或者函數看做是同一個類簇,認為同一個文件夾下的所有類或者函數共同代表著一個功能/主題。包級劃分將源代碼系統中同一個包下的所有文檔看做是同一個類簇,認為同一個包下的所有文檔代表著一個主題。函數級和類級的劃分粒度比較小,所以可能一個功能就對應多個函數或者多個類,這樣的劃分就需要先對數據進行聚類,認為聚類后獲得的結果中的一個類簇就對應一個主題。包級的劃分是一種大的模糊的劃分方式,適合應用到大的源代碼系統中進行試驗。程序員在進行軟件開發時通常會將實現了相同功能的類放到同一個文件夾下,相同文件夾下的所有類的相關關系更緊密,所以認為同一個文件夾下的所有類更能良好地表達同一個主題,并且這樣的劃分方式無需進行聚類處理就可以直接將同一個文件夾下的所有類標注到同一個類簇中。所以綜合以上考慮,本文選擇文件夾粒度進行試驗。

1.2 主題建模

基于文本的特征定位方法通常希望獲得一個好的語言分類模型,該模型能夠良好地表達主題知識。數值化抽象是特征定位的基礎,該過程依賴于代碼語言模型的建立,通常語言模型可以抽象為關鍵詞的概率分布函數。假設源代碼SC由關鍵詞{w1,w2,…,wn}構成的文本序列,則SC對應的概率分布函數如公式(1):

(1)

式(1)可以被鏈式地分解為:

(2)

(3)

(4)

式(4)中count(wi-(n-1),…,wi-1)表示文本序列wi-(n-1),…,wi-1在語料庫中出現的次數。

1.3 特征定位

(5)

Softmax回歸其實就相當于多類別情況下的邏輯回歸,式(5)中Softmax有k個類,也就是對應實驗中的38個類,并且函數將-θ×X作為指數的系數,所以就有j=1…k項。然后除以他們的累加和,這樣做就實現了歸一化,使得輸出的k個數的和為1,而每一個數就代表那個類別出現的概率。因此:Softmax的假設函數輸出的是一個k維列向量,每一個維度的數就代表那個類別出現的概率。這樣計算出每個特征描述與每一個類相關的概率,然后依次按概率相關程度降序排列。為此,我們獲得一個概率相關列表,越在最前面的類就是就是相關度越大的類。我們獲得的特征定位的結果就是每個查詢語句與每個類的相似度。

2 實驗過程及數據

2.1 實驗所用數據數碼

文章使用源代碼系統是jedit4.3source[1],該系統包含531個class,6 400余個method,1.9萬行代碼。同時,還有272個通過使用IST(issue tracking system)和SVN(subversion)工具分析獲得的特征。其中150個特征用例搜集過執行跡,這些特征以ID作為標識,在jEdit更新日志中可查(http://sourceforge.Net/p/jedit/bugs/search/)。每個特征對應于3個數據文件:Queries、Traces以及GoldSet。實驗中所用到的RNN模型代碼是基于http: //github.com/IndicoDataSolutions/passage.git中的模板進行修改得到的,該網站上提供的是一個用于二分類的代碼模板,修改后可以用于多分類。

2.2 實驗過程及參數設置

本文選用的源代碼系統jedit4.3包含分布在38個文件夾下的531個class,每個class是一個以“.java”為后綴名的文件。RNN屬于監督學習,需要使用標簽數據,于是我們就進行了人工標記,將同一個文件夾下的class標注為同一個類簇,數據的標簽名就選用阿拉伯數字0到37進行表示。表1是38帶標簽的數據示意圖,其中一個數據用一個類的路徑來表示(后同)。

表1 標簽數據示意

表2表示同一個文件夾下的所有類,這些類屬于同一個類簇,都被劃分到類“0”中。

表2 同一文件夾下所有類標注為同一類

模型的輸入是分別屬于38個類的531個數據。首先是對獲得的訓練數據集和預測數據集進行簡單的預處理。每一個.java文件都包含大量的注釋,我們認為注釋更能很好地表達主題知識,所以也將其保留下來不做特殊處理。由于RNN可以獲取上下文語義關系,所以與傳統的預處理不同,本文的預處理不做停詞、分詞和詞干還原等操作,僅僅只是將文本中對表達主題毫無幫助的那些注釋符號去掉,如分割線“————”。訓練模型的數據準備完畢,接下來就可以訓練生成RNN模型了。實驗數據集被劃分成兩部分:訓練數據集和預測數據集,訓練數據集用來訓練生成模型,預測數據集用來挑選模型。從每一個類簇中挑選出一個數據作為預測數據集,剩余的作為訓練數據集,如果存在一個類簇,該類簇只含一個數據則該數據既作為訓練數據也作為預測數據。而我們的模型不但對預測數據集進行預測也對訓練數據集進行預測。挑選出對訓練數據集和對預測數據集預測準確率高的模型進行特征定位的實驗。下面是我們選用的RNN模板需要設置的幾個參數:

(1) 隱藏層layers:[ Embedding(size=128);GatedRecurrent(size=256,activation=′tanh′, gate_activation=′steeper_sigmoid′,init=′orthogonal′,seq_output=False);Dense(size=531,activation=′softmax′, init=′orthogonal′)]

(2) 模型model=RNN(layers=layers, cost=′cce′)

“cce”在模板中是一個設置為多分類并用softmax進行輸出的參數,在訓練生成RNN模型同時獲得用于計算相似度的softmax的參數θ。在訓練了多個模型之后文章使用了一個預測準確率相對較高的模型:預測訓練數據集準確率為91%,預測預測數據集準確率為52%。該模型每次訓練100個數據,迭代訓練150次獲得。模型選定之后接下來的工作就是進行特征定位。本文選用的是Queries里面的“ShortDescription[ID].txt”作為查詢語句,提交查詢語句之后輸出該查詢語句與每一個class的相似度,選取相似度最高的前10%進行輸出。

3 實驗結果及分析

3.1 實驗結果分析

本文主要將文獻[13]作為基線方法與本文的方法進行對比。基線方法在函數級粒度上進行預處理后生成語料庫,然后進行Single Value Decomposition(SVD)生成LSI space,最后輸入query進行查詢,詳細介紹看文獻[13]。同時也與文獻[23-24]中提出來的方法進行一個側面的對比,文獻[24]是動態特征定位和靜態特征定位相結合獲得的結果,文獻[23]中使用的數據集是ArgoUML,ArgoUML數據集比iEdit大,包含1 562個類和96個包。為了驗證本文方法的有效性,我們還設計了一組自我對照實驗,即測試了與基線方法和文獻[24]相同的10個數據。為了獲得一個較公平的評價標準通常使用信息檢索中提供的查全率、查準率和調和平均數F(F-measure)來度量特征定位技術的綜合性能[11]。表3是各種實驗對比情況。

表3 實驗結果對比

在表3中“本文531”是指利用本文提出的方法測試了531個數據的實驗,“本文10”是指利用本文提出的方法測試了10個數據的對照試驗。表3的檢索率是指輸出與查詢語句相似度高的實驗數據個數占實驗數據總個數的比例,一般用文獻[13]推薦的方法取相似度高的前10%~15%。從表3可見,在同樣取10個相同的數據進行測試的情況下,本文方法的平均查準率為8.07%,平均查全率為75.30%,調和平均數為14.58%,檢索率為10%;基線方法平均查準率8.50%,調和平均數13.86%,檢索率為15%,而平均查全率只有62.78%。在我們將實驗數據個數從10個擴大到531(全部實驗數據)個且檢索率依然為10%的情況下,仍然取得了6.1%的查準率、43.01%的查全率和10.68%的調和平均數。雖然較基線方法有所下降,但是我們的實驗數據對象是全部的試驗數據。我們也認為只有在所有的數據上進行試驗才更具有普遍意義和更具有可信度,單純從幾個數據來說可能存在一定的偶然性,就本實驗來說,在我們取10個數據的情況下獲得的查全率為75.3%就比基線方法和其他方法都要高很多。同時特征定位的理想目標是獲得特征與源代碼的準確映射關系,所以認為越低的檢索率對特征定位越有意義。由于文獻[23]是在另一個數據集上的實驗,該數據集個數要遠大于我們的實驗數據集,雖然他的檢索率為5%,但計算下來也跟iEdit 4.3的15%僅相差1個數據。綜合以上比較發現,本文方法綜合性能更優。

3.2 實驗不足

由于實驗檢索出來的結果是按相似度進行降序,與查詢語句相似度高的類簇排在前面,而一個類簇里至少包含一個以上類,多的包含實驗總數據的10%(約53個)以上,由于每一個類簇里面的數據是無序的,所以存在這樣的一些數據,雖然這些數據包含在我們檢索出來的類簇中,但是沒有辦法計算在查準率和查全率中。比如在一組實驗中檢索出了兩個與特征相關的類簇,這兩個類簇包含的類的個數加起來超過了53個,這樣就得將相似度低的第二個類簇的一些類去除,然而第二個類簇里的類與特征的相似度是未知的,所以保留哪些類難以確定。

3.3 基于本文方法提出的新模型

混合特征定位的方法通常會獲得更好的結果,一種方法是:“動態+文本”,該方法先利用動態特征定位約減搜索空間再進行基于文本的特征定位。這種方法的缺陷是每進行一次特征定位就需要進行一次建模,即需要對每一個查詢語句都進行一次“動態+文本”的特征定位。這樣的方式工程量大沒有什么現實意義的。然而利用RNN可以先對所有的數據建一個文本模型,該模型的作用是計算每一個類與查詢語句的相似度并進行排序,然后再在該模型的頂部加一層動態層,與前面提到的方法不同的是此處的動態層的作用是通過將動態層輸出的結果與基于文本的方式輸出的結果進行交集計算來提高準確率和查全率。模型形式化見式(6):

F=f(X)∩R=g(Z)

(6)

式中,F是基于文本的特征定位的輸出,該輸出包含每一個類的類名及其與查詢語句的相似度,X是基于文本的輸入,f是映射關系;R是動態特征定位的輸出,Z是動態特征定位的輸入,g是映射關系。最后將式(6)得到的結果按F的相似度進行降序,排在最前面的就是模型定位的最終結果。此模型是以利用RNN行進基于文本的特征定位為前提,劃分粒度選擇類級別。該模型的好處是可以保證在當前的模型的基礎上提高綜合性能,并且相對與“動態+文本”的特征定位來說減少了工程量。

4 結 語

軟件特征定位是軟件演化活動得以順利展開的保證。然而目前的特征定位無論是查準率還是查全率都還處于一個很低水平。本文從基于文本的特征定位出發提出在文件夾粒度上利用RNN進行面向主題的特征定位。本文認為主題劃分的好壞直接影響到特征定位的結果,本文還提出了幾種不同的主題劃分方式,同時選擇了“文件夾級”粒度的劃分方式來進行試驗。通過實驗結果的對比得知雖然我們的方法存在一定的缺陷,但還是對利用深度學習進行特征定位進行了一定的探索,試驗的綜合性能也較優。最后還提出了一個“基于文本的特征定位+動態特征定位”模型,未來的工作分兩部分:一是繼續探索用其他粒度劃分主題,二是利用本文提出的新模型進行試驗論證。

[1] Dit B, Revelle M, Gethers M, et al. Feature location in source code: a taxonomy and survey[J]. Journal of Software: Evolution and Process, 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 & 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 J A, Gust T, et al. Locating user functionality in old code[C]// Software Maintenance, 1992. Proceerdings. Conference on. IEEE Xplore, 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(5): 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 B, Sun X, Leung H, et al. A survey of code-based change impact analysis techniques[J]. Software Testing Verification & Reliability, 2013, 23(8):613-646.

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

[10] Lucia A D, Marcus A, Oliveto R, et al. Information retrieval methods for automated traceability recovery, in Software and systems traceability[M]. London: Springer, 2012.

[11] Ju Xiaolin, Jiang Shujuan, Zhang Yanmei, et al. Advanced in Fault Localization techniques[J]. Journal of Frontiers of Computer Science and Technology, 2012, 6(6):481-494.

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

[13] 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 (WCRE’04), Delft, Netherlands, Nov 8-12, 2004. Washington, DC, USA: IEEE Computer Society, 2004: 214-223.

[14] Hill E, Pollock L, Vijay-Shanker K. Automatically Capturing Source Code Context of NL-Queries for Software Maintenance and Reuse[C]// Proceedings of the 31st IEEE International Conference on Software Engineering (ICSE’09), Vancouver, BC, May 16-24, 2009. Washington, DC, USA: IEEE Computer Society, 2009: 232-242.

[15] Dumais S T. Latent semantic analysis[J]. Annual review of information science and technology, 2004, 38(1): 188-230.

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

[17] Salton G. A vector space model for automatic indexing[J]. Communications of the Acm, 1974, 18(11):613-620.

[18] Gao J, Nie J Y, Wu G, et al. Dependence language model for information retrieval[C]// SIGIR 2004: Proceedings of the, International ACM SIGIR Conference on Research and Development in Information Retrieval, Sheffield, Uk, July. 2004:170-177.

[19] Xu W, Rudnicky A. Can artificial neural networks learn language models?[C]// International Conference on Spoken Language Processing, Icslp 2000 / INTERSPEECH 2000, Beijing, China, October. DBLP, 2000:202-205.

[20] Bengio Y, Senecal J S. Adaptive importance sampling to accelerate training of a neural probabilistic language model[J]. IEEE Transactions on Neural Networks, 2008, 19(4):713-22.

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

[22] Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model[C]// Conference of the International Speech Communication Association, Makuhari, Chiba, Japan, September. 2010.

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

[24] 何云, 王煒, 李彤,等. 面向行為主題的軟件特征定位方法[J]. 計算機科學與探索, 2014, 8(12):1452-1462.

TOPIC ORIENTED FEATURE LOCALIZATION METHOD BASED ON RNN

Yin Chunlin1Wang Wei1,2*Li Tong1,2He Yun1

1(SchoolofSoftware,YunnanUniversity,Kunming650500,Yunnan,China)2(KeyLaboratoryforSoftwareEngineeringofYunnanProvince,Kunming650500,Yunnan,China)

Software feature localization is a prerequisite for the smooth development of software evolution. The performance of the current feature location study still needs to be further improved. In order to obtain better performance, get the subject knowledge in the folder granularity was gotten. All the classes under a folder in the system were divided into the same subject knowledge class, This paper proposed a topic-oriented feature locating using depth learning algorithm-Recurrent Neural Networks(RNN). At the same time, an improved model was proposed based on this method. In order to make the experimental results more realistic, compared with the baseline method and other methods, this article will test data from 10 to 531 group and the retrieval rate from 15% to 10%. The experimental results show that this method has better performance than either the baseline method or the feature orientation method.

Software feature localization Software evolution Deep learning Recurrent neural network Topic oriented

2016-07-23。尹春林,碩士生,主研領域:軟件過程,軟件演化,特征定位等。王煒,副教授。李彤,教授。何云,博士生。

TP311.52

A

10.3969/j.issn.1000-386x.2017.06.003

猜你喜歡
特征文本實驗
記一次有趣的實驗
如何表達“特征”
在808DA上文本顯示的改善
做個怪怪長實驗
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
基于doc2vec和TF-IDF的相似文本識別
電子制作(2018年18期)2018-11-14 01:48:06
抓住特征巧觀察
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學隱喻
主站蜘蛛池模板: 国产精品99一区不卡| 在线观看91精品国产剧情免费| 精品無碼一區在線觀看 | 亚洲制服丝袜第一页| 午夜福利网址| 精品亚洲国产成人AV| 国产精品密蕾丝视频| 欧美性猛交xxxx乱大交极品| 久久人妻系列无码一区| 国产又粗又爽视频| 呦女亚洲一区精品| 欧美第九页| 2021国产在线视频| 免费无码AV片在线观看国产| 欧美亚洲第一页| 欧美综合激情| 91娇喘视频| 漂亮人妻被中出中文字幕久久| 亚洲无码高清视频在线观看| 一级一级一片免费| 国产精品丝袜在线| 九月婷婷亚洲综合在线| 日韩毛片在线播放| 在线亚洲精品福利网址导航| 欧美怡红院视频一区二区三区| 亚洲午夜国产精品无卡| 国产福利小视频高清在线观看| 欧美全免费aaaaaa特黄在线| 国产在线精品网址你懂的| 亚洲色婷婷一区二区| 手机精品视频在线观看免费| 亚洲人成网站在线播放2019| 在线观看91香蕉国产免费| 黄色网址手机国内免费在线观看| 国产精品久久久久久影院| 青青极品在线| 国产精品污污在线观看网站| 久久久久亚洲精品成人网| 亚洲一区无码在线| 91久久国产热精品免费| 特级欧美视频aaaaaa| 日韩在线中文| 国产无码网站在线观看| 69精品在线观看| 毛片最新网址| 亚洲精品成人片在线观看| 国产乱肥老妇精品视频| 99视频全部免费| 色老二精品视频在线观看| 成人在线综合| 国产日韩丝袜一二三区| 欧美a级在线| 国产H片无码不卡在线视频| 色综合天天视频在线观看| 亚洲天堂福利视频| 国产精品不卡永久免费| 亚洲男人的天堂网| 国产精品福利导航| 国产97色在线| 青青国产视频| 久久免费看片| 国产凹凸一区在线观看视频| 久久国产热| 国产精品视频白浆免费视频| 99久久国产自偷自偷免费一区| 国产精品专区第1页| 亚洲天堂免费在线视频| 中国精品自拍| 日本尹人综合香蕉在线观看| 青青热久免费精品视频6| 一区二区三区四区精品视频 | 欧美中文字幕一区| 色综合中文| 亚洲一级毛片在线播放| 精品无码日韩国产不卡av| 国产成人在线无码免费视频| 国产精品自在在线午夜区app| 精品国产香蕉伊思人在线| 亚洲综合婷婷激情| 国产真实乱人视频| 国产精品任我爽爆在线播放6080| 国产精品亚洲天堂|