CN113449076A - 基于全局信息和局部信息的代码搜索嵌入方法及装置 - Google Patents

基于全局信息和局部信息的代码搜索嵌入方法及装置 Download PDF

Info

Publication number
CN113449076A
CN113449076A CN202110697410.6A CN202110697410A CN113449076A CN 113449076 A CN113449076 A CN 113449076A CN 202110697410 A CN202110697410 A CN 202110697410A CN 113449076 A CN113449076 A CN 113449076A
Authority
CN
China
Prior art keywords
code
vector
information
query
module
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
Application number
CN202110697410.6A
Other languages
English (en)
Other versions
CN113449076B (zh
Inventor
彭敏
罗娟
黎芮彤
胡刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN202110697410.6A priority Critical patent/CN113449076B/zh
Publication of CN113449076A publication Critical patent/CN113449076A/zh
Application granted granted Critical
Publication of CN113449076B publication Critical patent/CN113449076B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于全局信息和局部信息的代码搜索嵌入方法及装置。本发明中设计了一个共享的线性层和卷积层接在ON‑LSTM后面,利用共享的网络参数,能够将“双塔”ON‑LSTM模型输出后的顺序信息融合增强,加强对全局信息的利用;巧妙地应用ON‑LSTM的结构特性,选择其中的结构信息并使用CNN增强,通过曼哈顿距离的计算,加强对局部信息的利用;通过将各个模块输出的交互向量、结构向量、全局信息向量拼接成特征向量,再计算相似度,平衡全局信息和局部信息。

Description

基于全局信息和局部信息的代码搜索嵌入方法及装置
技术领域
本发明涉及数据搜索技术领域,尤其涉及一种基于全局信息和局部信息的代码搜索嵌入方法及装置。
背景技术
信息化时代,软件开发的需求增加,开发人员对技术的讨论需求强烈。有研究显示,超过60%的开发者每天搜索源代码。网络问答社区可以通过输入描述搜索代码,较开源项目,能够让研发人员更方便快速地找到符合要求的代码,能够就程序中遇到的具体问题得到解决方案,提升软件开发的效率。因此,自然语言查询与目标代码之间的匹配,即代码搜索,得到了越来越多研究人员的关注。
由于代码段和自然语言的语义差异、代码语言的复杂多样、问答社区的问答质量参差不齐以及一个问题对应多个答案等问题,代码搜索在技术上仍存在极大的探索空间。
早期方法借助于查询和源代码中固有的术语进行匹配,因此,无法灵活地处理不相关的关键词,模型迁移能力不强。然而,随着神经网络在各个领域的大放异彩,也受机器翻译的启发,近期有不少工作,通过引入深度神经网络,如卷积网络、循环神经网络等,自动地抽取自然语言查询和源代码的语义特征,试图解决自然语言和代码的语义差异。
UNIF方法使用注意力机制嵌入的代码片段。CODE-NN方法使用长短期记忆网络及注意力机制生成自然语言。Deepsim方法挖掘代码功能相似性的信息。HECS使用改进的长短期记忆网络提取层次结构信息。这些方法取得了不错的效果,但是仍有改进空间。
本申请发明人发现现有技术的方法,至少存在如下技术问题:
HECS按照顺序依次抽取代码段和查询的结构信息,并使用交互注意力机制,强调了交互信息,但未能将模型不同阶段的信息即局部信息和全局信息充分利用,只考虑到了最终阶段的信息。
发明内容
为解决上述技术问题,本发明提供一种基于全局信息和局部信息的代码搜索嵌入方法及装置。
第一方面,本发明提供一种基于全局信息和局部信息的代码搜索嵌入方法,所述基于全局信息和局部信息的代码搜索嵌入方法包括:
构建局部信息抽取模块,用于得到代码和查询的顺序信息向量、结构向量以及交互向量;
构建全局信息抽取模块,用于根据代码和查询的顺序信息向量得到代码和查询的全局信息向量;
分别将代码和查询的结构向量、交互向量以及全局信息向量拼接,得到代码和查询的特征向量;
构建相似度匹配模块,设置训练网络的综合损失函数,其中,所述相似度匹配模块,包括计算查询和代码的特征向量的余弦相似度的第一计算模块,以及计算查询和代码的第二结构向量的曼哈顿距离的第二计算模块,所述综合损失函数包括合页损失函数、有权重的曼哈顿距离以及正则损失;
对代码-描述匹配对语料进行结构化分词以及预处理,得到结构化词嵌入;
将结构化词嵌入先加载至局部信息抽取模块,再加载至全局信息抽取模块,设置初始化参数并利用训练集来训练拟合模型的参数,在验证集上迭代一定次数直到综合损失函数收敛,得到训练好的模型;
利用训练好的模型对待处理的查询进行预测,获得与待处理的查询对应的代码搜索结果。
可选的,所述对代码-描述匹配对语料进行结构化分词以及预处理,得到结构化词嵌入的步骤包括:
对代码-描述匹配对语料进行解析,实现结构化分词;
依次对结构化分词得到的文本进行预处理,预处理包括去冗余、去除长度过小的样例、不完全的代码段;
构造多个三元组样本对<Q,C+,C->作为训练实例,三元组样本对由一个查询Q以及对应的正代码C+和负代码C-组成,C+表示Q对应的正确的代码,C-表示Q对应的不正确的代码;
按照预设比例对多个三元组样本对进行划分,得到训练集、验证集以及测试集;
采用已有的预训练模型对训练集中的三元组样本进行词嵌入训练,得到结构化词嵌入。
可选的,所述构建局部信息抽取模块,用于得到代码和查询的顺序信息向量、结构向量以及交互向量的步骤包括:
构建顺序信息抽取子模块:
使用ON-LSTM作为顺序信息抽取子模块,顺序地将由词嵌入构成的代码和查询,输入到ON-LSTM网络中,得到最终的隐藏状态:
Figure BDA0003129065400000031
Figure BDA0003129065400000032
其中,ct是代码的词嵌入向量,qt是查询的词嵌入向量,
Figure BDA0003129065400000033
是输入代码段后ON-LSTM的最终隐藏状态,
Figure BDA0003129065400000034
是输入查询后ON-LSTM的最终隐藏状态;
构建结构信息抽取子模块:
ON-LSTM能够在训练完成后,可以直接抽取出序列的结构信息,而不依赖于句子结构,抽取方法是将ON-LSTM结构中对于序列的结构信息有记忆的中间状态累加:
Figure BDA0003129065400000035
其中,
Figure BDA0003129065400000036
是ON-LSTM中主遗忘门未经cumsum处理前的状态,seqlen是固定的序列长度,经过等式变换后,得到通过计算结构信息的等式,经由ON-LSTM输出的向量有两类,一类是顺序信息向量
Figure BDA0003129065400000037
另一类是经过矩阵乘法操作后扩充为和顺序信息向量相同维度的初始结构向量
Figure BDA0003129065400000038
Figure BDA0003129065400000039
Figure BDA00031290654000000310
为了增强结构信息,分别使用卷积层对查询和代码段的初始结构向量进行信息增强处理,得到卷积层对查询和代码段的结构向量:
Figure BDA00031290654000000311
Figure BDA00031290654000000312
构建交互信息抽取子模块;
将查询的顺序信息向量和代码的顺序信息向量,通过交互注意力子模块,强调代码和查询两者最相关的部分,使用注意力机制为QC的交互表示构造注意矩阵M,包含了查询Q和代码C之间的交互信息,注意矩阵如下:
Figure BDA0003129065400000041
其中,Wq∈R2u×a,Wc∈R2u×a,V∈Ra是注意力参数,a是注意力维度;
使用池化操作,分别从代码方向和查询方向推导出基于池的投影向量,使用按行和按列值在M上的最大池得到mQ、mC,计算权重向量δQ∈R|Q|和δC∈R|C|如下所示:
δQ=softmax(mQ);δC=softmax(mC);
通过权重向量δQ∈R|Q|和δC∈R|C|以及
Figure BDA0003129065400000042
Figure BDA0003129065400000043
的计算得到交互向量:
VQ=δQhQ;VC=δChC
可选的,所述构建全局信息抽取模块,用于根据代码和查询的顺序信息向量得到代码和查询的全局信息向量的步骤包括:
构建全局信息抽取模块,通过共享的线性层和卷积层,对代码和查询的顺序信息向量进行计算得到代码和查询的全局信息向量。
可选的,第一计算模块为:
Figure BDA0003129065400000044
合页损失函数为:
约束模型对正确的查询代码对给分高,对错误的查询代码对给分低:
f(Q,C+)>f(Q,C-),
Figure BDA0003129065400000045
C+,C-
当在一组三元组训练时,分别预测<Q,C+>和<Q,C->样本对的余弦相似度,并减少损失函数的值:
Figure BDA0003129065400000046
其中,θ表示模型参数,ε>0是边距超参数,λ∈[0,1]是正则化参数,VQ
Figure BDA0003129065400000047
Figure BDA0003129065400000048
分别是Q,C+和C-的交互式表示形式;
第二计算模块为:
Figure BDA0003129065400000049
其中,dcQ为查询的结构向量,
Figure BDA0003129065400000051
为正确代码段的结构向量,
Figure BDA0003129065400000052
为错误代码段的结构向量;
综合损失函数为:
γ=l(θ)+man*ε
其中,ε为代码和查询的结构向量的曼哈顿距离在损失函数中所占的权重。
第二方面,本发明还提供一种基于全局信息和局部信息的代码搜索嵌入装置,所述基于全局信息和局部信息的代码搜索嵌入装置包括:
第一构建模块,用于构建局部信息抽取模块,局部信息抽取模块用于得到代码和查询的顺序信息向量、结构向量以及交互向量;
第二构建模块,用于构建全局信息抽取模块,全局信息抽取模块用于根据代码和查询的顺序信息向量得到代码和查询的全局信息向量;
拼接模块,用于分别将代码和查询的结构向量、交互向量以及全局信息向量拼接,得到代码和查询的特征向量;
第三构建模块,用于构建相似度匹配模块,设置训练网络的综合损失函数,其中,所述相似度匹配模块,包括计算查询和代码的特征向量的余弦相似度的第一计算模块,以及计算查询和代码的第二结构向量的曼哈顿距离的第二计算模块,所述综合损失函数包括合页损失函数、有权重的曼哈顿距离以及正则损失;
处理模块,用于对代码-描述匹配对语料进行结构化分词以及预处理,得到结构化词嵌入;
训练模块,用于将结构化词嵌入先加载至局部信息抽取模块,再加载至全局信息抽取模块,设置初始化参数并利用训练集来训练拟合模型的参数,在验证集上迭代一定次数直到综合损失函数收敛,得到训练好的模型;
预测模块,用于利用训练好的模型对待处理的查询进行预测,获得与待处理的查询对应的代码搜索结果。
可选的,所述处理模块,用于:
对代码-描述匹配对语料进行解析,实现结构化分词;
依次对结构化分词得到的文本进行预处理,预处理包括去冗余、去除长度过小的样例、不完全的代码段;
构造多个三元组样本对<Q,C+,C->作为训练实例,三元组样本对由一个查询Q以及对应的正代码C+和负代码C-组成,C+表示Q对应的正确的代码,C-表示Q对应的不正确的代码;
按照预设比例对多个三元组样本对进行划分,得到训练集、验证集以及测试集;
采用已有的预训练模型对训练集中的三元组样本进行词嵌入训练,得到结构化词嵌入。
可选的,所述第一构建模块,用于:
构建顺序信息抽取子模块:
使用ON-LSTM作为顺序信息抽取子模块,顺序地将由词嵌入构成的代码和查询,输入到ON-LSTM网络中,得到最终的隐藏状态:
Figure BDA0003129065400000061
Figure BDA0003129065400000062
其中,ct是代码的词嵌入向量,qt是查询的词嵌入向量,
Figure BDA0003129065400000063
是输入代码段后ON-LSTM的最终隐藏状态,
Figure BDA0003129065400000064
是输入查询后ON-LSTM的最终隐藏状态;
构建结构信息抽取子模块:
ON-LSTM能够在训练完成后,可以直接抽取出序列的结构信息,而不依赖于句子结构,抽取方法是将ON-LSTM结构中对于序列的结构信息有记忆的中间状态累加:
Figure BDA0003129065400000065
其中,
Figure BDA0003129065400000066
是ON-LSTM中主遗忘门未经cumsum处理前的状态,seqlen是固定的序列长度,经过等式变换后,得到通过计算结构信息的等式,经由ON-LSTM输出的向量有两类,一类是顺序信息向量
Figure BDA0003129065400000067
另一类是经过矩阵乘法操作后扩充为和顺序信息向量相同维度的初始结构向量
Figure BDA0003129065400000068
Figure BDA0003129065400000069
Figure BDA00031290654000000610
为了增强结构信息,分别使用卷积层对查询和代码段的初始结构向量进行信息增强处理,得到卷积层对查询和代码段的结构向量:
Figure BDA0003129065400000071
Figure BDA0003129065400000072
构建交互信息抽取子模块;
将查询的顺序信息向量和代码的顺序信息向量,通过交互注意力子模块,强调代码和查询两者最相关的部分,使用注意力机制为QC的交互表示构造注意矩阵M,包含了查询Q和代码C之间的交互信息,注意矩阵如下:
Figure BDA0003129065400000073
其中,Wq∈R2u×a,Wc∈R2u×a,V∈Ra是注意力参数,a是注意力维度;
使用池化操作,分别从代码方向和查询方向推导出基于池的投影向量,使用按行和按列值在M上的最大池得到mQ、mC,计算权重向量δQ∈R|Q|和δC∈R|C|如下所示:
δQ=softmax(mQ);δC=softmax(mC);
通过权重向量δQ∈R|Q|和δC∈R|C|以及
Figure BDA0003129065400000074
Figure BDA0003129065400000075
的计算得到交互向量:
VQ=δQhQ;VC=δChC
可选的,所述第二构建模块,用于:
构建全局信息抽取模块,通过共享的线性层和卷积层,对代码和查询的顺序信息向量进行计算得到代码和查询的全局信息向量。
可选的,所述第一计算模块为:
Figure BDA0003129065400000076
合页损失函数为:
约束模型对正确的查询代码对给分高,对错误的查询代码对给分低:
f(Q,C+)>f(Q,C-),
Figure BDA0003129065400000077
C+,C-
当在一组三元组训练时,分别预测<Q,C+>和<Q,C->样本对的余弦相似度,并减少损失函数的值:
Figure BDA0003129065400000078
其中,θ表示模型参数,ε>0是边距超参数,λ∈[0,1]是正则化参数,VQ
Figure BDA0003129065400000079
Figure BDA00031290654000000710
分别是Q,C+和C-的交互式表示形式;
第二计算模块为:
Figure BDA0003129065400000081
其中,dcQ为查询的结构向量,
Figure BDA0003129065400000082
为正确代码段的结构向量,
Figure BDA0003129065400000083
为错误代码段的结构向量;
综合损失函数为:
γ=l(θ)+man*ε
其中,ε为代码和查询的结构向量的曼哈顿距离在损失函数中所占的权重。
本发明中,设计了一个共享的线性层和卷积层接在ON-LSTM后面,利用共享的网络参数,能够将“双塔”ON-LSTM模型输出后的顺序信息融合增强,加强对全局信息的利用;巧妙地应用ON-LSTM的结构特性,选择其中的结构信息并使用CNN增强,通过曼哈顿距离的计算,加强对局部信息的利用;通过将各个模块输出的交互向量、结构向量、全局信息向量拼接成特征向量,再计算相似度,平衡全局信息和局部信息。
附图说明
图1为本发明基于全局信息和局部信息的代码搜索嵌入方法一实施例的流程示意图;
图2为本发明基于全局信息和局部信息的代码搜索嵌入装置一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
第一方面,本发明实施例提供了一种基于全局信息和局部信息的代码搜索嵌入方法。
一实施例中,参照图1,图1为本发明基于全局信息和局部信息的代码搜索嵌入方法一实施例的流程示意图。如图1所示,
基于全局信息和局部信息的代码搜索嵌入方法包括:
步骤S10,构建局部信息抽取模块,用于得到代码和查询的顺序信息向量、结构向量以及交互向量;
本实施例中,局部信息抽取模块包括顺序信息抽取子模块、构建结构信息抽取子模块以及交互信息抽取子模块,通过这些子模块得到代码和查询的顺序信息向量、结构向量以及交互向量。
进一步地,一实施例中,步骤S10包括:
构建顺序信息抽取子模块:
使用ON-LSTM作为顺序信息抽取子模块,顺序地将由词嵌入构成的代码和查询,输入到ON-LSTM网络中,得到最终的隐藏状态:
Figure BDA0003129065400000091
Figure BDA0003129065400000092
其中,ct是代码的词嵌入向量,qt是查询的词嵌入向量,
Figure BDA0003129065400000093
是输入代码段后ON-LSTM的最终隐藏状态,
Figure BDA0003129065400000094
是输入查询后ON-LSTM的最终隐藏状态;
本实施例中,使用ON-LSTM作为顺序信息抽取子模块,ON-LSTM的改进之处主要在于:隐藏状态的更新公式不一样,使隐藏单元能够根据当前输入的结构信息和历史结构信息的比较结果决定更新区间以及更新公式:
Figure BDA0003129065400000095
其中,cumsum表示累加和。
根据cummax函数,ON-LSTM的主遗忘门
Figure BDA0003129065400000096
和主输入门
Figure BDA0003129065400000097
为:
Figure BDA0003129065400000098
Figure BDA0003129065400000099
隐藏状态的更新规则是根据层级信息来决定当前输入编码信息的保留与否,如下:
Figure BDA00031290654000000910
Figure BDA00031290654000000911
Figure BDA00031290654000000912
Figure BDA00031290654000000913
其中,式中的wt表示当前输入和历史记录的交集,在更新式ct
Figure BDA00031290654000000914
表示当前信息,
Figure BDA00031290654000000915
表示历史信息中保留的部分。
构建结构信息抽取子模块:
ON-LSTM能够在训练完成后,可以直接抽取出序列的结构信息,而不依赖于句子结构,抽取方法是将ON-LSTM结构中对于序列的结构信息有记忆的中间状态累加:
Figure BDA0003129065400000101
其中,
Figure BDA0003129065400000102
是ON-LSTM中主遗忘门未经cumsum处理前的状态,seqlen是固定的序列长度,经过等式变换后,得到通过计算结构信息的等式,经由ON-LSTM输出的向量有两类,一类是顺序信息向量
Figure BDA0003129065400000103
另一类是经过矩阵乘法操作后扩充为和顺序信息向量相同维度的初始结构向量
Figure BDA0003129065400000104
Figure BDA0003129065400000105
Figure BDA0003129065400000106
为了增强结构信息,分别使用卷积层对查询和代码段的初始结构向量进行信息增强处理,得到卷积层对查询和代码段的结构向量:
Figure BDA0003129065400000107
Figure BDA0003129065400000108
构建交互信息抽取子模块;
将查询的顺序信息向量和代码的顺序信息向量,通过交互注意力子模块,强调代码和查询两者最相关的部分,使用注意力机制为QC的交互表示构造注意矩阵M,包含了查询Q和代码C之间的交互信息,注意矩阵如下:
Figure BDA0003129065400000109
其中,Wq∈R2u×a,Wc∈R2u×a,V∈Ra是注意力参数,a是注意力维度;
使用池化操作,分别从代码方向和查询方向推导出基于池的投影向量,使用按行和按列值在M上的最大池得到mQ、mC,计算权重向量δQ∈R|Q|和δC∈R|C|如下所示:
δQ=softmax(mQ);δC=softmax(mC);
通过权重向量δQ∈R|Q|和δC∈R|C|以及
Figure BDA00031290654000001010
Figure BDA00031290654000001011
的计算得到交互向量:
VQ=δQhQ;VC=δChC
步骤S20,构建全局信息抽取模块,用于根据代码和查询的顺序信息向量得到代码和查询的全局信息向量;
本实施例中,步骤S20包括:
构建全局信息抽取模块,通过共享的线性层和卷积层,对代码和查询的顺序信息向量进行计算得到代码和查询的全局信息向量。
本实施例中,构建全局信息抽取模块,通过共享的线性层和卷积层,对顺序信息向量计算全局的信息,注重通过网络的共享共同学习查询代码对的全局信息和,以查询为例:
gQ=CNN(dense(hQ))
其中,hQ为未经注意力模块处理的查询顺序信息向量。
步骤S30,分别将代码和查询的结构向量、交互向量以及全局信息向量拼接,得到代码和查询的特征向量;
本实施例中,分别将代码和查询的交互向量、结构向量、全局信息向量进行拼接,得到特征向量。以查询为例:
Q=[VQ;dcQ;gQ]
其中,VQ为查询的交互向量,dcQ为查询的结构向量;gQ为查询的全局信息向量。
步骤S40,构建相似度匹配模块,设置训练网络的综合损失函数,其中,所述相似度匹配模块,包括计算查询和代码的特征向量的余弦相似度的第一计算模块,以及计算查询和代码的第二结构向量的曼哈顿距离的第二计算模块,所述综合损失函数包括合页损失函数、有权重的曼哈顿距离以及正则损失;
本实施例中,第一计算模块为:
Figure BDA0003129065400000111
合页损失函数为:
约束模型对正确的查询代码对给分高,对错误的查询代码对给分低:
f(Q,C+)>f(Q,C-),
Figure BDA0003129065400000112
C+,C-
当在一组三元组训练时,分别预测<Q,C+>和<Q,C->样本对的余弦相似度,并减少损失函数的值:
Figure BDA0003129065400000113
其中,θ表示模型参数,ε>0是边距超参数,λ∈[0,1]是正则化参数,VQ
Figure BDA0003129065400000121
Figure BDA0003129065400000122
分别是Q,C+和C-的交互式表示形式;
第二计算模块为:
Figure BDA0003129065400000123
其中,dcQ为查询的结构向量,
Figure BDA0003129065400000124
为正确代码段的结构向量,
Figure BDA0003129065400000125
为错误代码段的结构向量;
综合损失函数为:
γ=l(θ)+man*ε
其中,ε为代码和查询的结构向量的曼哈顿距离在损失函数中所占的权重。
步骤S50,对代码-描述匹配对语料进行结构化分词以及预处理,得到结构化词嵌入;
本实施例中,步骤S50包括:
对代码-描述匹配对语料进行解析,实现结构化分词;依次对结构化分词得到的文本进行预处理,预处理包括去冗余、去除长度过小的样例、不完全的代码段;构造多个三元组样本对<Q,C+,C->作为训练实例,三元组样本对由一个查询Q以及对应的正代码C+和负代码C-组成,C+表示Q对应的正确的代码,C-表示Q对应的不正确的代码;按照预设比例对多个三元组样本对进行划分,得到训练集、验证集以及测试集;采用已有的预训练模型对训练集中的三元组样本进行词嵌入训练,得到结构化词嵌入。
本实施例中,可以从StackOverflow上的帖子中构建原始数据集,其中包括两种程序语言(Python和C#)中的帖子,筛选后得到代码-描述匹配对语料;然后对代码-描述匹配对语料进行解析,实现结构化分词;依次对结构化分词得到的文本进行预处理,预处理包括去冗余、去除长度过小的样例、不完全的代码段;构造多个三元组样本对<Q,C+,C->作为训练实例,三元组样本对由一个查询Q以及对应的正代码C+和负代码C-组成,C+表示Q对应的正确的代码,C-表示Q对应的不正确的代码;按照预设比例对多个三元组样本对进行划分,得到训练集、验证集以及测试集;采用已有的预训练模型对训练集中的三元组样本进行词嵌入训练,得到结构化词嵌入。
步骤S60,将结构化词嵌入先加载至局部信息抽取模块,再加载至全局信息抽取模块,设置初始化参数并利用训练集来训练拟合模型的参数,在验证集上迭代一定次数直到综合损失函数收敛,得到训练好的模型;
本实施例中,将基于步骤S50得到的结构化词嵌入先加载至局部信息抽取模块,再加载至全局信息抽取模块,设置初始化参数并利用训练集来训练拟合模型的参数,在验证集上迭代一定次数直到综合损失函数收敛,得到训练好的模型。在这之后,还可以保存训练得到的最好模型,在测试集上验证性能。
步骤S70,利用训练好的模型对待处理的查询进行预测,获得与待处理的查询对应的代码搜索结果。
本实施例中,将待处理的查询输入训练好的模型,即可通过训练好的模型对待处理的查询进行预测,获得与待处理的查询对应的代码搜索结果。
本实施例中,设计了一个共享的线性层和卷积层接在ON-LSTM后面,利用共享的网络参数,能够将“双塔”ON-LSTM模型输出后的顺序信息融合增强,加强对全局信息的利用;巧妙地应用ON-LSTM的结构特性,选择其中的结构信息并使用CNN增强,通过曼哈顿距离的计算,加强对局部信息的利用;通过将各个模块输出的交互向量、结构向量、全局信息向量拼接成特征向量,再计算相似度,平衡全局信息和局部信息。
第二方面,本发明实施例还提供一种基于全局信息和局部信息的代码搜索嵌入装置。
一实施例中,参照图2,图2为本发明基于全局信息和局部信息的代码搜索嵌入装置一实施例的功能模块示意图。如图2所示,基于全局信息和局部信息的代码搜索嵌入装置包括:
第一构建模块10,用于构建局部信息抽取模块,局部信息抽取模块用于得到代码和查询的顺序信息向量、结构向量以及交互向量;
第二构建模块20,用于构建全局信息抽取模块,全局信息抽取模块用于根据代码和查询的顺序信息向量得到代码和查询的全局信息向量;
拼接模块30,用于分别将代码和查询的结构向量、交互向量以及全局信息向量拼接,得到代码和查询的特征向量;
第三构建模块40,用于构建相似度匹配模块,设置训练网络的综合损失函数,其中,所述相似度匹配模块,包括计算查询和代码的特征向量的余弦相似度的第一计算模块,以及计算查询和代码的第二结构向量的曼哈顿距离的第二计算模块,所述综合损失函数包括合页损失函数、有权重的曼哈顿距离以及正则损失;
处理模块50,用于对代码-描述匹配对语料进行结构化分词以及预处理,得到结构化词嵌入;
训练模块60,用于将结构化词嵌入先加载至局部信息抽取模块,再加载至全局信息抽取模块,设置初始化参数并利用训练集来训练拟合模型的参数,在验证集上迭代一定次数直到综合损失函数收敛,得到训练好的模型;
预测模块70,用于利用训练好的模型对待处理的查询进行预测,获得与待处理的查询对应的代码搜索结果。
进一步地,一实施例中,所述处理模块50,用于:
对代码-描述匹配对语料进行解析,实现结构化分词;
依次对结构化分词得到的文本进行预处理,预处理包括去冗余、去除长度过小的样例、不完全的代码段;
构造多个三元组样本对<Q,C+,C->作为训练实例,三元组样本对由一个查询Q以及对应的正代码C+和负代码C-组成,C+表示Q对应的正确的代码,C-表示Q对应的不正确的代码;
按照预设比例对多个三元组样本对进行划分,得到训练集、验证集以及测试集;
采用已有的预训练模型对训练集中的三元组样本进行词嵌入训练,得到结构化词嵌入。
进一步地,一实施例中,所述第一构建模块10,用于:
构建顺序信息抽取子模块:
使用ON-LSTM作为顺序信息抽取子模块,顺序地将由词嵌入构成的代码和查询,输入到ON-LSTM网络中,得到最终的隐藏状态:
Figure BDA0003129065400000141
Figure BDA0003129065400000142
其中,ct是代码的词嵌入向量,qt是查询的词嵌入向量,
Figure BDA0003129065400000143
是输入代码段后ON-LSTM的最终隐藏状态,
Figure BDA0003129065400000144
是输入查询后ON-LSTM的最终隐藏状态;
构建结构信息抽取子模块:
ON-LSTM能够在训练完成后,可以直接抽取出序列的结构信息,而不依赖于句子结构,抽取方法是将ON-LSTM结构中对于序列的结构信息有记忆的中间状态累加:
Figure BDA0003129065400000151
其中,
Figure BDA0003129065400000152
是ON-LSTM中主遗忘门未经cumsum处理前的状态,seqlen是固定的序列长度,经过等式变换后,得到通过计算结构信息的等式,经由ON-LSTM输出的向量有两类,一类是顺序信息向量
Figure BDA0003129065400000153
另一类是经过矩阵乘法操作后扩充为和顺序信息向量相同维度的初始结构向量
Figure BDA0003129065400000154
Figure BDA0003129065400000155
Figure BDA0003129065400000156
为了增强结构信息,分别使用卷积层对查询和代码段的初始结构向量进行信息增强处理,得到卷积层对查询和代码段的结构向量:
Figure BDA0003129065400000157
Figure BDA0003129065400000158
构建交互信息抽取子模块;
将查询的顺序信息向量和代码的顺序信息向量,通过交互注意力子模块,强调代码和查询两者最相关的部分,使用注意力机制为QC的交互表示构造注意矩阵M,包含了查询Q和代码C之间的交互信息,注意矩阵如下:
Figure BDA0003129065400000159
其中,Wq∈R2u×a,Wc∈R2u×a,V∈Ra是注意力参数,a是注意力维度;
使用池化操作,分别从代码方向和查询方向推导出基于池的投影向量,使用按行和按列值在M上的最大池得到mQ、mC,计算权重向量δQ∈R|Q|和δC∈R|C|如下所示:
δQ=softmax(mQ);δC=softmax(mC);
通过权重向量δQ∈R|Q|和δC∈R|C|以及
Figure BDA00031290654000001510
Figure BDA00031290654000001511
的计算得到交互向量:
VQ=δQhQ;VC=δChC
进一步地,一实施例中,所述第二构建模块20,用于:
构建全局信息抽取模块,通过共享的线性层和卷积层,对代码和查询的顺序信息向量进行计算得到代码和查询的全局信息向量。
进一步地,一实施例中,所述第一计算模块为:
Figure BDA0003129065400000161
合页损失函数为:
约束模型对正确的查询代码对给分高,对错误的查询代码对给分低:
f(Q,C+)>f(Q,C-),
Figure BDA0003129065400000162
C+,C-
当在一组三元组训练时,分别预测<Q,C+>和<Q,C->样本对的余弦相似度,并减少损失函数的值:
Figure BDA0003129065400000163
其中,θ表示模型参数,ε>0是边距超参数,λ∈[0,1]是正则化参数,VQ
Figure BDA0003129065400000164
Figure BDA0003129065400000165
分别是Q,C+和C-的交互式表示形式;
第二计算模块为:
Figure BDA0003129065400000166
其中,dcQ为查询的结构向量,
Figure BDA0003129065400000167
为正确代码段的结构向量,
Figure BDA0003129065400000168
为错误代码段的结构向量;
综合损失函数为:
γ=l(θ)+man*ε
其中,ε为代码和查询的结构向量的曼哈顿距离在损失函数中所占的权重。
其中,上述基于全局信息和局部信息的代码搜索嵌入装置中各个模块的功能实现与上述基于全局信息和局部信息的代码搜索嵌入方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于全局信息和局部信息的代码搜索嵌入方法,其特征在于,所述基于全局信息和局部信息的代码搜索嵌入方法包括:
构建局部信息抽取模块,用于得到代码和查询的顺序信息向量、结构向量以及交互向量;
构建全局信息抽取模块,用于根据代码和查询的顺序信息向量得到代码和查询的全局信息向量;
分别将代码和查询的结构向量、交互向量以及全局信息向量拼接,得到代码和查询的特征向量;
构建相似度匹配模块,设置训练网络的综合损失函数,其中,所述相似度匹配模块,包括计算查询和代码的特征向量的余弦相似度的第一计算模块,以及计算查询和代码的第二结构向量的曼哈顿距离的第二计算模块,所述综合损失函数包括合页损失函数、有权重的曼哈顿距离以及正则损失;
对代码-描述匹配对语料进行结构化分词以及预处理,得到结构化词嵌入;
将结构化词嵌入先加载至局部信息抽取模块,再加载至全局信息抽取模块,设置初始化参数并利用训练集来训练拟合模型的参数,在验证集上迭代一定次数直到综合损失函数收敛,得到训练好的模型;
利用训练好的模型对待处理的查询进行预测,获得与待处理的查询对应的代码搜索结果。
2.如权利要求1所述的基于全局信息和局部信息的代码搜索嵌入方法,其特征在于,所述对代码-描述匹配对语料进行结构化分词以及预处理,得到结构化词嵌入的步骤包括:
对代码-描述匹配对语料进行解析,实现结构化分词;
依次对结构化分词得到的文本进行预处理,预处理包括去冗余、去除长度过小的样例、不完全的代码段;
构造多个三元组样本对<Q,C+,C->作为训练实例,三元组样本对由一个查询Q以及对应的正代码C+和负代码C-组成,C+表示Q对应的正确的代码,C-表示Q对应的不正确的代码;
按照预设比例对多个三元组样本对进行划分,得到训练集、验证集以及测试集;
采用已有的预训练模型对训练集中的三元组样本进行词嵌入训练,得到结构化词嵌入。
3.如权利要求1所述的基于全局信息和局部信息的代码搜索嵌入方法,其特征在于,所述构建局部信息抽取模块,用于得到代码和查询的顺序信息向量、结构向量以及交互向量的步骤包括:
构建顺序信息抽取子模块:
使用ON-LSTM作为顺序信息抽取子模块,顺序地将由词嵌入构成的代码和查询,输入到ON-LSTM网络中,得到最终的隐藏状态:
Figure FDA0003129065390000021
Figure FDA0003129065390000022
其中,ct是代码的词嵌入向量,qt是查询的词嵌入向量,
Figure FDA0003129065390000023
是输入代码段后ON-LSTM的最终隐藏状态,
Figure FDA0003129065390000024
是输入查询后ON-LSTM的最终隐藏状态;
构建结构信息抽取子模块:
ON-LSTM能够在训练完成后,可以直接抽取出序列的结构信息,而不依赖于句子结构,抽取方法是将ON-LSTM结构中对于序列的结构信息有记忆的中间状态累加:
Figure FDA0003129065390000025
其中,
Figure FDA0003129065390000026
是ON-LSTM中主遗忘门未经cumsum处理前的状态,seqlen是固定的序列长度,经过等式变换后,得到通过计算结构信息的等式,经由ON-LSTM输出的向量有两类,一类是顺序信息向量
Figure FDA0003129065390000027
另一类是经过矩阵乘法操作后扩充为和顺序信息向量相同维度的初始结构向量
Figure FDA0003129065390000028
Figure FDA0003129065390000029
Figure FDA00031290653900000210
为了增强结构信息,分别使用卷积层对查询和代码段的初始结构向量进行信息增强处理,得到卷积层对查询和代码段的结构向量:
Figure FDA0003129065390000031
Figure FDA0003129065390000032
构建交互信息抽取子模块;
将查询的顺序信息向量和代码的顺序信息向量,通过交互注意力子模块,强调代码和查询两者最相关的部分,使用注意力机制为QC的交互表示构造注意矩阵M,包含了查询Q和代码C之间的交互信息,注意矩阵如下:
Figure FDA0003129065390000033
其中,Wq∈R2u×a,Wc∈R2u×a,V∈Ra是注意力参数,a是注意力维度;
使用池化操作,分别从代码方向和查询方向推导出基于池的投影向量,使用按行和按列值在M上的最大池得到mQ、mC,计算权重向量δQ∈R|Q|和δC∈R|C|如下所示:
δQ=soft max(mQ);δC=soft max(mC);
通过权重向量δQ∈R|Q|和δC∈R|C|以及
Figure FDA0003129065390000034
Figure FDA0003129065390000035
的计算得到交互向量:
VQ=δQhQ;VC=δChC
4.如权利要求3所述的基于全局信息和局部信息的代码搜索嵌入方法,其特征在于,所述构建全局信息抽取模块,用于根据代码和查询的顺序信息向量得到代码和查询的全局信息向量的步骤包括:
构建全局信息抽取模块,通过共享的线性层和卷积层,对代码和查询的顺序信息向量进行计算得到代码和查询的全局信息向量。
5.如权利要求2所述的基于全局信息和局部信息的代码搜索嵌入方法,其特征在于,第一计算模块为:
Figure FDA0003129065390000036
合页损失函数为:
约束模型对正确的查询代码对给分高,对错误的查询代码对给分低:
Figure FDA0003129065390000037
当在一组三元组训练时,分别预测<Q,C+>和<Q,C->样本对的余弦相似度,并减少损失函数的值:
Figure FDA0003129065390000041
其中,θ表示模型参数,ε>0是边距超参数,λ∈[0,1]是正则化参数,VQ
Figure FDA0003129065390000042
Figure FDA0003129065390000043
分别是Q,C+和C-的交互式表示形式;
第二计算模块为:
Figure FDA0003129065390000044
其中,dcQ为查询的结构向量,
Figure FDA0003129065390000045
为正确代码段的结构向量,
Figure FDA0003129065390000046
为错误代码段的结构向量;
综合损失函数为:
γ=l(θ)+man*ε
其中,ε为代码和查询的结构向量的曼哈顿距离在损失函数中所占的权重。
6.一种基于全局信息和局部信息的代码搜索嵌入装置,其特征在于,所述基于全局信息和局部信息的代码搜索嵌入装置包括:
第一构建模块,用于构建局部信息抽取模块,局部信息抽取模块用于得到代码和查询的顺序信息向量、结构向量以及交互向量;
第二构建模块,用于构建全局信息抽取模块,全局信息抽取模块用于根据代码和查询的顺序信息向量得到代码和查询的全局信息向量;
拼接模块,用于分别将代码和查询的结构向量、交互向量以及全局信息向量拼接,得到代码和查询的特征向量;
第三构建模块,用于构建相似度匹配模块,设置训练网络的综合损失函数,其中,所述相似度匹配模块,包括计算查询和代码的特征向量的余弦相似度的第一计算模块,以及计算查询和代码的第二结构向量的曼哈顿距离的第二计算模块,所述综合损失函数包括合页损失函数、有权重的曼哈顿距离以及正则损失;
处理模块,用于对代码-描述匹配对语料进行结构化分词以及预处理,得到结构化词嵌入;
训练模块,用于将结构化词嵌入先加载至局部信息抽取模块,再加载至全局信息抽取模块,设置初始化参数并利用训练集来训练拟合模型的参数,在验证集上迭代一定次数直到综合损失函数收敛,得到训练好的模型;
预测模块,用于利用训练好的模型对待处理的查询进行预测,获得与待处理的查询对应的代码搜索结果。
7.如权利要求6所述的基于全局信息和局部信息的代码搜索嵌入装置,其特征在于,所述处理模块,用于:
对代码-描述匹配对语料进行解析,实现结构化分词;
依次对结构化分词得到的文本进行预处理,预处理包括去冗余、去除长度过小的样例、不完全的代码段;
构造多个三元组样本对<Q,C+,C->作为训练实例,三元组样本对由一个查询Q以及对应的正代码C+和负代码C-组成,C+表示Q对应的正确的代码,C-表示Q对应的不正确的代码;
按照预设比例对多个三元组样本对进行划分,得到训练集、验证集以及测试集;
采用已有的预训练模型对训练集中的三元组样本进行词嵌入训练,得到结构化词嵌入。
8.如权利要求6所述的基于全局信息和局部信息的代码搜索嵌入装置,其特征在于,所述第一构建模块,用于:
构建顺序信息抽取子模块:
使用ON-LSTM作为顺序信息抽取子模块,顺序地将由词嵌入构成的代码和查询,输入到ON-LSTM网络中,得到最终的隐藏状态:
Figure FDA0003129065390000051
Figure FDA0003129065390000052
其中,ct是代码的词嵌入向量,qt是查询的词嵌入向量,
Figure FDA0003129065390000053
是输入代码段后ON-LSTM的最终隐藏状态,
Figure FDA0003129065390000054
是输入查询后ON-LSTM的最终隐藏状态;
构建结构信息抽取子模块:
ON-LSTM能够在训练完成后,可以直接抽取出序列的结构信息,而不依赖于句子结构,抽取方法是将ON-LSTM结构中对于序列的结构信息有记忆的中间状态累加:
Figure FDA0003129065390000061
其中,
Figure FDA0003129065390000062
是ON-LSTM中主遗忘门未经cumsum处理前的状态,seqlen是固定的序列长度,经过等式变换后,得到通过计算结构信息的等式,经由ON-LSTM输出的向量有两类,一类是顺序信息向量
Figure FDA0003129065390000063
另一类是经过矩阵乘法操作后扩充为和顺序信息向量相同维度的初始结构向量
Figure FDA0003129065390000064
Figure FDA0003129065390000065
Figure FDA0003129065390000066
为了增强结构信息,分别使用卷积层对查询和代码段的初始结构向量进行信息增强处理,得到卷积层对查询和代码段的结构向量:
Figure FDA0003129065390000067
Figure FDA0003129065390000068
构建交互信息抽取子模块;
将查询的顺序信息向量和代码的顺序信息向量,通过交互注意力子模块,强调代码和查询两者最相关的部分,使用注意力机制为QC的交互表示构造注意矩阵M,包含了查询Q和代码C之间的交互信息,注意矩阵如下:
Figure FDA0003129065390000069
其中,Wq∈R2u×a,Wc∈R2u×a,V∈Ra是注意力参数,a是注意力维度;
使用池化操作,分别从代码方向和查询方向推导出基于池的投影向量,使用按行和按列值在M上的最大池得到mQ、mC,计算权重向量δQ∈R|Q|和δC∈R|C|如下所示:
δQ=soft max(mQ);δC=soft max(mC);
通过权重向量δQ∈R|Q|和δC∈R|C|以及
Figure FDA00031290653900000610
Figure FDA00031290653900000611
的计算得到交互向量:
VQ=δQhQ;VC=δChC
9.如权利要求8所述的基于全局信息和局部信息的代码搜索嵌入装置,其特征在于,所述第二构建模块,用于:
构建全局信息抽取模块,通过共享的线性层和卷积层,对代码和查询的顺序信息向量进行计算得到代码和查询的全局信息向量。
10.如权利要求7所述的基于全局信息和局部信息的代码搜索嵌入装置,其特征在于,所述第一计算模块为:
Figure FDA0003129065390000071
合页损失函数为:
约束模型对正确的查询代码对给分高,对错误的查询代码对给分低:
Figure FDA0003129065390000072
当在一组三元组训练时,分别预测<Q,C+>和<Q,C->样本对的余弦相似度,并减少损失函数的值:
Figure FDA0003129065390000073
其中,θ表示模型参数,ε>0是边距超参数,λ∈[0,1]是正则化参数,VQ
Figure FDA0003129065390000077
Figure FDA0003129065390000078
分别是Q,C+和C-的交互式表示形式;
第二计算模块为:
Figure FDA0003129065390000074
其中,dcQ为查询的结构向量,
Figure FDA0003129065390000075
为正确代码段的结构向量,
Figure FDA0003129065390000076
为错误代码段的结构向量;
综合损失函数为:
γ=l(θ)+man*ε
其中,ε为代码和查询的结构向量的曼哈顿距离在损失函数中所占的权重。
CN202110697410.6A 2021-06-23 2021-06-23 基于全局信息和局部信息的代码搜索嵌入方法及装置 Expired - Fee Related CN113449076B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110697410.6A CN113449076B (zh) 2021-06-23 2021-06-23 基于全局信息和局部信息的代码搜索嵌入方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110697410.6A CN113449076B (zh) 2021-06-23 2021-06-23 基于全局信息和局部信息的代码搜索嵌入方法及装置

Publications (2)

Publication Number Publication Date
CN113449076A true CN113449076A (zh) 2021-09-28
CN113449076B CN113449076B (zh) 2022-08-30

Family

ID=77812229

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110697410.6A Expired - Fee Related CN113449076B (zh) 2021-06-23 2021-06-23 基于全局信息和局部信息的代码搜索嵌入方法及装置

Country Status (1)

Country Link
CN (1) CN113449076B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114186017A (zh) * 2021-11-02 2022-03-15 武汉大学 基于多维度匹配的代码搜索方法
CN115878094A (zh) * 2023-01-06 2023-03-31 粤港澳大湾区数字经济研究院(福田) 代码搜索方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107577603A (zh) * 2017-08-31 2018-01-12 中国科学院软件研究所 一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法
US20180373507A1 (en) * 2016-02-03 2018-12-27 Cocycles System for generating functionality representation, indexing, searching, componentizing, and analyzing of source code in codebases and method thereof
CN111159223A (zh) * 2019-12-31 2020-05-15 武汉大学 一种基于结构化嵌入的交互式代码搜索方法及装置
CN111191002A (zh) * 2019-12-26 2020-05-22 武汉大学 一种基于分层嵌入的神经代码搜索方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180373507A1 (en) * 2016-02-03 2018-12-27 Cocycles System for generating functionality representation, indexing, searching, componentizing, and analyzing of source code in codebases and method thereof
CN107577603A (zh) * 2017-08-31 2018-01-12 中国科学院软件研究所 一种基于测试用例构建决策树的程序条件语句自动化修复系统及方法
CN111191002A (zh) * 2019-12-26 2020-05-22 武汉大学 一种基于分层嵌入的神经代码搜索方法及装置
CN111159223A (zh) * 2019-12-31 2020-05-15 武汉大学 一种基于结构化嵌入的交互式代码搜索方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
胡刚: "《软件问答社区的代码查询匹配方法研究》", 《中国优秀博士学位论文》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114186017A (zh) * 2021-11-02 2022-03-15 武汉大学 基于多维度匹配的代码搜索方法
CN114186017B (zh) * 2021-11-02 2024-02-27 武汉大学 基于多维度匹配的代码搜索方法
CN115878094A (zh) * 2023-01-06 2023-03-31 粤港澳大湾区数字经济研究院(福田) 代码搜索方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113449076B (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
CN110222160B (zh) 智能语义文档推荐方法、装置及计算机可读存储介质
Etoori et al. Automatic spelling correction for resource-scarce languages using deep learning
AU2018214675B2 (en) Systems and methods for automatic semantic token tagging
WO2023024412A1 (zh) 基于深度学习模型的视觉问答方法及装置、介质、设备
CN111753060A (zh) 信息检索方法、装置、设备及计算机可读存储介质
CN111831789B (zh) 一种基于多层语义特征提取结构的问答文本匹配方法
CN109376222B (zh) 问答匹配度计算方法、问答自动匹配方法及装置
CN111783474A (zh) 一种评论文本观点信息处理方法、装置及存储介质
CN113449076B (zh) 基于全局信息和局部信息的代码搜索嵌入方法及装置
CN111191002A (zh) 一种基于分层嵌入的神经代码搜索方法及装置
CN112417097A (zh) 一种用于舆情解析的多模态数据特征提取与关联方法
CN116304066B (zh) 一种基于提示学习的异质信息网络节点分类方法
CN107305543B (zh) 对实体词的语义关系进行分类的方法和装置
CN113761868B (zh) 文本处理方法、装置、电子设备及可读存储介质
CN113094494B (zh) 电力操作票文本智能分类方法、装置、设备及介质
CN112084435A (zh) 搜索排序模型训练方法及装置、搜索排序方法及装置
CN114237621B (zh) 一种基于细粒度共注意机制的语义代码搜索方法
CN115203507A (zh) 一种面向文书领域的基于预训练模型的事件抽取方法
CN116578688A (zh) 基于多轮问答的文本处理方法、装置、设备及存储介质
CN115422369B (zh) 基于改进TextRank的知识图谱补全方法和装置
CN112988970A (zh) 一种服务于智能问答系统的文本匹配算法
CN116662565A (zh) 基于对比学习预训练的异质信息网络关键词生成方法
Luo et al. Improving neural language models by segmenting, attending, and predicting the future
Zulfiqar et al. Logical layout analysis using deep learning
CN117828024A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220830