CN113901177A - 一种基于多模态属性决策的代码搜索方法 - Google Patents
一种基于多模态属性决策的代码搜索方法 Download PDFInfo
- Publication number
- CN113901177A CN113901177A CN202111254147.XA CN202111254147A CN113901177A CN 113901177 A CN113901177 A CN 113901177A CN 202111254147 A CN202111254147 A CN 202111254147A CN 113901177 A CN113901177 A CN 113901177A
- Authority
- CN
- China
- Prior art keywords
- vector
- tuple
- component code
- word
- path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 239000013598 vector Substances 0.000 claims abstract description 168
- 238000007781 pre-processing Methods 0.000 claims abstract description 7
- 230000007246 mechanism Effects 0.000 claims abstract description 6
- 238000012163 sequencing technique Methods 0.000 claims abstract description 4
- 230000004913 activation Effects 0.000 claims description 11
- 239000011159 matrix material Substances 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 9
- 238000013528 artificial neural network Methods 0.000 claims description 7
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 6
- 238000011176 pooling Methods 0.000 claims description 5
- 238000005070 sampling Methods 0.000 claims description 4
- 230000004927 fusion Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 238000003776 cleavage reaction Methods 0.000 claims description 2
- 230000007017 scission Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 9
- 238000005457 optimization Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 3
- 238000005520 cutting process Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 2
- 230000001502 supplementing effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据搜索查询技术,其公开了一种基于多模态属性决策的代码搜索方法,提高组件代码块的搜索的准确率和效率。该方法包括:S1、对查询语句分别与数据库中的每个组件代码块组成待匹配数据对;S2、对各个待匹配数据对进行预处理,获得元组词向量;S3、通过基于BERT的注意力网络提取各个元组的序列特征;S4、利用skip‑gram网络提取各个元组的结构特征;S5、针对每一元组的序列特征和结构特征,采用多模态向量匹配模型进行相似度匹配,得到相似度匹配结果;S6、针对每一元组,基于获得的相似度匹配结果,利用门控机制对多属性得分进行输出控制,获得各元组的最终得分,并从高至低进行排序;S7、选出排序靠前的最终得分对应的组件代码块组成候选组件代码块集反馈用户。
Description
技术领域
本发明涉及数据搜索查询技术,具体涉及一种基于多模态属性决策的代码搜索方法。
背景技术
传统技术中,对于组件代码块的搜索通常基于余弦相似度实现,具体介绍如下:
组件代码块搜索的任务目标:给定一个包含海量组件代码块的数据库,用户输入一个查询语句,搜索系统从数据库中匹配最符合用户期望的组件代码块并返回给用户。
输入:组件代码块数据库DB={c1,c2,...,cN},其中,cN表示第N个组件代码块;用户查询语句q={w1,w2,...,wm},其中,wm表示第m个单词;候选数K。
输出:最优的K个组件代码块。
包括如下步骤:
步骤1:对查询语句q分词、统一小写字母,并截断到固定长度;
步骤2:对组件代码块数据库DB中的任意一个组件代码块ci分词、统一小写字母,并截断到固定长度;
步骤3:将查询语句q的每个单词表示为向量形式Q={e1,e2,...,em},其中,向量em表示第m个单词Wm的词向量;
步骤8:按照步骤3至7计算所有N个(组件代码块的个数)相似度,组成集合cosine:
cosine={cosine1,cosine2,...,cosineN}
步骤9:取cosine中最大的K个相似度对应的组件代码块返回给用户。
上述方案存在的缺陷是:
1、LSTM是一种串行编码器,且存在梯度消失现象。对于长文本的组件代码块序列来说,LSTM的串行解码会消耗线性复杂度的时间来进行计算,并且LSTM会存在遗忘信息的现象,尤其在最开始的组件代码块文本和最后的组件代码块文本之间,信息的交互会存在遗忘。
2、上述方案忽略了组件代码块的多模态特性,相似度比较的方式只在文本层面进行了比较。但组件代码块是一种结构化数据,只将组件代码块视为普通文本则忽视了组件代码块结构上的信息,无法保证搜索结果能满足用户的需求。
发明内容
本发明所要解决的技术问题是:提出一种基于多模态属性决策的代码搜索方法,提高组件代码块的搜索的准确率和效率。
本发明解决上述技术问题采用的技术方案是:
一种基于多模态属性决策的代码搜索方法,包括以下步骤:
S1、对查询语句分别与数据库中的每个组件代码块组成待匹配数据对;
S2、对各个待匹配数据对进行预处理,获得元组词向量;
S3、通过基于BERT的注意力网络提取各个元组的序列特征;
S4、利用skip-gram网络提取各个元组的结构特征;
S5、针对每一元组的序列特征和结构特征,采用多模态向量匹配模型进行相似度匹配,得到相似度匹配结果;
S6、针对每一元组,基于获得的相似度匹配结果,利用门控机制对多属性得分进行输出控制,获得各元组的最终得分,并从高至低进行排序;
S7、选出排序靠前的K个最终得分对应的组件代码块组成候选组件代码块集反馈给用户,所述K≥1。
作为进一步优化,步骤S2具体包括:
S21、对查询语句文本序列按照空格进行分词处理,获得查询语句的词向量Q;
S22、对组件代码块文本序列按照空格进行分词处理,获得所有组件代码块的词向量{C1,C2,...,CN},其中CN表示第N个组件代码块的词向量;
S23、对组件代码块方法名按照下划线、驼峰命名法和大小写进行分词处理,获得所有组件代码块方法名的词向量{M1,M2,...,MN},其中MN表示第N个组件代码块方法名的词向量;
S24、对组件代码块调用的API(应用程序编程接口)序列按照下划线、驼峰命名法和大小写进行分词处理,获得所有组件代码块调用的API序列的词向量{A1,A2,...,AN},其中AN表示第N个组件代码块调用的API序列的词向量;
S25、将查询语句的词向量Q、组件代码块的词向量{C1,C2,...,CN}、组件代码块方法名的词向量{M1,M2,...,MN}、组件代码块调用的API序列的词向量{A1,A2,...,AN}组成待匹配数据对,作为元组词向量:S=(Q,C1,M1,A1),(Q,C2,M2,A2),...,(Q,CN,MN,AN)。
作为进一步优化,步骤S3中,所述基于BERT的注意力网络由多个网络结构块堆叠而成,每个所述网络结构块均包括输入层、注意力表示层和前馈神经网络层:
输入层,用于对输入的词向量与对应的位置向量按位相加,获得输入层词表示;
注意力表示层,用于通过多头注意力机制对输入层表示进行处理,获取多个注意力输出并对所有注意力输出进行拼接,将拼接后的多个注意力头部输出压缩至输入的维度;
前馈神经网络层,用于调节注意力表示层中每个注意力头的权重矩阵。
作为进一步优化,步骤S3中,所述提取各个元组的序列特征具体包括:
S33、将查询语句的词向量Q根据上下文进行[CLS]表示,输入注意力网络后,获得经过[CLS]表示的词向量Q1;
S34、对经过[CLS]表示的词向量Q1进行平均池化处理,获得Q的序列表示,作为Q的序列特征Q2。
作为进一步优化,步骤S4具体包括:
S41、利用python工具包javalang将所有组件代码块转换为抽象语法树;
S42、对抽象语法树采样T条路径,得到路径向量P={p1,...,pT},其中pT表示第T条路径,T表示该语法抽象数从根节点到叶子节点不重复路径的数量;
S43、将路径向量P输入skip-gram模型,得到路径向量P的嵌入向量表示Pnodes,对于任一路径表示其表示的路径是pi,其中nodel表示第l个节点的嵌入向量,l是该路径的长度,pi是P中的任意一条路径;
S46、拼接前向和后向二者的最后一个隐状态,得到任一路径pi的节点向量表示:
S48、加和子词向量获取token的向量表示;
其中,split(·)表示驼峰命名法的显式切割操作,wsubtokens表示子词向量,wsubtokens[s]表示取wsubtokens中子词s对应的词向量;
S49、拼接首尾token的子词向量得到路径pi上token的向量表示:
S410、将路径节点向量表示和token向量表示进行拼接,得到完整的路径表示:
encoded_path(pi)=[encoded_path_lstm(pi);encoded_tokens(pi)]
S411、通过全连接层融合两部分特征,得到路径的融合表示:
zi=tanh(Win1(encoded_path(pi)))
其中,Win1表示全连接层,tanh表示双切正切曲线激活函数;
S412、对T条路径的融合表示求和得到最终的抽象语法树向量表示G:
作为进一步优化,步骤S5具体包括:
其中,Q1为查询语句向量Q的特征向量,Q2为查询语句向量Q的序列特征向量,Gi表示元组的结构特征向量;
S53、将查询语句向量Q输入skip-gram模型,得到Q的嵌入向量表示Qnodes={node1,node2,...,nodel},通过LSTM得到查询文本的双向表示:
S54、拼接两个方向的LSTM的最后一个隐状态得到一个长256的向量表示,得到:
S55、通过全连接层混合两个方向的特征:
Q3=tanh(Win2(hQ))
其中,Win2表示全连接层。
S56、计算Gi与Q3的余弦相似度,最终得到一个相似度匹配得分score7,用Q3替换Ui中的Gi、将score7加入Vi,得到特征九元组Ui和得分七元组Vi:
Vi=(score1,...,score7)
作为进一步优化,步骤S6具体包括:
S61、拼接九元组特征Ui得到门控输入:
其中Wf是2304×256的权重矩阵,Relu为线性整流激活函数;
其中,σ为sigmoid激活函数;
其中scoreT表示score的转置。
本发明的有益效果是:
(1)额外使用了组件代码块结构这一特征进行匹配,在组件代码块特征上更加完备,信息更多;使用了更深的注意力网络,网络的表达能力强于LSTM,且不存在梯度消失现象,组件代码块的序列表示能力更有效,从而使得搜索更加准确;
(2)使用了多属性决策模型,从多个维度考虑各个属性的优先级,并允许使用网络参数进行属性权重的优化,从而使得搜索更加准确;
(3)使用了注意力网络进行序列编码,允许模型并行进行序列的编码,提升了搜索效率。
附图说明
图1为本发明中的基于多模态属性决策的代码搜索方法流程图;
图2为block结构示意图;
图3为skip-gram网络结构图。
具体实施方式
本发明旨在提出一种基于多模态属性决策的代码搜索方法,提高组件代码块搜索的准确率和效率。其实现流程如图1所示,包括:S1、对查询语句分别与数据库中的每个组件代码块组成待匹配数据对;S2、对各个待匹配数据对进行预处理,获得元组词向量;S3、通过基于BERT的注意力网络提取各个元组词向量的序列特征;S4、利用skip-gram网络提取各个元组词向量的结构特征;S5、针对每一元组词向量的序列特征和结构特征,采用多模态向量匹配模型进行相似度匹配,得到相似度匹配结果;S6、针对每一元组词向量,基于获得的相似度匹配结果,利用门控机制对多属性得分进行输出控制,获得各元组词向量的最终得分,并从高至低进行排序;S7、选出排序靠前的K个最终得分对应的组件代码块组成候选组件代码块集反馈给用户。
实施例:
S100:准备数据,包括组件代码块数据库、该数据库上的网络训练数据集、真实的组件代码块查询语句。
S200:事先使用训练数据集中的所有组件代码块查询语句训练skip-gram模型,为S500提取组件代码块的结构特征做准备。
S300:数据预处理,将各个组件代码块从组件代码块文本、组件代码块方法名和组件代码块调用API序列三个方面表示为向量形式。
S400:构造基于BERT的注意力网络,并提取组件代码块的序列特征。
S500:利用Python工具包javalang与S200训练好的skip-gram模型提取组件代码块的结构特征。
S600:使用组件代码块的序列特征、组件代码块的结构特征与组件代码块查询语句组成匹配元组向量。在匹配元组向量之上进行多模态向量匹配,得到特征九元组与得分七元组。
S700:使用特征九元组与得分七元组进行多属性决策,得到最终得分,取得分最高的几个组件代码作为候选组件代码块集合。
S800:将S600至S700视为整体,即一种基于多模态属性决策的代码搜索模型,其输入是组件代码块查询语句、组件代码块的序列特征和组件代码块的结构特征,输出是候选组件代码块集合。用S100准备的数据集Train训练该模型,即可得到一个可用模型。
S900:将真实的组件代码块查询语句输入可用模型,即可得到基于组件代码块数据库DB的候选组件代码块集合。
具体实施时,所述S100中准备数据的具体步骤为:
S101:准备组件代码块数据库DB={c1,c2,...,cN},其中,cN表示第N个组件代码块。
S102:准备数据库DB上的网络训练数据集Train,Train由若干个(q,e)组件代码块查询语句与查询结果组成的匹配对组成,其中e表示由q查询的正确结果,即对应的候选组件代码块。需要保证Train中至少有两个不同的e。
S103:准备真实的组件代码块查询语句qtrue,qtrue需要在S800之后输入模型,即输入训练完成后的模型才能得到正确的结果。
S104:指定查询候选组件代码块集合的数量K,用于S705及后续的排名截取操作。
S105:指定模型学习率α、训练轮次epoch,用于S806及后续的模型训练操作。
具体实施时,所述S200中训练skip-gram模型的具体步骤为:
S201:提取Train所有第一个关键词组成查询语句序列{q1,q2,...,qtrain_length},其中q1表示Train中第一个查询语句,train_length表示Train中匹配对的数量。
S202:将{q1,q2,...,qtrain_length}作为数据集,训练skip-gram模型,skip-gram的网络结构图见附图3,将skip-gram模型的输出长度调整为128。
具体实施时,所述S300中数据预处理的具体步骤为:
S301:以组件代码块数据库DB中的任意一个组件代码块ci为例。
S302:将ci的文本序列按照空格进行分词处理,得到ci的文本序列词向量Ci。
S303:将ci的方法名按照下划线、驼峰命名法、大小写分词,得到ci的方法名词向量Mi。
S304:将ci的调用的API(应用程序编程接口)序列按照下划线、驼峰命名法、大小写分词,得到ci的API序列词向量Ai。
S305:对DB中所有组件代码块都进行S302至S304的操作,得到所有组件代码块的文本序列词向量C、方法名词向量M和序列词向量A,并组成元组词向量(C,M,A)。
S306:对Train中的组件代码块查询语句按照空格进行分词并截断到固定长度200(不够则补充占位符),获得查询语句的词向量Q={e1,e2,...,e200},为S600的使用做预处理,其中e1表示第一个单词对应的词向量,Q表示Train中任一组件代码块查询语句对应的词向量。对真实的组件代码块查询语句按照空格进行分词并截断到固定长度200(不够则补充占位符),获得查询语句的词向量为S900的使用做预处理,其中表示第一个单词对应的词向量。
具体实施时,所述S400中构造基于BERT的注意力网络的具体步骤为:
S402:构造注意力表示层Attention,令注意力头部为12。注意力表示层有三个输入通道Q′、K′、V′,具体公式如下:
最后缩放Q′和K′的点积大小,再利用softmax计算注意力分布,与V点乘得到单头注意力表示Zi,具体公式如下:
Z=[z1;z2;...;z12])
其中“;”表示拼接操作。
S404:将S401至S403的三层结构合并为一个网络模块block,block结构如附图2所示。堆叠3个同样的block组成注意力网络。
具体实施时,所述S400中提取组件代码块的序列特征的具体步骤为:
S405:词向量的[CLS]表示。将任一组件代码块的元组词向量(Ci,Mi,Ai)为例,根据上下文进行[CLS]表示,即句子的开始插入符合BERT规定的[CLS](句首标识符),在分隔、结尾处插入[SEP](分隔符)。
S406:词向量的BERT词向量表示。将进行[CLS]表示的(Ci,Mi,Ai)输入在codesearchnet 1.0上训练的BERT模型,得到(Ci,Mi,Ai)的BERT词向量表示,需要调整BERT模型输出维度为
具体实施时,所述S500中提取组件代码块的结构特征的具体步骤为:
S501:利用python工具包javalang将所有组件代码块转换为抽象语法树;
S502:以其中一个组件代码块对应的抽象语法树为例,采样T条路径,得到路径向量P={p1,...,pT},其中pT表示第T条路径,T表示该语法抽象数从根节点到叶子节点不重复路径的数量;
S503:将路径向量P输入S202训练好的skip-gram模型,得到路径向量P的嵌入向量表示Pnodes。任一路径的嵌入向量表示的是路径pi,即P中任意一条路径,其中nodel表示第l个节点的嵌入向量,l是该路径的长度;
S506:拼接前向和后向二者的最后一个隐状态得到任一路径pi的节点向量表示:
S507:取路径pi上的首节点token w1和尾节点token wl,其中l是该路径的长度;
S509:加和子词向量获取token的向量表示;
S510:拼接首尾token的子词向量得到路径pi上token的向量表示:
S511:将路径节点向量表示和token向量表示进行拼接,得到完整的路径表示:
encoded_path(pi)=[encoded_path_lstm(pi);encoded_tokens(pi)]
S512:通过全连接层融合两部分特征,得到路径的融合表示:
zi=tanh(Win1(encoded_path(pi)))
S513、对T条路径的融合表示求和得到最终的抽象语法树的结构特征,其公式为:
其中,G表示的是S502中其中一个组件代码块的结构特征。
具体实施时,所述S600中进行多模态向量匹配的具体步骤为:
S601:以任一Q为例,将Q进行S405至S408的操作,获得Q的特征向量Q1与序列特征向量Q2。
S602:复制Q1与Q2,与来自S408的所有和S513的所有Gi,组成特征九元组其中Gi与S513中的G同义;Ui表示任一组件代码块与查询语句组成的特征九元组,共有N个;这些特征九元组中的Q1与Q2都是相同的。
S604:将查询语句向量Q={e1,e2,...,e200}输入skip-gram模型,得到Q的嵌入向量表示Qnodes={node1,node2,...,node200},通过LSTM得到查询文本的双向表示:
S606:通过全连接层混合两个方向的特征:
Q3=tanh(Win2(hQ))
S607:将Gi与Q3进行余弦相似度计算,得到一个相似度匹配得分score7,用Q3替换Ui中的Gi、将score7加入Vi,得到新的特征九元组Ui和得分七元组Vi:
Vi=(score1,...,score7)
具体实施时,所述S700中进行多属性决策的具体步骤为:
S702:利用全连接网络混合9种特征:
其中,σ为sigmoid激活函数。
S704:利用点积融合7个分数,具体公式如下:
score=[score1;...;score7]
其中scorer表示score的转置,score是S701中特征九元组Ui的得分。
具体实施时,所述S800中进行练该模型的具体步骤为:
S801:S800系列步骤属于训练模型操作,K值需要保持与S601中e的长度一致(一般取1),即训练时K需要匹配训练集中e的长度,而预测时(S900系列步骤)不需要。
S803:将S601至S704视为整体,是训练一种基于多模态属性决策的代码搜索模型的一部分步骤。
S804:将S802中的两种样本输入S803中的整体,计算MarginRankingLoss损失函数:
其中θ为模型网络参数,即LSTM的模型参数与各权重矩阵的集合,δ是边界排序损失的边界参数。
S806:更新模型网络参数θ:
θ=θ-α·g
其中α为学习率。
S808:得到了一个可用的模型网络参数θ。
具体实施时,所述S900中输入可用模型的具体步骤为:
S901:恢复S800系列操作对K值的修改。
S902:将Qtrue作为S601的输入,执行S601至S705,得到得分最高的K个候选组件代码块。此时其中的各网络参数是S808中已经训练完成的模型网络参数θ。
S903:将S902得到的K个候选组件代码块组合为候选组件代码块集合CAND:
CAND=(cand1,cand2,...,candK)
其中cand1表示得分第一的候选组件代码块。
S904:将CAND返回给用户。
Claims (7)
1.一种基于多模态属性决策的代码搜索方法,其特征在于,包括以下步骤:
S1、对查询语句分别与数据库中的每个组件代码块组成待匹配数据对;
S2、对各个待匹配数据对进行预处理,获得元组词向量;
S3、通过基于BERT的注意力网络提取各个元组的序列特征;
S4、利用skip-gram网络提取各个元组的结构特征;
S5、针对每一元组的序列特征和结构特征,采用多模态向量匹配模型进行相似度匹配,得到相似度匹配结果;
S6、针对每一元组,基于获得的相似度匹配结果,利用门控机制对多属性得分进行输出控制,获得各元组的最终得分,并从高至低进行排序;
S7、选出排序靠前的K个最终得分对应的组件代码块组成候选组件代码块集反馈给用户,所述K≥1。
2.如权利要求1所述的一种基于多模态属性决策的代码搜索方法,其特征在于,
步骤S2具体包括:
S21、对查询语句文本序列按照空格进行分词处理,获得查询语句的词向量Q;
S22、对组件代码块文本序列按照空格进行分词处理,获得所有组件代码块的词向量{C1,C2,...,CN},其中CN表示第N个组件代码块的词向量;
S23、对组件代码块方法名按照下划线、驼峰命名法和大小写进行分词处理,获得所有组件代码块方法名的词向量{M1,M2,...,MN},其中MN表示第N个组件代码块方法名的词向量;
S24、对组件代码块调用的API序列按照下划线、驼峰命名法和大小写进行分词处理,获得所有组件代码块调用的API序列的词向量{A1,A2,...,AN},其中AN表示第N个组件代码块调用的API序列的词向量;
S25、将查询语句的词向量Q、组件代码块的词向量{C1,C2,...,CN}、组件代码块方法名的词向量{M1,M2,...,MN}、组件代码块调用的API序列的词向量{A1,A2,...,AN}组成待匹配数据对,作为元组词向量:S=(Q,C1,M1,A1),(Q,C2,M2,A2),...,(Q,CN,MN,AN)。
3.如权利要求1所述的一种基于多模态属性决策的代码搜索方法,其特征在于,
步骤S3中,所述基于BERT的注意力网络由多个网络结构块堆叠而成,每个所述网络结构块均包括输入层、注意力表示层和前馈神经网络层:
输入层,用于对输入的词向量与对应的位置向量按位相加,获得输入层词表示;
注意力表示层,用于通过多头注意力机制对输入层表示进行处理,获取多个注意力输出并对所有注意力输出进行拼接,将拼接后的多个注意力头部输出压缩至输入的维度;
前馈神经网络层,用于调节注意力表示层中每个注意力头的权重矩阵。
5.如权利要求1所述的一种基于多模态属性决策的代码搜索方法,其特征在于,
步骤S4具体包括:
S41、利用python工具包javalang将所有组件代码块转换为抽象语法树;
S42、对抽象语法树采样T条路径,得到路径向量P={p1,...,pT},其中pT表示第T条路径,T表示该语法抽象数从根节点到叶子节点不重复路径的数量;
S43、将路径向量P输入skip-gram模型,得到路径向量P的嵌入向量表示Pnodes,对于任一路径表示其表示的路径是pi,其中nodel表示第l个节点的嵌入向量,l是该路径的长度,pi是P中的任意一条路径;
S46、拼接前向和后向二者的最后一个隐状态,得到任一路径pi的节点向量表示:
S48、加和子词向量获取token的向量表示;
其中,split(·)表示驼峰命名法的显式切割操作,wsubtokens表示子词向量,wsubtokens[s]表示取wsubtokens中子词s对应的词向量;
S49、拼接首尾token的子词向量得到路径pi上token的向量表示:
S410、将路径节点向量表示和token向量表示进行拼接,得到完整的路径表示:
encoded_path(pi)=[encoded_path_lstm(pi);encoded_tokens(pi)]
S411、通过全连接层融合两部分特征,得到路径的融合表示:
zi=tanh(Win1(encoded_path(pi)))
其中,Win1表示全连接层,tanh表示双切正切曲线激活函数;
S412、对T条路径的融合表示求和得到最终的抽象语法树向量表示G:
6.如权利要求1所述的一种基于多模态属性决策的代码搜索方法,其特征在于,
步骤S5具体包括:
其中,Q1为查询语句向量Q的特征向量,Q2为查询语句向量Q的序列特征向量,Gi表示元组的结构特征向量;
S53、将查询语句向量Q输入skip-gram模型,得到Q的嵌入向量表示Qnodes={node1,node2,...,nodel},通过LSTM得到查询文本的双向表示:
S54、拼接两个方向的LSTM的最后一个隐状态得到一个长256的向量表示,得到:
S55、通过全连接层混合两个方向的特征:
Q3=tanh(Win2(hQ))
其中,Win2表示全连接层;
S56、计算Gi与Q3的余弦相似度,最终得到一个相似度匹配得分score7,用Q3替换Ui中的Gi、将score7加入Vi,得到特征九元组Ui和得分七元组Vi:
Vi=(score1,...,score7)。
7.如权利要求6所述的一种基于多模态属性决策的代码搜索方法,其特征在于,
步骤S6具体包括:
S61、拼接九元组特征Ui得到门控输入:
其中Wf是2304×256的权重矩阵,Relu为线性整流激活函数;
其中,σ为sigmoid激活函数;
其中,scoreT表示score的转置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111254147.XA CN113901177B (zh) | 2021-10-27 | 2021-10-27 | 一种基于多模态属性决策的代码搜索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111254147.XA CN113901177B (zh) | 2021-10-27 | 2021-10-27 | 一种基于多模态属性决策的代码搜索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113901177A true CN113901177A (zh) | 2022-01-07 |
CN113901177B CN113901177B (zh) | 2023-08-08 |
Family
ID=79027084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111254147.XA Active CN113901177B (zh) | 2021-10-27 | 2021-10-27 | 一种基于多模态属性决策的代码搜索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113901177B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115577075A (zh) * | 2022-10-18 | 2023-01-06 | 华中师范大学 | 一种基于关系图卷积网络的深度代码搜索方法 |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110144995A1 (en) * | 2009-12-15 | 2011-06-16 | At&T Intellectual Property I, L.P. | System and method for tightly coupling automatic speech recognition and search |
US20120078891A1 (en) * | 2010-09-28 | 2012-03-29 | International Business Machines Corporation | Providing answers to questions using multiple models to score candidate answers |
WO2013075316A1 (en) * | 2011-11-24 | 2013-05-30 | Microsoft Corporation | Interactive multi-modal image search |
CN106095443A (zh) * | 2016-06-14 | 2016-11-09 | 电子科技大学 | 一种基于c/c++代码库的api调用模式挖掘方法 |
US20190065589A1 (en) * | 2016-03-25 | 2019-02-28 | Quad Analytix Llc | Systems and methods for multi-modal automated categorization |
CN110826338A (zh) * | 2019-10-28 | 2020-02-21 | 桂林电子科技大学 | 一种单选择门与类间度量的细粒度语义相似识别的方法 |
CN111159223A (zh) * | 2019-12-31 | 2020-05-15 | 武汉大学 | 一种基于结构化嵌入的交互式代码搜索方法及装置 |
CN111382439A (zh) * | 2020-03-28 | 2020-07-07 | 玉溪师范学院 | 基于多模态深度学习的恶意软件检测方法 |
CN111488137A (zh) * | 2020-04-07 | 2020-08-04 | 重庆大学 | 一种基于共同注意力表征学习的代码搜索方法 |
CN111597371A (zh) * | 2020-04-14 | 2020-08-28 | 广东工业大学 | 外观专利的多模态图像检索方法及系统 |
CN112051986A (zh) * | 2020-08-26 | 2020-12-08 | 西安电子科技大学 | 基于开源知识的代码搜索推荐装置及方法 |
US10949907B1 (en) * | 2020-06-23 | 2021-03-16 | Price Technologies Inc. | Systems and methods for deep learning model based product matching using multi modal data |
CN112507065A (zh) * | 2020-11-18 | 2021-03-16 | 电子科技大学 | 一种基于注释语义信息的代码搜索方法 |
CN112579477A (zh) * | 2021-02-26 | 2021-03-30 | 北京北大软件工程股份有限公司 | 一种缺陷检测方法、装置以及存储介质 |
CN112800172A (zh) * | 2021-02-07 | 2021-05-14 | 重庆大学 | 一种基于两阶段注意力机制的代码搜索方法 |
CN113297410A (zh) * | 2021-07-26 | 2021-08-24 | 广东众聚人工智能科技有限公司 | 一种图像检索方法、装置、计算机设备及存储介质 |
-
2021
- 2021-10-27 CN CN202111254147.XA patent/CN113901177B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110144995A1 (en) * | 2009-12-15 | 2011-06-16 | At&T Intellectual Property I, L.P. | System and method for tightly coupling automatic speech recognition and search |
US20120078891A1 (en) * | 2010-09-28 | 2012-03-29 | International Business Machines Corporation | Providing answers to questions using multiple models to score candidate answers |
WO2013075316A1 (en) * | 2011-11-24 | 2013-05-30 | Microsoft Corporation | Interactive multi-modal image search |
US20190065589A1 (en) * | 2016-03-25 | 2019-02-28 | Quad Analytix Llc | Systems and methods for multi-modal automated categorization |
CN106095443A (zh) * | 2016-06-14 | 2016-11-09 | 电子科技大学 | 一种基于c/c++代码库的api调用模式挖掘方法 |
CN110826338A (zh) * | 2019-10-28 | 2020-02-21 | 桂林电子科技大学 | 一种单选择门与类间度量的细粒度语义相似识别的方法 |
CN111159223A (zh) * | 2019-12-31 | 2020-05-15 | 武汉大学 | 一种基于结构化嵌入的交互式代码搜索方法及装置 |
CN111382439A (zh) * | 2020-03-28 | 2020-07-07 | 玉溪师范学院 | 基于多模态深度学习的恶意软件检测方法 |
CN111488137A (zh) * | 2020-04-07 | 2020-08-04 | 重庆大学 | 一种基于共同注意力表征学习的代码搜索方法 |
CN111597371A (zh) * | 2020-04-14 | 2020-08-28 | 广东工业大学 | 外观专利的多模态图像检索方法及系统 |
US10949907B1 (en) * | 2020-06-23 | 2021-03-16 | Price Technologies Inc. | Systems and methods for deep learning model based product matching using multi modal data |
CN112051986A (zh) * | 2020-08-26 | 2020-12-08 | 西安电子科技大学 | 基于开源知识的代码搜索推荐装置及方法 |
CN112507065A (zh) * | 2020-11-18 | 2021-03-16 | 电子科技大学 | 一种基于注释语义信息的代码搜索方法 |
CN112800172A (zh) * | 2021-02-07 | 2021-05-14 | 重庆大学 | 一种基于两阶段注意力机制的代码搜索方法 |
CN112579477A (zh) * | 2021-02-26 | 2021-03-30 | 北京北大软件工程股份有限公司 | 一种缺陷检测方法、装置以及存储介质 |
CN113297410A (zh) * | 2021-07-26 | 2021-08-24 | 广东众聚人工智能科技有限公司 | 一种图像检索方法、装置、计算机设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
XINGXING ZHANG等: "Manhattan siamese LSTM for question retrieval in community question answering", pages 661 - 677 * |
YONGHE LU等: "Text representation model of scientific papers based on fusing multi-viewpoint information and its quality assessment", pages 6937 * |
彭晓娅;周栋;: "跨语言词向量研究综述", no. 02, pages 4 - 8 * |
罗养霞;: "选择和提升多属性特征识别恶意代码", no. 06, pages 150 - 154 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115577075A (zh) * | 2022-10-18 | 2023-01-06 | 华中师范大学 | 一种基于关系图卷积网络的深度代码搜索方法 |
CN115577075B (zh) * | 2022-10-18 | 2024-03-12 | 华中师范大学 | 一种基于关系图卷积网络的深度代码搜索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113901177B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110609891B (zh) | 一种基于上下文感知图神经网络的视觉对话生成方法 | |
Tan et al. | Lstm-based deep learning models for non-factoid answer selection | |
CN112270193A (zh) | 基于bert-flat的中文命名实体识别方法 | |
CN111259127B (zh) | 一种基于迁移学习句向量的长文本答案选择方法 | |
CN109657239A (zh) | 基于注意力机制和语言模型学习的中文命名实体识别方法 | |
CN110647619A (zh) | 一种基于问题生成和卷积神经网络的常识问答方法 | |
CN113297364B (zh) | 一种面向对话系统中的自然语言理解方法及装置 | |
CN111145728A (zh) | 语音识别模型训练方法、系统、移动终端及存储介质 | |
CN112633364A (zh) | 一种基于Transformer-ESIM注意力机制的多模态情绪识别方法 | |
CN111897944B (zh) | 基于语义空间共享的知识图谱问答系统 | |
CN110516145B (zh) | 一种基于句向量编码的信息搜索方法 | |
CN112883722B (zh) | 一种基于云数据中心分布式文本摘要方法 | |
CN111428443A (zh) | 一种基于实体上下文语义交互的实体链接方法 | |
CN114241191A (zh) | 一种基于跨模态自注意力的无候选框指代表达理解方法 | |
CN114239574A (zh) | 一种基于实体和关系联合学习的矿工违规行为知识抽取方法 | |
CN116662500A (zh) | 一种基于bert模型与外部知识图谱的问答系统构建方法 | |
CN114254645A (zh) | 一种人工智能辅助写作系统 | |
CN115358289A (zh) | 一种融合多类型知识库和推理技术的文本生成算法 | |
CN113901177A (zh) | 一种基于多模态属性决策的代码搜索方法 | |
CN112950414A (zh) | 一种基于解耦法律要素的法律文本表示方法 | |
CN115357691B (zh) | 一种语义检索方法及系统、设备和计算机可读存储介质 | |
CN116561251A (zh) | 一种自然语言处理方法 | |
CN114429144B (zh) | 一种运用辅助记忆的多样性机器翻译方法 | |
CN115858728A (zh) | 一种基于多模态数据的情感分析方法 | |
CN113590745B (zh) | 一种可解释的文本推断方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |