【技术实现步骤摘要】
一种基于指定功能的代码自动生成方法及装置
[0001]本专利技术涉及人工智能
,尤其涉及一种基于指定功能的代码自动生成方法及装置。
技术介绍
[0002]在实际生产环境中,自动化代码生成对提高普通技术人员的工作效率、降低程序发生错误风险、节省开发成本等方面具有非常重要的意义。目前,随着人工智能技术的不断发展,现有技术在自动化文本生成方面已经取得了突破性的进展,如openAI提出的GPT2模型,在自动化新闻写作等方面展现出了强大的文本生成能力。
[0003]但是,现有的基于GPT2模型的文本生成技术,完全根据训练文本进行随机生成,在文本可控性、逻辑性等方面均无法真正满足指定用户的需求,难以应用于特定领域的生产应用,迫切需要改进。
[0004]目前,缺少一种针对特定产品的功能需求,自动生成文本可控性好、逻辑性强的高质量生产代码的代码自动生成方法。
技术实现思路
[0005]鉴于上述的分析,本专利技术实施例旨在提供一种基于指定功能的代码自动生成方法及装置,用以解决现有技术文本可控性、逻辑性无法真正满足指定用户需求的问题。
[0006]一方面,本专利技术实施例提供了一种基于指定功能的代码自动生成方法,包括如下步骤:
[0007]获取用户输入的指定功能的所有典型过程,设置每一典型过程对应的主要流程作为一个关键词,建立该指定功能对应的关键词序列;
[0008]对该指定功能对应的关键词序列和用户已输入的代码序列分别进行One-Hot编码,获得各自的编码结果;
[ ...
【技术保护点】
【技术特征摘要】
1.一种基于指定功能的代码自动生成方法,其特征在于,包括:获取用户输入的指定功能的所有典型过程,设置每一典型过程对应的主要流程作为一个关键词,建立该指定功能对应的关键词序列;对该指定功能对应的关键词序列和用户已输入的代码序列分别进行One-Hot编码,获得各自的编码结果;将关键词序列编码结果中的每个元素与用户选择的代码模板分别进行拼接,将每一拼接结果、上一次代码自动生成获得的该指定功能的历史代码作为一组数据,输入事先训练好的双路GPT2改进模型中,获得每组数据的输出概率;识别输出概率最大的前K组数据对应元素相应的关键词,作为备选关键词;将每一备选关键词、关键词序列编码结果的Embedding值、用户已输入的代码序列的编码结果作为一组数据,输入事先训练好的Logistic分类器中,获得每组数据的逻辑概率;选择最大逻辑概率对应的备选关键词作为用户已输入的代码序列后第一个代码,依次输出所有代码,完成代码自动生成。2.根据权利要求1所述的代码自动生成方法,其特征在于,所述双路GPT2改进模型为:将拼接结果、该指定功能的历史代码作为两路输入,输入各自的GPT2模型中,提取各自GPT2模型的第9~11层输出,对两路输出先点乘再求和,对求和结果进行归一化,将归一化结果输入GPT2模型第12层,获得输出概率。3.根据权利要求2所述的代码自动生成方法,其特征在于,获取用户输入的指定功能的所有典型过程,设置每一典型过程对应的主要流程作为一个关键词,建立该指定功能对应的关键词序列,进一步包括如下步骤:根据用户需求,对目标系统进行功能划分,获得所有子功能;对于每一子功能,获取其对应的所有典型过程,所述典型过程包括描述、循环、比较、排序、计算中的至少一种;提取每一典型过程对应的主要流程,作为一个关键词,建立该子功能所有关键词的集合,作为该子功能的关键词序列;获得所有子功能的关键词序列,建立包括各子功能以及对应关键词序列的数据库;获取用户输入的指定功能;将所述指定功能与上述数据库中的子功能进行匹配,提取匹配子功能对应的关键词序列,作为该指定功能对应的关键词序列。4.根据权利要求3所述的代码自动生成方法,其特征在于,对该指定功能对应的关键词序列和用户已输入的代码序列分别进行One-Hot编码,获得各自的编码结果,进一步包括如下步骤:提取所述数据库中的所有关键词,对提取结果进行去重处理,建立关键词表;根据建立的关键词表,对指定功能对应的关键词序列进行One-Hot编码,获得指定功能对应的关键词序列编码结果,并获得该编码结果的embedding值;其中,关键词表的关键词在指定功能对应的关键词序列中存在,设置为1,否则,设置为0,依次遍历关键词表每一元素;获取用户已输入的代码序列;根据所述关键词表,对用户已输入的代码序列进行One-Hot编码,获得用户已输入的代
码序列的编码结果。5.根据权利要求1-4之一所述的代码自动生成方法,其特征在于,通过下面步骤对所述双路GPT2改进模型和Logistic分类器进行训练:获取包括目标系统所有子功能的训练数据;每组训练数据包括一个子功能的关键词序列、用户已输入的代码序列、一种标准代码模板以及该子功能对应的历史代码,输出数据为标准代码模板对应的预期关键词;使用每组训练数据进行训练时,对该子功能对应的关键词序列和用户已输入的代码序列分别进行One-Hot编码,获得各自的编码结果;将关键词序列编码结果的每个元素与标准代码模板分别进行拼接,将每一拼接结果、上一次代码自动生成获得的该指定功能的历史代码作为一组数据,输入双路GPT2改进模型中,获得每组数据的输出概率;识别输出概率最大的前K组数据对应元素相应的关键词,作为备选关键词;将每一备选关键词、关键词序列编码结果的Embedding值、用户已输入的代码序列的编码结果作为一组数据,输入事先训练好的Logistic分类器中,获得每组数据的逻辑概率;识别最大逻辑概率对应的备选关键词,与预期关键词进行比较,判断二者是否一致,如果一致,训练结果y=1,否则,训练结果y=0;根据上述训练结果y,通过下面公式获得损失函数J
(i)
(θ,ε)式中,θ为双路GPT2改进模型参数,ε为Logistic分类器参数,u为常系数,i为当前迭代周期,m为最大迭代次数,y
(i)
为训练结果,h
(i)
为最大逻辑概率,J
(0)
(θ,ε)=0;将获得的损失函数与上一次迭代周期的损失函数进行比较;如果通过下面公式中的更新策略一对GPT2改进模型参数θ和Logistic分类器参数ε进行更新,获得更新结果θ'、ε'θ'=θ-α
θ
ε'=ε-α
ε
式中,α
θ
、α
ε
为预设更新步长;如果通过下面公式中的更新策略二对GPT2改进模型参数θ和Logistic分类器参数ε进行更新,获得更新结果θ'、ε'ε'=ε-α
ε
其中v
(t)
=β2v
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。