CN111191002A - 一种基于分层嵌入的神经代码搜索方法及装置 - Google Patents

一种基于分层嵌入的神经代码搜索方法及装置 Download PDF

Info

Publication number
CN111191002A
CN111191002A CN201911364631.0A CN201911364631A CN111191002A CN 111191002 A CN111191002 A CN 111191002A CN 201911364631 A CN201911364631 A CN 201911364631A CN 111191002 A CN111191002 A CN 111191002A
Authority
CN
China
Prior art keywords
code
module
hecs
query
model
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
CN201911364631.0A
Other languages
English (en)
Other versions
CN111191002B (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 CN201911364631.0A priority Critical patent/CN111191002B/zh
Publication of CN111191002A publication Critical patent/CN111191002A/zh
Application granted granted Critical
Publication of CN111191002B publication Critical patent/CN111191002B/zh
Active 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
    • 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
    • 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/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明公开了一种基于分层嵌入的神经代码搜索方法,包括收集代码搜索数据集;对收集的代码搜索数据集进行预处理;对预处理后的语料数据进行结构化分词以及比例划分;构建依次包含内部信息编码模块、交互信息编码模块、相似度匹配模块的分层嵌入神经代码搜索模型HECS,并设置训练网络的合页损失函数;对HECS设置初始化参数,并利用训练集来训练拟合HECS模型的参数,直到在验证集上迭代预设次直到合页损失函数收敛,得到训练好的HECS模型;利用训练好的HECS模型对待处理的查询进行预测,获得与查询对应的代码搜索结果。本发明的方法可以更好地捕获查询与矢量空间中相应代码段之间的相似性,提高模型的搜索和预测性能。

Description

一种基于分层嵌入的神经代码搜索方法及装置
技术领域
本发明涉及软件工程的代码技术领域,具体涉及一种基于分层嵌入的神经代码搜索方法及装置。
背景技术
随着数据在各种开源存储库中的快速增长,其中功能相同的代码存在大量冗余,同时开发人员在缺乏良好的代码搜索方法的情况下需要耗费大量时间编写功能重复的代码。因此代码搜索变得越来越重要,并且在学术界和工业界受到了广泛关注。开发人员经常搜索如何完成特定编码任务的示例。代码搜索可提高项目开发人员的工作效率并减少重复工作。
之前的许多代码搜索方法大多以信息检索(IR)技术为基础。例如,有研究建议在开发环境中嵌入特定于任务的搜索引擎可以显著降低查找信息的成本,使程序员能够更轻松地编写更复杂的代码,另一个研究提出了一种基于机器学习的代码推荐方法(称为Refoqus),该方法通过查询和相关结果的样本进行训练,还有的提出Sourcerer,一种基于信息检索的代码搜索工具,将程序的文本内容与结构信息相结合。但是,最近的一些研究已经采用深度学习方法实现更高级的代码搜索,我们称之为神经代码搜索。有的研究提出了CODEnn,它将代码段和自然语言描述同时嵌入到高维矢量空间中,有的提出一个基于深度神经网络的系统,用于使用API调用和自然语言输入信息合成代码程序,还有的提出了一种名为"UNIF"的方法,用于使用注意机制计算代码句子嵌入。
本申请发明人在实施本发明的过程中,发现现有技术的方法,至少存在如下技术问题:
前面的代码搜索方法的一个基本问题是,这些都没有考虑代码的关键字顺序对结果的影响。但是相同的代码关键字可以组成完全不同的代码。大多数现有方法采用词向量技术来训练代码向量。但在常见的神经网络中,神经元通常是无序的。无论是LSTM还是普通神经网络都不能利用神经元序列信息,从而导致搜索效果不佳。
发明内容
有鉴于此,本发明提供了一种基于分层嵌入的神经代码搜索方法及装置,用以解决或者至少部分解决现有技术中的方法存在的搜索效果不佳的技术问题。
为了解决上述技术问题,本发明第一方面提供了一种基于分层嵌入的神经代码搜索方法,包括:
步骤S1:收集代码搜索数据集;
步骤S2:对收集的代码搜索数据集进行预处理;
步骤S3:对预处理后的语料数据进行结构化分词以及比例划分,获得训练集、验证集和测试集;
步骤S4:构建依次包含内部信息编码模块、交互信息编码模块、相似度匹配模块的分层嵌入神经代码搜索模型HECS,并设置训练网络的合页损失函数,其中,内部信息编码模块用以捕获并初始编码代码段和查询的序列信息,交互信息编码模块用以捕获并编码代码段和查询的交互信息,相似度匹配模块用以预测代码段和查询之间的相似性;
步骤S5:对HECS设置初始化参数,并利用训练集来训练拟合HECS模型的参数,直到在验证集上迭代预设次直到合页损失函数收敛,得到训练好的HECS模型;
步骤S6:利用训练好的HECS模型对待处理的查询进行预测,获得与查询对应的代码搜索结果。
在一种实施方式中,步骤S2具体包括:对收集的代码搜索数据集进行去冗余和数据清洗。
在一种实施方式中,步骤S3具体包括:
步骤S3.1:采用程序语法解析器对预处理后的语料数据进行结构化分词;
步骤S3.2:依次对分词后的文本进行词还原、词统一化处理;
步骤S3.3:对进行词统一化处理后的文本划分为训练集、验证集和测试集。
在一种实施方式中,步骤S4具体包括:
步骤S4.1:基于LSTM结构的变体ON-LSTM构建内部信息编码模块,ON-LSTM中,激活函数定义为:
Figure BDA0002338085300000021
其中,cumax表示累积总和,基于cumax(···)函数,ON-LSTM网络在给定每个时间步t上引入了特殊的忘记门
Figure BDA0002338085300000031
和特殊的输入门
Figure BDA0002338085300000032
其中
Figure BDA0002338085300000033
表示超参数矩阵,
Figure BDA0002338085300000034
表示偏置,xt表示t时刻输入的单词向量,ht-1表示隐藏层向量;
Figure BDA0002338085300000035
Figure BDA0002338085300000036
根据前述激活函数、特殊的忘记门
Figure BDA0002338085300000037
和特殊的输入门
Figure BDA0002338085300000038
得到隐藏状态的更新规则如下:
Figure BDA0002338085300000039
Figure BDA00023380853000000310
Figure BDA00023380853000000311
Figure BDA00023380853000000312
步骤S4.2:构建内部信息编码模块,对于代码C=(w1,...,wND)的片段,其中包含ND个结构化令牌,查询Q=(q1,...,qN)包含N个单词,其中wi表示代码片段中第i个结构化令牌的向量,qi表示查询中第i个单词的向量,
Figure BDA00023380853000000313
Figure BDA00023380853000000314
内部信息编码模块使用ON-LSTM将查询和代码为向量表示时,按照第i个单词作为第t个时间步依次将单词嵌入传入网络来实现编码;
hC=ONLSTM(wt,ht-1)
hQ=ONLSTM(qt,ht-1)
在给定的每个时间步上t,若每个单向ON-LSTM的隐藏层维度为u,则使用ON-LSTM编码后,代码片段编码后的向量表示
Figure BDA00023380853000000315
查询编码后的向量表示
Figure BDA00023380853000000316
步骤S4.3:构建交互信息编码模块,查询嵌入的最终编码表示outputQ计算如下:
outputQ=max pooling(hQ)
然后计算代码段和查询之间交互信息的注意矩阵Wqc
Figure BDA0002338085300000041
Figure BDA0002338085300000042
Figure BDA0002338085300000043
都为权重参数矩阵,注意矩阵
Figure BDA0002338085300000044
查询作用于代码片段的权重计算如下:
Figure BDA0002338085300000045
att=matrixdiag(softmax(P))
其中,T表示超参数矩阵,其维度是
Figure BDA0002338085300000046
在注意矩阵Wqc上对中间转换矩阵P进行重构,att是P在softmax输出之后构建的对角矩阵,为交互信息的关注向量,最后,所需得到输出代码段最终编码表示
Figure BDA0002338085300000047
如下:
Figure BDA0002338085300000048
步骤S4.4:构建相似度匹配模块,使用cosine相似度cos(VQ,VC)来测量源代码和自然查询之间的相似性,cos(VQ,VC)定义为:
Figure BDA0002338085300000049
其中,||outputQ||·||outputC||表示两个矩阵通过其转置的乘法,相似性越高,表示代码片段C与查询Q之间的相关性越大,通过cos(VQ,VC)预测代码段和查询之间的相似性;
步骤S4.5:将内部信息编码模块、交互信息编码模块和相似度匹配模块进行联合训练,其目标是学习表示函数f(·),通过这个函数使得给定自然语言查询q和代码片段c,令正样本对(q,c+)的相似度分数比负样本对(q,c-)打分高:
Figure BDA00023380853000000410
其中,q、c+、c-分别表示自然查询、正代码段和负代码段,使用cos(·)作为函数f(·)进行训练,训练网络的合页损失函数为:
Figure BDA00023380853000000411
其中,W表示网络所有的权重矩阵,λ表示正则化参数,ε表示边距超参数。
在一种实施方式中,在步骤S5之后,所述方法还包括:
保存训练得到的HECS模型超参数文件,并在测试集上进行模型性能验证。
基于同样的发明构思,本发明第二方面提供了一种基于分层嵌入的神经代码搜索装置,包括:
收集模块,用于收集代码搜索数据集;
预处理模块,用于对收集的代码搜索数据集进行预处理;
数据划分模块,用于对预处理后的语料数据进行结构化分词以及比例划分,获得训练集、验证集和测试集;
分层嵌入神经代码搜索模型构建模块,用于构建依次包含内部信息编码模块、交互信息编码模块、相似度匹配模块的分层嵌入神经代码搜索模型HECS,并设置训练网络的合页损失函数,其中,内部信息编码模块用以捕获并初始编码代码段和查询的序列信息,交互信息编码模块用以捕获并编码代码段和查询的交互信息,相似度匹配模块用以预测代码段和查询之间的相似性;
训练模块,用于对HECS设置初始化参数,并利用训练集来训练拟合HECS模型的参数,直到在验证集上迭代预设次直到合页损失函数收敛,得到训练好的HECS模型;
搜索模块,用于用训练好的HECS模型对待处理的查询进行预测,获得与查询对应的代码搜索结果。
基于同样的发明构思,本发明第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被执行时实现第一方面所述的方法。
基于同样的发明构思,本发明第四方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
本发明提供的一种基于分层嵌入的神经代码搜索方法,首先构建了分层嵌入神经代码搜索模型HECS,HECS包括内部信息编码模块、交互信息编码模块和相似度匹配模块;所述内部信息编码模块用于捕获并编码代码段和查询的序列信息;所述交互信息编码模块用于捕获并编码代码段和查询的交互信息;所述相似度匹配模块用于计算查询与代码段之间的相似度。然后通过构建的分层嵌入神经代码搜索模型HECS进行代码的预测,内部信息编码模块在单词级别初步编码查询与代码段向量,然后通过交互信息编码模块进一步挖掘查询与代码段向量的交互信息,最后通过相似度匹配模块所得的相似度分数进行负反馈训练,通过这种编码方法,本发明将代码段和查询映射到高维空间,成功地捕获了它们之间的内在关联,最终得到训练好的深度神经网络代码搜索模型,利用该模型可以提高代码搜索的效果和性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种基于分层嵌入的神经代码搜索方法的实现流程图;
图2(包括a和b)为本发明实施例的HECS模型的整体结构和细节结构图;
图3(包括a和b)为本发明实施例的交互信息编码模块的结构图;
图4(包括a、b、c和d)为本发明实施例与基准方法的Frank和Precision准确度比较图;
图5为本发明实施例中一种基于分层嵌入的神经代码搜索装置的结构框图;
图6为本发明实施例中一种计算机可读存储介质的结构框图;
图7为本发明实施例中计算机设备的结构图。
具体实施方式
本申请发明人通过大量的研究与实践发现:
现有技术中公开的代码搜索方法,都没有考虑代码的关键字顺序对结果的影响。但是相同的代码关键字可以组成完全不同的代码。大多数现有方法采用词向量技术来训练代码向量。但在常见的神经网络中,神经元通常是无序的。例如,LSTM(长短期记忆网络)中的忘记门是一个矢量,并且矢量元素的位置是无序的。如果LSTM操作中涉及到的所有矢量的位置以同样的方式重新排序,则权重也会相应地重新排序。但是输出可能只是原始矢量的重新排序(考虑多个层,甚至可以完全保持不变),信息量保持不变,而不会影响后续网络对它的使用。换句话说,无论是LSTM还是普通神经网络都不能利用神经元序列信息。因此,任何现有代码搜索方法都不能捕获代码的序列信息。也就是说,现有的工作不能对这些神经元进行排序,并使用此序列来表示特定代码结构并有效地使用这些代码文本再嵌入表示时的神经元序列信息。
此外,大多数代码搜索方法可以分为两类,一类分别对查询和代码段向量建模,另一类则对单词级别的查询和代码段之间的对应关系建模。但是,现有的研究都没有挖掘查询和代码段之间的交互信息。
基于以上考虑,本发明提供了一种基于分层嵌入的神经代码搜索方法,一定程度上解决现有研究中对于软件问答社区代码搜索中缺乏代码顺序结构信息和交互信息的问题,从而提高搜索的效果及性能。
为了达到上述目的,本发明的主要构思如下:
将代码和查询的嵌入过程划分为两个层次结构,即潜在信息由两个模块捕获(语言内编码模块和跨语言编码模块)。特别是,本发明的方法采用特殊的LSTM(长期短期记忆)变体,即ON-LSTM(有序神经元LSTM)来捕获代码的关键字顺序结构。语言内编码模块由LSTM变体实现,跨语言编码模块是关注机制实现的交互式信息计算模块。这样,可以更好地捕获查询与矢量空间中相应代码段之间的相似性。HECS可以更准确地理解正样本和负样本之间的差异。本发明使用从堆栈溢出等编程站点收集的大规模代码库对HECS进行实证评估。实验结果表明,该方法达到了最先进的性能。
本发明的创新点包括:
1)基于ON-LSTM的内部信息编码方法;本发明引入了内部信息编码模块来捕获代码的序列信息。代码片段通常可以表示为层次结构,如果人为抽象,称之为结构信息。与文本代码段相比,代码段的序列信息通常很重要。不同的关键字序列在代码中产生不同的含义。但是,大多数当前的神经网络代码搜索方法并不处理代码的这一特性。本发明使用基于ON-LSTM的语言内编码模块来完全嵌入顺序信息,有效地解决了这个问题。本发明HECS模型能够在训练期间模拟此层次结构的自然表示形式。
2)基于注意力机制的交互信息编码方法;本发明HECS模型使用交互信息编码模块来计算查询和代码段之间的交互。分别计算查询对应代码段和代码段对应查询的关注,能够更好地了解查询的含义。该值加权模型能够对自然语言查询和代码术语在各自方向上给予不同的注意力关注,从而对自然语言查询描述产生关注。此方法使模型的输入层在查询和代码段的单词级别更具交互性。
3)信息良好的全局代码信息嵌入式矢量;自然语言处理领域通常将完整的句子嵌入到高维空间中。但是代码搜索任务通常将代码分成几个部分来嵌入,然后连接嵌入的矢量。这可能导致代码各部分之间丢失潜在信息。本发明HECS模型将完整的代码段映射到连续的高维空间,以保留代码片段此潜在完整结构信息。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供了一种基于分层嵌入的神经代码搜索方法,该方法包括:
步骤S1:收集代码搜索数据集。
具体来说,基于神经网络的代码搜索模型需要大量的训练数据,本发明以StackOverflow软件问答社区为例,其是用于发布与程序相关问题的网站,相关数据可从StackExchange中免费下载匿名的问答帖子。通过使用正则表达式(例如,标记=".*Python.*")来匹配不同的标记(C#、Java、SQL、Python)可解析不同程序语言问答对。通过对问答对中标签的进一步解析,可以得到包含两种编程语言(Python和C#)的代码-描述匹配对语料。
步骤S2:对收集的代码搜索数据集进行预处理。
具体来说,步骤S2是对步骤S1中获取的C#和Python模型语料进行去重处理,删除不存在代码片段和代码描述的匹配对(即无效数据),并删除长度过小的代码片段,以提供高质量的训练语料。
步骤S3:对预处理后的语料数据进行结构化分词以及比例划分,获得训练集、验证集和测试集。
具体来说,可以采用程序语法解析器对预处理后的代码-描述语料文本实现结构化分词,并依次对分词后的文本进行词还原、词统一化处理,然后按照预设比例划分为训练集、验证集和测试集。
步骤S4:构建依次包含内部信息编码模块、交互信息编码模块、相似度匹配模块的分层嵌入神经代码搜索模型HECS,并设置训练网络的合页损失函数,其中,内部信息编码模块用以捕获并初始编码代码段和查询的序列信息,交互信息编码模块用以捕获并编码代码段和查询的交互信息,相似度匹配模块用以预测代码段和查询之间的相似性。
具体来说,通过内部信息编码模块、交互信息编码模块对代码段和查询的序列信息和交互信息进行分层嵌入,然后通过相似度匹配模块用以预测代码段和查询之间的相似性,相似度匹配模块所得的相似度分数进行负反馈训练,通过这种编码方法,本发明将代码段和查询映射到高维空间,可以成功地捕获它们之间的内在关联,最终得到训练好的深度神经网络代码搜索模型。
步骤S5:对HECS设置初始化参数,并利用训练集来训练拟合HECS模型的参数,直到在验证集上迭代预设次直到合页损失函数收敛,得到训练好的HECS模型。
具体来说,步骤S5是对步骤S4构建的HECS模型进行训练。迭代次数可以根据具体情况设置。
步骤S6:利用训练好的HECS模型对待处理的查询进行预测,获得与查询对应的代码搜索结果。
如附图2所示,本发明提供的一种基于分层嵌入的神经代码搜索方法,整体结构(a)所示,包括内部信息编码模块、交互信息编码模块和相似度匹配模块;细节结构如(b)所示,其中内部信息编码模块用于捕获并编码代码段和查询的序列信息;交互信息编码模块用于捕获并编码代码段和查询的交互信息;相似度匹配模块用于计算查询与代码段之间的相似度。
在一种实施方式中,步骤S2具体包括:对收集的代码搜索数据集进行去冗余和数据清洗。
具体来说,还是以StackOverflow软件问答社区为例,由于StackOverflow的流行,步骤S1中获取的语料库包含大量重复的帖子,称之为冗余数据。此外,原始语料库包含大量不影响分类结果的数据,例如答案太短,无法表示任何信息,称之为无效数据。具体来说,本发明删除语料库中长度小于10的候选代码,以确保候选样本的数量。总之,本发明会在数据清理过程中删除无效和冗余数据,最后删除一些没有查询说明或代码段的数据。
在一种实施方式中,步骤S3具体包括:
步骤S3.1:采用程序语法解析器对预处理后的语料数据进行结构化分词;
步骤S3.2:依次对分词后的文本进行词还原、词统一化处理;
步骤S3.3:对进行词统一化处理后的文本划分为训练集、验证集和测试集。
具体来说,本发明分别采用ANTLR解析器、Python内置解析器分别对进行预处理后的预料数据(C#和Python程序语言的代码-描述匹配对文本)实现序列结构化分词,并依次进行词还原(词干还原和词性还原)、词统一化及程序命名统一化处理,可以去除代码文本中无意义的变量名及其他标识符,保留可以表示代码结构的结构化序列文本。对于结构化分词后的语料库,将其中80%用于训练,10%用于验证,10%用于测试。该语料库的统计信息如附表1所示。标记为"1"的子列表示最佳答案与总答案的比率。对于Python和C#,长度不小于10的样本数为279695和237078。本发明获得了一个已标记的语料库,称之为多个候选QC对语料库(简称MCQCP语料)。
表1 MCQCP语料库的统计信息
Figure BDA0002338085300000101
此外,附表2展示了一个结构化分词后语料库的示例。在收集帖子的过程中,本发明筛选出只有一个答案的帖子,并保留至少两个答案的帖子。在保留的帖子中,最佳答案标记为正,另一个答案标记为负。在此示例中,对于"how to return all key value pairsof a i dictionary C#"的问题,有一对正样本,三对负样本。
表2 结构化分词语料库的示例
Figure BDA0002338085300000102
Figure BDA0002338085300000111
在一种实施方式中,步骤S4具体包括:
步骤S4.1:基于LSTM结构的变体ON-LSTM构建内部信息编码模块,ON-LSTM中,激活函数定义为:
Figure BDA0002338085300000112
其中,cumax表示累积总和,基于cumax(···)函数,ON-LSTM网络在给定每个时间步t上引入了特殊的忘记门
Figure BDA0002338085300000113
和特殊的输入门
Figure BDA0002338085300000114
其中
Figure BDA0002338085300000115
表示超参数矩阵,
Figure BDA0002338085300000116
表示偏置,xt表示t时刻输入的单词向量,ht-1表示隐藏层向量;
Figure BDA0002338085300000117
Figure BDA0002338085300000118
根据前述激活函数、特殊的忘记门
Figure BDA0002338085300000119
和特殊的输入门
Figure BDA00023380853000001110
得到隐藏状态的更新规则如下:
Figure BDA00023380853000001111
Figure BDA00023380853000001112
Figure BDA00023380853000001113
Figure BDA00023380853000001114
步骤S4.2:构建内部信息编码模块,对于代码C=(w1,...,wND)的片段,其中包含ND个结构化令牌,查询Q=(q1,...,qN)包含N个单词,其中wi表示代码片段中第i个结构化令牌,qi表示查询中第i个单词的向量,
Figure BDA00023380853000001115
内部信息编码模块使用ON-LSTM将查询和代码为向量表示时,按照第i个单词作为第t个时间步依次将单词嵌入传入网络来实现编码;
hC=ONLSTM(wt,ht-1)
hQ=ONLSTM(qt,ht-1)
在给定的每个时间步上t,若每个单向ON-LSTM的隐藏层维度为u,则使用ON-LSTM编码后,代码片段编码后的向量表示
Figure BDA0002338085300000121
查询编码后的向量表示
Figure BDA0002338085300000122
步骤S4.3:构建交互信息编码模块,查询嵌入的最终编码表示outputQ计算如下:
outputQ=max pooling(hQ)
然后计算代码段和查询之间交互信息的注意矩阵Wqc
Figure BDA0002338085300000123
Figure BDA0002338085300000124
Figure BDA0002338085300000125
都为权重参数矩阵,注意矩阵
Figure BDA0002338085300000126
查询作用于代码片段的权重计算如下:
Figure BDA0002338085300000127
att=matrixdiag(soft max(P))
其中,T表示超参数矩阵,其维度是
Figure BDA0002338085300000128
在注意矩阵Wqc上对中间转换矩阵P进行重构,att是P在softmax输出之后构建的对角矩阵,为交互信息的关注向量,最后,所需得到输出代码段最终编码表示
Figure BDA0002338085300000129
如下:
Figure BDA00023380853000001210
步骤S4.4:构建相似度匹配模块,使用cosine相似度cos(VQ,VC)来测量源代码和自然查询之间的相似性,cos(VQ,VC)定义为:
Figure BDA00023380853000001211
其中,||outputQ||·||outputC||表示两个矩阵通过其转置的乘法,相似性越高,表示代码片段C与查询Q之间的相关性越大,通过cos(VQ,VC)预测代码段和查询之间的相似性;
步骤S4.5:将内部信息编码模块、交互信息编码模块和相似度匹配模块进行联合训练,其目标是学习表示函数f(·),通过这个函数使得给定自然语言查询q和代码片段c,令正样本对(q,c+)的相似度分数比负样本对(q,c-)打分高:
Figure BDA0002338085300000131
其中,q、c+、c-分别表示自然查询、正代码段和负代码段,使用cos(·)作为函数f(·)进行训练,训练网络的合页损失函数为:
Figure BDA0002338085300000132
其中,W表示网络所有的权重矩阵,λ表示正则化参数,ε表示边距超参数。
具体来说:
(1)构建内部信息编码模块,在得到预处理后的语料库后,本发明首先使用内部信息编码模块捕获并初始编码代码段和查询的序列信息。本发明创新性的使用一种LSTM结构的变体ON-LSTM成功的捕获了代码的顺序结构信息。ON-LSTM其与LSTM之间的区别在于隐藏状态的更新公式。为了融入序列的信息,在ON-LSTM中,激活函数定义为cumax(···)的形式,该函数允许每个隐藏单元分为两个段分别更新。
(2)构建交互信息编码模块
交互信息编码模块捕获并编码代码段和查询的交互信息。交互信息编码模型是一种注意机制,它为代码段和查询提供一组求和权重矢量。如附图3所示,描述了本发明的交互信息编码模块结构。
(3)构建相似度匹配模块
通过前述步骤已经得到了编码自然查询Q和代码段C的向量,并且已转换为outputC和outputQ。根据现有方法,本发明使用cosine相似度cos(VQ,VC)来测量源代码和自然查询之间的相似性。当输入一对样本(Q,C),本发明将其转化为向量,最后使用此方法预测代码段和查询之间的相似性。
在构建模型后,需要对模型进行训练,在模型训练中,首先将得到的训练集数据加载到分层嵌入代码搜索模型HECS中。具体实施过程中,本发明在训练HECS模型参数初始化中,设置查询和代码的最大长度N和ND分别设置为20和200,填充的词或不在词表中的词嵌入的服从<-0.25,025>均匀分布,双向LSTM的隐藏层大小设为128,注意力维度L为200,匹配模块中的正则化参数λ设为0.02,边距超参数ε设为0.5,按照0.5的概率在嵌入映射层和双向LSTM编码层中进行采样。最后,按照学习率为0.002和SGD随机梯度下降法来训练拟合HECS模型的超参数,直到在步骤3中验证集上迭达50次后停止训练,并保存模型的超参数文件。
在一种实施方式中,在步骤S5之后,所述方法还包括:
保存训练得到的HECS模型超参数文件,并在测试集上进行模型性能验证。
具体来说,为说明本发明HECS模型在软件问答社区代码搜索上的实验效果,根据训练得到的HECS模型超参数文件,在测试集上进行模型性能验证,以给出相应的MRR和Recall代码搜索性能评价指标,并将得到的结果与基准模型CodeLSTM、CodeCNN、CodeRCNN、UNIF、DeepCS、CodeATTENTION、CodeONLSTM进行比较,以综合说明本发明HECS代码搜索模型的性能。如附表3所示,共进行了6组对比实验,以比较各个基准代码搜索模型在MRR和Recall@1指标上性能表现,其中MRR和Recall@1值越低,代码搜索性能越好。此外,为说明内部信息编码模块和交互信息编码模块对于构建HECS模型同等重要,本发明设计了CodeATTENTION和CodeONLSTM,模型,其中CodeATTENTION是去除内部信息编码模块,保留采用LSTM的网络初始编码和相似性匹配模块;CodeONLSTM是去除交互信息编码模块,保留内部信息编码模块和相似性匹配模块。如附图4所示共进行了4组消融实验,以比较各模型在Frank和Precision1、Precision3、Precision准确度指标上的性能表现,其中Frank值越低,代码搜索性能越好,Precision的值越高,代码搜索性能越好。根据如附表3和附图4实验结果所示,本发明HECS模型的实验效果最佳。此结果表明,本发明的方法采用ON-LSTM网络更能捕获代码结构化序列的信息,在此基础上进一步利用交互信息模块能够更好地融合查询在代码片段上的关注信息,以更优越的方式编码了代码片段和自然查询的最终嵌入表示。因此,给定一个查询,本发明可以在软件问答社区中搜索更相关的代码。
表3 不同模型的性能指标
Figure BDA0002338085300000151
本发明的创新点包括:1)基于ON-LSTM的内部信息编码方法;本发明引入了内部信息编码模块来捕获代码的序列信息。代码片段通常可以表示为层次结构,如果人为抽象,称之为结构信息。与文本代码段相比,代码段的序列信息通常很重要。不同的关键字序列在代码中产生不同的含义。但是,大多数当前的神经网络代码搜索方法并不处理代码的这一特性。本发明使用基于ON-LSTM的语言内编码模块来完全嵌入顺序信息,有效地解决了这个问题。本发明HECS模型能够在训练期间模拟此层次结构的自然表示形式。
2)基于注意力机制的交互信息编码方法;本发明HECS模型使用交互信息编码模块来计算查询和代码段之间的交互。分别计算查询对应代码段和代码段对应查询的关注,能够更好地了解查询的含义。该值加权模型能够对自然语言查询和代码术语在各自方向上给予不同的注意力关注,从而对自然语言查询描述产生关注。此方法使模型的输入层在查询和代码段的单词级别更具交互性。
3)信息良好的全局代码信息嵌入式矢量;自然语言处理领域通常将完整的句子嵌入到高维空间中。但是代码搜索任务通常将代码分成几个部分来嵌入,然后连接嵌入的矢量。这可能导致代码各部分之间丢失潜在信息。本发明HECS模型将完整的代码段映射到连续的高维空间,以保留代码片段此潜在完整结构信息。
实施例二
基于同样的发明构思,本实施例提供了一种基于分层嵌入的神经代码搜索装置,请参见图5,该装置包括:
收集模块201,用于收集代码搜索数据集;
预处理模块202,用于对收集的代码搜索数据集进行预处理;
数据划分模块203,用于对预处理后的语料数据进行结构化分词以及比例划分,获得训练集、验证集和测试集;
分层嵌入神经代码搜索模型构建模块204,用于构建依次包含内部信息编码模块、交互信息编码模块、相似度匹配模块的分层嵌入神经代码搜索模型HECS,并设置训练网络的合页损失函数,其中,内部信息编码模块用以捕获并初始编码代码段和查询的序列信息,交互信息编码模块用以捕获并编码代码段和查询的交互信息,相似度匹配模块用以预测代码段和查询之间的相似性;
训练模块205,用于对HECS设置初始化参数,并利用训练集来训练拟合HECS模型的参数,直到在验证集上迭代预设次直到合页损失函数收敛,得到训练好的HECS模型;
搜索模块206,用于用训练好的HECS模型对待处理的查询进行预测,获得与查询对应的代码搜索结果。
由于本发明实施例二所介绍的装置,为实施本发明实施例一中基于分层嵌入的神经代码搜索方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
实施例三
请参见图6,基于同一发明构思,本申请还提供了一种计算机可读存储介质300,其上存储有计算机程序311,该程序被执行时实现如实施例一中所述的方法。
由于本发明实施例三所介绍的计算机可读存储介质为实施本发明实施例一中基于分层嵌入的神经代码搜索方法所采用的计算机设备,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机可读存储介质的具体结构及变形,故而在此不再赘述。凡是本发明实施例一中方法所采用的计算机可读存储介质都属于本发明所欲保护的范围。
实施例四
基于同一发明构思,本申请还提供了一种计算机设备,请参见图7,包括存储401、处理器402及存储在存储器上并可在处理器上运行的计算机程序403,处理器402执行上述程序时实现实施例一中的方法。
由于本发明实施例四所介绍的计算机设备为实施本发明实施例一中基于分层嵌入的神经代码搜索方法所采用的计算机设备,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机设备的具体结构及变形,故而在此不再赘述。凡是本发明实施例一中方法所采用的计算机设备都属于本发明所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种基于分层嵌入的神经代码搜索方法,其特征在于,包括:
步骤S1:收集代码搜索数据集;
步骤S2:对收集的代码搜索数据集进行预处理;
步骤S3:对预处理后的语料数据进行结构化分词以及比例划分,获得训练集、验证集和测试集;
步骤S4:构建依次包含内部信息编码模块、交互信息编码模块、相似度匹配模块的分层嵌入神经代码搜索模型HECS,并设置训练网络的合页损失函数,其中,内部信息编码模块用以捕获并初始编码代码段和查询的序列信息,交互信息编码模块用以捕获并编码代码段和查询的交互信息,相似度匹配模块用以预测代码段和查询之间的相似性;
步骤S5:对HECS设置初始化参数,并利用训练集来训练拟合HECS模型的参数,直到在验证集上迭代预设次直到合页损失函数收敛,得到训练好的HECS模型;
步骤S6:利用训练好的HECS模型对待处理的查询进行预测,获得与查询对应的代码搜索结果。
2.如权利要求1所述的方法,其特征在于,步骤S2具体包括:对收集的代码搜索数据集进行去冗余和数据清洗。
3.如权利要求1所述的方法,其特征在于,步骤S3具体包括:
步骤S3.1:采用程序语法解析器对预处理后的语料数据进行结构化分词;
步骤S3.2:依次对分词后的文本进行词还原、词统一化处理;
步骤S3.3:对进行词统一化处理后的文本划分为训练集、验证集和测试集。
4.如权利要求1所述的方法,其特征在于,步骤S4具体包括:
步骤S4.1:基于LSTM结构的变体ON-LSTM构建内部信息编码模块,ON-LSTM中,激活函数定义为:
Figure FDA0002338085290000011
其中,cumax表示累积总和,基于cumax(···)函数,ON-LSTM网络在给定每个时间步t上引入了特殊的忘记门
Figure FDA0002338085290000012
和特殊的输入门
Figure FDA0002338085290000013
其中
Figure FDA0002338085290000014
表示超参数矩阵,
Figure FDA0002338085290000021
表示偏置,xt表示t时刻输入的单词向量,ht-1表示隐藏层向量;
Figure FDA0002338085290000022
Figure FDA0002338085290000023
根据前述激活函数、特殊的忘记门
Figure FDA0002338085290000024
和特殊的输入门
Figure FDA0002338085290000025
得到隐藏状态的更新规则如下:
Figure FDA0002338085290000026
Figure FDA0002338085290000027
Figure FDA0002338085290000028
Figure FDA0002338085290000029
步骤S4.2:构建内部信息编码模块,对于代码C=(w1,...,wND)的片段,其中包含ND个结构化令牌,查询Q=(q1,...,qN)包含N个单词,其中wi表示代码片段中第i个结构化令牌,qi表示查询中第i个单词的向量,
Figure FDA00023380852900000210
内部信息编码模块使用ON-LSTM将查询和代码为向量表示时,按照第i个单词作为第t个时间步依次将单词嵌入传入网络来实现编码;
hC=ONLSTM(wt,ht-1)
hQ=ONLSTM(qt,ht-1)
在给定的每个时间步上t,若每个单向ON-LSTM的隐藏层维度为u,则使用ON-LSTM编码后,代码片段编码后的向量表示
Figure FDA00023380852900000211
查询编码后的向量表示
Figure FDA00023380852900000212
步骤S4.3:构建交互信息编码模块,查询嵌入的最终编码表示outputQ计算如下:
outputQ=maxpooling(hQ)
然后计算代码段和查询之间交互信息的注意矩阵Wqc
Figure FDA00023380852900000213
Figure FDA0002338085290000031
Figure FDA0002338085290000032
都为权重参数矩阵,注意矩阵
Figure FDA0002338085290000033
查询作用于代码片段的权重计算如下:
Figure FDA0002338085290000034
att=matrixdiag(softmax(P))
其中,T表示超参数矩阵,其维度是
Figure FDA0002338085290000035
在注意矩阵Wqc上对中间转换矩阵P进行重构,att是P在softmax输出之后构建的对角矩阵,为交互信息的关注向量,最后,所需得到输出代码段最终编码表示
Figure FDA0002338085290000036
如下:
Figure FDA0002338085290000037
步骤S4.4:构建相似度匹配模块,使用cosine相似度cos(VQ,VC)来测量源代码和自然查询之间的相似性,cos(VQ,VC)定义为:
Figure FDA0002338085290000038
其中,||outputQ||·||outputC||表示两个矩阵通过其转置的乘法,相似性越高,表示代码片段C与查询Q之间的相关性越大,通过cos(VQ,VC)预测代码段和查询之间的相似性;
步骤S4.5:将内部信息编码模块、交互信息编码模块和相似度匹配模块进行联合训练,其目标是学习表示函数f(·),通过这个函数使得给定自然语言查询q和代码片段c,令正样本对(q,c+)的相似度分数比负样本对(q,c-)打分高:
Figure FDA0002338085290000039
其中,q、c+、c-分别表示自然查询、正代码段和负代码段,使用cos(·)作为函数f(·)进行训练,训练网络的合页损失函数为:
Figure FDA00023380852900000310
其中,W表示网络所有的权重矩阵,λ表示正则化参数,ε表示边距超参数。
5.如权利要求1所述的方法,其特征在于,在步骤S5之后,所述方法还包括:
保存训练得到的HECS模型超参数文件,并在测试集上进行模型性能验证。
6.一种基于分层嵌入的神经代码搜索装置,其特征在于,包括:
收集模块,用于收集代码搜索数据集;
预处理模块,用于对收集的代码搜索数据集进行预处理;
数据划分模块,用于对预处理后的语料数据进行结构化分词以及比例划分,获得训练集、验证集和测试集;
分层嵌入神经代码搜索模型构建模块,用于构建依次包含内部信息编码模块、交互信息编码模块、相似度匹配模块的分层嵌入神经代码搜索模型HECS,并设置训练网络的合页损失函数,其中,内部信息编码模块用以捕获并初始编码代码段和查询的序列信息,交互信息编码模块用以捕获并编码代码段和查询的交互信息,相似度匹配模块用以预测代码段和查询之间的相似性;
训练模块,用于对HECS设置初始化参数,并利用训练集来训练拟合HECS模型的参数,直到在验证集上迭代预设次直到合页损失函数收敛,得到训练好的HECS模型;
搜索模块,用于用训练好的HECS模型对待处理的查询进行预测,获得与查询对应的代码搜索结果。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被执行时实现如权利要求1至5中任一项权利要求所述的方法。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5中任一项权利要求所述的方法。
CN201911364631.0A 2019-12-26 2019-12-26 一种基于分层嵌入的神经代码搜索方法及装置 Active CN111191002B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911364631.0A CN111191002B (zh) 2019-12-26 2019-12-26 一种基于分层嵌入的神经代码搜索方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911364631.0A CN111191002B (zh) 2019-12-26 2019-12-26 一种基于分层嵌入的神经代码搜索方法及装置

Publications (2)

Publication Number Publication Date
CN111191002A true CN111191002A (zh) 2020-05-22
CN111191002B CN111191002B (zh) 2023-05-23

Family

ID=70709515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911364631.0A Active CN111191002B (zh) 2019-12-26 2019-12-26 一种基于分层嵌入的神经代码搜索方法及装置

Country Status (1)

Country Link
CN (1) CN111191002B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084435A (zh) * 2020-08-07 2020-12-15 北京三快在线科技有限公司 搜索排序模型训练方法及装置、搜索排序方法及装置
CN112328743A (zh) * 2020-11-03 2021-02-05 北京嘀嘀无限科技发展有限公司 代码搜索方法、装置、可读存储介质和电子设备
CN112507065A (zh) * 2020-11-18 2021-03-16 电子科技大学 一种基于注释语义信息的代码搜索方法
CN113204679A (zh) * 2021-04-13 2021-08-03 武汉大学 一种代码查询模型的生成方法和计算机设备
CN113449076A (zh) * 2021-06-23 2021-09-28 武汉大学 基于全局信息和局部信息的代码搜索嵌入方法及装置
WO2022041113A1 (en) * 2020-08-28 2022-03-03 Nokia Solutions And Networks Oy Methods, apparatuses, and computer readable media for software development, testing and maintenance
CN114186017A (zh) * 2021-11-02 2022-03-15 武汉大学 基于多维度匹配的代码搜索方法
US20220107799A1 (en) * 2020-10-02 2022-04-07 International Business Machines Corporation Semantic code retrieval using graph matching
CN116028596A (zh) * 2023-03-27 2023-04-28 云筑信息科技(成都)有限公司 一种实体匹配分块的实现方法
CN117349453A (zh) * 2023-12-04 2024-01-05 武汉大学 一种基于扩展代码的深度学习代码搜索模型的加速方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227851A (zh) * 2016-07-29 2016-12-14 汤平 基于深度卷积神经网络端对端的通过分层深度搜索的图像检索方法
WO2017019893A1 (en) * 2015-07-29 2017-02-02 Notovox, Inc. Systems and methods for searching for medical codes
CN108717423A (zh) * 2018-04-24 2018-10-30 南京航空航天大学 一种基于深度语义挖掘的代码段推荐方法
US20180330232A1 (en) * 2017-05-10 2018-11-15 Fmr Llc Identification and classification of training needs from unstructured computer text using a neural network
CN109033978A (zh) * 2018-06-28 2018-12-18 济南大学 一种基于纠错策略的cnn-svm混合模型手势识别方法
US20190163678A1 (en) * 2016-09-26 2019-05-30 Splunk Inc. Generating structured metrics from log data
US20190188295A1 (en) * 2017-12-15 2019-06-20 Accenture Global Solutions Limited Cognitive searches based on deep-learning neural networks
US20190258713A1 (en) * 2018-02-22 2019-08-22 Google Llc Processing text using neural networks
CN110399162A (zh) * 2019-07-09 2019-11-01 北京航空航天大学 一种源代码注释自动生成方法
CN110442684A (zh) * 2019-08-14 2019-11-12 山东大学 一种基于文本内容的类案推荐方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017019893A1 (en) * 2015-07-29 2017-02-02 Notovox, Inc. Systems and methods for searching for medical codes
CN106227851A (zh) * 2016-07-29 2016-12-14 汤平 基于深度卷积神经网络端对端的通过分层深度搜索的图像检索方法
US20190163678A1 (en) * 2016-09-26 2019-05-30 Splunk Inc. Generating structured metrics from log data
US20180330232A1 (en) * 2017-05-10 2018-11-15 Fmr Llc Identification and classification of training needs from unstructured computer text using a neural network
US20190188295A1 (en) * 2017-12-15 2019-06-20 Accenture Global Solutions Limited Cognitive searches based on deep-learning neural networks
US20190258713A1 (en) * 2018-02-22 2019-08-22 Google Llc Processing text using neural networks
CN108717423A (zh) * 2018-04-24 2018-10-30 南京航空航天大学 一种基于深度语义挖掘的代码段推荐方法
CN109033978A (zh) * 2018-06-28 2018-12-18 济南大学 一种基于纠错策略的cnn-svm混合模型手势识别方法
CN110399162A (zh) * 2019-07-09 2019-11-01 北京航空航天大学 一种源代码注释自动生成方法
CN110442684A (zh) * 2019-08-14 2019-11-12 山东大学 一种基于文本内容的类案推荐方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张芳芳;曹兴超;: "基于字面和语义相关性匹配的智能篇章排序", 山东大学学报(理学版) *
谭锋奇;李洪奇;孟照旭;郭海峰;李雄炎;: "数据挖掘方法在石油勘探开发中的应用研究", 石油地球物理勘探 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084435A (zh) * 2020-08-07 2020-12-15 北京三快在线科技有限公司 搜索排序模型训练方法及装置、搜索排序方法及装置
WO2022041113A1 (en) * 2020-08-28 2022-03-03 Nokia Solutions And Networks Oy Methods, apparatuses, and computer readable media for software development, testing and maintenance
US11720346B2 (en) * 2020-10-02 2023-08-08 International Business Machines Corporation Semantic code retrieval using graph matching
US20220107799A1 (en) * 2020-10-02 2022-04-07 International Business Machines Corporation Semantic code retrieval using graph matching
CN112328743A (zh) * 2020-11-03 2021-02-05 北京嘀嘀无限科技发展有限公司 代码搜索方法、装置、可读存储介质和电子设备
CN112507065A (zh) * 2020-11-18 2021-03-16 电子科技大学 一种基于注释语义信息的代码搜索方法
CN112507065B (zh) * 2020-11-18 2022-07-12 电子科技大学 一种基于注释语义信息的代码搜索方法
CN113204679B (zh) * 2021-04-13 2023-08-01 武汉大学 一种代码查询模型的生成方法和计算机设备
CN113204679A (zh) * 2021-04-13 2021-08-03 武汉大学 一种代码查询模型的生成方法和计算机设备
CN113449076A (zh) * 2021-06-23 2021-09-28 武汉大学 基于全局信息和局部信息的代码搜索嵌入方法及装置
CN114186017A (zh) * 2021-11-02 2022-03-15 武汉大学 基于多维度匹配的代码搜索方法
CN114186017B (zh) * 2021-11-02 2024-02-27 武汉大学 基于多维度匹配的代码搜索方法
CN116028596A (zh) * 2023-03-27 2023-04-28 云筑信息科技(成都)有限公司 一种实体匹配分块的实现方法
CN116028596B (zh) * 2023-03-27 2023-08-18 云筑信息科技(成都)有限公司 一种实体匹配分块的实现方法
CN117349453A (zh) * 2023-12-04 2024-01-05 武汉大学 一种基于扩展代码的深度学习代码搜索模型的加速方法
CN117349453B (zh) * 2023-12-04 2024-02-23 武汉大学 一种基于扩展代码的深度学习代码搜索模型的加速方法

Also Published As

Publication number Publication date
CN111191002B (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
CN111191002B (zh) 一种基于分层嵌入的神经代码搜索方法及装置
CN111444726B (zh) 基于双向格子结构的长短时记忆网络的中文语义信息提取方法和装置
CN111159223B (zh) 一种基于结构化嵌入的交互式代码搜索方法及装置
WO2022007823A1 (zh) 一种文本数据处理方法及装置
US20210256390A1 (en) Computationally efficient neural network architecture search
Badjatiya et al. Attention-based neural text segmentation
CN111914067B (zh) 中文文本匹配方法及系统
US20220180073A1 (en) Linguistically rich cross-lingual text event embeddings
CN111738003B (zh) 命名实体识别模型训练方法、命名实体识别方法和介质
WO2017092380A1 (zh) 用于人机对话的方法、神经网络系统和用户设备
CN110096567B (zh) 基于qa知识库推理的多轮对话回复选择方法、系统
CN109376222B (zh) 问答匹配度计算方法、问答自动匹配方法及装置
CN109840287A (zh) 一种基于神经网络的跨模态信息检索方法和装置
CN114565104A (zh) 语言模型的预训练方法、结果推荐方法及相关装置
CN112232087B (zh) 一种基于Transformer的多粒度注意力模型的特定方面情感分析方法
CN109325242B (zh) 基于词对和翻译判断句子是否对齐的方法、装置及设备
CN112115716A (zh) 一种基于多维词向量下文本匹配的服务发现方法、系统及设备
CN113761868B (zh) 文本处理方法、装置、电子设备及可读存储介质
CN111145914B (zh) 一种确定肺癌临床病种库文本实体的方法及装置
CN113988071A (zh) 一种基于金融知识图谱的智能对话方法及装置、电子设备
CN112307048A (zh) 语义匹配模型训练方法、匹配方法、装置、设备及存储介质
CN111680529A (zh) 一种基于层聚合的机器翻译算法及装置
CN113326383B (zh) 一种短文本实体链接方法、装置、计算设备与存储介质
CN112667797B (zh) 自适应迁移学习的问答匹配方法、系统及存储介质
CN112579739A (zh) 基于ELMo嵌入与门控自注意力机制的阅读理解方法

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