掌桥专利:专业的专利平台
掌桥专利
首页

一种代码模板的生成方法、装置、设备、介质及程序产品

文献发布时间:2024-04-18 19:58:21


一种代码模板的生成方法、装置、设备、介质及程序产品

技术领域

本申请涉及计算机技术领域,尤其涉及一种代码模板的生成方法、装置、设备、介质及程序产品。

背景技术

随着计算机技术的快速发展,通常针对目标功能需求,编写具有相应功能的代码,以实现相应功能。

在相关技术中,通常开发人员会基于领域知识和目标功能需求,构建领域模型。然后,开发人员对领域模型中的各个实体以及实体关系进行人工统计分析,从而开发人员编写与领域模型对应的代码模板。由于不同的开发人员,所编写出的代码模板质量不尽相同,且人工编写代码模板的过程较为繁琐,导致所生成的代码模板质量较低,且生成过程效率低下。

发明内容

本申请实施例提供一种代码模板的生成方法、装置、设备、计算机可读存储介质及计算机程序产品,能够有效提高代码模板生成效率的同时,提高所生成代码模板的质量。

本申请实施例的技术方案是这样实现的:

本申请实施例提供一种代码模板的生成方法,包括:

获取包括多个实体的领域模型中各所述实体的实体向量;

确定所述多个实体向量所构建的实体组之间的实体关系,其中,每个所述实体组包括至少一个实体向量;

基于所述实体关系和各所述实体的实体向量,构建所述领域模型对应的至少一个实体关系三元组;其中,所述实体关系三元组包括:两个所述实体向量组、以及相应的实体关系;

根据所述至少一个实体关系三元组,生成所述领域模型对应的代码模板;

所述代码模板,用于供结合目标领域模型的实体结构,生成所述目标领域模型对应的代码,所述目标领域模型中的实体与所述领域模型中的实体归属于同一领域。

本申请实施例提供一种代码模板的生成装置,包括:

获取模块,用于获取包括多个实体的领域模型中各所述实体的实体向量;

关系确定模块,用于确定所述多个实体向量所构建的实体组之间的实体关系,其中,每个所述实体组包括至少一个实体向量;

构建模块,用于基于所述实体关系和各所述实体的实体向量,构建所述领域模型对应的至少一个实体关系三元组;其中,所述实体关系三元组包括:两个所述实体向量组、以及相应的实体关系;

生成模块,用于根据所述至少一个实体关系三元组,生成所述领域模型对应的代码模板;

所述代码模板,用于供结合目标领域模型的实体结构,生成所述目标领域模型对应的代码,所述目标领域模型中的实体与所述领域模型中的实体归属于同一领域。

在一些实施例中,上述代码模板的生成装置,还包括:实体信息获取模块,用于获取领域模型中各实体的实体信息,实体信息包括实体的文本信息及位置信息。

在一些实施例中,上述获取模块,还用于针对领域模型中各实体分别执行以下处理:对文本信息进行编码,得到实体对应的文本向量,并对位置信息进行编码,得到实体对应的位置向量;结合文本向量和位置向量,确定各实体的实体向量。

在一些实施例中,文本信息包括用于描述实体的目标文本、及与实体存在关联关系的实体的关联文本,文本向量包括目标文本向量及关联文本向量;上述获取模块,还用于对目标文本进行编码,得到目标文本向量,并对关联文本进行编码,得到关联文本向量。

在一些实施例中,上述获取模块,还用于结合文本向量和位置向量,对各实体进行分类,得到各实体对应的类别;对每个类别的实体所对应的文本向量和位置向量,进行融合处理,得到对应类别的各实体的实体向量。

在一些实施例中,上述获取模块,还用于针对各实体分别执行以下处理:基于实体的文本向量和位置向量,对实体进行分类预测,得到实体分别对应各实体类别的类别概率值;将最大的类别概率值所对应的实体类别,确定为实体对应的类别。

在一些实施例中,上述获取模块,还用于将各实体对应的文本向量和位置向量进行融合处理,得到各实体的融合向量;当类别中实体的数量为至少两个时,将类别中的各实体分别对应的融合向量,进行融合处理,得到实体组向量;将实体组向量确定为类别中每个实体的实体向量。

在一些实施例中,上述获取模块,还用于将各实体对应的文本向量和位置向量进行融合处理,得到各实体的融合向量;当类别中实体的数量为一个时,将类别中实体对应的融合向量,确定为类别中实体的实体向量。

在一些实施例中,获取包括多个实体的领域模型中各实体的实体向量是通过调用实体识别网络实现的,实体识别网络包括编码层和识别层;上述获取模块,还用于调用编码层对文本信息进行编码,得到实体对应的文本向量;调用编码层对位置信息进行编码,得到实体对应的位置向量;基于各实体的文本向量和位置向量,调用识别层进行实体识别,得到各实体的实体向量。

在一些实施例中,上述关系确定模块,还用于将各实体向量分别确定为对应的一阶实体组,并确定任意两个一阶实体组之间的一阶实体关系;当一阶实体关系的数量为至少两个、且存在相同的两个一阶实体关系、相同的两个一阶实体关系所对应的实体向量存在部分不同时,将不同的实体向量合并为二阶实体组,并确定每个二阶实体组对应的二阶实体关系。

在一些实施例中,上述关系确定模块,还用于当二阶实体组的数量为至少两个时,针对每个二阶实体组执行如下处理:确定任意两个二阶实体组之间的第一实体关系,并确定二阶实体组与每个一阶实体组之间的第二实体关系;将第一实体关系及第二实体关系确定为二阶实体组对应的二阶实体关系。

在一些实施例中,上述构建模块,还用于针对各实体关系分别执行以下处理:确定与实体关系对应的两个实体组;将两个实体组和实体关系分别进行格式化处理,得到各自对应的格式化处理结果;基于各格式化处理结果,构建与实体关系对应的实体关系三元组。

在一些实施例中,上述生成模块,还用于针对各实体关系三元组分别执行以下处理:在关联数据库中查询包括实体关系三元组的目标索引条目,将目标索引条目中的属性模板确定为实体关系三元组对应的属性模板;获取用于对属性模板进行变量声明的通用代码模板;将各实体关系三元组分别对应的属性模板,嵌套至通用代码模板中,生成领域模型对应的代码模板。

本申请实施例提供一种电子设备,包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的代码模板的生成方法。

本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的代码模板的生成方法。

本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的代码模板的生成方法。

本申请实施例具有以下有益效果:

通过确定包括多个实体的领域模型中各实体的实体向量,以及实体向量之间的实体关系,基于实体关系和实体向量构建实体关系三元组,根据实体关系三元组生成领域模型对应的代码模板。如此,通过自动化的充分挖掘领域模型的实体向量和实体关系,基于实体关系和实体向量生成代码模板,在生成代码模板的过程中,通过自动化生成领域模型的实体向量和实体关系,从而有效提高了代码模板的生成效率,通过对实体向量和实体关系的充分挖掘,所得到的实体向量和实体关系能够完整体现领域模型的内在逻辑关系,从而基于实体向量和实体关系生成代码模板能够有效提高代码模板的质量。

附图说明

图1是本申请实施例提供的代码模板的生成系统架构的结构示意图;

图2是本申请实施例提供的代码模板的生成装置的结构示意图;

图3A至图3I是本申请实施例提供的代码模板的生成方法的流程示意图;

图4A至图4G是本申请实施例提供的代码模板的生成方法的原理示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

可以理解地,“第一第二第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。

1)领域模型(Domain Model):领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。领域模型是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。业务对象模型从业务角色内部的观点定义了业务用例。该模型为产生预期效果确定了业务人员以及他们处理和使用的对象(“业务类和对象”)之间应该具有的静态和动态关系。它注重业务中承担的角色及其当前职责。这些模型类的对象组合在一起可以执行所有的业务用例。

2)实体关系三元组(Three Tuple):三元组是计算机专业的数据结构中的概念。主要是用来存储稀疏矩阵的一种压缩方式,也叫三元组表。假设以顺序存储结构来表示三元组表,则得到稀疏矩阵的一种压缩存储方式,即三元组顺序表,简称三元组表。

3)统一建模语言(UML-Unified Model Language):是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。UML是在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的制品的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软件架构层次,已经被验证有效。统一建模语言(UML)是一种模型化语言。模型大多以图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息之用的文本。这些虽简单却非常重要,在UML规则中相互联系和扩展。统一建模语言包括以下图形:用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图、包图、组合结构图、交互概览图。

4)代码(Code):是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。源代码是代码的分支,某种意义上来说,源代码相当于代码。现代程序语言中,源代码可以书籍或磁带形式出现,但最为常用格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码最终目的是将人类可读文本翻译成为计算机可执行的二进制指令,这种过程叫编译,它由通过编译器完成。

5)条件随机场(Conditional Random Field,CRF):是一种鉴别式机率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列。条件随机场是条件概率分布模型P(Y|X),表示的是给定一组输入随机变量X的条件下另一组输出随机变量Y的马尔可夫随机场,也就是说CRF的特点是假设输出随机变量构成马尔可夫随机场。条件随机场可被看作是最大熵马尔可夫模型在标注问题上的推广。

在本申请实施例的实施过程中,申请人发现相关技术存在以下问题:

在相关技术中,通常开发人员会基于领域知识和目标功能需求,构建领域模型。然后,开发人员对领域模型中的各个实体以及实体关系进行人工统计分析,从而开发人员编写与领域模型对应的代码模板。由于不同的开发人员,所编写出的代码模板质量不尽相同,且人工编写代码模板的过程较为繁琐,导致所生成的代码模板质量较低,且生成过程效率低下。

本申请实施例提供一种代码模板的生成方法、装置、设备、计算机可读存储介质及计算机程序产品,能够有效提供代码生成效率的同时,提高所生成代码的质量,下面说明本申请实施例提供的代码模板的生成设备的示例性应用,本申请实施例提供的设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。

参见图1,图1是本申请实施例提供的代码模板的生成系统100的架构示意图,为实现代码模板生成的应用场景,终端(示例性示出了终端400)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。

终端400用于供用户使用客户端410,在图形界面410-1(示例性示出了图形界面410-1)显示。终端400和服务器200通过有线或者无线网络相互连接。

在一些实施例中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能语音交互设备、智能家电、车载终端等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。

在一些实施例中,服务器200从终端400获取包括多个实体的领域模型中各实体的实体向量,基于实体向量和多个实体向量所构建的实体组之间的实体关系,生成领域模型对应的代码模板,并将代码模板发送到终端400,终端400结合目标领域模型的实体结构,生成目标领域模型对应的代码。

在另一些实施例中,终端400获取包括多个实体的领域模型中各实体的实体向量,基于实体向量和多个实体向量所构建的实体组之间的实体关系,生成领域模型对应的代码模板,并将代码模板发送到服务器200,服务器200结合目标领域模型的实体结构,生成目标领域模型对应的代码。

在另一些实施例中,本申请实施例可以借助于云技术(Cloud Technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。

云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源。

参见图2,图2是本申请实施例提供的代码模板的生成方法的服务器200的一种结构示意图,图2所示的服务器200包括:至少一个处理器210、存储器250、至少一个网络接口220。服务器200中的各个组件通过总线系统240耦合在一起。可理解,总线系统240用于实现这些组件之间的连接通信。总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统240。

处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。

存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器250旨在包括任意适合类型的存储器。

在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。

网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他电子设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等。

在一些实施例中,本申请实施例提供的代码模板的生成装置可以采用软件方式实现,图2示出了存储在存储器250中的代码模板的生成装置255,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块2551、关系确定模块2552、构建模块2553、生成模块2554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。

将结合本申请实施例提供的服务器或终端的示例性应用和实施,说明本申请实施例提供的代码模板的生成方法。参见图3A,图3A是本申请实施例提供的代码模板的生成方法的流程示意图,将结合图3A示出的步骤101至步骤104进行说明。

在步骤101中,获取包括多个实体的领域模型中各实体的实体向量。

作为示例,参见图4A,图4A是本申请实施例提供的代码模板的生成方法的原理示意图。如图4A所示出的领域模型中,获取包括多个实体的领域模型中实体1.1、实体1.2、实体1.3、实体2.1、实体2.2、实体2.3、实体3.1、实体3.2、实体3.3分别对应的实体向量。

在一些实施例中,领域模型可以是通用建模语言图,例如,领域模型可以是用例图,其中,用例图是从用户的角度描述系统功能的建模语言图。领域模型可以是类图,其中,类图可以是描述系统中的类的静态结构的建模语言图。领域模型可以是对象图,其中,对象图可以是系统中的多个对象在某一时刻的状态。领域模型可以是状态图,其中,状态图可以是描述状态到状态的控制流,常用于动态特性建模。领域模型可以是活动图,其中,活动图可以是描述业务实现用例的工作流程。领域模型可以是协作图,其中,协作图可以是描述对象之间的协作关系。

作为示例,在业务系统的应用场景中,业务系统的业务描述是:每天凌晨从农批市场买苹果、梨、葡萄、橘子、香蕉、荔枝、核桃等等,反正哪些好卖她就买回来卖。葡萄、荔枝不能长久保留,一般要当天卖出去。针对上述业务描述,确定领域模型的实体可以为:苹果、梨、葡萄、橘子、香蕉、荔枝、核桃,顾客是该业务系统的角色。进一步,根据上述实体以及实体之间的关系,构建该业务系统的领域模型。

在一些实施例中,参见图3B,图3B是本申请实施例提供的代码模板的生成方法的流程示意图,在上述步骤101之前,可以通过图3B所示出的步骤105获取实体信息。

在步骤105中,获取领域模型中各实体的实体信息,实体信息包括实体的文本信息及位置信息。

在一些实施例中,实体的文本信息表征实体的文本内容,实体的位置信息表征实体在领域模型中的位置。

作为示例,在业务系统的应用场景中,业务系统的业务描述是:每天凌晨从农批市场买苹果、梨、葡萄、橘子、香蕉、荔枝、核桃等等,反正哪些好卖她就买回来卖。葡萄、荔枝不能长久保留,一般要当天卖出去。针对上述业务描述,确定领域模型的实体可以为:苹果、梨、葡萄、橘子、香蕉、荔枝、核桃,顾客是该业务系统的角色。对于领域模型的实体之一:苹果,而言,苹果对应的实体信息包括实体的文本信息及位置信息,苹果的文本信息为“苹果”,苹果的位置信息表征苹果在领域模型中的相对位置关系,例如,苹果在领域模型中的位置,较之于梨而言,在梨之前。

在一些实施例中,参见图3B,图3B所示出的步骤101可以针对领域模型中各实体分别执行以下步骤1011至步骤1013实现。

在步骤1011中,对文本信息进行编码,得到实体对应的文本向量。

在一些实施例中,文本信息包括用于描述实体的目标文本、及与实体存在关联关系的实体的关联文本,文本向量包括目标文本向量及关联文本向量。

作为示例,参见图4A,如图4A所示出的领域模型中,对于实体1.3而言,实体1.3的文本信息包括用于描述实体1.3的目标文本,以及与实体1.3存在关联关系的实体1.2、实体2.2和实体3.2的关联文本。

作为示例,参见图4A,如图4A所示出的领域模型中,对于实体2.2而言,实体2.2的文本信息包括用于描述实体2.2的目标文本,以及与实体2.2存在关联关系的实体1.1、实体2.1和实体3.1的关联文本。

在一些实施例中,对文本信息进行编码可以通过语言表征模型实现,即,上述步骤1011可以通过执行以下处理实现:基于文本信息调用语言表征模型进行编码,得到实体对应的文本向量。

在一些实施例中,语言表征模型可以是预训练的语言模型,其中,预训练的语言模型可以是多层双向的编解码模型。

在一些实施例中,参见图3C,图3C是本申请实施例提供的代码模板的生成方法的流程示意图,图3C所示出的步骤1011可以通过执行以下步骤10111至步骤10112实现。

在步骤10111中,对目标文本进行编码,得到目标文本向量。

在一些实施例中,对目标文本进行编码可以通过语言表征模型实现,即,上述步骤10111可以通过执行以下处理实现:基于目标文本调用语言表征模型进行编码,得到目标文本向量。

在步骤10112中,对关联文本进行编码,得到关联文本向量。

在一些实施例中,对关联文本进行编码可以通过语言表征模型实现,即,上述步骤10112可以通过执行以下处理实现:基于关联文本调用语言表征模型进行编码,得到目标文本向量。

在一些实施例中,参见图4A,对于实体1.3而言,实体1.3的文本信息包括用于描述实体1.3的目标文本,以及与实体1.3存在关联关系的实体1.2、实体2.2和实体3.2的关联文本;对于实体2.3而言,实体2.3的实体信息包括用于描述实体2.3的目标文本,以及与实体2.3存在关联关系的实体1.2、实体2.2和实体3.2的关联文本;由此可知,实体1.3和实体2.3的关联文本是相同的,因此,在对实体1.3的关联文本进行编码后,也可以无需对实体2.3的关联文本进行编码,从而避免重复编码,有效提升编码效率。

在步骤1012中,对位置信息进行编码,得到实体对应的位置向量。

在一些实施例中,对位置信息进行编码可以通过语言表征模型实现,即,上述步骤10112可以通过执行以下处理实现:基于位置信息调用语言表征模型进行编码,得到实体对应的位置向量。

如此,通过对实体的位置信息和文本信息进行编码,得到相应的文本向量和位置向量,便于后续根据实体的文本向量和位置向量,确定各实体的实体向量,从而有效提高了所确定的实体向量的准确性。

在步骤1013中,结合文本向量和位置向量,确定各实体的实体向量。

在一些实施例中,参见图3D,图3D是本申请实施例提供的代码模板的生成方法的流程示意图,图3D所示出的步骤1013可以通过执行以下步骤10131至步骤10132实现。

在步骤10131中,结合文本向量和位置向量,对各实体进行分类,得到各实体对应的类别。

作为示例,在业务系统的应用场景中,业务系统的业务描述是:每天凌晨从农批市场买苹果、梨、葡萄、橘子、香蕉、荔枝、核桃等等,反正哪些好卖她就买回来卖。葡萄、荔枝不能长久保留,一般要当天卖出去。针对上述业务描述,确定领域模型的实体可以为:苹果、梨、葡萄、橘子、香蕉、荔枝、核桃,顾客是该业务系统的角色。其中,实体“苹果”的类型可以是偏甜,实体“荔枝”的类型可以是很甜,实体“橘子”的类型可以是酸。

在一些实施例中,参见图3E,图3E是本申请实施例提供的代码模板的生成方法的流程示意图,图3E所示出的步骤10131可以针对各实体分别执行以下步骤101311至步骤101312实现。

在步骤101311中,基于实体的文本向量和位置向量,对实体进行分类预测,得到实体分别对应各实体类别的类别概率值。

作为示例,参见下表1,表1是本申请实施例提供的类别概率值的示意表。

本申请实施例提供的类别概率值的示意表

参见上表1,实体1对应类别1的概率值为0.3,实体1对应类别2的概率值为0.2,实体1对应类别3的概率值为0.15,实体1对应类别4的概率值为0.15、实体1对应类别5的概率值为0.2。实体2对应类别1的概率值为0.4、实体2对应类别2的概率值为0.3,实体2对应类别3的概率值为0.15,实体2对应类别4的概率值为0,实体2对应类别5的概率值为0.15。

参见上表1,实体3对应类别1的概率值为0.1,实体3对应类别2的概率值为0.3,实体3对应类别3的概率值为0.31,实体3对应类别4的概率值为0.14、实体3对应类别5的概率值为0.15。实体4对应类别1的概率值为0.15、实体4对应类别2的概率值为0.3,实体4对应类别3的概率值为0.15,实体4对应类别4的概率值为0.2,实体5对应类别5的概率值为0.2。

在一些实施例中,上述步骤101311可以通过以下方式实现:基于实体的文本向量和位置向量调用分类预测网络,对实体进行分类预测,得到实体分别对应各实体类别的类别概率值。

在一些实施例中,上述分类预测网络可以是长短期记忆人工神经网络(LSTM,LongShort-Term Memory),长短期记忆人工神经网络是一种时间循环神经网络。

在一些实施例中,在上述步骤101311之后,可以通过以下方式验证类别概率值的正确性:调用鉴别式机率模型对类别概率值进行验证处理,得到验证处理结果,其中,验证处理结果表征类别概率值是否满足验证条件;响应于预测处理结果满足验证条件,确定类别概率值正确;响应于预测处理结果不满足验证条件,基于类别概率值对分类预测网络进行训练,得到训练后的分类预测网络。

在步骤101312中,将最大的类别概率值所对应的实体类别,确定为实体对应的类别。

作为示例,参见上表1,对于实体1而言,将最大的类别概率值0.3所对应的实体类别2,确定为实体1对应的类别。对于实体2而言,将最大的类别概率值0.4所对应的实体类别1,确定为实体2对应的类别。对于实体3而言,将最大的类别概率值0.31所对应的实体类别3,确定为实体3对应的类别。对于实体4而言,将最大的类别概率值0.3所对应的实体类别2,确定为实体4对应的类别。对于实体5而言,将最大的类别概率值0.31所对应的实体类别2,确定为实体5对应的类别。

如此,通过对实体进行分类预测,得到实体分别对应各实体类别的类别概率值,进而根据类别概率值,确定各实体的类别,从而便于后续根据实体的类别,得到对应类别的各实体的实体向量,有效提高所确定的实体向量的准确性。

在步骤10132中,对每个类别的实体所对应的文本向量和位置向量,进行融合处理,得到对应类别的各实体的实体向量。

作为示例,参见上表1,属于类别1的实体有:实体1和实体2,将类别1的实体1和实体分别对应的文本向量和位置向量进行融合处理,得到对应类别1的实体1和实体2的实体向量。

作为示例,参见上表1,属于类别2的实体有:实体4和实体5,将类别2的实体2和实体5分别对应的文本向量和位置向量进行融合处理,得到对应类别2的实体4和实体5的实体向量。

作为示例,参见上表1,属于类别3的实体有:实体3,将类别3的实体3对应的文本向量和位置向量进行融合处理,得到对应类别3的实体3的实体向量。

在一些实施例中,上述融合处理是指向量加和的处理过程。

在一些实施例中,参见图3F,图3F是本申请实施例提供的代码模板的生成方法的流程示意图,图3F所示出的步骤10132可以通过执行以下步骤101321至步骤101323实现。

在步骤101321中,将各实体对应的文本向量和位置向量进行融合处理,得到各实体的融合向量。

作为示例,参见上表1,将实体1对应的文本向量和位置向量进行融合处理,得到实体1的融合向量。将实体2对应的文本向量和位置向量进行融合处理,得到实体2的融合向量。将实体3对应的文本向量和位置向量进行融合处理,得到实体3的融合向量。将实体4对应的文本向量和位置向量进行融合处理,得到实体4的融合向量。将实体5对应的文本向量和位置向量进行融合处理,得到实体5的融合向量。

在步骤101322中,当类别中实体的数量为至少两个时,将类别中的各实体分别对应的融合向量,进行融合处理,得到实体组向量。

作为示例,参见上表1,类别1中的实体包括:实体1和实体2,即类别1中实体的数量为两个,将类别1中的实体1和实体2分别对应的融合向量,进行融合处理,得到类别1对应的实体组向量。

作为示例,参见上表1,类别2中的实体包括:实体4和实体5,即类别2中实体的数量为两个,将类别2中的实体4和实体5分别对应的融合向量,进行融合处理,得到类别2对应的实体组向量。

在步骤101323中,将实体组向量确定为类别中每个实体的实体向量。

作为示例,参见上表1,将类别1对应的实体组向量确定为类别1中的实体1和实体2的实体向量。

作为示例,参见上表1,将类别2对应的实体组向量确定为类别2中的实体4和实体5的实体向量。

如此,在相应类别中实体的数量为至少两个时,通过将类别中的各实体分别对应的融合向量,进行融合处理,得到实体组向量,从而对同类别的实体的融合向量进行再融合,所得到的实体组向量确定为类别中每个实体的实体向量,从而有效保证类别中的每个实体的实体向量的通用性,进而在后续确定代码模板的过程中,可以对每个类别的任意一个实体向量进行处理即可,无需对领域模型的每个实体的实体向量进行处理,从而有效节省了确定代码模板的耗时,提升了代码模板的生成效率。

在一些实施例中,参见图3G,图3G是本申请实施例提供的代码模板的生成方法的流程示意图,图3G所示出的步骤10132可以通过执行以下步骤101324至步骤101325实现。

在步骤101324中,将各实体对应的文本向量和位置向量进行融合处理,得到各实体的融合向量。

作为示例,参见上表1,将实体1对应的文本向量和位置向量进行融合处理,得到实体1的融合向量。将实体2对应的文本向量和位置向量进行融合处理,得到实体2的融合向量。将实体3对应的文本向量和位置向量进行融合处理,得到实体3的融合向量。将实体4对应的文本向量和位置向量进行融合处理,得到实体4的融合向量。将实体5对应的文本向量和位置向量进行融合处理,得到实体5的融合向量。

在步骤101325中,当类别中实体的数量为一个时,将类别中实体对应的融合向量,确定为类别中实体的实体向量。

作为示例,参见上表1,类别3中的实体包括:实体3,即,类别3中实体的数量为一个,将类别3中实体对应的融合向量,确定为类别3中实体的实体向量。

如此,在类别中实体的数量为一个时,则直接将类别中实体对应的融合向量确定为类别中实体的实体向量,进而在后续确定代码模板的过程中,可以对该类别的实体向量进行处理即可,无需对领域模型的每个实体的实体向量进行处理,从而有效节省了确定代码模板的耗时,提升了代码模板的生成效率。

在一些实施例中,获取包括多个实体的领域模型中各所述实体的实体向量是通过调用实体识别网络实现的,所述实体识别网络包括编码层和识别层。

作为示例,参见图4E,图4E是本申请实施例提供的代码模板的生成方法的原理示意图。获取包括多个实体的领域模型中各所述实体的实体向量是通过调用如图4E所示出的实体识别网络40实现的,实体识别网络40包括编码层41和识别层42。实体识别网络40用于确定实体的实体向量。

在一些实施例中,上述步骤1011可以通过以下方式实现:调用编码层对文本信息进行编码,得到实体对应的文本向量。

作为示例,参见图4E,调用编码层41对文本信息进行编码,得到实体对应的文本向量。

在一些实施例中,上述步骤1012可以通过以下方式实现:调用编码层对位置信息进行编码,得到实体对应的位置向量。

作为示例,参见图4E,调用编码层41对位置信息进行编码,得到实体对应的位置向量。

在一些实施例中,上述步骤1013可以通过以下方式实现:基于各实体的文本向量和位置向量,调用识别层进行实体识别,得到各实体的实体向量。

作为示例,参见图4E,基于各实体的文本向量和位置向量,调用识别层42进行实体识别,得到各实体的实体向量。

在步骤102中,确定多个实体向量所构建的实体组之间的实体关系,其中,每个实体组包括至少一个实体向量。

在一些实施例中,实体组之间的实体关系包括泛化关系、关联关系等,其中,关联关系包括单向关联关系和双向关联关系等。

在一些实施例中,实体组包括一阶实体组和二阶实体组,一阶实体组是指仅包括一个实体向量的实体组,二阶实体组是指包括两个实体向量的实体组。

在一些实施例中,实体关系包括一阶实体关系和二阶实体关系;参见图3I,图3I是本申请实施例提供的代码模板的生成方法的流程示意图,图3I所示出的步骤102可以通过执行以下步骤1021至步骤1023实现。

在步骤1021中,将各实体向量分别确定为对应的一阶实体组,并确定任意两个一阶实体组之间的一阶实体关系。

作为示例,参见图4A,将实体1.1、实体1.2、实体1.3、实体2.1、实体2.2、实体2.3、实体3.1、实体3.2、实体3.3分别对应的实体向量,分别确定为对应的一阶实体组,并确定任意两个一阶实体组之间的一阶实体关系,例如,实体1.1对应的一阶实体组和实体2.2对应的一阶实体组之间的一阶实体关系为关联关系;实体2.1对应的一阶实体组和实体2.2对应的一阶实体组之间的一阶实体关系为关联关系。

在步骤1022中,当一阶实体关系的数量为至少两个、且存在相同的两个一阶实体关系、相同的两个一阶实体关系所对应的实体向量存在部分不同时,将不同的实体向量合并为二阶实体组。

在一些实施例中,在确定二阶实体关系之后,还可以根据领域模型的结构特性,依次确定三阶实体关系、四阶实体关系、N阶实体关系等,实体关系的阶数与领域模型的结构的复杂程度正相关。

作为示例,参见图4A,实体1.1对应的一阶实体组和实体2.2对应的一阶实体组之间的一阶实体关系,和实体2.1对应的一阶实体组和实体2.2对应的一阶实体组之间的一阶实体关系均为关联关系,即,实体1.1对应的一阶实体组和实体2.2对应的一阶实体组之间的一阶实体关系,和实体2.1对应的一阶实体组和实体2.2对应的一阶实体组之间的一阶实体关系相同,且实体1.1对应的一阶实体组和实体2.2对应的一阶实体组之间的一阶实体关系所对应的实体向量,和实体2.1对应的一阶实体组和实体2.2对应的一阶实体组之间的一阶实体关系,存在部分不同的实体向量,即实体1.1所对应的实体向量和实体2.1所对应的实体向量不同,将实体1.1所对应的实体向量和实体2.1所对应的实体向量合并为二阶实体组。

作为示例,实体1的实体向量和实体2的实体向量的实体关系为关联关系,实体1的实体向量和实体3的实体向量的实体关系为关联关系,即,一阶实体关系的数量为两个、且存在相同的两个一阶实体关系(均为关联关系)、相同的两个一阶实体关系所对应的实体向量存在部分不同(即实体2的实体向量和实体3的实体向量)时,将实体2的实体向量和实体3的实体向量合并为二阶实体组。

在步骤1023中,确定每个二阶实体组对应的二阶实体关系。

如此,在一阶实体关系的数量为至少两个、且存在相同的两个一阶实体关系、相同的两个一阶实体关系所对应的实体向量存在部分不同时,将不同的实体向量合并为二阶实体组,从而准确的确定出二阶实体组,便于后续根据一阶实体组和二阶实体组确定相应的实体关系三元组。

在一些实施例中,参见图3H,图3H是本申请实施例提供的代码模板的生成方法的流程示意图,图3H所示出的步骤1023,在二阶实体组的数量为至少两个时,针对每个二阶实体组执行以下步骤10231至步骤10232实现。

在步骤10231中,确定任意两个二阶实体组之间的第一实体关系,并确定二阶实体组与每个一阶实体组之间的第二实体关系。

在一些实施例中,第一实体关系是指任意两个二阶实体组之间的实体关系,第二实体关系是指二阶实体组与一阶实体组之间的实体关系。

作为示例,确定二阶实体向量组{实体向量1,实体向量2}、二阶实体向量组{实体向量3,实体向量4}、二阶实体向量组{实体向量1,实体向量3}、二阶实体向量组{实体向量1,实体向量4}、二阶实体向量组{实体向量2,实体向量4}、二阶实体向量组{实体向量2,实体向量3}中的任意两个之间的第一实体向量关系,例如,二阶实体向量组{实体向量1,实体向量2}和二阶实体向量组{实体向量1,实体向量3}之间的实体向量关系可以为泛化关系,二阶实体向量组{实体向量1,实体向量2}和二阶实体向量组{实体向量2,实体向量3}之间的实体向量关系可以为关联关系;二阶实体向量组{实体向量1,实体向量4}和二阶实体向量组{实体向量2,实体向量3}之间的关联关系可以为泛化关系。

作为示例,确定二阶实体组{实体向量1,实体向量2}与一阶实体组{实体向量1}之间的第二实体关系可以为泛化关系,确定二阶实体组{实体向量1,实体向量2}与一阶实体组{实体向量2}之间的第二实体关系可以为关联关系。

在步骤10232中,将第一实体关系及第二实体关系确定为二阶实体组对应的二阶实体关系。

作为示例,将二阶实体组{实体向量1,实体向量2}对应的第一实体关系和第二实体关系确定为二阶实体组对应的二阶实体关系。

作为示例,将二阶实体组{实体向量1,实体向量3}对应的第一实体关系和第二实体关系确定为二阶实体组对应的二阶实体关系。

在一些实施例中,当二阶实体组的数量为一个时,确定二阶实体组分别与每个一阶实体组之间的二阶实体关系。

在步骤103中,基于实体关系和各实体的实体向量,构建领域模型对应的至少一个实体关系三元组。

其中,实体关系三元组包括:两个实体向量组、以及相应的实体关系。

作为示例,参见图4B,基于实体1的实体向量和实体2的实体向量之间的实体关系(单向关联关系),和实体1的实体向量、实体2的实体向量,构建如图4B所示出的领域模型的实体关系三元组,例如,实体关系三元组为:{实体1的实体向量,实体2的实体向量,单向关联}。

在一些实施例中,参见图3I,图3I是本申请实施例提供的代码模板的生成方法的流程示意图,图3I所示出的步骤103可以针对各实体关系分别执行以下步骤1031至步骤1033实现。

在步骤1031中,确定与实体关系对应的两个实体组。

作为示例,参见图4B,确定与实体关系对应的两个实体组分别为一阶实体组{实体1的实体向量}、一阶实体组{实体2的实体向量}。

在步骤1032中,将两个实体组和实体关系分别进行格式化处理,得到各自对应的格式化处理结果。

在一些实施例中,格式化处理是指将实体组和实体关系进行格式统一的处理过程。

作为示例,参见图4B,将一阶实体组{实体1的实体向量}、一阶实体组{实体2的实体向量}和实体关系:单向关联,分别进行格式化处理,得到各自对应的格式化处理结果。

在步骤1033中,基于各格式化处理结果,构建与实体关系对应的实体关系三元组。

作为示例,基于实体1的实体向量和实体2的实体向量之间的实体关系(单向关联关系),和实体1的实体向量、实体2的实体向量分别对应的格式化处理结果,构建如图4B所示出的领域模型的与实体关系对应的实体关系三元组,例如,实体关系三元组为:{实体1的实体向量,实体2的实体向量,单向关联}。

如此,通过实体关系和各实体的实体向量,构建领域模型对应的至少一个实体关系三元组,进而可以通过实体关系三元组的方式表征领域模型中的各实体的实体向量之间的实体关系,便于后续根据实体关系三元组,生成领域模型对应的代码模板,保证了所生成的代码模板能够完整全面的反映领域模型的所有逻辑,进而保证了所生成代码的全面性和准确性。

在步骤104中,根据至少一个实体关系三元组,生成领域模型对应的代码模板。

在一些实施例中,代码模板,用于供结合目标领域模型的实体结构,生成目标领域模型对应的代码,目标领域模型中的实体与领域模型中的实体归属于同一领域。

作为示例,参见图4F,图4F是本申请实施例提供的代码模板的生成方法的原理示意图。图4F所示出的领域模型的实体关系三元组可以为:

{实体向量1,实体向量2,实体向量3,单向关联} (1)

{实体向量2,实体向量3,变量} (2)

{实体向量1,实体向量2,成员变量}(3)

{实体向量1,{实体向量2,实体向量3},单向关联}(4)

基于上述实体关系三元组(1)至(4),生成领域模型对应的代码模板,并基于代码模板生成对应的代码,代码形式可以为:

Class实体向量1

{实体向量2;

实体向量3;

}

在一些实施例中,参见图3I,图3I是本申请实施例提供的代码模板的生成方法的流程示意图,图3I所示出的步骤104可以针对各实体关系三元组分别执行以下步骤1041至步骤1043实现。

在步骤1041中,在关联数据库中查询包括实体关系三元组的目标索引条目,将目标索引条目中的属性模板确定为实体关系三元组对应的属性模板。

在一些实施例中,关联数据库中预先建立有多条表征所述实体关系三元组和所述属性模板之间映射关系的索引条目。

作为示例,在关联数据库中查询包括实体关系三元组{实体向量1,{实体向量2,实体向量3},单向关联}的目标索引条目,将目标索引条目中的属性模板确定为实体关系三元组对应的属性模板。

在步骤1042中,获取用于对属性模板进行变量声明的通用代码模板。

在一些实施例中,通用代码模板用于对属性模板进行变量声明。

在步骤1043中,将各实体关系三元组分别对应的属性模板,嵌套至通用代码模板中,生成领域模型对应的代码模板。

作为示例,生成领域模型对应的代码模板的表达形式可以为:

Class{实体向量}

{

属性模板;

}

如此,通过确定包括多个实体的领域模型中各实体的实体向量,以及实体向量之间的实体关系,基于实体关系和实体向量构建实体关系三元组,根据实体关系三元组生成领域模型对应的代码模板。如此,通过自动化的充分挖掘领域模型的实体向量和实体关系,基于实体关系和实体向量生成代码模板,在生成代码模板的过程中,通过自动化生成领域模型的实体向量和实体关系,从而有效提高了代码模板的生成效率,通过对实体向量和实体关系的充分挖掘,所得到的实体向量和实体关系能够完整体现领域模型的内在逻辑关系,从而基于实体向量和实体关系生成代码模板能够有效提高代码模板的质量。

下面,将说明本申请实施例在一个实际的代码生成的应用场景中的示例性应用。

在一些实施例中,预训练模型(Bidirectional Encoder Representations FromTransformers,BERT)采用掩码语言模型(Masked Language Model,MLM)的方式进行双向预训练,生成深层的双向语言表征,能够更有效的结合上下文进行文本任务。比如常规文本识别中,一个动词A在动词B后面,动词A作为宾语会成为名词,在挖掘动词A和动词B的关系时除了词语本身的特性,还需要结合上下文。

同样的,在识别领域模型中实体以及实体的关系时,结合实体在多个类图、多个序列图中的上下文,则能够识别出真实的实体与实体的关系。同时,CRF层提供位置标注,帮助模型捕获到实体与关系的相对位置。下图为表示实体识别中多个实体间会互相提供信息,影响最终的关系输出,实体关系即能格式化为模板。

在一些实施例中,参见图4A,图4A是本申请实施例提供的代码模板的生成方法的原理示意图。如图4A所示出的领域模型的结构,实体1.3分别与实体1.2、实体2.2、实体3.2、实体1.1、实体2.1、实体3.1之间的关系可以抽取关系1,实体2.3分别与实体1.2、实体2.2、实体3.2、实体1.1、实体2.1、实体3.1之间的关系可以抽取关系2,实体3.3分别与实体1.2、实体2.2、实体3.2、实体1.1、实体2.1、实体3.1之间的关系可以抽取关系3。

在一些实施例中,本申请实施例提供的代码模板的生成方法可以通过以下步骤201至步骤204实现。

在步骤201中,基于领域知识构建领域模型图。

作为示例,参见图4B,图4B是本申请实施例提供的代码模板的生成方法的原理示意图。在图4B中,基于领域知识构建的领域模型图包括实体1和实体2,以及实体1和实体2之间的关联关系。

在步骤202中,将领域模型图转换为多个单层次的实体关系三元组,实体关系三元组表达了最直接的实体关系,实体关系仅与最相邻实体相关,无法识别跨类图、跨序列图的关系。其中,实体在多个类图、序列图中保持一致,实体关系为一个有限的操作集。

作为示例,参见图4B,基于图4B所示出的领域模型图,转换得到的实体关系三元组的表达式可以为:

{实体向量1,实体向量2,泛化} (5)

在步骤203中,以语义表达实体关系,需要进行双向表达,并且保持多个语句的实体名统一。

作为示例,参见图4B,双向表达的表达式可以为:

{实体向量1是实体向量2的泛化,实体向量2是实体向量1的子类} (6)

在步骤204中,标注匹配的代码和模板。

作为示例,标注匹配后的代码和代码模板的表达式可以为:

class Entity2:public Entity1{} (7)

class${Entity}:public${泛化Entity} (8)

本申请实施例提供的实体识别模块(NER)使用BERT模型在领域模型数据集中获得实体,得到实体向量(Token Embeddings),即相应的类图实体和实体关系会被标注为E。由于领域模型中已有类图实体的相关信息,因此,实体关系能够被区分出来。

在一些实施例中,参见图4C,图4C是本申请实施例提供的代码模板的生成方法的原理示意图。本申请实施例中的实体识别模块(NER)使用BERT模型在领域模型数据集中获得实体,得到实体向量(Token Embeddings),即相应的类图实体和实体关系会被标注为E。由于领域模型中已有类图实体的相关信息,因此,实体关系能够被区分出来。

作为示例,参见图4C,对于实体A而言,基于实体A调用预训练模型得到实体A对应的目标文本向量(E1)、关联文本向量和位置向量(P1),其中,关联文本向量包括前向关联文本向量(R1)和后向关联文本向量(R2)。基于实体A对应的目标文本向量(E1)、关联文本向量和位置向量(P1)调用识别层进行识别处理,得到识别处理结果;基于识别处理结果调用验证层进行验证处理,将验证处理结果确定为实体B的向量1。

作为示例,参见图4C,对于实体B而言,基于实体B调用预训练模型得到实体B对应的目标文本向量(E2)、关联文本向量和位置向量(P2),其中,关联文本向量包括前向关联文本向量(R2)和后向关联文本向量(R2)。基于实体B对应的目标文本向量(E2)、关联文本向量和位置向量(P2)调用识别层进行识别处理,得到识别处理结果;基于识别处理结果调用验证层进行验证处理,将验证处理结果确定为实体2的向量2。

作为示例,参见图4C,对于实体C而言,基于实体C调用预训练模型得到实体C对应的目标文本向量(E3)、关联文本向量和位置向量(P3),其中,关联文本向量包括前向关联文本向量(R3)和后向关联文本向量(R3)。基于实体C对应的目标文本向量(E3)、关联文本向量和位置向量(P3)调用识别层进行识别处理,得到识别处理结果;基于识别处理结果调用验证层进行验证处理,将验证处理结果确定为实体3的向量3。

作为示例,参见图4C,对于实体D而言,基于实体D调用预训练模型得到实体D对应的目标文本向量(E4)、关联文本向量和位置向量(P4),其中,关联文本向量包括前向关联文本向量(R4)和后向关联文本向量(R4)。基于实体D对应的目标文本向量(E4)、关联文本向量和位置向量(P4)调用识别层进行识别处理,得到识别处理结果;基于识别处理结果调用验证层进行验证处理,将验证处理结果确定为实体4的向量4。

在一些实施例中,参见图4D,图4D是本申请实施例提供的代码模板的生成方法的原理示意图。自然语言处理中的关系抽取任务的目的是找出2个实体向量之间的语义关系,本申请实施例中的关系抽取任务是为了寻找2个实体之间的领域模型中的语义关系,比如泛化关系、关联关系等,并且由于在多类图和多序列图中,多个实体间有多种关系组合,本申请实施例中的关系抽取模块需要抽取出多重的实体关系。使用BERT模型帮助抽取实体关系,是因为关系分类不仅依赖整个文本的信息,也依赖具体的目标实体的信息。由于实体识别模块识别出的实体与领域模型自由的实体进行比对,能够有效地取出关系实体,能够对关系实体的位置进行标注,通过领域模型获得基础的关系三元组信息,并认为转换成能描述更多信息的中文结构,以此表达出代码的真实关系,例如关联关系与泛化关系,真实的代码应该是中文语意表达的内容,中文语意中隐含的实体关系信息,是真正用于代码生成的实体关系信息,这依赖于实体的上下文以及位置。将数据集通过BERT模型训练映射,能够得到相应的实体向量。其中,实体向量包括目标文本向量(Token Embeddings):用于表达识别的实体、关联文本向量(Segment Embeddings):用于表达识别的关系组合,比如处于一个关系内的实体和关系实体,都会被标注为同一个关系中,比如都标注为R1。位置向量(Position Embeddings):用于表征关系位置,基于上下文输出,用于标注实体和实体关系位置。

在一些实施例中,参见图4E,图4E是本申请实施例提供的代码模板的生成方法的原理示意图。对编码结果进行识别,得到实体的主体特征、实体的客体特征以及实体的主客体关系特征。基于实体的主体特征、实体的客体特征以及实体的主客体关系特征,得到抽取结果,其中,抽取结果为实体关系三元组,实体关系三元组用于模板生成。

在一些实施例中,参见图4F,图4F是本申请实施例提供的代码模板的生成方法的原理示意图。构建如图4F所示出的领域模型图,实体向量7、实体向量8以及实体向量9。提取实体关系三元组:{实体向量7,实体向量8,实体向量9,单向关联}、{实体向量7,实体向量8,成员变量}、{实体向量7,实体向量9,成员变量}、{实体向量7,{实体向量8,实体向量9}}。

生成属性模板:${Entity}${Entity RoleName};

生成通用代码模板:class${Entity}{属性模板};

生成属性代码:Entity2 e2;Entity3 e3;

生成代码:class Entity1{属性代码};

生成图4F所示出的领域模型的代码:class Entity1{Entity2 e2;Entity3 e3;}。

如此,通过本申请实施例提供的代码模板的生成方法,对于新的领域模型,能够推导出实体与实体关系,以此得到代码模板,并通过代码模板生成代码,生成的代码模板更加符合领域模型实际要表达的实体与实体关系,以此产生低冗余度高内聚的领域类代码。能够有效分离领域专家和开发人员的人力,让领域专家专注于领域模型设计,业务开发人员基于模板生成的代码进行业务开发,能够让业务代码更满足领域逻辑,以此提升业务开发效率和代码质量。

可以理解的是,在本申请实施例中,涉及到代码模板等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。

下面继续说明本申请实施例提供的代码模板的生成装置255的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器250的代码模板的生成装置255中的软件模块可以包括:获取模块2551,用于获取包括多个实体的领域模型中各实体的实体向量;关系确定模块2552,用于确定多个实体向量所构建的实体组之间的实体关系,其中,每个实体组包括至少一个实体向量;构建模块2553,用于基于实体关系和各实体的实体向量,构建领域模型对应的至少一个实体关系三元组;其中,实体关系三元组包括:两个实体向量组、以及相应的实体关系;生成模块2554,用于根据至少一个实体关系三元组,生成领域模型对应的代码模板;代码模板,用于供结合目标领域模型的实体结构,生成目标领域模型对应的代码,目标领域模型中的实体与领域模型中的实体归属于同一领域。

在一些实施例中,上述代码模板的生成装置255,还包括:实体信息获取模块,用于获取领域模型中各实体的实体信息,实体信息包括实体的文本信息及位置信息。

在一些实施例中,上述获取模块2551,还用于针对领域模型中各实体分别执行以下处理:对文本信息进行编码,得到实体对应的文本向量,并对位置信息进行编码,得到实体对应的位置向量;结合文本向量和位置向量,确定各实体的实体向量。

在一些实施例中,文本信息包括用于描述实体的目标文本、及与实体存在关联关系的实体的关联文本,文本向量包括目标文本向量及关联文本向量;上述获取模块2551,还用于对目标文本进行编码,得到目标文本向量,并对关联文本进行编码,得到关联文本向量。

在一些实施例中,上述获取模块2551,还用于结合文本向量和位置向量,对各实体进行分类,得到各实体对应的类别;对每个类别的实体所对应的文本向量和位置向量,进行融合处理,得到对应类别的各实体的实体向量。

在一些实施例中,上述获取模块2551,还用于针对各实体分别执行以下处理:基于实体的文本向量和位置向量,对实体进行分类预测,得到实体分别对应各实体类别的类别概率值;将最大的类别概率值所对应的实体类别,确定为实体对应的类别。

在一些实施例中,上述获取模块2551,还用于将各实体对应的文本向量和位置向量进行融合处理,得到各实体的融合向量;当类别中实体的数量为至少两个时,将类别中的各实体分别对应的融合向量,进行融合处理,得到实体组向量;将实体组向量确定为类别中每个实体的实体向量。

在一些实施例中,上述获取模块2551,还用于将各实体对应的文本向量和位置向量进行融合处理,得到各实体的融合向量;当类别中实体的数量为一个时,将类别中实体对应的融合向量,确定为类别中实体的实体向量。

在一些实施例中,获取包括多个实体的领域模型中各实体的实体向量是通过调用实体识别网络实现的,实体识别网络包括编码层和识别层;上述获取模块2551,还用于调用编码层对文本信息进行编码,得到实体对应的文本向量;调用编码层对位置信息进行编码,得到实体对应的位置向量;基于各实体的文本向量和位置向量,调用识别层进行实体识别,得到各实体的实体向量。

在一些实施例中,上述关系确定模块2552,还用于将各实体向量分别确定为对应的一阶实体组,并确定任意两个一阶实体组之间的一阶实体关系;当一阶实体关系的数量为至少两个、且存在相同的两个一阶实体关系、相同的两个一阶实体关系所对应的实体向量存在部分不同时,将不同的实体向量合并为二阶实体组,并确定每个二阶实体组对应的二阶实体关系。

在一些实施例中,上述关系确定模块2552,还用于当二阶实体组的数量为至少两个时,针对每个二阶实体组执行如下处理:确定任意两个二阶实体组之间的第一实体关系,并确定二阶实体组与每个一阶实体组之间的第二实体关系;将第一实体关系及第二实体关系确定为二阶实体组对应的二阶实体关系。

在一些实施例中,上述构建模块2553,还用于针对各实体关系分别执行以下处理:确定与实体关系对应的两个实体组;将两个实体组和实体关系分别进行格式化处理,得到各自对应的格式化处理结果;基于各格式化处理结果,构建与实体关系对应的实体关系三元组。

在一些实施例中,上述生成模块2554,还用于针对各实体关系三元组分别执行以下处理:在关联数据库中查询包括实体关系三元组的目标索引条目,将目标索引条目中的属性模板确定为实体关系三元组对应的属性模板;获取用于对属性模板进行变量声明的通用代码模板;将各实体关系三元组分别对应的属性模板,嵌套至通用代码模板中,生成领域模型对应的代码模板。

本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的代码模板的生成方法。

本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的代码模板的生成方法,例如,如图3A示出的代码模板的生成方法。

在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。

作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

综上所述,本申请实施例具有如下有益效果:

(1)通过确定包括多个实体的领域模型中各实体的实体向量,以及实体向量之间的实体关系,基于实体关系和实体向量构建实体关系三元组,根据实体关系三元组生成领域模型对应的代码模板。如此,通过自动化的充分挖掘领域模型的实体向量和实体关系,基于实体关系和实体向量生成代码模板,在生成代码模板的过程中,通过自动化生成领域模型的实体向量和实体关系,从而有效提高了代码模板的生成效率,通过对实体向量和实体关系的充分挖掘,所得到的实体向量和实体关系能够完整体现领域模型的内在逻辑关系,从而基于实体向量和实体关系生成代码模板能够有效提高代码模板的质量。

(2)通过对实体的位置信息和文本信息进行编码,得到相应的文本向量和位置向量,便于后续根据实体的文本向量和位置向量,确定各实体的实体向量,从而有效提高了所确定的实体向量的准确性。

(3)在相应类别中实体的数量为至少两个时,通过将类别中的各实体分别对应的融合向量,进行融合处理,得到实体组向量,从而对同类别的实体的融合向量进行再融合,所得到的实体组向量确定为类别中每个实体的实体向量,从而有效保证类别中的每个实体的实体向量的通用性,进而在后续确定代码模板的过程中,可以对每个类别的任意一个实体向量进行处理即可,无需对领域模型的每个实体的实体向量进行处理,从而有效节省了确定代码模板的耗时,有效提升了代码模板的生成效率。

(4)在类别中实体的数量为一个时,则直接将类别中实体对应的融合向量确定为类别中实体的实体向量,进而在后续确定代码模板的过程中,可以对该类别的实体向量进行处理即可,无需对领域模型的每个实体的实体向量进行处理,从而有效节省了确定代码模板的耗时,有效提升了代码模板的生成效率。

(5)在一阶实体关系的数量为至少两个、且存在相同的两个一阶实体关系、相同的两个一阶实体关系所对应的实体向量存在部分不同时,将不同的实体向量合并为二阶实体组,从而准确的确定出二阶实体组,便于后续根据一阶实体组和二阶实体组确定相应的实体关系三元组。

(6)通过实体关系和各实体的实体向量,构建领域模型对应的至少一个实体关系三元组,进而可以通过实体关系三元组的方式表征领域模型中的各实体的实体向量之间的实体关系,便于后续根据实体关系三元组,生成领域模型对应的代码模板,保证了所生成的代码模板能够完整全面的反映领域模型的所有逻辑,进而保证了所生成代码的全面性和准确性。

以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

相关技术
  • 一种小程序预览码生成方法、设备及存储介质
  • 保险产品的生成方法、装置、计算机设备及存储介质
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 目标检测方法和装置、电子设备、存储介质、程序产品
  • 一种代码模板的生成方法、装置、电子设备及存储介质
  • 声音程序化生成方法、装置、设备、存储介质及程序产品
技术分类

06120116484026