针对代码仓库基于transition转换系统的commit查询语言自动生成方法技术方案

技术编号:37578973 阅读:19 留言:0更新日期:2023-05-15 07:54
本发明专利技术涉及计算机领域,本发明专利技术公开一种针对代码仓库的基于transition转换系统的commit查询语言自动生成方法,commit查询语言的语法指定相对应的抽象语法描述语言ASDL,在ASDL的指导下构建对应的转换系统,一系列树构造操作完成对自然语言输入到抽象语法树AST的转化,根据commit查询语言的语法指定对应的转化函数,另一部分完成对抽象语法树AST到commit查询语言的转化,实现commit查询语言自动生成。以抽象语法树AST为中间表示,完成自然语言到领域特定语言commit查询语言的转换生成,节省学习的时间和精力,有效地帮助编程人员完成搜索查询操作,更好完成开发任务。更好完成开发任务。更好完成开发任务。

【技术实现步骤摘要】
针对代码仓库基于transition转换系统的commit查询语言自动生成方法


[0001]本专利技术涉及计算机
,具体是一种针对代码仓库基于transition转换系统的commit查询语言自动生成方法。

技术介绍

[0002]随着当今社会互联网的飞速发展和网络技术水平的不断提升,市场对编程的需求也在不断增长,编程人员在开发一个软件时,通常会应用到较多已有的代码模块,对其进行一些更改和组合后完成符合要求的代码项目。因此,代码仓库因势而生,编程人员可以通过代码仓库更好地调用仓库中已有的代码段,极大地提高自身编程效率和代码利用率。此外,代码仓库可以很好地管理编程人员提交的代码,进行有效的存储,对代码编程和软件工程的发展都有很大程度的进步意义。
[0003]在编程人员利用代码仓库进行编程开发时,存在的常见问题是:在搜索查询所需的commit时,输入与自己期望获取commit记录相匹配的查询,代码仓库返回给编程人员的结果可能与其所期望的目标有所差距,很有可能存在一些不相关的无用信息,很难得到想要的commit记录。想要获取匹配程度较高的commit记录,编程人员需要根据commit查询语言的语法,输入相匹配的commit查询语言,然而commit查询语言语法较为复杂,需要进行对应的学习才能较好地应用这一专项领域的查询语言,使得编程人员对代码仓库的应用效率有很大影响,造成时间、精力等方面的不必要浪费。因此,提出一种方法实现从自然语言到commit查询语言的生成,对当前的代码仓库发展是非常重要的。
[0004]在文件CN 112988785 A中,公开了基于语言模型编码和多任务解码的SQL转换方法及系统,是基于transformer网络、预训练语言模型和多任务解码器实现的自然语言向SQL查询语言的转换,该转换方法及系统在使用的时候,速度较慢,效率较低。

技术实现思路

[0005]为了解决上述问题,本专利技术公开了一种针对代码仓库基于transition转换系统的commit查询语言自动生成方法。
[0006]利用抽象语法树AST作为自然语言和commit查询语言的中间表示,以transition转换系统为基础,在为commit查询语言构造的抽象语法描述语言ASDL的指导下,实现自然语言到抽象语法树AST的转换生成,在commit查询语言语法的指导下,实现从抽象语法树AST到commit查询语言的转换生成,从而完成commit查询语言自动生成,在编程人员进行搜索查询时,可以输入相对应的自然语言,使其能够直接获得与预期目标匹配度更高的commit结果,省去了学习commit查询语言语法和详细使用方法的时间和精力,提高代码仓库的搜索、管理和使用效率。
[0007]本专利技术的技术方案为:针对代码仓库基于transition转换系统的commit查询语言自动生成方法,包括下列步骤:
步骤1:首先根据领域特定语言commit查询语言的语法,为其构建相对应的抽象语法描述语言ASDL,用作后续转换系统中自然语言转化为抽象语法树AST的语法指导;步骤2:以JSON格式为数据存储格式,自然语言为问题,commit查询语言为答案,构造训练所需的数据集,用于对后续模型的训练;步骤3:以commit查询语言匹配的抽象语法描述语言ASDL为指导,构造适用于commit查询语言的transition转换系统,并利用转换系统的第一部分将输入的自然语言通过一系列树构造操作转化为对应的抽象语法树AST并保存;步骤4:在转换系统的基础上,使用一个具有增强循环连接的神经编码器

解码器网络来参数化解析器P,用于判断计算AST抽象语法树生成的系列操作的概率,其编码器和解码器都是一个标准的双向长短期记忆网络,即LSTM网络;步骤5:获取保存的抽象语法树AST,应用适用于commit查询语言的transition转换系统,根据适用于commit查询语言语法的转化函数,将抽象语法树AST转化为commit查询语言,完成commit查询语言的自动生成;步骤6:通过步骤2)中构建的数据集对模型的训练,将模型输出的答案与数据集中的commit查询语言答案相比较,获取对应的commit查询语言性能评估结果。
[0008]其中,步骤1中根据代码仓库源代码中的commit查询语言语法定义文件CommitQuery.g4中对其语法的描述,为其构建相匹配的抽象语法描述语言ASDL,ASDL中有类型types和构造函数constructors两个基本组成,一个复合类型由该类型下的构造函数集定义,构造函数使用其字段指定特定类型的语言构造,复合类型cond_expr下的Conditions构造函数表示查询语句表达式,有两个字段:op和value,一个AST由多个构造函数组成,树上的每个节点对应于构造函数constructors中的一个类型typed字段,根节点除外,根节点表示根构造函数,根据字段的基数,节点可以保存一个或多个构造函数作为其值。
[0009]其中,步骤2中以JSON格式为数据存储格式,以自然语言为问题,commit查询语言为答案,构造训练所需的数据集,例如:{ "question":"搜索从上个礼拜之后我的提交" "commit": "after(last week) committed

by

me" "id":1},每个JSON数据另外包含id序号,构造完成后用于后续对模型的训练。
[0010]其中,步骤3中以与commit查询语言匹配的抽象语法描述语言ASDL为指导,应用适用于commit查询语言的transition转换系统,通过一系列树构造操作,从一个具有单个根节点的初始派生开始,自上而下,自左向右地遍历构建对应的抽象语法树AST,其中每个时间步都可能会触发新的扩展派生来不断完善当前的AST,派生动作分为三个:APPLYCONSTR[c],REDUCE和GENTOKEN[v],当衍生上没有扩展派生出新的前沿域frontier field,即代表已将输入的自然语言转化为对应的抽象语法树AST并保存。
[0011]其中,步骤4中在转换系统的基础上,使用一个具有增强循环连接的神经编码器

解码器网络来参数化解析器P,用于判断计算AST抽象语法树生成的系列操作的概率,其编码器和解码器都是一个标准的双向长短期记忆网络,即LSTM网络,编码器将n个令token的输入话语x, x[1..n]编码为向量表示h[1..n]。
[0012]其中,步骤5首先获取保存的抽象语法树AST,应用适用于commit查询语言的transition转换系统,根据query.py中定义的适用于commit查询语言语法的转化函数,其
中commit查询语言的基本语法为' '* criteria (' '+ criteria)* ' '* EOF,criteria为查询条件,其内容包含after、before、committer、author、path、message,将本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.针对代码仓库基于transition转换系统的commit查询语言自动生成方法,其特征在于,包括下列步骤:步骤1:首先根据领域特定语言commit查询语言的语法,为其构建相对应的抽象语法描述语言ASDL,用作后续转换系统中自然语言转化为抽象语法树AST的语法指导;步骤2:以JSON格式为数据存储格式,自然语言为问题,commit查询语言为答案,构造训练所需的数据集,用于对后续模型的训练;步骤3:以commit查询语言匹配的抽象语法描述语言ASDL为指导,构造适用于commit查询语言的transition转换系统,并利用转换系统的第一部分将输入的自然语言通过一系列树构造操作转化为对应的抽象语法树AST并保存;步骤4:在转换系统的基础上,使用一个具有增强循环连接的神经编码器

解码器网络来参数化解析器P,用于判断计算AST抽象语法树生成的系列操作的概率,其编码器和解码器都是一个标准的双向长短期记忆网络,即LSTM网络;步骤5:获取保存的抽象语法树AST,应用适用于commit查询语言的transition转换系统,根据适用于commit查询语言语法的转化函数,将抽象语法树AST转化为commit查询语言,完成commit查询语言的自动生成;步骤6:通过步骤2中构建的数据集对模型的训练,将输出的答案与查询语言答案相比较,获取对应的commit查询语言性能评估结果。2.根据权利要求1所述的针对代码仓库基于transition转换系统的commit查询语言自动生成方法,其特征在于:所述步骤1中根据代码仓库源代码中的commit查询语言语法定义文件CommitQuery.g4中对其语法的描述,为其构建相匹配的抽象语法描述语言ASDL,ASDL中有类型types和构造函数constructors两个基本组成,一个复合类型由该类型下的构造函数集定义,构造函数使用其字段指定特定类型的语言构造,复合类型cond_expr下的Conditions构造函数表示查询语句表达式,有两个字段:op和value,一个AST由多个构造函数组成,树上的每个节点对应于构造函数constructors中的一个类型typed字段,根节点除外,根节点表示根构造函数,根据字段的基数,节点可以...

【专利技术属性】
技术研发人员:吴朝阳张乔乔刘志兰胡天昊姜一鸣张卫丰
申请(专利权)人:南京邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1