CN110750240A - 一种基于序列到序列模型的代码片段推荐方法 - Google Patents
一种基于序列到序列模型的代码片段推荐方法 Download PDFInfo
- Publication number
- CN110750240A CN110750240A CN201910801074.8A CN201910801074A CN110750240A CN 110750240 A CN110750240 A CN 110750240A CN 201910801074 A CN201910801074 A CN 201910801074A CN 110750240 A CN110750240 A CN 110750240A
- Authority
- CN
- China
- Prior art keywords
- code
- sequence
- query
- model
- recommendation
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于序列到序列模型的代码片段推荐方法,包括:收集、清洗代码片段和对应的查询;提取代码信息;对代码片段执行标识符替换操作;将标识符替换操作后的代码片段和对应的查询组合成<代码,查询>对的集合,并将其作为查询生成模型的训练集;利用序列到序列模型,进行查询生成模型的训练;对推荐代码库的代码片段生成查询;输入一个查询,执行查询和生成的查询之间的相似度计算;根据相似度计算结果,按照相似度得分从高到低的顺序构建一个生成的查询的列表,从推荐代码库中检索与列表中的查询相对应的代码片段,作为代码片段推荐结果。本发明方法优于现有的一些研究工作,能够有效提高代码片段推荐效果,提高软件开发效率。
Description
技术领域
本发明属于软件工程技术领域,尤其涉及一种利用程序静态分析、自然语言处理和神经网络技术,实现代码片段推荐的方法。
背景技术
在当前开源的软件生态环境下,海量代码及多种相关代码描述信息可以公开、免费地获取,而且,软件数量及规模正在迅速扩大,这也就为代码复用奠定了基础。Gabel等人对超过6000个开源项目的约4.2亿行代码进行了统计和研究,发现软件通常缺少唯一性(uniqueness),即程序代码经常是重复的,这也为代码复用提供了理论支撑。有效的代码复用可以提高开发者的开发效率,降低开发成本。
在实际软件开发过程中,代码推荐是一种常用的实现代码复用的方法。为了实现一个特有的代码功能,开发者通常会通过给定一个用户查询,从代码库中检索和复用已有的代码。
当前存在有很多的代码推荐方法,这些方法通常是基于信息检索技术来实现。Linsted等人提出了Sourcerer。它是一种基于信息检索的代码搜索工具,通过把代码的文本信息和结构信息相结合来实现代码推荐。McMillan等人提出了Portfolio。它通过关键字匹配和佩奇排名(PageRank)返回一个函数链。Lv等人提出了CodeHow,通过一个拓展的布尔模型把文本相似度和应用编程接口匹配相结合,来实现代码检索和推荐。
基于信息检索的代码检索和推荐方法存在的一个根本的问题在于自然语言查询的高层级的意图与代码的低层级的实现细节不匹配。两者之间或许并没有共同的词汇,同义词、近义词和语言结构,只是存在一定的语义相关性,而基于信息检索的方法并不能解决这个问题。
发明内容
针对于上述现有技术的不足,本发明的目的在于提供一种基于序列到序列模型的代码片段推荐方法,以解决现有技术中查询与代码之间语义差的问题;本发明的方法不再是直接计算查询和代码之间的相似度,而是首先训练一个查询生成模型用于为代码片段生成查询,然后,通过计算用户输入的查询与代码片段对应的生成查询之间的相似度,检索并推荐相关度高的代码片段给开发人员。实现了根据用户输入的查询,推荐相关的代码片段,能够很好地完成代码片段推荐任务,优于现有的一些研究工作,能够有效提高代码片段推荐效果,提高软件开发效率。
为达到上述目的,本发明采用的技术方案如下:
本发明的一种基于序列到序列模型的代码片段推荐方法,包括步骤如下:
(1)收集、清洗代码片段和对应的查询;
(2)对收集到的代码片段,利用抽象语法树解析方法,提取代码信息;
(3)根据上述步骤(2)中提取到的代码信息,对代码片段执行标识符替换操作;
(4)将经过上述步骤(3)标识符替换操作后的代码片段和对应的查询组合成<代码,查询>对的集合,并将其作为查询生成模型的训练集;
(5)对上述步骤(4)获取到的训练集,利用序列到序列模型,训练一个查询生成模型;
(6)运用上述步骤(5)获取到的查询生成模型,为推荐代码库中的代码片段生成查询,代码片段和生成的查询存在一一对应关系;
(7)输入一个查询,执行输入的查询和模型生成的查询之间的相似度计算;
(8)根据相似度计算结果,按照相似度得分从高到低的顺序构建一个生成的查询的列表,从推荐代码库中检索与列表中的查询相对应的代码片段,作为代码片段推荐结果。
进一步地,所述步骤(2)中,通过抽象语法树解析方法来提取代码信息,该抽象语法树是源代码的抽象语法结构的树状表现形式。
进一步地,所述步骤(2)中代码信息包括:方法名信息、内部方法声明信息、常量信息(包括字符串常量,数字常量和字符常量)、变量名信息、变量类型信息和方法调用名信息。
进一步地,所述步骤(4)中的<代码,查询>对体现代码片段和查询的对应关系,其作为查询生成模型的训练集而存在。
进一步地,所述步骤(5)中的序列到序列模型是一种用于神经网络机器翻译的模型,序列到序列模型包含两个部分:一部分为编码器,用于将输入序列映射到一个固定维度的向量;另一部分为解码器,用于对固定维度的向量进行解码,以输出目标序列。
本发明的有益效果:
本发明利用程序静态分析、自然语言处理、神经网络等技术,分析、实现自动化的代码片段推荐,能够很好地完成代码片段推荐任务,优于现有的一些研究工作,能够有效提高代码片段推荐效果,提高软件开发效率。
附图说明
图1是本发明方法实现的原理图。
具体实施方式
为了便于本领域技术人员的理解,下面结合实施例与附图对本发明作进一步的说明,实施方式提及的内容并非对本发明的限定。
参照图1所示,本发明的一种基于序列到序列模型的代码片段推荐方法,包括如下:
(1)数据收集和清洗
考虑到代码片段推荐的应用场景是开发人员输入查询,进而获得代码片段推荐结果,为了保证所收集的数据符合应用场景,确保数据的真实性和可靠性,本发明选择从Stack Overflow问答网站收集代码片段和对应的查询。
Stack Overflow问答网站上包含超过1790万个问题,考虑到本发明所提出的方法是针对Java编程语言相关的代码片段推荐,所以只将标签中包含Java的问题集合作为数据候选集,问题总量超过150万。
只做到这一步,所提取的数据候选集的质量依旧参差不齐。每个用户查询都对应着一系列的标签,以及不定数量的答案,而每个答案的主体部分则可能包含着不定数量的代码片段。
为了构建一个干净的数据集,需要针对每个查询,提取和筛选出与查询匹配的代码片段,构建高质量数据集。因此,本发明利用程序静态分析技术,尤其是抽象语法树解析技术,设计启发式规则,对数据候选集进行清洗,具体体现在以下几个方面:
11)答案主体中不包含代码片段;本发明的目标是做代码片段推荐,如果与查询相对应的答案中没有任何的代码片段,则,显而易见,此类答案不能作为数据集的一部分,则将其滤除。
12)答案主体中的代码片段不是Java代码;本发明是针对Java语言做代码片段推荐,不涉及其它编程语言,如Python,C++,SQL,甚至是伪代码等。因此,对不是由Java语言构成的代码片段进行过滤。
13)答案主体中的代码片段粒度不符合要求;本发明的代码推荐的最大粒度是单个Java方法,但答案主体中包含的代码片段可能是一个完整的Java类、包含两个或更多的Java方法、构造函数或者静态代码块等。这些代码片段虽然都是Java代码,但与本发明的代码推荐粒度不符,因此,此类代码片段也会被滤除。
14)答案主体中的代码片段包含不属于JDK(Java Development Kit)的方法调用;当前存在着海量的Jar包,把所有相关的Jar包中包含的方法调用囊括到一个代码推荐方法中务必会使推荐方法的准确性和可靠性大大降低,而JDK是Java软件开发必不可少的软件开发工具包,且功能强大,因此,本发明出于代码推荐的准确率和可靠性的考量,针对的是与JDK相关的代码推荐,对于包含不属于JDK的方法调用的代码片段也会被滤除。
15)查询不是一个具体的编程任务;一个查询,由于其开放性和自由性,所涉及的可能并不是一个具体的Java编程任务,而是,询问不同点、原因等等,例如,“What is thedifference between an int and an Integer in Java and C#?”,“Why can't I use atry block around my super()call?”。这类查询均不涉及一个具体的编程任务,均不可作为有效数据集的一部分而存在,为此,人工对数据进行了研究和总结,设计了一些启发式规则,进而实现对此类冗余数据进行过滤和清洗。
(2)代码信息提取
对收集的代码片段,利用抽象语法树解析技术,提取代码信息。代码信息包括方法名信息,内部方法声明信息,常量信息(包括字符串常量,数字常量和字符常量),变量名信息,变量类型信息和方法调用名信息。
代码信息的提取方法是利用Eclipse JDT(Java Development Toolkit)的抽象语法树模块对代码片段进行抽象语法树解析。Eclipse JDT是一个开源Java开发工具;其提供了丰富的应用程序编程接口(API),旨在实现代码解析的任务。通过调用相关API,抽象语法树中的节点可以被精确定位,并且,代码信息可以轻松地获取到,并将所提取的信息与对应的代码片段形成映射,一一对应,至此,代码信息提取工作完成。
(3)代码标识符替换
根据上述步骤提取到的代码信息,可以对代码片段执行标识符替换操作。由于标识符命名的开放性,当代码片段的量级达到一定程度时,则代码片段的词汇表的数量会很自然地超出一个合理的词汇表的大小。因此,合理的词汇表压缩方法是极其有必要的。
为了合理地对词汇表进行压缩,本发明采用了一种标识符替换方法来把代码的词汇表大小压缩到一个合理的范围内。具体而言,利用从Java方法中提取到的代码信息将代码片段中的一些标识符替换为一些特定的词汇。首先,计算所有代码片段中每个词汇的出现频次,并选取出现频次最高的30,000个词汇作为代码片段的初始词汇表;其次,根据初始词汇表以及提取到道代码信息对代码片段执行标识符替换操作。标识符替换操作可以被分为6类,具体包括方法名替换、常量替换、变量名替换、类型名替换、方法调用名替换以及内部方法声明替换。相应地,引入了一些特定的词汇作为替代词汇,标识符替换类别和引入的特定词汇如表1所示,其中,k是一个从0开始计数的正整数。表1如下:
表1
具体而言,考虑到对每一个Java方法而言,只存在唯一的一个方法名,因此,引入一个固定的词汇METHODNAME作为方法名的替代词汇。考虑到去区分不同的字符串常量、字符常量和数字常量意义不大,因此,分别引入特定的词汇STRINGLITERAL、CHARACTERLITERAL和NUMBERLITERAL来作为字符串常量、字符常量和数字常量的替换词汇。至于其它的特定词汇都包含一个变量k,用来表示当前Java方法中出现的特定类别的第k个标识符。
经过标识符替换操作后,超出初始词汇表的标识符均会被替换为表1中引入的特定词汇。进而,所有代码片段的词汇表大小就会被压缩到一个合理的范围内,用于构建训练查询生成模型的数据集。
(4)训练集构建
将经过上述步骤过滤后的代码片段和对应的查询组合成<代码,查询>对的集合,并将其作为查询生成模型的训练集。<代码,查询>对是为了体现代码片段和查询的一一对应关系。
(5)查询生成模型训练
通过上述步骤所获取到的训练集,利用序列到序列模型,训练一个查询生成模型。序列到序列模型已经被广泛应用于各种神经网络机器翻译(Neural MachineTranslation,NMT)任务中。
大体而言,序列到序列模型可以简单地分为两个循环神经网络(RecurrentNeural Network,RNN)结构,即一个编码器,一个解码器。编码器负责把输入序列通过非线性变化映射到一个固定维度向量中去,而解码器则是把固定维度的向量映射到相应的目标序列。当输入序列较长时,这个中间向量难以存储足够的信息,就成为序列到序列模型的一个瓶颈,因此,引入注意力机制(Attention Mechanism)对编码器每个隐藏状态做加权处理,允许解码器随时查阅输入序列中的部分单词或片段,因此不再需要在中间向量中存储所有信息。本发明中选用长短期记忆网络(Long Short-Term Memory,LSTM)——循环神经网络的一种变体,作为序列到序列模型的基本神经单元。
该模型通过利用Tensorflow框架扩展序列到序列模型,并用Python语言加以实现。超参数的确定是根据模型在验证集上的性能而来的。模型训练过程中,使用随机梯度下降(SGD)来实现参数的训练和更新。将LSTM隐藏状态的维度设置为512,词嵌入的维度设置为12,minibatch大小设置为100。学习率设置为0.99,影响因子设为0.8。参数梯度的上限设置为5。为避免过拟合现象的发生,把dropout参数设置为0.3。
(6)查询生成
运用上述步骤获取到的查询生成模型,为推荐代码库中的代码片段生成查询,代码片段和生成的查询存在一一对应关系。由此,每个代码片段也就存在了一个与之匹配的由模型生成的查询。推荐代码库中的元素也就以<代码片段,生成的查询>对的形式存在
(7)相似度计算
用户输入一个查询,执行用户输入的查询和模型生成的查询之间的相似度计算。
由于推荐代码库中每个代码片段都有了与之对应的生成的查询,因此,用户查询与代码之间的相似度,可以转化为计算生成的查询与用户查询之间的相似度。在计算相似度之前,结合较为流行的Stanford POS Tagger(词性标注器)对生成的查询和用户查询执行小写化、停止词删除和词干提取等操作,对查询执行数据预处理操作。在此基础上,本发明中采用TF-IDF(Term Frequency-Inverse Document Frequency)来进行两者之间相似度的计算。Lucene是一套用于全文检索和搜寻的开源程序库,由Apache软件基金会支持和提供。Lucene提供了一个简单但却强大的API库,能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放源代码工具,使用Lucene提供的TF-IDF算法来进行相似度计算。
(8)代码片段推荐
根据上述步骤的相似度计算结果,按照相似度得分从高到低的顺序构建一个模型生成的查询的列表,由于代码片段和生成的查询之间存在对应关系,则从推荐代码库中检索与列表中查询相对应的代码片段,作为代码片段推荐结果。
综上所述,本发明利用程序静态分析、序列到序列模型以及自然语言处理等技术,实现代码片段的自动推荐。
从Stack Overflow官方的数据仓库下载了原始数据,解压后数据集的大小超过70G,与Java相关的问题总数超过150万通过数据清洗操作,最终,获得了48003条有效数据,每条数据中问题(即查询)和答案(即代码片段)一一对应。接着按照9:1的比例将数据划分为训练集和测试集,即训练集包含43203条,测试集包含4800条数据。按照Iyer等人的方法,从测试集中随机抽取200条数据用来评估代码片段推荐方法的性能。
使用两种度量指标MRR和Hit@K来评估代码片段推荐方法的性能。多次重复执行此实验,来确保实验结果的真实性和可靠性。
将本发明提出的代码片段推荐方法命名为DeepCR。为了检测DeepCR在代码推荐性能上的有效性,把DeepCR与传统的信息检索方法BM25和TF-IDF进行对比,参见表2。BM25和TF-IDF是两个比较具有代表性的计算文本相似度的算法。考虑到代码片段和查询之间的语义差,在用传统的信息检索方法计算代码片段和查询之间的相似度时,对代码片段中的标识符做了驼峰式命名法分词、小写化、停止词去除、词干提取等操作。表2如下:
表2
表2呈现了所提及到的三种不同的代码推荐方法以MRR为度量指标重复执行20次的实验结果。DeepCR尝试训练查询生成模型为代码片段生成查询,以此来消除代码和查询之间的语义差。从表2可以得知,DeepCR的代码推荐性能优于TF-IDF算法和BM25算法。具体而言,DeepCR的MRR得分相较于TF-IDF算法提升了0.22,相较于BM25算法提升了0.18,由此可见,DeepCR代码推荐方法的有效性。
表3呈现了所提及到的三种不同的代码推荐方法以Hit@K(K=1,3,5,10)为度量指标重复执行20次的实验结果的平均值。表3如下:
表3
从表3可以得知,BM25的代码推荐性能略优于TF-IDF算法,而DeepCR的Hit@K得分相较于TF-IDF和BM25算法均有明显提升,DeepCR在Hit@1的得分达到了38.25%,相较于TF-IDF和BM25,分别提升了23.17%和19.12%,由此可见DeepCR代码片段推荐方法的有效性。能够有效提高代码推荐效果,为开发人员提供精准的代码片段推荐。
本发明具体应用途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进,这些改进也应视为本发明的保护范围。
Claims (5)
1.一种基于序列到序列模型的代码片段推荐方法,其特征在于,包括步骤如下:
(1)收集、清洗代码片段和对应的查询;
(2)对收集到的代码片段,利用抽象语法树解析方法,提取代码信息;
(3)根据上述步骤(2)中提取到的代码信息,对代码片段执行标识符替换操作;
(4)将经过上述步骤(3)标识符替换操作后的代码片段和对应的查询组合成<代码,查询>对的集合,并将其作为查询生成模型的训练集;
(5)对上述步骤(4)获取到的训练集,利用序列到序列模型,训练一个查询生成模型;
(6)运用上述步骤(5)获取到的查询生成模型,为推荐代码库中的代码片段生成查询;
(7)输入一个查询,执行输入的查询和模型生成的查询之间的相似度计算;
(8)根据相似度计算结果,按照相似度得分从高到低的顺序构建一个生成的查询的列表,从推荐代码库中检索与列表中的查询相对应的代码片段,作为代码片段推荐结果。
2.根据权利要求1所述的基于序列到序列模型的代码片段推荐方法,其特征在于,所述步骤(2)中通过抽象语法树解析方法来提取代码信息,该抽象语法树是源代码的抽象语法结构的树状表现形式。
3.根据权利要求1所述的基于序列到序列模型的代码片段推荐方法,其特征在于,所述步骤(2)中代码信息包括:方法名信息、内部方法声明信息、常量信息、变量名信息、变量类型信息和方法调用名信息。
4.根据权利要求1所述的基于序列到序列模型的代码片段推荐方法,其特征在于,所述步骤(4)中的<代码,查询>对体现代码片段和查询的对应关系,其作为查询生成模型的训练集而存在。
5.根据权利要求1所述的基于序列到序列模型的代码片段推荐方法,其特征在于,所述步骤(5)中的序列到序列模型是一种用于神经网络机器翻译的模型,序列到序列模型包含两个部分:一部分为编码器,用于将输入序列映射到一个固定维度的向量;另一部分为解码器,用于对固定维度的向量进行解码,以输出目标序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910801074.8A CN110750240A (zh) | 2019-08-28 | 2019-08-28 | 一种基于序列到序列模型的代码片段推荐方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910801074.8A CN110750240A (zh) | 2019-08-28 | 2019-08-28 | 一种基于序列到序列模型的代码片段推荐方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110750240A true CN110750240A (zh) | 2020-02-04 |
Family
ID=69275923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910801074.8A Pending CN110750240A (zh) | 2019-08-28 | 2019-08-28 | 一种基于序列到序列模型的代码片段推荐方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110750240A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111444708A (zh) * | 2020-04-01 | 2020-07-24 | 山东汇贸电子口岸有限公司 | 一种基于使用场景的sql语句智能补全方法 |
CN111459491A (zh) * | 2020-03-17 | 2020-07-28 | 南京航空航天大学 | 一种基于树形神经网络的代码推荐方法 |
CN111582492A (zh) * | 2020-04-13 | 2020-08-25 | 清华大学 | 序列推荐模型的解离化自监督学习方法及装置 |
CN112051986A (zh) * | 2020-08-26 | 2020-12-08 | 西安电子科技大学 | 基于开源知识的代码搜索推荐装置及方法 |
CN112241262A (zh) * | 2020-12-07 | 2021-01-19 | 中国科学院软件研究所 | 一种面向软件定义卫星的可复用代码提取、分析与检索方法与装置 |
CN112306497A (zh) * | 2020-11-03 | 2021-02-02 | 高炼 | 一种将自然语言转化为程序代码的方法及系统 |
CN112860879A (zh) * | 2021-03-08 | 2021-05-28 | 南通大学 | 一种基于联合嵌入模型的代码推荐方法 |
CN112966095A (zh) * | 2021-04-06 | 2021-06-15 | 南通大学 | 一种基于jean的软件代码推荐方法 |
CN113204679A (zh) * | 2021-04-13 | 2021-08-03 | 武汉大学 | 一种代码查询模型的生成方法和计算机设备 |
CN114864002A (zh) * | 2022-04-28 | 2022-08-05 | 广西科学院 | 一种基于深度学习的转录因子结合位点识别方法 |
RU2798362C2 (ru) * | 2020-10-06 | 2023-06-21 | Общество С Ограниченной Ответственностью «Яндекс» | Способ и сервер для обучения нейронной сети формированию текстовой выходной последовательности |
US11984113B2 (en) | 2020-10-06 | 2024-05-14 | Direct Cursus Technology L.L.C | Method and server for training a neural network to generate a textual output sequence |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045875A (zh) * | 2015-07-17 | 2015-11-11 | 北京林业大学 | 个性化信息检索方法及装置 |
CN105159715A (zh) * | 2015-09-01 | 2015-12-16 | 南京大学 | 一种基于抽象语法树节点变更抽取的Python代码变更提示方法 |
CN107506414A (zh) * | 2017-08-11 | 2017-12-22 | 武汉大学 | 一种基于长短期记忆网络的代码推荐方法 |
CN108388425A (zh) * | 2018-03-20 | 2018-08-10 | 北京大学 | 一种基于lstm自动补全代码的方法 |
CN109783079A (zh) * | 2018-12-21 | 2019-05-21 | 南京航空航天大学 | 一种基于程序分析和循环神经网络的代码注释生成方法 |
-
2019
- 2019-08-28 CN CN201910801074.8A patent/CN110750240A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045875A (zh) * | 2015-07-17 | 2015-11-11 | 北京林业大学 | 个性化信息检索方法及装置 |
CN105159715A (zh) * | 2015-09-01 | 2015-12-16 | 南京大学 | 一种基于抽象语法树节点变更抽取的Python代码变更提示方法 |
CN107506414A (zh) * | 2017-08-11 | 2017-12-22 | 武汉大学 | 一种基于长短期记忆网络的代码推荐方法 |
CN108388425A (zh) * | 2018-03-20 | 2018-08-10 | 北京大学 | 一种基于lstm自动补全代码的方法 |
CN109783079A (zh) * | 2018-12-21 | 2019-05-21 | 南京航空航天大学 | 一种基于程序分析和循环神经网络的代码注释生成方法 |
Non-Patent Citations (4)
Title |
---|
RENLEI2293: ""NLP理论基础和实践(进阶)task-06"", 《HTTPS://BLOG.CSDN.NET/QQ_41918762/ARTICLE/DETAILS/99763739》 * |
SUSHIL BAJRACHARYA,JOEL OSSHER,CRISTINA LOPES: "《An infrastructure for large-scale collection and analysis of》", 《SCIENCE OF COMPUTER PROGRAMMING》 * |
李楠,陶宏才: "《一种新的融合BM25与文本特征的新闻摘要算法》", 《成都信息工程大学学报》 * |
高扬: "《人工智能与机器人先进技术丛书 智能摘要与深度学习》", 30 April 2019, 北京理工大学出版社 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459491A (zh) * | 2020-03-17 | 2020-07-28 | 南京航空航天大学 | 一种基于树形神经网络的代码推荐方法 |
CN111444708A (zh) * | 2020-04-01 | 2020-07-24 | 山东汇贸电子口岸有限公司 | 一种基于使用场景的sql语句智能补全方法 |
CN111582492B (zh) * | 2020-04-13 | 2023-02-17 | 清华大学 | 序列推荐模型的解离化自监督学习方法及装置 |
CN111582492A (zh) * | 2020-04-13 | 2020-08-25 | 清华大学 | 序列推荐模型的解离化自监督学习方法及装置 |
CN112051986A (zh) * | 2020-08-26 | 2020-12-08 | 西安电子科技大学 | 基于开源知识的代码搜索推荐装置及方法 |
US11984113B2 (en) | 2020-10-06 | 2024-05-14 | Direct Cursus Technology L.L.C | Method and server for training a neural network to generate a textual output sequence |
RU2798362C2 (ru) * | 2020-10-06 | 2023-06-21 | Общество С Ограниченной Ответственностью «Яндекс» | Способ и сервер для обучения нейронной сети формированию текстовой выходной последовательности |
CN112306497A (zh) * | 2020-11-03 | 2021-02-02 | 高炼 | 一种将自然语言转化为程序代码的方法及系统 |
CN112306497B (zh) * | 2020-11-03 | 2024-04-26 | 高炼 | 一种将自然语言转化为程序代码的方法及系统 |
CN112241262A (zh) * | 2020-12-07 | 2021-01-19 | 中国科学院软件研究所 | 一种面向软件定义卫星的可复用代码提取、分析与检索方法与装置 |
CN112860879A (zh) * | 2021-03-08 | 2021-05-28 | 南通大学 | 一种基于联合嵌入模型的代码推荐方法 |
CN112966095A (zh) * | 2021-04-06 | 2021-06-15 | 南通大学 | 一种基于jean的软件代码推荐方法 |
CN113204679A (zh) * | 2021-04-13 | 2021-08-03 | 武汉大学 | 一种代码查询模型的生成方法和计算机设备 |
CN113204679B (zh) * | 2021-04-13 | 2023-08-01 | 武汉大学 | 一种代码查询模型的生成方法和计算机设备 |
CN114864002A (zh) * | 2022-04-28 | 2022-08-05 | 广西科学院 | 一种基于深度学习的转录因子结合位点识别方法 |
CN114864002B (zh) * | 2022-04-28 | 2023-03-10 | 广西科学院 | 一种基于深度学习的转录因子结合位点识别方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110750240A (zh) | 一种基于序列到序列模型的代码片段推荐方法 | |
Dohare et al. | Text summarization using abstract meaning representation | |
Mills et al. | Are bug reports enough for text retrieval-based bug localization? | |
Wong et al. | Boosting bug-report-oriented fault localization with segmentation and stack-trace analysis | |
CN109522011B (zh) | 一种基于编程现场上下文深度感知的代码行推荐方法 | |
CN110569353A (zh) | 一种基于注意力机制的Bi-LSTM的标签推荐方法 | |
CN111368042A (zh) | 智能问答方法、装置、计算机设备及计算机存储介质 | |
Zhou et al. | Lancer: Your code tell me what you need | |
CN104573028A (zh) | 实现智能问答的方法和系统 | |
Lawrie et al. | Quantifying identifier quality: an analysis of trends | |
CN108595165A (zh) | 一种基于代码中间表示的代码补全方法、装置及存储介质 | |
Heyman et al. | Neural code search revisited: Enhancing code snippet retrieval through natural language intent | |
US11403304B2 (en) | Automatically curating existing machine learning projects into a corpus adaptable for use in new machine learning projects | |
Cheng et al. | A similarity integration method based information retrieval and word embedding in bug localization | |
CN112000929A (zh) | 一种跨平台数据分析方法、系统、设备及可读存储介质 | |
Liu et al. | Codegen4libs: A two-stage approach for library-oriented code generation | |
Peng et al. | Iterative context-aware feature location (NIER track) | |
JP2023147236A (ja) | 説明により強化された機械学習パイプライン | |
CN116304347A (zh) | 一种基于群智知识的Git命令推荐方法 | |
EP3965024A1 (en) | Automatically labeling functional blocks in pipelines of existing machine learning projects in a corpus adaptable for use in new machine learning projects | |
CN114969347A (zh) | 缺陷查重实现方法、装置、终端设备及存储介质 | |
Lakkundi et al. | GE852: A dataset of 852 game engines | |
Nguyen et al. | Using topic model to suggest fine-grained source code changes | |
CN113779981A (zh) | 一种基于指针网络和知识图谱的推荐方法及装置 | |
CN111309853B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200204 |