[發(fā)明專利]一種基于結(jié)構(gòu)化嵌入的交互式代碼搜索方法及裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201911420354.0 | 申請(qǐng)日: | 2019-12-31 |
| 公開(公告)號(hào): | CN111159223B | 公開(公告)日: | 2021-09-03 |
| 發(fā)明(設(shè)計(jì))人: | 彭敏;黎芮彤;胡剛;劉進(jìn);崔曉暉 | 申請(qǐng)(專利權(quán))人: | 武漢大學(xué) |
| 主分類號(hào): | G06F16/242 | 分類號(hào): | G06F16/242 |
| 代理公司: | 武漢科皓知識(shí)產(chǎn)權(quán)代理事務(wù)所(特殊普通合伙) 42222 | 代理人: | 羅飛 |
| 地址: | 430072 湖*** | 國(guó)省代碼: | 湖北;42 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 結(jié)構(gòu) 嵌入 交互式 代碼 搜索 方法 裝置 | ||
1.一種基于結(jié)構(gòu)化嵌入的交互式代碼搜索方法,其特征在于,包括:
步驟S1:收集原始數(shù)據(jù),對(duì)原始數(shù)據(jù)中抽取出軟件存儲(chǔ)庫(kù)以及代碼-描述匹配對(duì)的模型語(yǔ)料,在抽取過程中獲取每條代碼-描述匹配對(duì)的社交屬性值;
步驟S2:對(duì)模型語(yǔ)料進(jìn)行結(jié)構(gòu)化分詞以及預(yù)處理,得到處理后的語(yǔ)料;
步驟S3:采用預(yù)設(shè)工具對(duì)處理后的語(yǔ)料進(jìn)行詞嵌入訓(xùn)練,構(gòu)建預(yù)訓(xùn)練的結(jié)構(gòu)化詞嵌入;
步驟S4:對(duì)模型語(yǔ)料進(jìn)行結(jié)構(gòu)化分詞以及預(yù)處理后,根據(jù)代碼-描述匹配對(duì)的社交屬性值篩選出預(yù)設(shè)數(shù)量的語(yǔ)料進(jìn)行采樣作為代碼搜索模型的語(yǔ)料,并劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集;
步驟S5:構(gòu)建依次包含特征抽取模塊、交互注意力抽取模塊和相似度匹配模塊的交互式代碼搜索模型NICS,并設(shè)置訓(xùn)練網(wǎng)絡(luò)的合頁(yè)損失函數(shù),其中,所述特征抽取模塊用于捕獲并編碼代碼段和自然查詢的序列信息;所述交互注意力模塊用于捕獲并編碼代碼段和自然查詢的交互信息;所述相似度匹配模塊用于計(jì)算查詢與代碼段之間的相似度;
步驟S6:將預(yù)訓(xùn)練結(jié)構(gòu)化詞嵌入加載至交互式代碼搜索NICS模型,設(shè)置初始化參數(shù)并利用訓(xùn)練集來訓(xùn)練擬合模型的參數(shù),在驗(yàn)證集上迭代預(yù)設(shè)次直到合頁(yè)損失函數(shù)收斂,得到訓(xùn)練好的NICS模型;
步驟S7:利用訓(xùn)練好的NICS模型對(duì)待處理的查詢進(jìn)行預(yù)測(cè),獲得與查詢對(duì)應(yīng)的代碼搜索結(jié)果;
其中,步驟S5具體包括:
步驟S5.1:構(gòu)建特征抽取模塊;
在給定代碼段C=c1,...,c|C|和相應(yīng)的查詢Q=q1,...,q|C|時(shí),首先在步驟S2中得到的處理后的語(yǔ)料查詢相應(yīng)的編碼向量,查詢公式如下:
其中,E∈Rd×V是預(yù)訓(xùn)練的結(jié)構(gòu)嵌入的矩陣,和是單詞qi和ci的嵌入矢量,其中V是固定大小的詞匯,d是單詞嵌入的維度,改進(jìn)后的Bi-LSTM包含正向LSTM和反向LSTM,從兩個(gè)方向捕獲每個(gè)步驟的歷史和未來信息,順序輸入向量的正向和向后隱藏狀態(tài)按如下方式表示:
將兩種隱藏狀態(tài)和串聯(lián),以形成最終隱藏狀態(tài)ht:
其中表示兩個(gè)向量的串聯(lián),讓每個(gè)單向LSTM的隱藏單位編號(hào)為u,基于Bi-LSTM的嵌入矢量從長(zhǎng)度的為n的輸入xt更新的公式寫作H∈Rn×2u:
H=[h1,...ht,...,hn]
按照將長(zhǎng)度為n的輸入向量轉(zhuǎn)換為嵌入向量序列H的過程,這些基于BiLSTM的嵌入式矢量集和被表示為H∈R|C|×2u,用于保留更多的歷史信息;
步驟S5.2:構(gòu)建交互注意力模塊;
采用雙向交互方法來進(jìn)行交互信息抽取,給定在每個(gè)時(shí)間步t上查詢序列HQ中的嵌入矢量以及給定每個(gè)時(shí)間步t上的代碼序列HC中的嵌入矢量使用注意機(jī)制為QC的交互表示構(gòu)造注意矩陣M,注意矩陣如下:
其中,Wq∈R2u×a,Wc∈R2u×a,V∈Ra是注意力參數(shù),a是注意力維度,矩陣M∈R|Q|×|C|中包含了查詢Q和代碼C之間的交互信息;
采用注意力池化操作,從代碼方向和查詢方向推導(dǎo)出基于池的投影向量,使用按行和按列值在M上的最大池,分別獲取重要的分?jǐn)?shù)向量mQ∈R|Q|和mC∈R|C|,矢量mq和mc的第k個(gè)元素的計(jì)算方式如下:
每個(gè)元素被視為第k個(gè)“查詢-代碼”單詞對(duì)的重要性分?jǐn)?shù),同樣,每個(gè)元素都被視為第k個(gè)“代碼-查詢”單詞對(duì)的重要性分?jǐn)?shù),為給查詢與代碼分配特定的權(quán)重,計(jì)算權(quán)重向量δQ∈R|Q|和δC∈R|C|如下所示:
δQ=softmax(mQ);δC=softmax(mC)
通過權(quán)重向量δQ∈R|Q|和δC∈R|C|以及基于BiLSTM的嵌入矢量HC和HQ的計(jì)算得到交互向量表示VQ∈R2u和VC∈R2u:
VQ=δQHQ;VC=δCHC;
步驟S5.3:構(gòu)建相似度匹配模塊;
使用cosine相似度cos(VQ,VC)測(cè)量源代碼和自然查詢之間的相關(guān)性,并共同嵌入其向量表示,cosine相似度的計(jì)算方式為:
其中的表示兩個(gè)矩陣通過其轉(zhuǎn)置的乘法,相似性越高,代碼片段與自然查詢的關(guān)系越大,相似度匹配模塊以查詢代碼對(duì)Q,C作為輸入,并預(yù)測(cè)其cosine相似度cos(VQ,VC);
步驟S5.4:構(gòu)建網(wǎng)絡(luò)的合頁(yè)損失函數(shù),構(gòu)造一個(gè)三元組樣本對(duì)Q,C+,C-作為訓(xùn)練實(shí)例,該實(shí)例由一個(gè)查詢以及對(duì)應(yīng)的正代碼C+和負(fù)代碼C-組成,C+表示Q對(duì)應(yīng)的正確的代碼,C-表示Q對(duì)應(yīng)的不正確的代碼,三元組來自步驟S1的模型語(yǔ)料,目標(biāo)是學(xué)習(xí)一個(gè)具有可訓(xùn)練參數(shù)的函數(shù)f,使得這個(gè)函數(shù)能夠?qū)崿F(xiàn)對(duì)Q,C+的評(píng)分高于Q,C-:
當(dāng)在一組Q,C+,C-三元組訓(xùn)練時(shí),交互式代碼搜索模型分別預(yù)測(cè)Q,C+和Q,C-樣本對(duì)的cosine相似度,并減少損失函數(shù)的值:
其中,θ表示模型參數(shù),ε>0是邊距超參數(shù),λ∈[0,1]是正則化參數(shù),VQ,VC+和VC-分別是Q,C+和C-的交互式表示形式。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于武漢大學(xué),未經(jīng)武漢大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201911420354.0/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 卡片結(jié)構(gòu)、插座結(jié)構(gòu)及其組合結(jié)構(gòu)
- 鋼結(jié)構(gòu)平臺(tái)結(jié)構(gòu)
- 鋼結(jié)構(gòu)支撐結(jié)構(gòu)
- 鋼結(jié)構(gòu)支撐結(jié)構(gòu)
- 單元結(jié)構(gòu)、結(jié)構(gòu)部件和夾層結(jié)構(gòu)
- 鋼結(jié)構(gòu)扶梯結(jié)構(gòu)
- 鋼結(jié)構(gòu)隔墻結(jié)構(gòu)
- 鋼結(jié)構(gòu)連接結(jié)構(gòu)
- 螺紋結(jié)構(gòu)、螺孔結(jié)構(gòu)、機(jī)械結(jié)構(gòu)和光學(xué)結(jié)構(gòu)
- 螺紋結(jié)構(gòu)、螺孔結(jié)構(gòu)、機(jī)械結(jié)構(gòu)和光學(xué)結(jié)構(gòu)
- 創(chuàng)建交互式信息服務(wù)的方法及裝置
- 一種交互式業(yè)務(wù)的代理方法及裝置
- 采用互動(dòng)式EPG分發(fā)系統(tǒng)的IPTV系統(tǒng)
- 一種交互式電子簽名方法
- 數(shù)據(jù)處理方法、負(fù)載均衡器和交互式應(yīng)用服務(wù)器及系統(tǒng)
- 用于控制交互式組件的處理單元、軟件以及方法
- 用于交互式視頻體驗(yàn)的分層交互式視頻平臺(tái)
- 計(jì)算設(shè)備處輸入選項(xiàng)的交互式教程支持
- 一種交互式課件制作方法
- 一種基于移動(dòng)端交互式音視頻生成的方法、裝置、計(jì)算設(shè)備及存儲(chǔ)介質(zhì)





