CN117707501A - 基于ai与大数据的代码自动生成方法及系统 - Google Patents

基于ai与大数据的代码自动生成方法及系统 Download PDF

Info

Publication number
CN117707501A
CN117707501A CN202311746070.7A CN202311746070A CN117707501A CN 117707501 A CN117707501 A CN 117707501A CN 202311746070 A CN202311746070 A CN 202311746070A CN 117707501 A CN117707501 A CN 117707501A
Authority
CN
China
Prior art keywords
code
demand
semantic
feature vector
feature
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
CN202311746070.7A
Other languages
English (en)
Other versions
CN117707501B (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.)
Guangzhou Qingqin Network Technology Co ltd
Original Assignee
Guangzhou Qingqin Network Technology Co ltd
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 Guangzhou Qingqin Network Technology Co ltd filed Critical Guangzhou Qingqin Network Technology Co ltd
Priority to CN202311746070.7A priority Critical patent/CN117707501B/zh
Publication of CN117707501A publication Critical patent/CN117707501A/zh
Application granted granted Critical
Publication of CN117707501B publication Critical patent/CN117707501B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

  • Machine Translation (AREA)

Abstract

本申请涉及智能生成技术领域,其具体地公开了一种基于AI与大数据的代码自动生成方法及系统,其利用深度学习算法,分别对开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档进行充分的语义理解,使计算机学习到程序中的语义信息和结构信息,识别出企业的编程规则和技术组件,以及代码需求语义特征,并基于三者的融合特征来生成既符合需求又具有企业编码特点的代码。这样,能够提高生成代码的质量,并提高开发效率和代码可维护性。

Description

基于AI与大数据的代码自动生成方法及系统
技术领域
本申请涉及智能生成技术领域,且更为具体地,涉及一种基于AI与大数据的代码自动生成方法及系统。
背景技术
如何有效地提高软件开发的效率和质量,一直是软件工程领域关心的问题。随着科技的快速发展,人工智能(AI)和大数据技术已经逐渐渗透到各个行业领域,其中包括软件开发。自动化写代码技术是近年来软件开发领域的一个热门话题,它可以通过智能算法和数据分析技术自动生成代码,达到根据用户的需求机器自动编程的目的。这样,能够极大程度地减轻了程序员的开发负担,使得程序员可以更加关注于程序的设计工作,提高开发效率和代码质量。
现有的开发工具虽然在一定程度上能够减轻开发者的负担,但是在面对海量的代码和复杂的编程规则时,往往难以保证代码的质量和效率。并且,企业内部的不同开发人员在编写代码时往往遵循制定编码规范,来提高代码的可读性和可维护性,减少团队成员之间的理解障碍,使代码更易于阅读、调试和修改。而现有的开发工具往往无法根据企业内部编程规则和技术组件来进行编码,使得生成的代码不利于理解和后续维护。
因此,期待一种基于AI与大数据的代码自动生成方法及系统。
发明内容
为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种基于AI与大数据的代码自动生成方法及系统,其利用深度学习算法,分别对开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档进行充分的语义理解,使计算机学习到程序中的语义信息和结构信息,识别出企业的编程规则和技术组件,以及代码需求语义特征,并基于三者的融合特征来生成既符合需求又具有企业编码特点的代码。这样,能够提高生成代码的质量,并提高开发效率和代码可维护性。
相应地,根据本申请的一个方面,提供了一种基于AI与大数据的代码自动生成方法,其包括:
获取开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档;
分别对所述开源代码数据库、所述企业内部的编码规范说明文档和所述代码需求文档进行语义理解以得到代码语义特征向量、编码规范语义特征向量和需求特征向量;
基于高斯密度图融合所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量以得到需求代码特征矩阵;
基于所述需求代码特征矩阵生成符合需求的代码。
在上述基于AI与大数据的代码自动生成方法中,对所述开源代码数据库进行语义理解以得到代码语义特征向量,包括:将所述开源代码数据库通过基于上下文编码器的程序语法特征提取器以得到多个Token语义特征向量;将所述多个Token语义特征向量通过双向长短期记忆神经网络模型以得到所述代码语义特征向量。
在上述基于AI与大数据的代码自动生成方法中,将所述开源代码数据库通过基于上下文编码器的程序语法特征提取器以得到多个Token语义特征向量,包括:将所述开源代码数据库进行分词处理以得到多个Token;使用所述程序语法特征提取器的词嵌入层的可学习嵌入矩阵对所述多个Token中各个Token分别进行词嵌入编码以得到多个Token嵌入向量;使用所述程序语法特征提取器的基于转换器的Bert模型对所述多个Token嵌入向量进行基于全局的上下文语义编码以得到多个Token语义特征向量。
在上述基于AI与大数据的代码自动生成方法中,对所述企业内部的编码规范说明文档进行语义理解以得到编码规范语义特征向量,包括:将所述企业内部的编码规范说明文档通过基于上下文编码器的编码规范语义理解器以得到所述编码规范语义特征向量。
在上述基于AI与大数据的代码自动生成方法中,将所述企业内部的编码规范说明文档通过基于上下文编码器的编码规范语义理解器以得到所述编码规范语义特征向量,包括:将所述企业内部的编码规范说明文档进行分词处理以得到多个编码规范说明词;使用所述编码规范语义理解器的词嵌入层的可学习嵌入矩阵对所述多个编码规范说明词中各个编码规范说明词分别进行词嵌入编码以得到多个编码规范说明词嵌入向量;使用所述编码规范语义理解器的基于转换器的Bert模型对所述多个编码规范说明词嵌入向量进行基于全局的上下文语义编码以得到多个编码规范说明词特征向量;将所述多个编码规范说明词特征向量进行级联以得到所述编码规范语义特征向量。
在上述基于AI与大数据的代码自动生成方法中,对所述代码需求文档进行语义理解以得到需求特征向量,包括:将所述代码需求文档通过基于上下文编码器的代码需求语义编码器以得到所述需求特征向量。
在上述基于AI与大数据的代码自动生成方法中,基于高斯密度图融合所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量以得到需求代码特征矩阵,包括:以如下融合公式来构造所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量的高斯密度图;其中,所述融合公式为:其中,μ表示所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量之间的按位置均值向量,且σ的每个位置的值表示所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量中各个位置的特征值之间的方差,/>表示高斯密度概率函数,x表示高斯密度图的变量;以及,对所述高斯密度图的各个位置的高斯分布进行离散化处理以得到所述需求代码特征矩阵。
在上述基于AI与大数据的代码自动生成方法中,基于所述需求代码特征矩阵生成符合需求的代码,包括:计算所述需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵;将所述优化需求代码特征矩阵通过基于对抗生成网络的代码生成器以得到符合需求的代码。
在上述基于AI与大数据的代码自动生成方法中,计算所述需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵,包括:以如下优化公式计算所述需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵;其中,所述优化公式为:
其中,mi,j表示所述需求代码特征矩阵的第(i,j)位置的特征值,log表示以2为底的对数函数值,exp(·)表示矩阵的指数运算,λ表示预定超参数,|·|表示绝对值运算,mi,j'表示所述优化需求代码特征矩阵的第(i,j)位置的特征值。
根据本申请的另一个方面,提供了一种基于AI与大数据的代码自动生成系统,其包括:
数据获取模块,用于获取开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档;
语义理解模块,用于分别对所述开源代码数据库、所述企业内部的编码规范说明文档和所述代码需求文档进行语义理解以得到代码语义特征向量、编码规范语义特征向量和需求特征向量;
融合模块,用于基于高斯密度图融合所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量以得到需求代码特征矩阵;
代码生成模块,用于基于所述需求代码特征矩阵生成符合需求的代码。
与现有技术相比,本申请提供的基于AI与大数据的代码自动生成方法及系统,其利用深度学习算法,分别对开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档进行充分的语义理解,使计算机学习到程序中的语义信息和结构信息,识别出企业的编程规则和技术组件,以及代码需求语义特征,并基于三者的融合特征来生成既符合需求又具有企业编码特点的代码。这样,能够提高生成代码的质量,并提高开发效率和代码可维护性。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1为根据本申请实施例的基于AI与大数据的代码自动生成方法的流程图。
图2为根据本申请实施例的基于AI与大数据的代码自动生成方法的架构示意图。
图3为根据本申请实施例的基于AI与大数据的代码自动生成方法中对所述开源代码数据库进行语义理解以得到代码语义特征向量的流程图。
图4为根据本申请实施例的基于AI与大数据的代码自动生成方法中将所述开源代码数据库通过基于上下文编码器的程序语法特征提取器以得到多个Token语义特征向量的流程图。
图5为根据本申请实施例的基于AI与大数据的代码自动生成方法中将所述企业内部的编码规范说明文档通过基于上下文编码器的编码规范语义理解器以得到所述编码规范语义特征向量的流程图。
图6为根据本申请实施例的基于AI与大数据的代码自动生成系统的框图。
具体实施方式
下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
图1为根据本申请实施例的基于AI与大数据的代码自动生成方法的流程图。图2为根据本申请实施例的基于AI与大数据的代码自动生成方法的架构示意图。如图1和图2所示,根据本申请实施例的基于AI与大数据的代码自动生成方法,包括步骤:S1,获取开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档;S2,分别对所述开源代码数据库、所述企业内部的编码规范说明文档和所述代码需求文档进行语义理解以得到代码语义特征向量、编码规范语义特征向量和需求特征向量;S3,基于高斯密度图融合所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量以得到需求代码特征矩阵;S4,基于所述需求代码特征矩阵生成符合需求的代码。
在上述基于AI与大数据的代码自动生成方法中,所述步骤S1,获取开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档。如上述背景技术所言,代码自动生成技术可以自动完成繁琐的、重复性的编码任务,减少手动编写代码的时间和工作量,使得开发人员能够专注于解决更复杂的问题和业务逻辑,加快开发速度。同时,对于新加入的开发人员或者使用新技术的团队成员,代码自动生成技术能够帮助开发人员更快地上手和理解项目结构和代码逻辑,自动生成的代码可以作为示例和参考,减少学习成本和入门难度。并且,自动生成的代码通常是经过测试和验证的,可以减少潜在的错误和漏洞。
考虑到在实际的代码编写过程中,企业内部的不同开发人员在编写代码时往往遵循制定的编码规范,来提高代码的可读性和可维护性,减少团队成员之间的沟通和协调成本,使代码更易于阅读、调试和修改,减少代码审查和合并的复杂性。而现有的开发工具往往无法根据企业内部编程规则和技术组件来进行编码,不能确保代码风格的统一性和规范性,使得生成的代码不利于理解和后续维护。
基于此,在本申请的技术方案中,首先获取开源代码数据库、企业内部的编码规范说明文档,以及代码需求文档。开源代码数据库中包含了大量的开源项目和代码示例,还提供了丰富的代码片段和函数库,可以作为生成代码的参考和学习资源。通过分析和学习开源代码数据库中的数据特征,能够获取常见的编码模式、设计模式和最佳实践,从而生成更具质量和可维护性的代码。企业内部的编码规范说明文档定义了企业在编码方面的规范、约定和要求。通过将编码规范纳入代码自动生成算法中,可以确保生成的代码符合企业的编码标准和技术要求,帮助开发人员遵循编码规范,有助于提高代码的一致性、可读性和可维护性,并减少后续的代码审查和调整工作。而代码需求文档描述了软件系统的功能需求和设计要求,还可以提供领域专业知识和上下文信息,帮助代码自动生成系统生成更具领域专业性的代码。通过对代码需求文档进行语义理解和分析,代码自动生成系统可以识别出需求中的关键功能和逻辑,并将其转化为代码生成的指导,确保生成的代码满足需求的功能和行为,并减少由于需求理解不清导致的代码错误和缺陷。也就是说,在本申请的技术方案中,利用深度学习算法,分别对开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档进行充分的语义理解,使计算机学习到程序中的语义信息和结构信息,识别出企业的编程规则和技术组件,以及代码需求语义特征,并基于三者的融合特征来生成既符合需求又具有企业编码特点的代码。
在上述基于AI与大数据的代码自动生成方法中,所述步骤S2,分别对所述开源代码数据库、所述企业内部的编码规范说明文档和所述代码需求文档进行语义理解以得到代码语义特征向量、编码规范语义特征向量和需求特征向量。应可以理解,开源代码数据库包含了大量的代码示例和项目;企业内部的编码规范说明文档定义了企业在编码方面的规范、约定和要求;代码需求文档描述了代码的功能需求和设计要求。分别对所述开源代码数据库、所述企业内部的编码规范说明文档和所述代码需求文档进行语义理解,以捕捉它们各自的语义信息和结构信息,从而综合利用这些信息,生成既符合需求又具有企业编码特点的代码。
相应地,首先对所述开源代码数据库进行语义理解以得到代码语义特征向量。图3为根据本申请实施例的基于AI与大数据的代码自动生成方法中对所述开源代码数据库进行语义理解以得到代码语义特征向量的流程图。如图3所示,所述步骤S2,包括:S21,将所述开源代码数据库通过基于上下文编码器的程序语法特征提取器以得到多个Token语义特征向量;S22,将所述多个Token语义特征向量通过双向长短期记忆神经网络模型以得到所述代码语义特征向量。
具体地,所述步骤S21,将所述开源代码数据库通过基于上下文编码器的程序语法特征提取器以得到多个Token语义特征向量。为了从开源代码中提取更丰富的语义信息并捕捉代码的结构信息,进一步使用基于上下文编码器的程序语法特征提取器对所述开源代码数据库进行特征学习。在代码自动生成过程中,仅仅考虑单个代码片段的特征是不够的,还需要考虑代码的整体上下文。而上下文编码器能够通过自注意力机制对代码的语义结构和逻辑关系进行建模,以捕捉代码中的上下文信息,包括语义依赖关系、语法结构和语境等信息,进而将上下文信息编码成向量表示,提供更全面准确的语义特征。同时,通过基于上下文编码器的程序语法特征提取器对各个Token的特征信息进行编码,能够捕捉到代码的结构信息,例如函数调用、循环结构、条件语句等。这些结构信息对于生成具有正确语法和逻辑结构的代码非常重要。并且,代码中常常存在歧义和模糊性,例如变量名的含义、函数调用的参数等。上下文编码器可以通过考虑上下文信息来解决这些歧义和模糊性问题。通过对上下文进行编码,上下文编码器可以利用上下文信息来推断代码中的含义和用途,从而更准确地生成代码。具体地,首先将所述开源代码数据库划分为多个Token,通过基于上下文编码器的程序语法特征提取器,对开源代码中的每个Token进行嵌入化编码和语义编码,将其转化为向量表示形式,以捕捉到每个Token的语义信息,包括标识符、关键字、操作符等,进一步丰富代码的特征表示,有助于生成更准确、更具语义合理性的代码。
图4为根据本申请实施例的基于AI与大数据的代码自动生成方法中将所述开源代码数据库通过基于上下文编码器的程序语法特征提取器以得到多个Token语义特征向量的流程图。如图4所示,所述步骤S21,包括:S211,将所述开源代码数据库进行分词处理以得到多个Token;S212,使用所述程序语法特征提取器的词嵌入层的可学习嵌入矩阵对所述多个Token中各个Token分别进行词嵌入编码以得到多个Token嵌入向量;S213,使用所述程序语法特征提取器的基于转换器的Bert模型对所述多个Token嵌入向量进行基于全局的上下文语义编码以得到多个Token语义特征向量。
具体地,所述步骤S22,将所述多个Token语义特征向量通过双向长短期记忆神经网络模型以得到所述代码语义特征向量。应可以理解,双向长短期记忆神经网络模型(Bi-LSTM)是由两个独立的LSTM组合而成。LSTM的隐藏层中包含了3个门控(gates)结构,分别是遗忘门(forget gate)、输入门(input gate)、输出门(output gate),同时新增了一个隐藏状态(cell state)。两个独立的LSTM分别从正向顺序和反向顺序来对输入序列进行特征提取,处理完成后将两个LSTM的输出向量拼接起来作为最终特征表达,这种处理方式使得当前时刻所获得特征数据同时拥有过去和将来之间的信息。
在本申请的技术方案中,代码中的不同Token之间存在着复杂的语义依赖关系,例如变量的定义和使用、函数的调用关系等。通过使用Bi-LSTM模型,可以捕捉到这些语义依赖关系。传统的单向循环神经网络(RNN)只能考虑前向或后向上下文,而Bi-LSTM的双向模型能够在处理当前Token时同时考虑其前后的语义依赖,同时捕捉到前后两个方向的上下文信息,有助于更好地理解当前Token在整个代码中的语义含义,并提供更准确的语义特征表示,从而更好地理解代码的语义结构和逻辑关系。也就是说,通过使用Bi-LSTM模型对多个Token的语义特征向量进行整合和编码,以得到更综合的代码语义特征向量,从而将多个Token的信息进行聚合和汇总,提供更准确、更全面的代码语义表示,有助于生成更准确、更具语义合理性的代码,提高代码自动生成系统的效果和质量。
相应地,所述步骤S2,还包括:S23,将所述企业内部的编码规范说明文档通过基于上下文编码器的编码规范语义理解器以得到所述编码规范语义特征向量。在团队开发中,代码的一致性和可维护性非常重要,为了将编码规范的要求纳入代码自动生成的过程中,从而生成符合企业内部编码规范的高质量代码。进一步将企业内部的编码规范说明文档通过基于上下文编码器的编码规范语义理解器进行特征挖掘。应可以理解,企业内部的编码规范说明文档包含了对代码风格、命名规范、代码结构等方面的要求。在一个团队中,遵循相同的编码规范可以提高代码的可读性和可维护性,并促进团队成员之间的协作。而上下文编码器可以帮助生成符合团队内部编码规范和风格的代码。通过对上下文进行编码,上下文编码器可以在生成代码时考虑到团队的编码规范和约定,生成具有一致风格和可维护性的代码。通过将编码规范转化为编码规范语义特征向量,可以在代码自动生成过程中对团队成员的代码进行统一的规范化。这有助于减少因个人编码风格差异而导致的团队协作问题,提高团队的开发效率和代码质量。也就是说,通过将编码规范说明文档转化为编码规范语义特征向量,可以将编码要求纳入代码自动生成的过程中,对生成的代码进行约束和指导,使得生成的代码更符合企业内部的规范要求,提高代码的统一性和可读性。
图5为根据本申请实施例的基于AI与大数据的代码自动生成方法中将所述企业内部的编码规范说明文档通过基于上下文编码器的编码规范语义理解器以得到所述编码规范语义特征向量的流程图。如图5所示,所述步骤S23,包括:S231,将所述企业内部的编码规范说明文档进行分词处理以得到多个编码规范说明词;S232,使用所述编码规范语义理解器的词嵌入层的可学习嵌入矩阵对所述多个编码规范说明词中各个编码规范说明词分别进行词嵌入编码以得到多个编码规范说明词嵌入向量;S233,使用所述编码规范语义理解器的基于转换器的Bert模型对所述多个编码规范说明词嵌入向量进行基于全局的上下文语义编码以得到多个编码规范说明词特征向量;S234,将所述多个编码规范说明词特征向量进行级联以得到所述编码规范语义特征向量。
相应地,所述步骤S2,还包括:S24,将所述代码需求文档通过基于上下文编码器的代码需求语义编码器以得到所述需求特征向量。应可以理解,所述代码需求文档中包含了对代码功能、业务逻辑和用户需求的描述。通过上下文编码器对所述代码需求文档进行语义特征挖掘,理解需求上下文,以将其转化为需求特征向量,将需求特征纳入代码自动生成的过程中,使得生成的代码符合用户需求,提升生成代码的质量和准确性,以此达到提高生成代码的功能完备性和用户满意度的目的。也就是说,将所述代码需求文档转化为需求特征向量后,可以将所述需求特征向量应用于代码自动生成的过程中,指导代码的生成和优化,有助于提高开发效率,减少开发人员在理解需求和编写代码方面的时间和工作量。
在上述基于AI与大数据的代码自动生成方法中,所述步骤S3,基于高斯密度图融合所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量以得到需求代码特征矩阵。应可以理解,高斯密度图可以将特征向量映射到一个连续的概率分布空间中,通过概率密度的计算,来度量不同特征在特征空间中的相似度和相关性。在本申请的技术方案中,通过构造高斯密度图来将代码语义特征、编码规范语义特征和需求特征进行融合,使得不同特征之间进行信息交互和补充。也就是,高斯密度图通过计算概率密度的方式,来捕捉到特征空间中的相关性和依赖关系,使得代码语义特征、编码规范语义特征和需求特征之间相互补充,提供更全面、更准确的特征表示,更好地捕捉到代码需求和编码规范之间的关系。并且,通过高斯密度图的构造,可以强化代码语义特征、编码规范语义特征和需求特征之间的一致性。高斯密度图可以将相似的特征向量映射到相近的概率密度区域,使得相似的特征在特征空间中更加接近,从而强调代码需求和编码规范之间的一致性,确保生成的代码既符合需求又符合企业的编码规范。同时,高斯密度图可以对特征空间进行平滑化处理,减少噪声的影响。在现实情况下,代码语义特征、编码规范语义特征和需求特征可能存在一定的噪声或不完整性。通过构造高斯密度图,可以对特征空间进行平滑化处理,使得噪声的影响减小,提高生成代码的质量和准确性。
在一个具体示例中,所述步骤S3,包括:以如下融合公式来构造所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量的高斯密度图;其中,所述融合公式为:其中,μ表示所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量之间的按位置均值向量,且σ的每个位置的值表示所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量中各个位置的特征值之间的方差,/>表示高斯密度概率函数,x表示高斯密度图的变量;以及,对所述高斯密度图的各个位置的高斯分布进行离散化处理以得到所述需求代码特征矩阵。
在上述基于AI与大数据的代码自动生成方法中,所述步骤S4,基于所述需求代码特征矩阵生成符合需求的代码。应可以理解,所述需求代码特征矩阵包含了标准代码中的语法特征和结构信息,企业的编程规则和技术组件,以及代码需求的语义特征。通过将所述需求代码特征矩阵通过代码生成器进行处理,代码生成器能够根据所述需求代码特征矩阵中的特征信息来生成既符合需求又具有企业编码特点的代码。
在一个具体示例中,所述步骤S4,包括:S41,计算所述需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵;S42,将所述优化需求代码特征矩阵通过基于对抗生成网络的代码生成器以得到符合需求的代码。
具体地,所述步骤S41,计算所述需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵。特别地,在本申请技术方案中,考虑到所述代码语义特征向量、编码规范语义特征向量和需求特征向量在高维特征空间内的特征分布存在差异,可能导致通过融合得到的需求代码特征矩阵在局部特征分布方面存在结构崩塌,从而影响通过代码生成器得到的符合需求的代码的精确度。所述代码语义特征向量、编码规范语义特征向量和需求特征向量在高维特征空间内的特征分布存在差异的原因,包括:一、数据源的差异,开源代码数据库中的代码来自不同的项目和开发者,可能具有不同的编码风格、习惯和实现方式。这会导致代码语义特征向量的分布在高维特征空间中存在差异。企业内部的编码规范说明文档可能与开源代码数据库中的代码风格和实践存在差异。编码规范通常包含了对变量命名、代码结构、注释等方面的规定,这些规定可能与开源代码数据库中的实践不尽相同,导致编码规范语义特征向量与代码语义特征向量的分布存在差异。二、需求特征的不确定性,需求文档描述了代码的功能和行为要求,但需求的表达方式可能因文档编写者的不同而存在差异。有些需求可能具体明确,而其他需求可能较为模糊或含糊不清。这种差异导致了需求特征向量的分布与代码语义特征向量的分布存在差异。三、高维特征空间的复杂性,所述代码语义特征向量、编码规范语义特征向量和需求特征向量都是在高维特征空间中表示的。在高维空间中,特征之间的关系和分布变得更加复杂,因此很难保证它们在局部特征分布方面能够保持一致性。这种复杂性可能导致融合得到的需求代码特征矩阵在局部特征分布方面出现结构崩塌现象。由于上述差异和复杂性,融合得到的需求代码特征矩阵可能无法完全捕捉到代码的精确需求,从而影响通过代码生成器生成的符合需求的代码的精确度。为了解决这个问题,通过计算所述需求代码特征矩阵的相对于目标分类函数的运动参数化模型的隐特征表达以提高生成代码的质量和准确性。
具体地,所述步骤S41,包括:以如下优化公式计算所述需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵;其中,所述优化公式为:
其中,mi,j表示所述需求代码特征矩阵的第(i,j)位置的特征值,log表示以2为底的对数函数值,exp(·)表示矩阵的指数运算,λ表示预定超参数,|·|表示绝对值运算,mi,j'表示所述优化需求代码特征矩阵的第(i,j)位置的特征值。
也就是,针对上述技术问题,提出了一种基于隐特征表达的优化方法,它可以计算需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵,这样通过对需求代码特征矩阵的特征值进行按位置的概率性解释,可以使得神经网络所提取出的特征分布能够随迭代自我适应,从而逐步接近真实信息分布,这样,提升需求代码特征矩阵通过代码生成器以得到生成代码的准确性。隐特征表达是一种基于隐变量的特征编码方法,它可以根据需求代码特征矩阵的特征值和目标生成函数的后验分布,构建一个隐变量的概率分布函数,用于对需求代码特征矩阵的特征值进行概率化的编码和解码,使其与目标生成函数的后验分布更加一致,这样不仅可以提高特征编码的精度和效率,而且可以保持特征的原始信息和语义,避免了特征的信息丢失和混淆。
具体地,所述步骤S42,将所述优化需求代码特征矩阵通过基于对抗生成网络的代码生成器以得到符合需求的代码。应可以理解,对抗生成网络能够学习到代码的语法、结构和模式,并生成逼真的代码样本。这种自动化代码生成的能力可以帮助减轻开发人员的负担,特别是在需要生成大量重复或类似的代码时。具体地,所述基于对抗生成网络的代码生成器包含鉴别器和生成器,其中,所述生成器用于生成代码,所述鉴别器用于计算生成器生成的代码和标准代码之间的差异,并通过梯度下降的方向传播算法来更新所述生成器的网络参数以得到能够生成既符合需求又具有企业编码特点的代码的生成器。进而,再将所述优化需求代码特征矩阵输入所述基于对抗生成网络的代码生成器的生成器以得到所述符合需求的代码。也就是说,利用训练好的对抗生成网络模型,能够快速生成符合需求和规范的代码片段或完整的代码,提高开发效率。
综上,根据本申请实施例的基于AI与大数据的代码自动生成方法被阐明,其利用深度学习算法,分别对开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档进行充分的语义理解,使计算机学习到程序中的语义信息和结构信息,识别出企业的编程规则和技术组件,以及代码需求语义特征,并基于三者的融合特征来生成既符合需求又具有企业编码特点的代码。这样,能够提高生成代码的质量,并提高开发效率和代码可维护性。
图6为根据本申请实施例的基于AI与大数据的代码自动生成系统的框图。如图6所示,根据本申请实施例的基于AI与大数据的代码自动生成系统100,包括:数据获取模块110,用于获取开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档;语义理解模块120,用于分别对所述开源代码数据库、所述企业内部的编码规范说明文档和所述代码需求文档进行语义理解以得到代码语义特征向量、编码规范语义特征向量和需求特征向量;融合模块130,用于基于高斯密度图融合所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量以得到需求代码特征矩阵;代码生成模块140,用于基于所述需求代码特征矩阵生成符合需求的代码。
这里,本领域技术人员可以理解,上述基于AI与大数据的代码自动生成系统中的各个步骤的具体操作已经在上面参考图1到图5的基于AI与大数据的代码自动生成方法的描述中得到了详细介绍,并因此,将省略其重复描述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。在本发明所提供的几个实施例中,应该理解到,所揭露的设备,系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元也可以由一个单元通过软件或者硬件来实现。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (10)

1.一种基于AI与大数据的代码自动生成方法,其特征在于,包括:
获取开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档;
分别对所述开源代码数据库、所述企业内部的编码规范说明文档和所述代码需求文档进行语义理解以得到代码语义特征向量、编码规范语义特征向量和需求特征向量;
基于高斯密度图融合所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量以得到需求代码特征矩阵;
基于所述需求代码特征矩阵生成符合需求的代码。
2.根据权利要求1所述的基于AI与大数据的代码自动生成方法,其特征在于,对所述开源代码数据库进行语义理解以得到代码语义特征向量,包括:
将所述开源代码数据库通过基于上下文编码器的程序语法特征提取器以得到多个Token语义特征向量;
将所述多个Token语义特征向量通过双向长短期记忆神经网络模型以得到所述代码语义特征向量。
3.根据权利要求2所述的基于AI与大数据的代码自动生成方法,其特征在于,将所述开源代码数据库通过基于上下文编码器的程序语法特征提取器以得到多个Token语义特征向量,包括:
将所述开源代码数据库进行分词处理以得到多个Token;
使用所述程序语法特征提取器的词嵌入层的可学习嵌入矩阵对所述多个Token中各个Token分别进行词嵌入编码以得到多个Token嵌入向量;
使用所述程序语法特征提取器的基于转换器的Bert模型对所述多个Token嵌入向量进行基于全局的上下文语义编码以得到多个Token语义特征向量。
4.根据权利要求3所述的基于AI与大数据的代码自动生成方法,其特征在于,对所述企业内部的编码规范说明文档进行语义理解以得到编码规范语义特征向量,包括:
将所述企业内部的编码规范说明文档通过基于上下文编码器的编码规范语义理解器以得到所述编码规范语义特征向量。
5.根据权利要求4所述的基于AI与大数据的代码自动生成方法,其特征在于,将所述企业内部的编码规范说明文档通过基于上下文编码器的编码规范语义理解器以得到所述编码规范语义特征向量,包括:
将所述企业内部的编码规范说明文档进行分词处理以得到多个编码规范说明词;
使用所述编码规范语义理解器的词嵌入层的可学习嵌入矩阵对所述多个编码规范说明词中各个编码规范说明词分别进行词嵌入编码以得到多个编码规范说明词嵌入向量;
使用所述编码规范语义理解器的基于转换器的Bert模型对所述多个编码规范说明词嵌入向量进行基于全局的上下文语义编码以得到多个编码规范说明词特征向量;
将所述多个编码规范说明词特征向量进行级联以得到所述编码规范语义特征向量。
6.根据权利要求5所述的基于AI与大数据的代码自动生成方法,其特征在于,对所述代码需求文档进行语义理解以得到需求特征向量,包括:
将所述代码需求文档通过基于上下文编码器的代码需求语义编码器以得到所述需求特征向量。
7.根据权利要求6所述的基于AI与大数据的代码自动生成方法,其特征在于,基于高斯密度图融合所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量以得到需求代码特征矩阵,包括:
以如下融合公式来构造所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量的高斯密度图;
其中,所述融合公式为:
其中,μ表示所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量之间的按位置均值向量,且σ的每个位置的值表示所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量中各个位置的特征值之间的方差,表示高斯密度概率函数,x表示高斯密度图的变量;
对所述高斯密度图的各个位置的高斯分布进行离散化处理以得到所述需求代码特征矩阵。
8.根据权利要求7所述的基于AI与大数据的代码自动生成方法,其特征在于,基于所述需求代码特征矩阵生成符合需求的代码,包括:
计算所述需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵;
将所述优化需求代码特征矩阵通过基于对抗生成网络的代码生成器以得到符合需求的代码。
9.根据权利要求8所述的基于AI与大数据的代码自动生成方法,其特征在于,计算所述需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵,包括:以如下优化公式计算所述需求代码特征矩阵的相对于目标生成函数的运动参数化模型的隐特征表达以得到优化需求代码特征矩阵;其中,所述优化公式为:
其中,mi,j表示所述需求代码特征矩阵的第(i,j)位置的特征值,log表示以2为底的对数函数值,exp(·)表示矩阵的指数运算,λ表示预定超参数,|·|表示绝对值运算,mi,j'表示所述优化需求代码特征矩阵的第(i,j)位置的特征值。
10.一种基于AI与大数据的代码自动生成系统,其特征在于,包括:
数据获取模块,用于获取开源代码数据库、企业内部的编码规范说明文档、以及代码需求文档;
语义理解模块,用于分别对所述开源代码数据库、所述企业内部的编码规范说明文档和所述代码需求文档进行语义理解以得到代码语义特征向量、编码规范语义特征向量和需求特征向量;
融合模块,用于基于高斯密度图融合所述代码语义特征向量、所述编码规范语义特征向量和所述需求特征向量以得到需求代码特征矩阵;
代码生成模块,用于基于所述需求代码特征矩阵生成符合需求的代码。
CN202311746070.7A 2023-12-18 2023-12-18 基于ai与大数据的代码自动生成方法及系统 Active CN117707501B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311746070.7A CN117707501B (zh) 2023-12-18 2023-12-18 基于ai与大数据的代码自动生成方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311746070.7A CN117707501B (zh) 2023-12-18 2023-12-18 基于ai与大数据的代码自动生成方法及系统

Publications (2)

Publication Number Publication Date
CN117707501A true CN117707501A (zh) 2024-03-15
CN117707501B CN117707501B (zh) 2024-06-14

Family

ID=90161999

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311746070.7A Active CN117707501B (zh) 2023-12-18 2023-12-18 基于ai与大数据的代码自动生成方法及系统

Country Status (1)

Country Link
CN (1) CN117707501B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109634578A (zh) * 2018-10-19 2019-04-16 北京大学 一种基于文本说明的程序生成方法
AU2020100710A4 (en) * 2020-05-05 2020-06-11 Chen, Dadu Mr A method for sentiment analysis of film reviews based on deep learning and natural language processing
CN113626584A (zh) * 2021-08-12 2021-11-09 中电积至(海南)信息技术有限公司 一种自动文本摘要生成方法、系统、计算机设备和存储介质
CN113791757A (zh) * 2021-07-14 2021-12-14 北京邮电大学 软件需求和代码映射方法及系统
US20230161562A1 (en) * 2021-11-19 2023-05-25 Jpmorgan Chase Bank, N.A. System and method for generating a similarity matrix/score between intended requirements context data and source code context data
CN116225526A (zh) * 2022-12-14 2023-06-06 杭州滨电信息技术有限公司 一种基于图表示学习的代码克隆检测方法
CN116307624A (zh) * 2023-03-28 2023-06-23 杭州展俊科技有限公司 一种erp系统的资源调度方法及其系统
CN116400901A (zh) * 2023-04-12 2023-07-07 上海计算机软件技术开发中心 一种Python代码自动生成方法及系统
EP4258107A1 (en) * 2022-04-06 2023-10-11 Konfer, Inc. Method and system for automated discovery of artificial intelligence and machine learning assets in an enterprise
CN117116498A (zh) * 2023-10-23 2023-11-24 吉林大学 移动查房数据处理系统及其方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109634578A (zh) * 2018-10-19 2019-04-16 北京大学 一种基于文本说明的程序生成方法
AU2020100710A4 (en) * 2020-05-05 2020-06-11 Chen, Dadu Mr A method for sentiment analysis of film reviews based on deep learning and natural language processing
CN113791757A (zh) * 2021-07-14 2021-12-14 北京邮电大学 软件需求和代码映射方法及系统
CN113626584A (zh) * 2021-08-12 2021-11-09 中电积至(海南)信息技术有限公司 一种自动文本摘要生成方法、系统、计算机设备和存储介质
US20230161562A1 (en) * 2021-11-19 2023-05-25 Jpmorgan Chase Bank, N.A. System and method for generating a similarity matrix/score between intended requirements context data and source code context data
EP4258107A1 (en) * 2022-04-06 2023-10-11 Konfer, Inc. Method and system for automated discovery of artificial intelligence and machine learning assets in an enterprise
CN116225526A (zh) * 2022-12-14 2023-06-06 杭州滨电信息技术有限公司 一种基于图表示学习的代码克隆检测方法
CN116307624A (zh) * 2023-03-28 2023-06-23 杭州展俊科技有限公司 一种erp系统的资源调度方法及其系统
CN116400901A (zh) * 2023-04-12 2023-07-07 上海计算机软件技术开发中心 一种Python代码自动生成方法及系统
CN117116498A (zh) * 2023-10-23 2023-11-24 吉林大学 移动查房数据处理系统及其方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
倪海清;刘丹;史梦雨;: "基于语义感知的中文短文本摘要生成模型", 计算机科学, no. 06 *
张柯文;李翔;朱全银;方强强;马甲林;成洁怡;丁行硕;: "一种基于WSD层级记忆网络建模的文档表示方法", 淮阴工学院学报, no. 03, 15 June 2020 (2020-06-15) *
曾骏1, 2王子威1于扬1文俊浩1, 2高旻1, 2: "自然语言处理领域中的词嵌入方法综述", 计算机科学与探索, 17 March 2023 (2023-03-17), pages 1 *
李杨阳;万波;梁森;胡涛;: "人工智能技术在嵌入式代码审查中的应用与展望", 空间控制技术与应用, no. 03, 15 June 2020 (2020-06-15) *

Also Published As

Publication number Publication date
CN117707501B (zh) 2024-06-14

Similar Documents

Publication Publication Date Title
WO2021169364A1 (zh) 分析语义情感的方法、装置、设备及存储介质
CN116400901B (zh) 一种Python代码自动生成方法及系统
Viktorov et al. The principles of building a machine-learning-based service for converting sequential code into parallel code
CN111027681B (zh) 时序数据处理模型训练方法、数据处理方法、装置及存储介质
Hua et al. Transformer-based networks over tree structures for code classification
Mei et al. An adaptive logical rule embedding model for inductive reasoning over temporal knowledge graphs
Komanduri et al. Scm-vae: Learning identifiable causal representations via structural knowledge
CN117707501B (zh) 基于ai与大数据的代码自动生成方法及系统
Wen et al. A cross-project defect prediction model based on deep learning with self-attention
CN117275609A (zh) 一种基于变分自编码器和Transformer模型的分子设计方法
US20230236811A1 (en) Tree-based merge conflict resolution with multi-task neural transformer
CN115828142A (zh) 一种基于双路编码器的可解释性文本分类系统
Wei et al. Enhance text-to-SQL model performance with information sharing and reweight loss
Yang et al. Service component recommendation based on LSTM
Ouyang et al. Binary vulnerability mining based on long short-term memory network
CN117273085B (zh) 一种基于卷积神经网络的信息归类方法
Chang et al. A methodology to analyze multi-agent systems modeled in high level petri nets
Hoang et al. Quantum Software Analytics: Opportunities and Challenges
Li et al. Enhancing code summarization with action word prediction
Yi et al. Software Defect Prediction via Positional Hierarchical Attention Network (S).
Curtin et al. Designing and building the mlpack open-source machine learning library
Huang et al. Automatically Generating Codes from Graphical Screenshots Based on Deep Autocoder
Hu et al. An ANTLR-based flattening framework for AltaRica 3.0 model
Ma et al. A Semi-Automatic Semantic Consistency-Checking Method for Learning Ontology from Relational Database. Information 2021, 12, 188
Bnouni Rhim et al. NLP and logic reasoning for fully automating test

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