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

    基于層次注意力機制的源代碼遷移模型

    2023-10-17 12:07:01李征徐明瑞吳永豪劉勇陳翔武淑美劉恒源
    計算機應(yīng)用研究 2023年10期
    關(guān)鍵詞:機器翻譯注意力機制

    李征 徐明瑞 吳永豪 劉勇 陳翔 武淑美 劉恒源

    摘 要:針對源代碼遷移模型存在的遷移代碼語義一致性問題,在詞符注意力機制的基礎(chǔ)上引入了語句注意力機制,提出了一種基于層次注意力機制的源代碼遷移模型HPGN(hierarchical pointer-generator network),設(shè)計了狀態(tài)傳遞機制。HPGN在遷移過程中,語句注意力機制對齊源代碼語句和遷移代碼語句的特征,詞符注意力機制從對齊的代碼語句中提取詞符,狀態(tài)傳遞機制傳遞相鄰遷移代碼語句的特征,從而提升了遷移代碼的語義一致性。在真實項目數(shù)據(jù)集的實驗結(jié)果表明,HPGN比最佳對比模型提高了3.4個總體分值,同時有著更少的模型參數(shù)量。此外,消融實驗驗證了狀態(tài)傳遞機制和HPGN層次架構(gòu)的有效性。

    關(guān)鍵詞:代碼遷移;代碼語句;機器翻譯;注意力機制

    中圖分類號:TP311.5 文獻標(biāo)志碼:A 文章編號:1001-3695(2023)10-031-3082-09

    doi:10.19734/j.issn.1001-3695.2023.03.0093

    Source code migration model based on hierarchical attention mechanism

    Li Zheng1,Xu Mingrui1,Wu Yonghao1,Liu Yong1,Chen Xiang2,Wu Shumei1,Liu Hengyuan1

    (1.College of Information Science & Technology,Beijing University of Chemical Technology,Beijing 100029,China;2.School of Information Science & Technology,Nantong University,Nantong Jiangsu 226019,China)

    Abstract:To address the semantic consistency problem of migrated code in the source code migration model,this paper introduced the statement-level attention mechanism based on the token-level attention mechanism,proposed a source code migration model HPGN based on the hierarchical attention mechanism,and designed state feeding mechanisms.During migration,the statement-level attention mechanism aligned the features of source code statements and migrated code statements,the token-level attention mechanism extracted tokens from the aligned code statements,and the state feeding mechanism passed the feature of adjacent migrated code statement,thus improving the semantic consistency of migrated code.Experimenting on a real project dataset,the results show that HPGN improves the overall score by 3.4 over the best comparison model while having fewer model parameters.In addition,ablation experiments validate the effectiveness of the state feeding mechanisms and HPGN hierarchical architecture.

    Key words:code migration;code statement;machine translation;attention mechanism

    0 引言

    隨著計算機軟硬件的快速更新,編程語言也在不斷發(fā)展與迭代。為了適應(yīng)新的軟硬件環(huán)境,傳統(tǒng)的業(yè)務(wù)系統(tǒng)需要采用新的編程語言重寫代碼,這一過程稱為代碼遷移。然而,現(xiàn)代工業(yè)項目的代碼規(guī)模龐大,實現(xiàn)代碼遷移既耗時又容易出錯[1]。因此,研究人員嘗試研究源代碼遷移技術(shù)來解決這一問題,期望在不改變程序語義的情況下,將源代碼轉(zhuǎn)換成目標(biāo)代碼,從而減輕開發(fā)人員的負擔(dān)。最初的研究采用基于規(guī)則的方法遷移源代碼[2]。這種方法需要開發(fā)人員為不同編程語言提供正確且完整的轉(zhuǎn)換規(guī)則,導(dǎo)致源代碼遷移模型的開發(fā)流程低效且容易出錯。為了自動構(gòu)建源代碼遷移模型,研究人員受到自然語言翻譯研究工作的啟發(fā),提出了基于統(tǒng)計機器翻譯(statistical machine translation,SMT)的源代碼遷移模型[3~5]。然而此類方法受限于模型的理解能力[3],需要人工定義語法規(guī)則或遷移模板的方式輔助模型生成遷移代碼[4,5]。隨著神經(jīng)機器翻譯(neural machine translation,NMT)模型的快速發(fā)展,研究人員開始采用NMT模型實現(xiàn)自動化的代碼遷移工作[1,6,7]。這些研究通常采用序列到序列模型,把代碼文本作為模型的輸入,讓模型學(xué)習(xí)不同編程語言的遷移規(guī)則。然而,一些研究表明此類模型忽略了代碼結(jié)構(gòu)特征,讓模型難以有效地理解源代碼的語義[8,9]。因此,當(dāng)前研究面臨的難點是如何使模型從源代碼中獲取特征,并將其轉(zhuǎn)換為語義更準(zhǔn)確的目標(biāo)代碼。

    為了解決該問題,有研究提出使用翻譯模型翻譯源代碼結(jié)構(gòu)特征實現(xiàn)源代碼遷移。例如,Chen等人[10]提出了一種基于解析樹的樹到樹(tree-to-tree)翻譯模型,通過注意力機制對齊源代碼的抽象語法樹(abstract syntax tree)并轉(zhuǎn)換為目標(biāo)代碼的抽象語法樹。該實驗證明注意力機制能對齊源代碼和目標(biāo)代碼抽象語法樹的節(jié)點,提升代碼遷移的準(zhǔn)確性。然而,該方法受限于解析樹本身存在的不足:a)抽象語法樹會忽略某些語義節(jié)點,例如“+”“>”“≤”和其他一些符號會被抽象化為BinOpSub節(jié)點[11],這樣的解析樹不適合用于代碼遷移;b)具體語法樹(concrete syntax tree)包含源代碼中每個詞的結(jié)構(gòu)特征,但其語義節(jié)點較多,增加了模型理解和生成代碼的難度。另一個可行的策略是對大量模型參數(shù)的注意力機制神經(jīng)網(wǎng)絡(luò)進行預(yù)訓(xùn)練,然后在代碼遷移任務(wù)上微調(diào)至最佳效果。這種方法的有效性得益于深度Transformer模型的理解和生成能力[12]。但許多研究[1,6,7,13]仍把代碼文本作為模型輸入,忽略了代碼結(jié)構(gòu)特征。除此之外,基于對已有源代碼遷移工作的分析可以發(fā)現(xiàn),這些工作通常從解析樹和模型的角度提升遷移代碼的精度,很少關(guān)注遷移代碼的語義一致性問題,導(dǎo)致遷移代碼和源代碼的語義存在差異。

    為了解決上述問題,本文提出在代碼遷移過程中,引導(dǎo)模型關(guān)注代碼語句的語法和語義特征,以提升代碼遷移的語義一致性。Hindle等人[14]證明了編程語言是重復(fù)性高、可預(yù)測性強的語言,并且比自然語言更有規(guī)則。Zhang等人[15]通過實驗證明代碼語句的語法具有規(guī)則性,并且代碼語句序列也具有順序依賴關(guān)系。這些研究說明了代碼語句的語法是可預(yù)測的,并且代碼語句間存在上下文聯(lián)系。此外,通過分析代碼遷移數(shù)據(jù)集可以發(fā)現(xiàn),許多語義相似的源代碼和目標(biāo)代碼的語句中有著相似的關(guān)鍵字、標(biāo)識符和運算符等詞符特征。因此,在源代碼轉(zhuǎn)換為目標(biāo)代碼的過程中,可以通過注意力機制對齊并轉(zhuǎn)換源代碼和目標(biāo)代碼語句級別的語法和語義特征,從而進一步提高代碼遷移的精度。

    基于上述研究的啟發(fā),本文在詞符(token)注意力機制的基礎(chǔ)上,引入語句(statement)注意力機制,提出了基于層次注意力機制的代碼遷移模型HPGN(hierarchical pointer-generator network)。該模型由層次編碼器(詞符編碼器和語句編碼器)和層次譯碼器(詞符譯碼器和語句譯碼器)組成。HPGN的源代碼遷移流程主要包括:首先,層次編碼器編碼源代碼語句序列,提取源代碼語句內(nèi)的語法和語義特征以及語句間上下文特征;其次,語句譯碼器通過語句注意力機制譯碼目標(biāo)代碼的語句特征,并對齊源代碼語句;最后,詞符譯碼器通過詞符注意力機制,從對齊的源代碼語句中提取詞符,并依據(jù)目標(biāo)代碼語句特征生成完整的目標(biāo)代碼語句。

    基于上述流程,本文為HPGN設(shè)計了殘差和門控兩種狀態(tài)傳遞機制,并用指針生成網(wǎng)絡(luò)(pointer-generator network)設(shè)計了新的損失函數(shù)。狀態(tài)傳遞機制讓層次譯碼器捕獲相鄰語句的上下文特征,提升譯碼質(zhì)量。損失函數(shù)采用新的懲罰機制,以懲罰不均衡的語句級別和詞符級別注意力分布。

    本文提出了基于層次注意力機制的源代碼遷移模型HPGN,該模型在詞符注意力機制的基礎(chǔ)上引入了語句注意力機制,從而更好地在代碼遷移過程中保持語義的一致性;設(shè)計了兩種狀態(tài)傳遞機制,使層次譯碼器在譯碼時能夠獲取更豐富的相鄰代碼語句上下文特征,進而提升譯碼質(zhì)量。

    1 相關(guān)技術(shù)

    1.1 門控循環(huán)單元

    綜上所述,指針生成網(wǎng)絡(luò)能用注意力機制生成或提取詞符。HPGN采用該網(wǎng)絡(luò)注意力機制,有助于對齊源代碼語句和提取語句中的關(guān)鍵字、標(biāo)識符和運算符等詞符,保持遷移代碼的語義一致性。

    2 基于層次注意力機制的源代碼遷移模型

    本文把源代碼遷移任務(wù)轉(zhuǎn)換為源代碼語句到目標(biāo)代碼語句的翻譯任務(wù),即在不改變源代碼語義情況下把源代碼語句序列轉(zhuǎn)換成目標(biāo)代碼語句序列。

    該任務(wù)包括三個子任務(wù):

    a)理解源代碼每條語句的語法和語義特征以及語句序列的上下文關(guān)系,進而提取源代碼特征;

    b)依據(jù)源代碼特征和源代碼每條語句的特征,通過對齊源代碼語句的方式預(yù)測目標(biāo)代碼的語句特征;

    c)從對齊的源代碼語句中提取詞符,并依據(jù)目標(biāo)代碼的語句特征生成符合目標(biāo)代碼語法的語句。

    為實現(xiàn)源代碼遷移,本文引入語句注意力機制,提出基于層次注意力機制的源代碼遷移模型HPGN,其架構(gòu)如圖2所示。該模型由層次編碼器和層次譯碼器組成。層次編碼器用于實現(xiàn)子任務(wù)a),層次譯碼器用于實現(xiàn)子任務(wù)b)和c)。

    此外,本文設(shè)計的狀態(tài)傳遞機制作用于層次譯碼器,以捕獲更豐富的相鄰語句的上下文特征。本章將詳細介紹數(shù)據(jù)預(yù)處理方法、層次編碼器、層次譯碼器以及狀態(tài)傳遞機制。

    2.1 數(shù)據(jù)預(yù)處理

    不同的編程語言的編程格式并不一樣,而神經(jīng)網(wǎng)絡(luò)從格式不統(tǒng)一的代碼中提取特征較為低效。為了解決該問題,本文設(shè)計了三個步驟,把代碼格式化為統(tǒng)一風(fēng)格的代碼語句序列:a)格式化并劃分代碼語句;b)訓(xùn)練分詞器,分割語句詞符;c)規(guī)范化語句的格式。

    為了劃分出統(tǒng)一格式的代碼語句,本文首先采用了格式化工具Astyle(http://astyle.sourceforge.net/)對所有代碼片段格式化。格式化后的代碼片段劃分成語句序列,使得代碼文本具有語句級別的順序關(guān)系。為了對源代碼分詞,本文采用了Tokenizers(https://huggingface.co/docs/tokenizers/index)工具訓(xùn)練了字節(jié)對編碼(Byte-pair encoding,BPE)分詞器。該分詞器能夠從數(shù)據(jù)集的代碼語句中學(xué)習(xí)詞符的合并規(guī)則,并建立子詞(subword)單詞表,使得代碼中不常見的標(biāo)識符能映射至多個詞符,而不是被替換為未知詞符〈unk〉。例如,標(biāo)識符“addAll”可能會被映射成詞符“add”和“All”。字節(jié)對編碼分詞器不僅保留了源代碼的語義,還解決了不常見的標(biāo)識符導(dǎo)致的OOV(out-of-vocabulary)問題。

    最后,規(guī)范化代碼語句的序列和格式。為了使詞符譯碼器能夠生成有限長度的代碼語句,輸入序列首尾分別插入詞符〈s〉和〈/s〉用于引導(dǎo)詞符開始預(yù)測和結(jié)束預(yù)測。同理,本文定義了語句序列[〈s〉,〈Sart〉,〈/s〉]和[〈s〉,〈/Sart〉,〈/s〉]用于引導(dǎo)語句開始預(yù)測和結(jié)束預(yù)測。為了讓層次譯碼器預(yù)測未來的輸出,語句序列和詞符序列向前移動一個位置作為層次譯碼器輸出的目標(biāo)。此外,為了將長度不一致的語句并行地輸入給網(wǎng)絡(luò),本文設(shè)計了兩種長度規(guī)范化操作:

    a)對于限制長度以內(nèi)的語句,使用詞符〈pad〉對序列進行填充,直至達到限制長度。

    b)對于超過限制長度的語句,則按照限制長度對語句進行截斷;隨后以詞符〈line-break〉為首,拼接上語句的剩余部分作為下一條語句。

    如圖3所示,本文對源代碼語句進行了如下操作。對于長度在限制范圍內(nèi)的原語句1、3和4,直接采用a)操作,即在末尾填充〈pad〉;對于長度超出限制的原語句2,先采用b)操作,即根據(jù)限制長度截斷該語句,并用〈line-break〉拼接剩余部分,然后再采用a)操作對剩余部分進行填充。

    數(shù)據(jù)預(yù)處理完成后,詞嵌入網(wǎng)絡(luò)將語句序列的每個詞符映射成可訓(xùn)練的h維表征向量。這些向量輸入到層次編碼器和層次譯碼器中,模型開始進行訓(xùn)練和更新。

    2.2 層次編碼器

    層次編碼器包含詞符編碼器和語句編碼器,用于編碼代碼詞符序列和代碼語句序列以獲得代碼的特征向量。為了更好地表征源代碼,該網(wǎng)絡(luò)旨在理解每條源代碼語句的語法和語義特征,以及語句間的結(jié)構(gòu)和上下文。具體而言,首先詞符編碼器將詞符表征向量編碼為語句上下文向量,然后語句編碼器將語句上下文向量編碼為源代碼上下文向量。

    2.2.1 詞符編碼器

    如圖2左下角所示,詞符編碼器是一個雙向的GRU神經(jīng)網(wǎng)絡(luò),用于理解源代碼語句的語法和語義特征。詞符編碼器編碼代碼語句S為上下文向量CS和隱藏狀態(tài)HS。其中,CS是由雙向GRU的兩個最終隱藏狀態(tài)經(jīng)全連接網(wǎng)絡(luò)映射得到的。對于一組詞符序列表征向量Xi=[Xi1,Xi2,…,Xim],語句上下文向量Cxi和隱藏狀態(tài)HXi的計算公式如下:

    其中:Concat是將多個維度相同的向量按元素級別拼接的操作;Dense是全連接網(wǎng)絡(luò),它將輸入向量映射為h維的向量。通過詞符編碼器對代碼語句進行表征,語句上下文向量CXi包含代碼語句Xi的語法和語義特征,隱藏狀態(tài)HXi包含代碼語句中每個詞符的上下文特征。

    2.2.2 語句編碼器

    語句編碼器與詞符編碼器具有相同的架構(gòu)和類似的功能,但它用于從代碼語句上下文向量的序列中獲取代碼語句間的結(jié)構(gòu)特征和上下文特征。具體而言,語句編碼器從一組代碼語句上下文CX=[CX1,CX2,…,CXn]獲取語句的隱藏狀態(tài)H和代碼上下文向量C,其公式表示為

    2.3 層次譯碼器

    層次譯碼器由語句譯碼器和詞符譯碼器組成,并結(jié)合了詞符編碼器。在這里,詞符編碼器協(xié)助層次譯碼器預(yù)測目標(biāo)語句特征的特征,而層次譯碼器通過對齊源代碼語句及其詞符來預(yù)測目標(biāo)語句。當(dāng)層次編碼器完成源代碼的表征,層次譯碼器利用層次編碼器的特征(代碼上下文向量C、語句隱藏狀態(tài)H和詞符隱藏狀態(tài)HXi)和來自詞符編碼器的語句上下文向量Yi預(yù)測目標(biāo)代碼語句。

    2.3.1 語句譯碼器

    語句譯碼器的架構(gòu)與指針生成網(wǎng)絡(luò)的譯碼器架構(gòu)類似,但它的目的是預(yù)測下一條目標(biāo)代碼語句的上下文向量,并用語句注意力機制來對齊源代碼語句。為了消除不相關(guān)語句的注意力分布,增強兩種語言相關(guān)語句的對應(yīng)關(guān)系,同時減少計算量和加快訓(xùn)練速度,本文設(shè)置了語句注意力機制,使其對齊源代碼中最相關(guān)的k條語句。為了進行預(yù)測和對齊操作,語句譯碼器使用語句編碼器的輸出(代碼上下文向量C、語句隱藏狀態(tài)H),并在詞符編碼器協(xié)助下進行預(yù)測:

    其中:S0是代碼上下文向量C;Ci+1是目標(biāo)代碼下一條語句的上下文向量;CoverageAttention是帶有覆蓋機制的注意力機制;TopK輸出注意力分布ai相同維度值最大的k個元素的索引;Gather是按索引聚集向量操作;Mi+1是與目標(biāo)語句相關(guān)的前k條源代碼語句的加權(quán)隱藏狀態(tài),包含了對齊語句的語法特征和語義特征。

    2.3.2 詞符譯碼器

    詞符譯碼器和指針生成網(wǎng)絡(luò)的譯碼器架構(gòu)相同。該譯碼器進一步理解目標(biāo)代碼語句上下文向量,同時通過詞符注意力機制從對齊的源代碼語句提取表示關(guān)鍵字、標(biāo)識符和運算符等詞符,生成符合目標(biāo)代碼語法的語句。詞符譯碼器獲取目標(biāo)代碼的語句上下文向量Ci+1后,通過Pointer和Generator預(yù)測目標(biāo)詞符yi,j+1:

    其中:SYi0是目標(biāo)語句上下文向量C*i+1;依據(jù)指針—生成器機制描述,Pointer是指針概率分布計算操作;Generator是生成器概率分布計算操作;Pgen合并以上兩者的概率分布。

    此外,本文還為HPGN設(shè)計了新的損失函數(shù)。由于層次譯碼器采用了帶有覆蓋機制的注意力機制CoverageAttention,所以需要對語句級別和詞符級別不均衡的注意力分布進行懲罰。本文在指針生成網(wǎng)絡(luò)損失函數(shù)的基礎(chǔ)上進行了改進,并引入超參數(shù)λ1和λ2來調(diào)整損失函數(shù)在語句級別和詞符級別的權(quán)重:

    2.4 狀態(tài)傳遞機制

    為了使語句譯碼器捕獲更豐富的上下文特征,本文提出了狀態(tài)傳遞機制,將相鄰語句的最終詞符隱藏狀態(tài)傳遞給語句譯碼器。本文設(shè)計了殘差和門控兩種不同狀態(tài)傳遞機制,使得相鄰語句的隱藏狀態(tài)CYi+1及其最終詞符隱藏狀態(tài)SYi+1m更新至語句譯碼器隱藏狀態(tài)Si中。

    2.4.1 殘差狀態(tài)傳遞機制

    殘差狀態(tài)傳遞機制的架構(gòu)如圖4所示。該機制基于殘差網(wǎng)絡(luò),能自動對詞符譯碼器隱藏狀態(tài)SYi+1m和語句譯碼器隱藏狀態(tài)Si做殘差運算,公式如下:

    其中:SY1m是零向量;式(32)的結(jié)果代替Si作為語句譯碼器第t時刻的隱藏狀態(tài)。

    2.4.2 門控狀態(tài)傳遞機制

    門控狀態(tài)傳遞機制架構(gòu)如圖5所示。該機制基于門控網(wǎng)絡(luò),能夠在向量元素級別上調(diào)整詞符譯碼器隱藏狀態(tài)SYi+1m和語句譯碼器隱藏狀態(tài)Si:

    其中:SY1m是零向量;Zfeedi是h維的權(quán)重向量;式(34)的結(jié)果代替Si作為語句譯碼器第t時刻的隱藏狀態(tài)。

    3 實驗設(shè)置

    3.1 研究問題

    RQ1:本文模型在代碼遷移任務(wù)中表現(xiàn)如何?

    RQ1的目標(biāo)是評估基于層次注意力機制的源代碼遷移模型HPGN在兩個遷移任務(wù)(Java到C#和C#到Java)中的表現(xiàn)。為了評估模型,實驗選擇具有狀態(tài)傳遞機制的HPGN和對比模型進行對比,其中對比模型在3.4節(jié)中進行了介紹。為了方便表示,具有殘差狀態(tài)傳遞機制(如2.4.1節(jié)所描述)的模型稱為ResNet-HPGN,具有門控狀態(tài)傳遞機制(如2.4.2節(jié)所描述)的模型稱為Gate-HPGN。

    RQ2:狀態(tài)傳遞機制對模型的性能有怎樣的影響?

    RQ2的目標(biāo)是為了探究2.4節(jié)所描述的狀態(tài)傳遞機制對HPGN性能的影響。為此,實驗對比了無狀態(tài)傳遞機制的HPGN(表示為Base-HPGN)與ResNet-HPGN以及Gate-HPGN的代碼遷移精度。

    RQ3:與基于詞符注意力機制的模型相比,基于層次注意力機制的模型有什么優(yōu)勢?

    RQ3是為了探究基于層次注意力機制的源代碼遷移模型HPGN在代碼遷移過程中的優(yōu)勢。如第2章所描述,HPGN拓展于基于詞符注意力機制的指針生成網(wǎng)絡(luò),引入了語句注意力機制。比較HPGN和指針生成網(wǎng)絡(luò)可以更好地評估層次架構(gòu)的有效性。

    3.2 數(shù)據(jù)集

    本文選擇源代碼遷移研究廣泛使用的C#-Java數(shù)據(jù)集CodeTrans[7]。該數(shù)據(jù)集來源于開源項目Lucene、POI、JGit以及Antlr。這些項目最初基于Java語言開發(fā),后遷移至C#語言。CodeTrans數(shù)據(jù)集通過挖掘遷移前后兩個版本中相似目錄下的相似函數(shù)代碼的方式完成收集,隨后基于抽象語法樹和數(shù)據(jù)流清除長度短、無內(nèi)容以及無數(shù)據(jù)流形式的函數(shù),最終整理劃分獲得的訓(xùn)練集、驗證集和測試集大小分別是10 300、500和1 000。數(shù)據(jù)集中的C#和Java的代碼在函數(shù)聲明語句、函數(shù)調(diào)用語句、變量聲明語句、分值控制語句上相似,但是在標(biāo)識符名稱、匿名數(shù)據(jù)類型關(guān)鍵字、函數(shù)體異常處理語句、父類構(gòu)造函數(shù)調(diào)用語句、增強for循環(huán)語句以及內(nèi)置函數(shù)調(diào)用語句等內(nèi)容存在較大的文本差異。因此神經(jīng)機器翻譯模型需要理解源代碼的語法和語義特征,將其轉(zhuǎn)換為語義一致的目標(biāo)代碼。

    本文采用字節(jié)對編碼分詞器和具體語法樹解析工具tree-sitter(https://tree-sitter.github.io/tree-sitter/)對代碼分詞,其中字節(jié)對編碼分詞器單詞表大小為4 176。代碼分詞后的統(tǒng)計結(jié)果如表1所示??梢园l(fā)現(xiàn)Java代碼中93.9%的語句詞符量少于20,94.0%的代碼語句數(shù)量少于15;C#代碼中94.4%的語句詞符量少于20,93.5%的代碼語句數(shù)量少于15。此外,C#代碼的平均長度長于Java代碼,并且具體語法樹的詞符量要遠多于代碼片段。為此,實驗設(shè)置C#和Java的最大語句長度為35,設(shè)置語句內(nèi)詞符最大數(shù)量為20。

    3.3 評測指標(biāo)

    實驗采用了已有研究廣泛使用的評測指標(biāo)[10,20,21]評估代碼遷移模型[6,7,13]。a)BLEU[12,22,23],用于計算生成的序列和參考序列的n-gram重疊率,并返回0~100%的分值,BLEU值越高,表示生成的序列越接近參考序列;b)精確匹配(exact match,EM)在早期的代碼遷移任務(wù)中用于評估生成的代碼是否與參考代碼相同;c)CodeBLEU[7]采用BLEU的n-gram匹配算法,并通過代碼解析工具引入了抽象語法樹和數(shù)據(jù)流匹配算法,CodeBLEU根據(jù)代碼的文本、語法和語義特征來評估代碼,給出0~100%的分數(shù),CodeBLEU值越高,代碼生成的質(zhì)量越高;d)總體分值是綜合性能評測指標(biāo),本文依據(jù)文獻[7]提供的模型對比方式,把兩個遷移任務(wù)平均CodeBLEU值作為總體分值,該指標(biāo)可用于評估單個代碼遷移技術(shù)在執(zhí)行多個遷移任務(wù)時的總體性能。

    3.4 對比模型

    本文實驗把具有不同架構(gòu)的模型作為對比模型。最新的基于Transformer模型的研究可以在代碼遷移任務(wù)中取得更好的實驗結(jié)果,但這些研究是從外部數(shù)據(jù)集預(yù)訓(xùn)練的模型[1,6,7,13]。為了消除預(yù)訓(xùn)練模型使用外部數(shù)據(jù)集的干擾,實驗選擇不同架構(gòu)的非預(yù)訓(xùn)練模型作為對比模型:

    a)Naive模型是常用的對比模型[6,7,13],該模型把輸入作為輸出;b)基于短語的統(tǒng)計機器翻譯模型PBSMT(phrase-based statistical machine translation)[3]將序列分解成短語,并經(jīng)統(tǒng)計模型選取由這些短語譯文組合成的最佳序列;c)解析樹翻譯模型tree-to-tree[10]首先把解析樹解析為“左孩子右兄弟”的二叉樹形式,然后經(jīng)二叉樹編碼器和二叉樹譯碼器翻譯源代碼的解析樹;d)Transformer模型是目前代碼遷移任務(wù)中非預(yù)訓(xùn)練的最佳模型[7]。有研究表明模型參數(shù)量越多效果越好[12]。

    本文復(fù)現(xiàn)了tree-to-tree和Transformer神經(jīng)網(wǎng)絡(luò)模型。依據(jù)文獻[7]描述,Transformer模型網(wǎng)絡(luò)層和隱藏層大小設(shè)置為12和768,并使用格式化后的數(shù)據(jù)集進行實驗。此外,tree-to-tree模型的輸入和輸出均采用具體語法樹,其輸出樹的葉子節(jié)點序列作為代碼文本,以排除無關(guān)因素的干擾。

    3.5 實驗參數(shù)設(shè)置

    本節(jié)將介紹訓(xùn)練策略和超參數(shù)設(shè)置。在訓(xùn)練階段,模型采用自回歸策略訓(xùn)練層次譯碼器。自回歸訓(xùn)練策略意味著譯碼器的第t個時刻的輸入來自第t-1個時刻預(yù)測的詞符,可以提高網(wǎng)絡(luò)的泛化能力[24]。

    超參數(shù)和實驗細節(jié)設(shè)置如下:a)epoch設(shè)置為20,batch大小設(shè)置為40;b)為了提升語句對齊質(zhì)量并加速訓(xùn)練,語句譯碼器指針top-K的k值設(shè)置為10;c)網(wǎng)絡(luò)嵌入層和隱藏層設(shè)置為64,編碼器譯碼器設(shè)置為1層;d)依據(jù)指針生成網(wǎng)絡(luò)實驗設(shè)置[19],損失函數(shù)的超參數(shù)λ1和λ2都設(shè)置為1;e)模型的梯度范數(shù)裁剪值設(shè)置為4,并應(yīng)用學(xué)習(xí)率為10-3的Adam優(yōu)化器更新模型參數(shù);f)為了復(fù)現(xiàn)tree-to-tree模型,本文依據(jù)設(shè)備規(guī)格設(shè)置了超參數(shù),其中隱藏層和嵌入層設(shè)置為128,epoch設(shè)置為50;g)實驗環(huán)境為Intel i9 9900k的CPU和RTX 2080Ti 的GPU服務(wù)器。每個實驗大約運行30 h。

    4 結(jié)果分析

    4.1 RQ1:本文模型在代碼遷移任務(wù)中表現(xiàn)如何?

    實驗?zāi)P秃蛯Ρ饶P驮贐LEU、精確匹配(EM)和CodeBLEU指標(biāo)上的評估結(jié)果如表2所示??梢钥闯?,Gate-HPGN總體表現(xiàn)優(yōu)于最佳的對比模型。雖然Transformer模型取得了最高的EM值,但是在BLEU和CodeBLEU指標(biāo)上,Gate-HPGN表現(xiàn)更好,在Java到C#任務(wù)分別提升了2.57和0.73,在C#到Java任務(wù)分別提升了8.08和6.06。在總體分值方面,Gate-HPGN的性能相比于最佳的對比模型提升了3.4。從譯碼器架構(gòu)角度分析EM結(jié)果,Transformer得益于模型參數(shù)量和自注意力機制,譯碼性能更優(yōu);而Gate-HPGN譯碼時受GRU長程依賴問題的影響,使得模型對譯碼器端代碼的理解存在性能損失[25]。此外,該實驗依據(jù)了Chen等人[10]的建議設(shè)置tree-to-tree模型超參數(shù),然而該模型性能表現(xiàn)不佳。從表1的數(shù)據(jù)集詞符統(tǒng)計可知,該模型輸入和輸出的具體語法樹的詞符數(shù)量遠多于代碼文本的詞符數(shù)量。這表明盡管具體語法樹包含了源代碼的結(jié)構(gòu)特征,但其過多的詞符使得模型難以理解并生成具有復(fù)雜結(jié)構(gòu)特征的代碼。

    此外,從評測指標(biāo)的角度對表2結(jié)果進行分析。在代碼遷移研究領(lǐng)域中,BLEU指標(biāo)評估了輸出代碼和目標(biāo)代碼的相似程度,沒有考慮代碼的語法和語義特征;EM指標(biāo)嚴(yán)格判斷輸出代碼和目標(biāo)代碼是否一致,卻忽略了相同語法和語義特征下的不同代碼;CodeBLEU指標(biāo)采用了代碼解析工具,通過對比輸出代碼和目標(biāo)代碼的解析樹特征,從文本、語法和語義方面評估輸出代碼。例如,一些代碼語句的功能相似,但詞符形式不相同,這導(dǎo)致EM指標(biāo)不能有效評估代碼語義特征。因此從結(jié)果表明,tree-to-tree模型性能與PBSMT相當(dāng),而HPGN在代碼語義遷移的性能優(yōu)于最佳的對比模型。

    為了深度分析HPGN和Transformer源代碼遷移性能,本文召集了五位有項目開發(fā)經(jīng)驗且未參與研究的志愿者對輸出結(jié)果進行人工評估。為了保證評估結(jié)果的公平性和準(zhǔn)確性,本文隨機抽取了與表2結(jié)果相近的100條數(shù)據(jù),并定制了評測的指標(biāo)和打分標(biāo)準(zhǔn),如表3所示?!罢Z法”指代碼語法完整度,“語義”則依據(jù)變量、類型、標(biāo)識符和表達式等角度評估輸出代碼和源代碼功能相似度。人工評估結(jié)果如表4所示,展示了每個模型在兩個指標(biāo)下的最大、最小的平均得分??梢园l(fā)現(xiàn),Gate-HPGN在語義上的性能優(yōu)于Transformer,在語法上和Transformer相當(dāng)。從模型架構(gòu)上分析,Transformer得益于模型參數(shù)量和自注意力機制,能減少輸出代碼的語法錯誤;HPGN得益于層次架構(gòu),能更準(zhǔn)確地關(guān)注到源代碼語句的語法和語義以及語句間的上下文特征,生成語義相關(guān)的代碼。

    表5給出了HPGN和對比模型輸出樣例。樣例1中源代碼包含簡短的函數(shù)調(diào)用語句。Transformer模型輸出的代碼在語義上發(fā)生了改變;tree-to-tree模型輸出的代碼不能準(zhǔn)確表達源代碼的語義;Gate-HPGN生成的代碼最接近參考代碼,但多出了額外的符號。在這里,Transformer模型不能有效地理解源代碼的標(biāo)識符和函數(shù)的實參列表;tree-to-tree模型沒有為源代碼中的詞符設(shè)計遷移架構(gòu),造成語義缺失;Gate-HPGN能理解源代碼的語法和語義特征。樣例2中源代碼有著復(fù)雜的代碼語句,所有模型的輸出存在語義偏差的問題。Transformer模型的輸出脫離了源代碼語義。通過對訓(xùn)練集的分析,本文認為這是因模型很少學(xué)習(xí)該遷移模式,使得模型憑借訓(xùn)練時的“記憶”背出最可能的代碼片段。tree-to-tree模型輸出的代碼中有兩條語句的語義也發(fā)生了改變,這是因為模型難以理解復(fù)雜代碼語句所對應(yīng)的具體語法樹。Gate-HPGN輸出代碼中第二條語句復(fù)制對應(yīng)源代碼語句的實參列表并自制了一個offsetmin函數(shù),最大程度地保留了源代碼語義。

    本文比較了HPGN和最佳對比模型Transformer的模型參數(shù)量。如表6所示,本文模型在參數(shù)量上顯著地少于最佳的對比模型,這意味著該HPGN可以以較少的計算資源實現(xiàn)較好的遷移性能。該結(jié)果反映了Transformer模型需要大量的模型參數(shù)來取得理想的遷移性能,而HPGN能更高效地遷移源代碼。

    RQ1總結(jié):在代碼遷移任務(wù)中,本文提出基于層次注意力機制的源代碼遷移模型HPGN相較于最佳的對比模型,在模型參數(shù)量較少的情況下具有最佳遷移性能。

    4.2 RQ2:狀態(tài)傳遞機制對模型的性能有怎樣的影響?

    表7展示了Base-HPGN與Gate-HPGN以及ResNet-HPGN的對比結(jié)果。Gate-HPGN的結(jié)果在三個指標(biāo)的分值優(yōu)于其他模型,而ResNet-HPGN在Java到C#代碼遷移任務(wù)中三個指標(biāo)的分值均低于Base-HPGN。這樣的結(jié)果表明狀態(tài)傳遞機制是有助于層次譯碼器捕獲相鄰語句上下文特征,而門控狀態(tài)傳遞機制性能更好。從模型角度分析,這是因為門控狀態(tài)傳遞機制能細致地更新語句隱藏狀態(tài)向量的每個元素,使得門控網(wǎng)絡(luò)生成的隱藏狀態(tài)比殘差網(wǎng)絡(luò)融合成的隱藏狀態(tài)所包含的特征更豐富。

    [14]Hindle A,Barr E T,Gabel M,et al.On the naturalness of software[J].Communications of the ACM,2016,59(5):122-131.

    [15]Zhang Jian,Wang Xu,Zhang Hongyu,et al.A novel neural source code representation based on abstract syntax tree[C]//Proc of the 41st International Conference on Software Engineering .Piscataway,NJ:IEEE Press,2019:783-794.

    [16]Cho K,Van Merriёnboer B,Gulcehre C,et al.Learning phrase representations using RNN encoder-decoder for statistical machine translation[C]//Proc of Conference on Empirical Methods in Natural Language Processing.Stroudsburg,PA:Association for Computational Linguistics,2014:1724-1734.

    [17]Schuster M,Paliwal K K.Bidirectional recurrent neural networks [J].IEEE Trans on Signal Processing,1997,45(11):2673-2681.

    [18]Bahdanau D,Cho K,Bengio Y.Neural machine translation by jointly learning to align and translate[C]//Proc of the 5th International Conference on Learning Representation.2015.

    [19]See A,Liu P J,Manning C D.Get to the point:summarization with pointer-generator networks [C]//Proc of the 55th Annual Meeting of Association for Computational Linguistics.Stroudsburg,PA:Association for Computational Linguistics,2017:1073-1083.

    [20]Li Zheng,Wu Yonghao,Peng Bin,et al.SeTransformer:a Transformer-based code semantic parser for code comment generation[J].IEEE Trans on Reliability,2023,72(1):258-273.

    [21]Yang Guang,Liu Ke,Chen Xiang,et al.CCGIR:information retrieval-based code comment generation method for smart contracts[J].Knowledge-Based Systems,2022,237:107858.

    [22]Cho K,Merrienboer B V,Bahdanau D,et al.On the properties of neural machine translation:encoder-decoder approaches[C]//Proc of the 8th Workshop on Syntax,Semantics and Structure in Statistical Translation.Stroudsburg,PA:Association for Computational Linguistics,2014:103-111.

    [23]Papineni K,Roukos S,Ward T,et al.BLEU:a method for automatic evaluation of machine translation[C]//Proc of the 40th annual meeting of the Association for Computational Linguistics.Stroudsburg,PA:Association for Computational Linguistics,2002:311-318.

    [24]Zhang Wen,F(xiàn)eng Yang,Meng Fandong,et al.Bridging the gap between training and inference for neural machine translation[C]//Proc of the 57th Annual Meeting of the Association for Computational Linguistics.Stroudsburg,PA:Association for Computational Linguistics,2019:4334-4343.

    [25]Bengio Y,Simard P,F(xiàn)rasconi P.Learning long-term dependencies with gradient descent is difficult [J].IEEE Trans on Neural Networks,1994,5(2):157-166.

    [26]Luong T,Pham H,Manning C D.Effective approaches to attention-based neural machine translation[C]//Proc of Conference on Empirical Methods in Natural Language Processing.Stroudsburg,PA:Association for Computational Linguistics,2015:1412-1421.

    [27]李洪政,馮沖,黃河燕.稀缺資源語言神經(jīng)網(wǎng)絡(luò)機器翻譯研究綜述 [J].自動化學(xué)報,2021,47(6):1217-1231.(Li Hongzheng,F(xiàn)eng Chong,Huang Heyan.A survey on low-resource neural machine translation[J].Acta Automatica Sinica,2021,47(6):1217-1231.)

    [28]Sennrich R,Haddow B,Birch A.Improving neural machine translation models with monolingual data[C]//Proc of the 54th Annual Meeting of the Association for Computational Linguistics.Stroudsburg,PA:Association for Computational Linguistics,2016:86-96.

    [29]李亞超,熊德意,張民.神經(jīng)機器翻譯綜述[J].計算機學(xué)報,2018,41(12):2734-2755.(Li Yachao,Xiong Deyi,Zhang Min.A survey of neural machine translation[J].Chinese Journal of Computers,2018,41(12):2734-2755.)

    收稿日期:2023-03-13;修回日期:2023-05-09基金項目:國家自然科學(xué)基金資助項目(61872026,61902015)

    作者簡介:李征(1974-),男,河北清苑人,教授,博導(dǎo),博士,CCF會員,主要研究方向為軟件測試、源代碼分析和維護;徐明瑞(1998-),男,重慶人,碩士,主要研究方向為代碼表征學(xué)習(xí)和代碼遷移;吳永豪(1995-),男,江西宜春人,博士研究生,主要研究方向為軟件測試和錯誤定位;劉勇(1984-),男(通信作者),湖南常德人,副教授,碩導(dǎo),博士,主要研究方向為源代碼分析、變異測試和錯誤定位(lyong@mail.buct.edu.cn);陳翔(1980-),男,江蘇南通人,副教授,碩導(dǎo),博士,主要研究方向為軟件維護和軟件測試;武淑美(1997-),女,山東濟寧人,博士研究生,主要研究方向為錯誤定位和Web測試;劉恒源(1997-),男,河南周口人,博士研究生,主要研究方向為軟件測試、代碼表征學(xué)習(xí)和錯誤定位.

    猜你喜歡
    機器翻譯注意力機制
    面向短文本的網(wǎng)絡(luò)輿情話題
    基于自注意力與動態(tài)路由的文本建模方法
    基于深度學(xué)習(xí)的問題回答技術(shù)研究
    基于LSTM?Attention神經(jīng)網(wǎng)絡(luò)的文本特征提取方法
    基于注意力機制的雙向LSTM模型在中文商品評論情感分類中的研究
    軟件工程(2017年11期)2018-01-05 08:06:09
    InsunKBQA:一個基于知識庫的問答系統(tǒng)
    互聯(lián)網(wǎng)+新時代下人機翻譯模式研究
    考試周刊(2017年2期)2017-01-19 09:13:50
    “語聯(lián)網(wǎng)+行業(yè)” 助力中國偉大復(fù)興
    考試周刊(2017年2期)2017-01-19 09:12:54
    大數(shù)據(jù)背景下石油科技翻譯
    智富時代(2016年12期)2016-12-01 17:03:10
    機器翻譯不可盲取
    一个人免费看片子| 精品高清国产在线一区| 亚洲成a人片在线一区二区| 久久精品国产99精品国产亚洲性色 | 免费av中文字幕在线| 50天的宝宝边吃奶边哭怎么回事| 动漫黄色视频在线观看| 国产精品久久久av美女十八| 国产精品.久久久| 嫁个100分男人电影在线观看| 99久久精品国产亚洲精品| 淫妇啪啪啪对白视频| 国产精品一区二区精品视频观看| 久热这里只有精品99| 国产男女超爽视频在线观看| 久久久国产成人免费| 正在播放国产对白刺激| 少妇 在线观看| 国产日韩欧美在线精品| 大型av网站在线播放| 性少妇av在线| 91九色精品人成在线观看| 丝袜在线中文字幕| 久久久久精品人妻al黑| 午夜精品久久久久久毛片777| 亚洲欧洲精品一区二区精品久久久| 欧美 亚洲 国产 日韩一| 自线自在国产av| 精品人妻熟女毛片av久久网站| 久久天躁狠狠躁夜夜2o2o| 亚洲第一欧美日韩一区二区三区 | 国产欧美日韩一区二区三| 日本a在线网址| 无人区码免费观看不卡 | 亚洲精品粉嫩美女一区| 精品国产乱码久久久久久男人| 天天添夜夜摸| 露出奶头的视频| 久热这里只有精品99| 欧美黄色片欧美黄色片| 久久精品国产亚洲av香蕉五月 | 成人永久免费在线观看视频 | 大码成人一级视频| 欧美精品一区二区免费开放| 别揉我奶头~嗯~啊~动态视频| 99久久国产精品久久久| 99热网站在线观看| 国产成人啪精品午夜网站| 成人18禁在线播放| 久久热在线av| 午夜日韩欧美国产| 一边摸一边抽搐一进一出视频| 又紧又爽又黄一区二区| 12—13女人毛片做爰片一| 免费黄频网站在线观看国产| 1024香蕉在线观看| 欧美日韩亚洲综合一区二区三区_| 一进一出抽搐动态| 香蕉久久夜色| 一区福利在线观看| 国产成人影院久久av| 多毛熟女@视频| 欧美激情久久久久久爽电影 | 久久久久精品国产欧美久久久| 下体分泌物呈黄色| 欧美激情 高清一区二区三区| 男女边摸边吃奶| 免费av中文字幕在线| 97人妻天天添夜夜摸| 亚洲国产看品久久| 国产av精品麻豆| 国产av一区二区精品久久| 精品午夜福利视频在线观看一区 | 性色av乱码一区二区三区2| 麻豆av在线久日| 久久久国产成人免费| 成人国产av品久久久| 国产一区二区三区视频了| 在线亚洲精品国产二区图片欧美| 啦啦啦免费观看视频1| 久久久久精品人妻al黑| 纵有疾风起免费观看全集完整版| 国产欧美日韩一区二区精品| 久久久久国产一级毛片高清牌| 看免费av毛片| 在线观看66精品国产| 国产日韩欧美亚洲二区| 人妻 亚洲 视频| 电影成人av| 黑人猛操日本美女一级片| 国产精品99久久99久久久不卡| 两个人免费观看高清视频| 视频在线观看一区二区三区| 亚洲 欧美一区二区三区| 国产欧美日韩一区二区三区在线| 国内毛片毛片毛片毛片毛片| 夫妻午夜视频| 免费在线观看影片大全网站| 欧美激情高清一区二区三区| 高清在线国产一区| 亚洲国产欧美日韩在线播放| 久久中文字幕人妻熟女| 日本vs欧美在线观看视频| 久久久精品94久久精品| 91老司机精品| 欧美在线一区亚洲| 一级片免费观看大全| 夜夜爽天天搞| 亚洲人成电影免费在线| 人人澡人人妻人| 国产日韩欧美视频二区| 亚洲欧美色中文字幕在线| 精品乱码久久久久久99久播| 日韩欧美免费精品| 久久精品成人免费网站| 国产欧美日韩一区二区精品| 高清av免费在线| 日日爽夜夜爽网站| 久热爱精品视频在线9| av线在线观看网站| 99精品欧美一区二区三区四区| 中文字幕人妻丝袜制服| 免费观看a级毛片全部| 国产成人啪精品午夜网站| 99久久99久久久精品蜜桃| 日本黄色视频三级网站网址 | 老熟妇仑乱视频hdxx| 国产不卡av网站在线观看| 18禁美女被吸乳视频| 久久香蕉激情| 欧美久久黑人一区二区| 在线 av 中文字幕| 巨乳人妻的诱惑在线观看| 精品国产一区二区三区久久久樱花| 精品国产乱码久久久久久小说| 9色porny在线观看| 麻豆成人av在线观看| 亚洲国产看品久久| 51午夜福利影视在线观看| 国产成人av教育| 高潮久久久久久久久久久不卡| 亚洲欧美精品综合一区二区三区| av天堂在线播放| 高清视频免费观看一区二区| 亚洲精华国产精华精| av又黄又爽大尺度在线免费看| 日韩免费高清中文字幕av| 久久久国产欧美日韩av| 国产成人精品在线电影| 99热国产这里只有精品6| 50天的宝宝边吃奶边哭怎么回事| 国产精品99久久99久久久不卡| av天堂在线播放| 亚洲av片天天在线观看| 久热爱精品视频在线9| 午夜免费成人在线视频| kizo精华| 免费观看av网站的网址| 亚洲人成电影观看| 日本撒尿小便嘘嘘汇集6| 高清在线国产一区| 欧美精品啪啪一区二区三区| 三上悠亚av全集在线观看| 窝窝影院91人妻| 窝窝影院91人妻| 亚洲精品美女久久久久99蜜臀| 色精品久久人妻99蜜桃| 国产亚洲午夜精品一区二区久久| 国产精品98久久久久久宅男小说| av欧美777| 免费观看av网站的网址| 免费在线观看黄色视频的| 一本—道久久a久久精品蜜桃钙片| 亚洲精品av麻豆狂野| 麻豆成人av在线观看| 免费少妇av软件| a级片在线免费高清观看视频| 肉色欧美久久久久久久蜜桃| 免费观看a级毛片全部| av天堂久久9| 久久国产精品影院| 国产精品香港三级国产av潘金莲| 男女下面插进去视频免费观看| 国产精品美女特级片免费视频播放器 | 精品免费久久久久久久清纯 | 9色porny在线观看| 999久久久精品免费观看国产| 18禁国产床啪视频网站| 嫁个100分男人电影在线观看| www.熟女人妻精品国产| 一边摸一边抽搐一进一出视频| 亚洲第一av免费看| 51午夜福利影视在线观看| 国产亚洲欧美精品永久| 一边摸一边抽搐一进一出视频| 男女无遮挡免费网站观看| 日韩视频一区二区在线观看| 亚洲欧美一区二区三区黑人| 一进一出抽搐动态| 啦啦啦中文免费视频观看日本| 丝袜在线中文字幕| 日韩三级视频一区二区三区| 国产精品偷伦视频观看了| 欧美精品av麻豆av| 亚洲伊人色综图| 一级片免费观看大全| 免费一级毛片在线播放高清视频 | 国产日韩一区二区三区精品不卡| 啦啦啦免费观看视频1| 欧美乱妇无乱码| 成人永久免费在线观看视频 | 精品国产国语对白av| 久久毛片免费看一区二区三区| 午夜老司机福利片| 少妇 在线观看| 午夜福利在线免费观看网站| 老司机福利观看| 黄色视频在线播放观看不卡| 国产精品1区2区在线观看. | 看免费av毛片| 黄色 视频免费看| 亚洲av第一区精品v没综合| 国产成人av激情在线播放| 久久久国产欧美日韩av| 国产精品偷伦视频观看了| 午夜福利影视在线免费观看| 成年人免费黄色播放视频| 精品欧美一区二区三区在线| 欧美日韩黄片免| 大香蕉久久网| 两性夫妻黄色片| 亚洲情色 制服丝袜| 精品国产超薄肉色丝袜足j| 少妇被粗大的猛进出69影院| 99精国产麻豆久久婷婷| 免费在线观看黄色视频的| 淫妇啪啪啪对白视频| 国产成人欧美| 国产免费av片在线观看野外av| 中亚洲国语对白在线视频| 亚洲国产中文字幕在线视频| 777久久人妻少妇嫩草av网站| 精品一品国产午夜福利视频| 天天操日日干夜夜撸| 国产成人啪精品午夜网站| 又紧又爽又黄一区二区| 在线看a的网站| 国产av国产精品国产| 日韩精品免费视频一区二区三区| 夜夜夜夜夜久久久久| 亚洲精品在线美女| 这个男人来自地球电影免费观看| 亚洲自偷自拍图片 自拍| 中文字幕人妻丝袜一区二区| 国产精品免费大片| 免费少妇av软件| 国产国语露脸激情在线看| 黑人巨大精品欧美一区二区mp4| 国内毛片毛片毛片毛片毛片| 男男h啪啪无遮挡| 国产91精品成人一区二区三区 | 久久精品国产亚洲av香蕉五月 | 国产精品久久久久成人av| 91精品三级在线观看| 免费久久久久久久精品成人欧美视频| 韩国精品一区二区三区| 麻豆国产av国片精品| 97人妻天天添夜夜摸| 91成年电影在线观看| 最新美女视频免费是黄的| 波多野结衣av一区二区av| 久9热在线精品视频| 成年版毛片免费区| 黑丝袜美女国产一区| 9色porny在线观看| 宅男免费午夜| 午夜成年电影在线免费观看| 免费少妇av软件| 国产成人一区二区三区免费视频网站| 成人av一区二区三区在线看| 日本av免费视频播放| 九色亚洲精品在线播放| 亚洲国产精品一区二区三区在线| 又黄又粗又硬又大视频| 久久人妻福利社区极品人妻图片| 男男h啪啪无遮挡| 男女床上黄色一级片免费看| 久久热在线av| 日韩欧美三级三区| 91大片在线观看| 国产xxxxx性猛交| 无人区码免费观看不卡 | 久久久久久亚洲精品国产蜜桃av| 欧美+亚洲+日韩+国产| 青草久久国产| 国产日韩欧美视频二区| 国产黄色免费在线视频| 水蜜桃什么品种好| 夜夜爽天天搞| 欧美激情久久久久久爽电影 | 在线观看66精品国产| 亚洲欧美一区二区三区黑人| 久久热在线av| 黑人巨大精品欧美一区二区蜜桃| 黄色视频,在线免费观看| 91麻豆av在线| 热99国产精品久久久久久7| 欧美激情 高清一区二区三区| 夜夜夜夜夜久久久久| 精品国产国语对白av| av天堂在线播放| 亚洲人成77777在线视频| 亚洲成国产人片在线观看| 麻豆成人av在线观看| 在线天堂中文资源库| 国产成人一区二区三区免费视频网站| 我要看黄色一级片免费的| 日韩欧美一区二区三区在线观看 | 免费高清在线观看日韩| www.精华液| 午夜精品国产一区二区电影| 中文字幕人妻丝袜制服| 精品欧美一区二区三区在线| 成在线人永久免费视频| 性高湖久久久久久久久免费观看| 91国产中文字幕| 日韩大片免费观看网站| 国产精品一区二区在线不卡| 91精品国产国语对白视频| 999久久久精品免费观看国产| 亚洲伊人色综图| 久久亚洲真实| 淫妇啪啪啪对白视频| 99久久人妻综合| 男女免费视频国产| av国产精品久久久久影院| 国产精品麻豆人妻色哟哟久久| 久9热在线精品视频| 动漫黄色视频在线观看| 国产精品成人在线| 亚洲精品中文字幕在线视频| 亚洲一卡2卡3卡4卡5卡精品中文| 国产成人欧美| 精品熟女少妇八av免费久了| 老熟妇仑乱视频hdxx| 波多野结衣一区麻豆| 精品国产亚洲在线| 欧美精品一区二区免费开放| 国产一区二区三区视频了| 大香蕉久久成人网| 亚洲欧美日韩另类电影网站| 黄片大片在线免费观看| 欧美日韩黄片免| 成人手机av| 高清毛片免费观看视频网站 | 亚洲人成电影观看| 激情视频va一区二区三区| 视频在线观看一区二区三区| 日韩中文字幕欧美一区二区| 一区二区三区精品91| 亚洲中文字幕日韩| 国产精品成人在线| 老司机靠b影院| 成人黄色视频免费在线看| 黄网站色视频无遮挡免费观看| 亚洲av国产av综合av卡| 一边摸一边做爽爽视频免费| 桃红色精品国产亚洲av| 丝袜在线中文字幕| 99热国产这里只有精品6| 三上悠亚av全集在线观看| 精品国产乱码久久久久久小说| 中文字幕制服av| 最黄视频免费看| 美女视频免费永久观看网站| 国产国语露脸激情在线看| 好男人电影高清在线观看| 麻豆av在线久日| 99久久99久久久精品蜜桃| 精品一品国产午夜福利视频| 操出白浆在线播放| 又紧又爽又黄一区二区| 亚洲性夜色夜夜综合| 国产免费福利视频在线观看| 一本—道久久a久久精品蜜桃钙片| 亚洲五月色婷婷综合| 久久av网站| 91麻豆av在线| 亚洲国产成人一精品久久久| 狠狠婷婷综合久久久久久88av| 美女扒开内裤让男人捅视频| 日韩欧美国产一区二区入口| 超色免费av| 国产精品久久久久成人av| 久久精品国产亚洲av香蕉五月 | 亚洲人成伊人成综合网2020| 麻豆成人av在线观看| 午夜福利免费观看在线| 在线播放国产精品三级| 亚洲伊人色综图| 丝袜人妻中文字幕| 中文字幕高清在线视频| 一区二区日韩欧美中文字幕| 日本一区二区免费在线视频| 国产精品亚洲一级av第二区| 国产精品av久久久久免费| 欧美久久黑人一区二区| 美女午夜性视频免费| 国产极品粉嫩免费观看在线| 一级黄色大片毛片| 国产精品自产拍在线观看55亚洲 | 亚洲成人手机| 丝袜美腿诱惑在线| 在线 av 中文字幕| 18在线观看网站| 亚洲中文字幕日韩| 国产精品美女特级片免费视频播放器 | 最近最新中文字幕大全免费视频| 欧美精品亚洲一区二区| 成年人黄色毛片网站| 欧美 日韩 精品 国产| 别揉我奶头~嗯~啊~动态视频| 中文字幕制服av| 精品久久久久久电影网| 国产真人三级小视频在线观看| 亚洲免费av在线视频| 18禁观看日本| 视频区欧美日本亚洲| 国产一区二区激情短视频| 欧美久久黑人一区二区| 午夜两性在线视频| 精品乱码久久久久久99久播| 国产成人av教育| 大型黄色视频在线免费观看| 精品国产乱码久久久久久小说| 12—13女人毛片做爰片一| 国产黄频视频在线观看| 不卡av一区二区三区| 中文字幕人妻丝袜制服| 王馨瑶露胸无遮挡在线观看| av有码第一页| 国产高清国产精品国产三级| 久久精品aⅴ一区二区三区四区| 久久久国产一区二区| 日本五十路高清| 欧美人与性动交α欧美精品济南到| 一二三四在线观看免费中文在| 69av精品久久久久久 | 亚洲第一青青草原| 精品国产一区二区久久| 成年人午夜在线观看视频| 国产亚洲精品久久久久5区| 脱女人内裤的视频| 欧美午夜高清在线| 性少妇av在线| 九色亚洲精品在线播放| 老司机影院毛片| 午夜日韩欧美国产| 女性生殖器流出的白浆| 91老司机精品| 国产不卡一卡二| 欧美日韩亚洲国产一区二区在线观看 | 久久人妻av系列| 1024香蕉在线观看| 国产精品一区二区在线不卡| 日韩欧美三级三区| 久久久久久久久免费视频了| 欧美黑人欧美精品刺激| 我的亚洲天堂| 男女床上黄色一级片免费看| 久久人妻av系列| 日韩欧美三级三区| 50天的宝宝边吃奶边哭怎么回事| 国产欧美日韩精品亚洲av| 国产99久久九九免费精品| 大香蕉久久网| 午夜福利视频精品| 深夜精品福利| 淫妇啪啪啪对白视频| 国产欧美日韩精品亚洲av| 精品国产乱子伦一区二区三区| 人人妻人人爽人人添夜夜欢视频| 淫妇啪啪啪对白视频| 国产一区二区三区综合在线观看| av国产精品久久久久影院| 在线天堂中文资源库| 在线观看免费高清a一片| 国产精品一区二区在线观看99| 久久精品国产综合久久久| 99精国产麻豆久久婷婷| xxxhd国产人妻xxx| 男女床上黄色一级片免费看| 亚洲欧美日韩高清在线视频 | 免费av中文字幕在线| 80岁老熟妇乱子伦牲交| 亚洲精品国产色婷婷电影| 一进一出好大好爽视频| 制服人妻中文乱码| 日本精品一区二区三区蜜桃| 性高湖久久久久久久久免费观看| 久久99热这里只频精品6学生| 国产欧美亚洲国产| 精品少妇久久久久久888优播| 国产欧美亚洲国产| 99国产精品99久久久久| 久久国产精品大桥未久av| 男男h啪啪无遮挡| 人人妻人人澡人人爽人人夜夜| 91精品国产国语对白视频| 欧美日韩中文字幕国产精品一区二区三区 | a级毛片在线看网站| 色婷婷久久久亚洲欧美| 免费观看人在逋| 欧美乱码精品一区二区三区| 亚洲av电影在线进入| 在线观看免费高清a一片| av有码第一页| 精品少妇内射三级| 免费高清在线观看日韩| 国产精品久久久久成人av| 久久久久久久精品吃奶| av电影中文网址| 国产成人精品在线电影| 午夜福利视频精品| 欧美激情极品国产一区二区三区| 窝窝影院91人妻| 啦啦啦 在线观看视频| 淫妇啪啪啪对白视频| 日本精品一区二区三区蜜桃| 久久99热这里只频精品6学生| 十八禁网站免费在线| 久久热在线av| 亚洲久久久国产精品| 精品一区二区三区av网在线观看 | 亚洲熟女精品中文字幕| 成人av一区二区三区在线看| 久久精品亚洲av国产电影网| 悠悠久久av| 日韩有码中文字幕| 老熟女久久久| 久久久久视频综合| 精品视频人人做人人爽| 亚洲欧洲日产国产| 他把我摸到了高潮在线观看 | 亚洲欧美色中文字幕在线| 亚洲精品乱久久久久久| 97在线人人人人妻| 国产精品亚洲av一区麻豆| 亚洲美女黄片视频| 亚洲免费av在线视频| 99国产极品粉嫩在线观看| 久久这里只有精品19| 人人妻,人人澡人人爽秒播| 操美女的视频在线观看| 国产精品麻豆人妻色哟哟久久| 99久久国产精品久久久| 韩国精品一区二区三区| 日本撒尿小便嘘嘘汇集6| 国产一区有黄有色的免费视频| 久久久久久亚洲精品国产蜜桃av| 亚洲成人免费av在线播放| 人妻久久中文字幕网| 欧美变态另类bdsm刘玥| 免费久久久久久久精品成人欧美视频| 99久久人妻综合| 热99re8久久精品国产| 97在线人人人人妻| 久久久久国产一级毛片高清牌| av在线播放免费不卡| 免费久久久久久久精品成人欧美视频| 国产av一区二区精品久久| 黄色a级毛片大全视频| 国产精品一区二区在线观看99| 欧美 亚洲 国产 日韩一| 免费观看人在逋| av免费在线观看网站| 香蕉国产在线看| 免费看a级黄色片| 久久久久精品国产欧美久久久| 日韩三级视频一区二区三区| 精品少妇内射三级| 中文字幕人妻丝袜制服| 黄色视频在线播放观看不卡| 大香蕉久久成人网| 好男人电影高清在线观看| 18禁裸乳无遮挡动漫免费视频| 亚洲精品久久成人aⅴ小说| 久久热在线av| 国产精品.久久久| 一本综合久久免费| av超薄肉色丝袜交足视频| 婷婷成人精品国产| √禁漫天堂资源中文www| 极品教师在线免费播放| 另类精品久久| 国产亚洲欧美精品永久| 国产成人精品在线电影| 精品国产超薄肉色丝袜足j| 成年女人毛片免费观看观看9 | 久久人妻福利社区极品人妻图片| 亚洲国产欧美日韩在线播放| www.熟女人妻精品国产| 中文字幕另类日韩欧美亚洲嫩草| 少妇粗大呻吟视频| 久久久久精品国产欧美久久久| 免费观看av网站的网址| 欧美日韩亚洲高清精品| 色尼玛亚洲综合影院| 99精国产麻豆久久婷婷| 飞空精品影院首页| 欧美精品av麻豆av| 亚洲国产精品一区二区三区在线| 日韩欧美国产一区二区入口| 我的亚洲天堂| 男女边摸边吃奶|