亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于協(xié)同融合網(wǎng)絡的代碼搜索模型

        2024-01-09 03:59:32宋其洪劉建勛扈海澤張祥平
        計算機應用 2023年12期
        關鍵詞:池化分詞語句

        宋其洪,劉建勛*,扈海澤,張祥平

        基于協(xié)同融合網(wǎng)絡的代碼搜索模型

        宋其洪1,2,劉建勛1,2*,扈海澤1,2,張祥平1,2

        (1.服務計算與軟件服務新技術湖南省重點實驗室(湖南科技大學),湖南 湘潭 411201; 2.湖南科技大學 計算機科學與工程學院,湖南 湘潭 411201)(?通信作者電子郵箱904500672@qq.com)

        搜索并重用相關代碼可以有效提高軟件開發(fā)效率?;谏疃葘W習的代碼搜索模型通常將代碼片段和查詢語句嵌入同一向量空間,通過計算余弦相似度匹配并輸出相應代碼片段;然而大多數(shù)模型忽略了代碼片段與查詢語句間的協(xié)同信息。為了更全面地表征語義信息,提出一種基于協(xié)同融合的代碼搜索模型BofeCS。首先,采用BERT(Bidirectional Encoder Representations from Transformers)模型提取輸入序列的語義信息并將它表征為向量;其次,構建協(xié)同融合網(wǎng)絡提取代碼片段和查詢語句間分詞級的協(xié)同信息;最后,構建殘差網(wǎng)絡緩解表征過程中的語義信息丟失。為驗證BofeCS的有效性,在多語言數(shù)據(jù)集CodeSearchNet上進行實驗。實驗結果表明,相較于基線模型UNIF(embedding UNIFication)、TabCS(Two-stage attention-based model for Code Search)和MRCS(Multimodal Representation for neural Code Search),BofeCS的平均倒數(shù)排名(MRR)、歸一化折損累計增益(NDCG)和前位成功命中率(SR@)均有顯著提高,其中MRR值分別提升了95.94%、52.32%和16.95%。

        軟件開發(fā);代碼搜索;協(xié)同融合;BERT;殘差網(wǎng)絡

        0 引言

        隨著開源代碼數(shù)量不斷增長,從大型代碼庫中搜索和重用代碼已經(jīng)成為提高軟件開發(fā)效率的主要方法之一。開發(fā)人員在搜索工具中輸入查詢語句,搜索工具在開源代碼庫(如Github)中進行搜索匹配,進而推薦最相似的代碼片段供開發(fā)人員選擇和重用。因此,準確地為開發(fā)人員推薦符合需求的代碼片段對軟件工程的發(fā)展具有十分重要的意義。

        然而,當前基于深度學習的代碼搜索模型并沒有完全捕獲代碼片段和查詢語句之間的關系[1-3]。圖1是一個代碼-查詢對示例,大多數(shù)模型只能將查詢語句中的分詞“file”同代碼片段中的分詞“filewriter”和“File”等分詞聯(lián)系起來,因為其中都含有關鍵詞“file”;然而,從深層語義聯(lián)系層面,分詞“file”與代碼片段中的分詞“content”和“write”也有強聯(lián)系。在真實的代碼搜索任務中,查詢語句和代碼庫中的候選代碼同樣存在這種深層語義聯(lián)系,即協(xié)同信息。若模型無法完全感知代碼片段和查詢語句間的關系,勢必影響表征向量的完整性,進一步影響代碼搜索的準確性。

        圖1 代碼-查詢對示例

        針對當前代碼搜索模型對協(xié)同信息考慮不足的問題,本文提出一種代碼搜索模型BofeCS。首先采用BERT (Bidirectional Encoder Representations from Transformers)模型提取語義信息并表征為向量。其次,在計算機視覺(Computer Vison, CV)和自然語言處理(Natural Language Processing, NLP)領域,一些研究者應用協(xié)同注意力機制捕獲多輸入信息間的相關性[4-6]。受此啟發(fā),構建協(xié)同融合網(wǎng)絡提取代碼片段和查詢語句間分詞級協(xié)同信息。最后,受CV領域的殘差機制[7]啟發(fā),構建殘差網(wǎng)絡彌補表征過程中語義信息丟失。最終融合協(xié)同信息生成語義信息相對完整的表征向量,通過計算代碼片段和查詢語句間向量距離,實現(xiàn)最優(yōu)代碼匹配。

        為驗證BofeCS的有效性,在CodeSearchNet數(shù)據(jù)集[8]上進行對比分析,并選擇UNIF(embedding UNIFication)[9]、TabCS(Two-stage attention-based model for Code Search)[10]和MRCS(Multimodal Representation for neural Code Search)[11]這3種先進方法作為基線模型;同時構建了一系列實驗,驗證BofeCS的結構合理性,并探索具體細節(jié)以優(yōu)化模型性能。

        本文的主要工作如下:1)提出一種高效的代碼搜索模型BofeCS,它可以捕獲代碼片段和查詢語句間的深層聯(lián)系,幫助開發(fā)人員快速準確地搜索相關代碼。2)通過構建協(xié)同融合網(wǎng)絡充分感知語義關聯(lián),捕獲代碼片段和查詢語句間的協(xié)同信息。3)通過構建殘差結構,有效緩解語義特征表征過程中的信息丟失。

        1 相關工作

        代碼搜索是采用查詢語句描述需求以搜索相應功能的代碼片段,供開發(fā)人員重用以高效編碼。目前,代碼搜索的研究主要包含查詢擴展(Query Expansion,QE)和代碼表征模型兩方面。

        1.1 查詢擴展

        相較于代碼注釋,查詢語句較短,它所包含的語義信息通常無法全面表達開發(fā)人員的查詢意圖。因此,基于QE的研究提高了需求描述的完整性,進而提高了代碼搜索的準確性。該流程如式(1)所示:

        目前,QE研究主要集中于擴展同義詞的方法[12-14]。例如:Liu等[15]提出神經(jīng)查詢擴展(Neural QE, NQE)方法,使模型接受一組關鍵字并預測一組與基礎語料庫中查詢關鍵字共同出現(xiàn)的關鍵字,實現(xiàn)QE;Wang等[16]結合強化學習與QE以提升QE的能力;基于變化序列的語義信息,Zou等[17]提出了一種新型查詢方法QESC(QE method based on Semantics of Change sequences),可以從與查詢語義相似的變化中提取相關的術語以擴展查詢;Hu等[18]提出代碼描述挖掘框架CodeMF(Code-description Mining Framework),以消除噪聲帖子并從編程論壇中提取高質量的軟件庫,應用于QE以提高代碼搜索的性能;由于檢索到的方法大多不能直接滿足用戶需求,Wu等[19]基于檢索到方法后可能發(fā)生的改變這一觀察,提出預測改變意圖的QE方法。

        1.2 代碼表征模型

        由于自然語言和編程語言存在較大的語義鴻溝,所以通過構建表征模型將代碼片段和查詢語句嵌入同一向量空間,以縮小兩者之間的語義鴻溝,探索兩者間的聯(lián)系。具體流程如圖2所示,代碼片段和查詢語句作為模型輸入,分別經(jīng)過代碼片段和自然語言編碼器編碼,嵌入為代碼片段和查詢語句向量,通過計算向量相似度以推薦相關代碼片段。

        圖2 基于深度學習的代碼搜索流程

        近幾年,基于深度學習的代碼表征模型成為研究的熱點,例如:Gu等[3]首次將深度學習與代碼搜索結合提出DeepCS(Deep Code Search)模型,使用兩個長短期記憶人工神經(jīng)網(wǎng)絡分別嵌入代碼片段和查詢語句的語義信息,學習其中的語義關聯(lián)以實現(xiàn)代碼匹配;基于DeepCS,COSEA(Convolutional cOde SEarch with layer-wise Attention)模型[20]使用卷積神經(jīng)網(wǎng)絡捕捉代碼結構信息以豐富表征向量的語義信息;Cambronero等[9]提出有監(jiān)督的代碼搜索模型UNIF,使用基于注意力的權重機制結合每個分詞向量生成代碼表征,通過求查詢語句分詞向量均值生成查詢語句表征;Xu等[10]提出TabCS,通過雙階段注意力機制考慮模型輸入特征間的關系表征代碼和查詢語句;基于圖嵌入技術,Ling等[21]提出的DGMS(Deep Graph Matching and Searching for semantic code retrieval)模型將代碼片段和查詢語句用圖結構表示,并構建基于圖的匹配和搜索模型檢索最佳匹配代碼;Wang等[22]嘗試構建圖神經(jīng)網(wǎng)絡以增強對代碼的表征能力。一些研究針對二進制代碼的相似性優(yōu)化代碼搜索[23]。在模型輸入的預處理方面,ASTNN(AST-based Neural Network)方法[24]切分表示代碼結構的抽象語法樹(Abstract Syntax Tree, AST),生成語句級的表征向量,增強了代碼表征的完整性。Gu等[11]提出新型多模態(tài)表征模型MRCS(Multimodal Representation for neural Code Search)。針對代碼提出基于AST遍歷和采樣的4種樹序列,分別與代碼分詞結合作為多模態(tài)代碼表征;針對查詢語句,使用它的分詞作為單模態(tài)表征。為了探索模型的普適性,AdaCS(Adaptive deep Code Search)方法[25]嵌入特定領域的詞匯并匹配句法模式,將匹配特征轉移到新的代碼庫中以降低訓練成本。

        1.3 協(xié)同注意力機制

        注意力機制使深度學習模型可以專注于數(shù)據(jù)的重要部分。由于多數(shù)模型的輸入包含多種模態(tài)信息,為了捕獲輸入信息間的映射語義關系,研究者們提出了協(xié)同注意力機制[4-6]。該機制主要采用注意力機制探尋多個輸入間交互關系中的重要部分,捕獲多輸入間的映射語義信息。例如:Ma等[26]基于協(xié)同注意力機制針對多標簽文本分類任務提出一種改進的多步多分類模型,具體使用協(xié)同注意力機制分析原文和引導標簽之間的聯(lián)系,有助于過濾錯誤預測引起的錯誤累積問題;Zhang等[27]提出基于協(xié)同注意力機制的網(wǎng)絡捕獲情感分析中方面(Aspect)和上下文之間的關系,為給定句段分配正確的極性;Shuai等[28]將協(xié)同注意力機制應用于基于卷積神經(jīng)網(wǎng)絡的模型,捕獲輸入數(shù)據(jù)的聯(lián)系,提高代碼表征的能力。

        2 BofeCS

        2.1 整體架構

        BofeCS的架構如圖3所示,包括三個模塊:第一模塊將預處理得到的代碼片段和查詢語句向量分別送入BERT完成語義嵌入;第二模塊構建協(xié)同融合網(wǎng)絡生成協(xié)同矩陣以捕獲代碼片段和查詢語句之間分詞級的協(xié)同信息,突出關鍵語義特征,降低噪聲;第三模塊構建殘差網(wǎng)絡,將協(xié)同信息作為語義殘差,彌補模型訓練過程中丟失的語義信息,得到代表代碼片段和查詢語句語義特征的完整表征向量。最后,通過計算余弦相似度匹配代碼片段向量與查詢語句向量,推薦最優(yōu)的代碼片段。

        圖3 BofeCS的整體架構

        2.2 語義嵌入

        結合個注意力頭,得到查詢語句和代碼片段的多頭自注意力層輸出,計算過程如式(7)(8)所示:

        其中:Q和C分別是查詢語句和代碼片段多頭自注意力層的融合矩陣;Concat代表連接操作。

        為了防止模型訓練過程中出現(xiàn)過擬合,在BERT層后連接Dropout層,以增強模型的泛化能力。由于BERT內部結構較復雜,整個BERT編碼運算由BERT操作表示。代表代碼片段的序列向量C和代表查詢語句的序列向量Q經(jīng)過式(9)(10)的BERT計算,分別得到模型第一模塊中代碼片段與查詢語句的向量C和Q。

        2.3 協(xié)同融合網(wǎng)絡

        其中?代表兩矩陣點乘過程中對應分詞間協(xié)同信息的計算。

        對于圖1所示的代碼-查詢對,經(jīng)過上述計算生成如圖4所示的協(xié)同矩陣。其中:每一行代表代碼片段中相應的某一個分詞與查詢語句中每一個分詞的關聯(lián)程度;每一列代表查詢語句中相應的某一個分詞與代碼片段中每一個分詞的關聯(lián)程度;矩陣中每個方格的不同顏色和數(shù)值代表相應分詞間的協(xié)同信息。分詞間關聯(lián)越密切,相應方格的顏色就越深,數(shù)值就越高;關聯(lián)越強意味著語義信息越相近,則相應分詞對此代碼片段和查詢語句的匹配貢獻度就越高。因此,各分詞間的協(xié)同信息是衡量相應代碼片段和查詢語句的語義信息是否匹配的重要因素。例如,查詢語句中的分詞“file”與代碼片段中的分詞“content”和“txt”的語義相似,有著密切的聯(lián)系,故圖4中相應方格的顏色就較深;而查詢語句中的分詞“file”與代碼片段中的“public”分詞的語義聯(lián)系較弱,相應方格的顏色就較淺。在計算相似度時,更應關注聯(lián)系密切的分詞語義,降低無關分詞對代碼匹配的影響。通過有側重地表征對匹配具有不同貢獻程度的分詞,提高特征信息表征準確度,進而提高代碼推薦的準確性。

        圖4 協(xié)同矩陣中的協(xié)同信息

        由于協(xié)同矩陣第行中的每個元素代表代碼片段中第個分詞與查詢語句中每個分詞的關聯(lián)程度,則第行元素組成的協(xié)同信息代表代碼片段中第個分詞對該代碼-查詢對匹配的貢獻程度。因此,對協(xié)同矩陣的所有行向量進行如式(13)的最大池化操作,得到該代碼片段中的各分詞與當前查詢語句段匹配的貢獻權重。同理,對于協(xié)同矩陣的列向量,同樣如式(14)對它們進行最大池化操作,得到查詢語句中所有分詞對于整個匹配的貢獻權重。

        故代碼片段和查詢語句各分詞的權重分數(shù)計算如下:

        2.4 殘差網(wǎng)絡及相似性度量

        最終,代碼片段和查詢語句的匹配程度由余弦函數(shù)計算的相似分數(shù)決定。如式(25)所示:

        2.5 模型訓練

        代碼搜索任務實際上可以看成一個分類任務。每個查詢語句可能對應著多個滿足功能需求的代碼片段,而它們之間存在著語義相似度,相似度分數(shù)越高的代碼片段將被視為最佳匹配結果。因此,將代碼搜索任務轉化為將某一查詢語句歸類為代碼庫中某一代碼片段的分類任務,故采用多分類協(xié)同熵函數(shù)作為模型訓練的損失函數(shù),如式(26)所示:

        其中:L表示第個batch的損失值;是模型參數(shù);Avg表示值函數(shù);是整個數(shù)據(jù)集劃分的batch數(shù)。

        損失函數(shù)的計算過程分為softmax計算和協(xié)同熵計算兩個階段:

        2)對于此batch中的協(xié)同損失,個代碼片段可以作為個標簽,計算將查詢語句分類為個代碼片段標簽情況的損失,如式(28)所示:

        其中:l為此batch中第個查詢語句正確分類的情況;p為經(jīng)softmax歸一化輸出第個類別的概率。當分類越準確時,p對應的分量越接近1,L也越小。

        此外,模型使用Adam優(yōu)化器,將學習率設為0.000 4,學習率衰減值設為0.001進行訓練。

        3 實驗與結果分析

        為了驗證所提模型在代碼搜索任務上的效果以及結構的合理性,構建了以下實驗:

        1)RQ1。將BofeCS與當今先進模型對比,驗證BofeCS在代碼搜索任務上的效果。

        2)RQ2。探索如何構建輸入信息并選擇具體方法,最大限度地提升BofeCS的性能。

        3)RQ3。驗證BofeCS中的不同部分對代碼搜索性能的影響。

        4)RQ4。驗證BofeCS在其他編程語言上的表現(xiàn)。

        3.1 實驗配置

        3.1.1環(huán)境配置

        所有實驗均在linux環(huán)境下,使用兩塊內存為11 GB的Nvidia GTX 2080Ti GPU,基于Tensorflow學習框架,使用Python語言進行編碼、測試及運行。

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

        采用CodeSearchNet數(shù)據(jù)集[8]進行訓練、驗證和測試,該語料庫涵蓋超過兩百萬條從開源庫收集的代碼-查詢對,其中查詢語句使用相應代碼注釋表示,包含6種常用編程語言:Python、Javascript、Ruby、Go、Java和PHP。RQ1~RQ3均采用其中的Java數(shù)據(jù)集,RQ4采用全部6種數(shù)據(jù)集。該語料庫的具體細節(jié)如表1所示,預先按編程語言種類分為6類,并分別劃分為訓練集、驗證集(Valid)和測試集這3部分。

        表1CodeSearchNet語料庫的具體情況

        Tab.1 Details about CodeSearchNet corpus

        3.1.3評價指標

        為了有效評估BofeCS的效果,本文采用代碼搜索領域使用最廣泛的3個指標進行評價,分別是:

        1)歸一化折損累計增益(Normalized Discounted Cumulative Gain, NDCG)。它衡量實際返回的代碼片段排序列表與最理想的代碼片段排序列表之間的相似性,注重最終推薦的代碼列表中代碼片段的整體排序情況,如式(29)所示:

        其中:是驗證/測試集中查詢語句數(shù),r是返回的top-搜索結果中位置的代碼片段與查詢語句的相關性。代碼搜索模型的NDCG分數(shù)越高,代表返回推薦代碼列表的整體質量越高,且將更相關的代碼排序到列表越靠前的位置。

        2)平均倒數(shù)排名(Mean Reciprocal Rank, MRR)。它衡量與查詢語句匹配的目標代碼片段在返回的代碼列表中的排名情況,且只關心最相關代碼片段的排名情況,排名越靠前,MRR值越高,反之越低,如式(30)所示:

        其中:Rank是對于第個查詢語句返回的代碼片段推薦列表,最相關的代碼片段的排序位置。MRR值越高,代表代碼搜索的性能越好。

        3.1.4基線模型

        將BofeCS與當前先進的方法進行對比分析,包括:

        1)UNIF[9]。它是有監(jiān)督代碼搜索模型,引入注意力機制,并結合每個分詞的嵌入信息,分別生成代碼片段與查詢語句的表征向量。

        2)TabCS[10]。它是雙層注意力代碼搜索模型,通過兩層注意力機制,根據(jù)輸入信息之間的關系分別生成代碼片段與查詢語句的表征向量。

        3)MRCS[11]。它是多模態(tài)代碼表征模型,基于遍歷和采樣的4種樹序列作為代碼的語法信息,結合源代碼的分詞序列進行特征信息表征。

        3.2 RQ1:BofeCS在代碼搜索任務上的表現(xiàn)

        RQ1將各模型在代碼搜索任務上進行對比分析。其中,MRCS模型將代表代碼語義信息的Tokens序列與代表代碼語法信息的樹序列作為代碼片段部分的輸入。Gu等[11]提出了基于遍歷和采樣的4種樹序列:SBT(Structure-Based Traversal)、LCRS(Left-Child Right-Sibling)、RootPath和Leafpath,RQ1使用效果最好的Tokens+SBT作為MRCS的輸入結構。4個模型均在CodeSearchNet語料庫的Java數(shù)據(jù)集進行模型的訓練和測試,實驗結果如表2所示。由表2可知,相較于基線方法UNIF、TabCS和MRCS,BofeCS的評價指標值均有顯著提升,其中MRR值分別提升了95.94%、52.32%和16.95%。

        相較于其他3種方法,BofeCS不僅使用表征能力更強的BERT進行語義嵌入,還在分詞粒度上捕獲查詢語句與源代碼之間的協(xié)同信息;同時考慮語義表征過程中丟失的語義信息,保證語義信息的完整性。這些都使BofeCS大幅提高了對語義信息表征的準確性,具有較好的代碼搜索效果。

        表24個模型在代碼搜索任務上的對比實驗結果

        Tab.2 Results of comparison experiment of four models on code search task

        3.3 RQ2:輸入信息的構建和具體方法的選擇

        3.3.1探索BofeCS輸入信息的構成

        BofeCS使用代碼片段和查詢語句的分詞序列(T)作為語義信息作為輸入,而MRCS采用基于遍歷和采樣的4種樹序列SBT、LCRS、RootPath和Leafpath代表代碼的語法特征信息。本節(jié)將代表代碼語法特征的4種樹序列分別與代表代碼語義特征的分詞序列一同作為BofeCS的輸入,討論樹序列是否能增強BofeCS的表征能力,提升代碼搜索準確性。實驗結果如表3所示,可以看出,使用任一種樹序列作為額外輸入,對BofeCS的代碼搜索效果均沒有積極作用。這可能是由于過多的信息作為輸入,導致BofeCS無法捕獲關鍵語義信息,表征向量中充斥過多噪聲導致搜索性能下降。因此,以分詞序列(T)作為BofeCS的輸入,既能保證表征信息的完整性,又能避免信息冗余而產(chǎn)生的噪聲,進而提高模型的準確性。

        表3樹序列對BofeCS性能的影響

        Tab.3 Influence of tree sequence on BofeCS performance

        3.3.2損失函數(shù)的選擇

        本文選擇如式(26)所示的多分類協(xié)同熵(S)作為損失函數(shù),式(32)所示的損失函數(shù)(M)也常用于代碼搜索模型的訓練。

        表4兩種損失函數(shù)的表現(xiàn)

        Tab.4 Performance of two loss functions

        3.3.3池化操作的選擇

        由上文可知,BofeCS在協(xié)同融合模塊通過對協(xié)同矩陣展開行/列操作,池化操作生成各分詞對于對應查詢-代碼對的匹配權重值。最大池化和平均池化的區(qū)別是選擇分詞與對應代碼片段或查詢語句的各分詞匹配的權重最大值或平均值作為該分詞的權重值。對比最大池化操作和平均池化兩種方法對BofeCS性能的影響,結果如表5所示,可以看出,最大池化操作的效果優(yōu)于平均池化操作。

        表5兩種池化操作的表現(xiàn)

        Tab.5 Performance of two pooling operations

        綜合以上實驗結果,本文選擇多分類協(xié)同熵損失函數(shù)作為損失函數(shù),并選擇最大池化作為池化操作以最大限度提升BofeCS性能。

        3.4 RQ3:消融實驗

        為驗證BofeCS中各模塊的有效性,分別去除BofeCS中的協(xié)同融合網(wǎng)絡、殘差結構和Dropout結構,結果如表6所示。由表6可知,這3個部分均對BofeCS的性能起著關鍵的作用:協(xié)同融合網(wǎng)絡用于捕獲代碼片段與查詢語句間映射關系中所蘊含的語義信息,突出匹配的關鍵語義信息并指導表征過程;殘差結構將第一模塊嵌入的原始語義向量與協(xié)同融合網(wǎng)絡生成的協(xié)同向量進行融合,保證了表征語義信息的完整性;Dropout結構丟棄部分隱藏層節(jié)點,使BofeCS不會過度依賴訓練數(shù)據(jù)集的局部特征,增強模型的泛化能力。

        表6消融實驗結果

        Tab.6 Results of ablation experiments

        3.5 RQ4:BofeCS在多語言上的表現(xiàn)

        CodeSearchNet是目前代碼搜索研究最為廣泛的數(shù)據(jù)集,共包含6種常用編程語言,超過200萬條數(shù)據(jù)。因此在CodeSearchNet數(shù)據(jù)集上對BofeCS的多語言代碼搜索任務進行實驗并分析。實驗結果如表7所示,可以看出,BofeCS在6種語言上都具有較高的準確度,且在PHP語言上表現(xiàn)最優(yōu),在Ruby語言上的代碼搜索性能較弱。這可能由于Ruby數(shù)據(jù)集的數(shù)據(jù)量僅為Java數(shù)據(jù)集的11%,模型無法充分地學習深層語義聯(lián)系,但良好的結果依然說明BofeCS在較小的數(shù)據(jù)集上仍能展現(xiàn)較優(yōu)的代碼搜索效果。因此,BofeCS在代碼搜索任務中具有較強的泛化能力。

        表7BofeCS在6種語言上的表現(xiàn)

        Tab.7 Performance of BofeCS in six languages

        4 結語

        針對代碼搜索中存在的協(xié)同信息缺失問題,本文提出了一個代碼搜索模型BofeCS。實驗與結果分析表明,BofeCS能有效提高代碼搜索的準確性,同時具有較高的多語言搜索的泛化能力。本文的研究結論如下:1)源代碼與查詢語言之間存在較強的協(xié)同信息,并影響模型表征的準確度;2)協(xié)同融合網(wǎng)絡能有效地提取源代碼與查詢語言之間的協(xié)同信息,提高表征的準確性;3)BofeCS包含的3個模塊具有充分的結構合理性,同時具有多語言搜索的泛化能力。

        未來工作將探索更有效的代碼結構信息表示方法以提高對于代碼的表征能力,還將嘗試使用遷移學習、元學習等技術來提高模型對不同數(shù)據(jù)集的適應能力。

        [1] YAO Z, PEDDAMAIL J R, SUN H. CoaCor: code annotation for code retrieval with reinforcement learning [C]// Proceedings of the 2019 World Wide Web Conference. Republic and Canton of Geneva: International World Wide Web Conferences Steering Committee, 2019: 2203-2214.

        [2] WAN Y, SHU J, SUI Y, et al. Multi-modal attention network learning for semantic source code retrieval [C]// Proceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering. Piscataway: IEEE, 2019: 13-25.

        [3] GU X, ZHANG H, KIM S. Deep code search [C]// Proceedings of the ACM/IEEE 40th International Conference on Software Engineering. New York: ACM, 2018: 933-944.

        [4] YU Z, YU J, XIANG C, et al. Beyond bilinear: generalized multimodal factorized high-order pooling for visual question answering [J]. IEEE Transactions on Neural Networks and Learning Systems, 2018, 29(12): 5947-5959.

        [5] LI L, DONG R, CHEN L. Context-aware co-attention neural network for service recommendations [C]// Proceedings of the IEEE 35th International Conference on Data Engineering Workshops. Piscataway: IEEE, 2019: 201-208.

        [6] LI B, SUN Z, LI Q, et al. Group-wise deep object co-segmentation with co-attention recurrent neural network [C]// Proceedings of the 2019 IEEE/CVF International Conference on Computer Vision. Piscataway: IEEE, 2019: 8518-8527.

        [7] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[C]// Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2016: 770-778.

        [8] HUSAIN H, WU HH, GAZIT T, et al. CodeSearchNet challenge: evaluating the state of semantic code search [EB/OL]. [2022-09-12].https://arxiv.org/pdf/1909.09436.pdf.

        [9] CAMBRONERO J, LI H, KIM S, et al. When deep learning met code search[C]// Proceedings of the 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. New York: ACM, 2019: 964-974.

        [10] XU L, YANG H, LIU C, et al. Two-stage attention-based model for code search with textual and structural features[C]// Proceedings of the 2021 IEEE International Conference on Software Analysis, Evolution and Reengineering. Piscataway: IEEE, 2021: 342-353.

        [11] GU J, CHEN Z, MONPERRUS M. Multimodal representation for neural code search[C]// Proceedings of the 2021 IEEE International Conference on Software Maintenance and Evolution. Piscataway: IEEE, 2021: 483-494.

        [12] LV F, ZHANG H, LOU J G, et al. CodeHow: effective code search based on API understanding and extended Boolean model (E)[C]// Proceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering. Piscataway: IEEE, 2015: 260-270.

        [13] LU M, SUN X, WANG S, et al. Query expansion via WordNet for effective code search[C]// Proceedings of the IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering. Piscataway: IEEE, 2015: 545-549.

        [14] LEMOS O A L, DE PAULA A C, ZANICHELLI F C, et al. Thesaurus-based automatic query expansion for interface-driven code search [C]// Proceedings of the 11th Working Conference on Mining Software Repositories. New York: ACM, 2014: 212-221.

        [15] LIU J, KIM S, MURALI V, et al. Neural query expansion for code search[C]// Proceedings of the 3rd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages. New York: ACM, 2019: 29-37.

        [16] WANG C, NONG Z, GAO C, et al. Enriching query semantics for code search with reinforcement learning[J]. Neural Networks, 2022, 145: 22-32.

        [17] ZOU Q, ZHANG C. Query expansion via learning change sequences[J]. International Journal of Knowledge-based and Intelligent Engineering Systems, 2020, 24(2): 95-105.

        [18] HU G, PENG M, ZHANG Y, et al. Unsupervised software repositories mining and its application to code search[J]. Software: Practice and Experience, 2020, 50(3): 299-322.

        [19] WU H, YANG Y. Code search based on alteration intent[J]. IEEE Access, 2019, 7: 56796-56802.

        [20] WANG H, ZHANG J, XIA Y, et al. COSEA: convolutional code search with layer-wise attention [EB/OL]. [2022-09-12].https://arxiv.org/pdf/2010.09520.pdf.

        [21] LING X, WU L, WANG S, et al. Deep graph matching and searching for semantic code retrieval[J]. ACM Transactions on Knowledge Discovery from Data, 2021, 15(5): No.88.

        [22] WANG W, LI G, MA B, et al. Detecting code clones with graph neural network and flow-augmented abstract syntax tree[C]// Proceedings of the IEEE 27th International Conference on Software Analysis, Evolution and Reengineering. Piscataway: IEEE, 2020: 261-271.

        [23] 夏冰,龐建民,周鑫,等.二進制代碼相似性搜索研究進展[J]. 計算機應用, 2022, 42(4):985-998.(XIA B, PANG J M, ZHOU X, et al. Research progress on binary code similarity search[J]. Journal of Computer Applications, 2022, 42(4):985-998.)

        [24] ZHANG J, WANG X, ZHANG H, et al. A novel neural source code representation based on abstract syntax tree [C]// Proceedings of the IEEE/ACM 41st International Conference on Software Engineering. Piscataway: IEEE, 2019: 783-794.

        [25] LING C, LIN Z, ZOU Y, et al. Adaptive deep code search [C]// Proceedings of the 28th International Conference on Program Comprehension. New York: ACM, 2020: 48-59.

        [26] MA H, LI Y, JI X, et al. MsCoa: multi-step co-attention model for multi-label classification [J]. IEEE Access, 2019, 7: 109635-109645.

        [27] ZHANG P, ZHU H, XIONG T, et al. Co-attention network and low-rank bilinear pooling for aspect based sentiment analysis [C]// Proceedings of the 2019 IEEE International Conference on Acoustics, Speech and Signal Processing. Piscataway: IEEE, 2019: 6725-6729.

        [28] SHUAI J, XU L, LIU C, et al. Improving code search with co-attentive representation learning[C]// Proceedings of the 28th International Conference on Program Comprehension. New York: ACM, 2020: 196-207.

        [29] SHWARTZ-ZIV R, TISHBY N. Opening the black box of deep neural networks via information [EB/OL]. [2022-09-12].https://arxiv.org/pdf/1703.00810.pdf.

        [30] BELGHAZI M I, BARATIN A, RAJESWAR S, et al. Mutual information neural estimation[C]// Proceedings of the 35th International Conference on Machine Learning. New York: JMLR.org, 2018: 531-540.

        Code search model based on collaborative fusion network

        SONG Qihong1,2, LIU Jianxun1,2*, HU Haize1,2, ZHANG Xiangping1,2

        (1(),411201,;2,,411201,)

        Searching and reusing relevant code can significantly improve software development efficiency. The deep learning-based code search models usually embed code pieces and query statements into the same vector space and then match and output the relevant code by computing cosine similarity; however, most of these models ignore the collaborative information between code pieces and query statements. To fully represent semantic information, a collaborative fusion-based code search model named BofeCS was proposed. Firstly, BERT (Bidirectional Encoder Representations from Transformers) model was utilized to extract the semantic information of the input sequences and then represent it as vectors. Secondly, a collaborative fusion network was constructed to extract the token-level collaborative information between code pieces and query statements. Finally, a residual network was built to alleviate the semantic information loss during the representation process. The multi-lingual dataset CodeSearchNet was used to carry out experiments to evaluate the effectiveness of BofeCS. Experimental results show that BofeCS can significantly improve the accuracy of code search and outperform the baseline models, UNIF (embedding UNIFication), TabCS (Two-stage Attention-Based model for Code Search), and MRCS (Multimodal Representation for neural Code Search), in Mean Reciprocal Rank (MRR), Normalized Discounted Cumulative Gain (NDCG), and TopSuccess hit Rate (SR@), where the MRR values are improved by 95.94%, 52.32%, and 16.95%, respectively.

        software development; code search; collaborative fusion; BERT (Bidirectional Encoder Representations from Transformers); residual network

        This work is partially supported by National Natural Science Foundation of China (61872139).

        SONG Qihong, born in 1998, M. S. candidate. His research interests include code search, code completion.

        LIU Jianxun, born in 1970, Ph. D., professor. Her research interests include big data, service computing, cloud computing.

        HU Haize, born in 1989, Ph. D. candidate, lecturer. His research interests include data mining, code search.

        ZHANG Xiangping, born in 1993, Ph. D. candidate. His research interests include code representation, code clone detection.

        TP311.5

        A

        1001-9081(2023)12-3896-07

        10.11772/j.issn.1001-9081.2022111783

        2022?11?29;

        2023?03?25;

        2023?03?28。

        國家自然科學基金資助項目(61872139)。

        宋其洪(1998—),男,陜西寶雞人,碩士研究生,CCF會員,主要研究方向:代碼搜索、代碼補全;劉建勛(1970—),男,湖南衡陽人,教授,博士,CCF杰出會員,主要研究方向:大數(shù)據(jù)、服務計算、云計算;扈海澤(1989—),男,湖南邵陽人,講師,博士研究生,主要研究方向:數(shù)據(jù)挖掘、代碼搜索;張祥平(1993—),男,福建三明人,博士研究生,主要研究方向:代碼表征、代碼克隆檢測。

        猜你喜歡
        池化分詞語句
        基于緊湊型雙線性網(wǎng)絡的野生茵識別方法研究
        無線電工程(2024年8期)2024-09-16 00:00:00
        基于Sobel算子的池化算法設計
        卷積神經(jīng)網(wǎng)絡中的自適應加權池化
        軟件導刊(2022年3期)2022-03-25 04:45:04
        重點:語句銜接
        結巴分詞在詞云中的應用
        智富時代(2019年6期)2019-07-24 10:33:16
        基于卷積神經(jīng)網(wǎng)絡和池化算法的表情識別研究
        精彩語句
        值得重視的分詞的特殊用法
        如何搞定語句銜接題
        語文知識(2014年4期)2014-02-28 21:59:52
        高考分詞作狀語考點歸納與疑難解析
        久久亚洲精品国产亚洲老地址| 超高清丝袜美腿视频在线| 伊人狼人激情综合影院| 亚洲av片无码久久五月| 狠狠色噜噜狠狠狠狠米奇777| 国产亚洲一本大道中文在线| 亚洲一区极品美女写真在线看| 男女啪啪视频高清视频| 中文字幕日韩一区二区不卡| 亚洲国产精品自拍一区| 青春草在线观看免费视频| 视频在线观看免费一区二区| 丰满少妇三级全黄| 亚洲手机国产精品| 手机av在线观看视频| 亚洲人成在久久综合网站| 亚洲毛片αv无线播放一区| 一级毛片不卡在线播放免费| 超短裙老师在线观看一区二区| 成人影院在线视频免费观看| 在线精品一区二区三区 | 男人靠女人免费视频网站| 在线观看无码一区二区台湾| 亚洲中文字幕国产剧情| 在线观看人成视频免费| 国产成人av 综合 亚洲| 国产盗摄XXXX视频XXXX| 亚洲成人精品久久久国产精品| 精品999日本久久久影院| 中文字幕不卡在线播放| 久久精品国产亚洲av蜜臀久久| 久久无码潮喷a片无码高潮| 秋霞午夜无码鲁丝片午夜精品| 欧美日韩综合在线视频免费看 | 日日婷婷夜日日天干| 亚洲国产成人无码影院| 天堂影院久久精品国产午夜18禁| 国产成人午夜福利在线观看| 亚洲综合色成在线播放| 国产精品女同一区二区久| 亚洲中文字幕舔尻av网站|