基于人工智能的代码自动生成方法转让专利

申请号 : CN202310091731.0

文献号 : CN115774548B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘春江

申请人 : 北京一平方科技有限公司

摘要 :

本发明涉及数据处理技术领域,提出了基于人工智能的代码自动生成方法,包括:获取用户的输入需求;获取输入需求中的关键词,得到每个关键词对应的缺一关键词组,获取每个缺一关键词组的若干匹配文档;分别计算每个缺一关键词组的若干匹配文档中的任意两个代码之间的综合相似度,得到输入需求中每个关键词的敏感度;构建输入需求中关键词的第一图结构,获取若干候选关键词组,构建每个候选关键词组的第二图结构,获取每个关键词在第一图结构与每个第二图结构的一致性,根据一致性获取输入需求与每个候选关键词组的匹配度,生成输入需求的最佳匹配代码。本发明旨在解决传统关键词匹配进行代码生成导致匹配不准确而产生较大误差的问题。

权利要求 :

1.基于人工智能的代码自动生成方法,其特征在于,该方法包括以下步骤:

获取输入需求及代码库;

获取输入需求中的关键词,将输入需求中的所有关键词作为一个关键词组,分别去除其中每个关键词得到若干缺一关键词组,所述每个缺一关键词组分别对应一个输入需求中的关键词;

获取代码库中每条预设请求的关键词,将每条预设请求的若干关键词分别作为每条预设请求的关键词组,获取每个缺一关键词组在代码库中匹配的若干初始关键词组,将每个缺一关键词组匹配的若干初始关键词组与对应的代码分别作为每个缺一关键词组的若干初始文档,根据初始关键词组与对应的缺一关键词组获取每个缺一关键词组的若干匹配文档;

获取任意一个缺一关键词组的若干匹配文档中的任意两个代码之间的整体相似度及匹配相似度,将整体相似度与匹配相似度的均值作为两个代码之间的综合相似度,根据每个缺一关键词组的若干匹配文档中的若干综合相似度获取输入需求中每个关键词的敏感度;

构建输入需求中关键词的第一图结构,获取每个关键词在第一图结构中对应节点的最大路径,根据每个关键词的敏感度及对应节点的最大路径获取每个关键词的一致性邻域范围;获取代码库中若干候选关键词组,构建每个候选关键词组的第二图结构,获取每个关键词在第一图结构与每个第二图结构的一致性,将输入需求中所有关键词在第一图结构与任意一个第二图结构的一致性的均值作为输入需求与该第二图结构对应的候选关键词组的匹配度,将匹配度最大的候选关键词组对应的预设需求的代码作为输入需求的最佳匹配代码生成;

所述获取输入需求中每个关键词的敏感度,包括的具体方法为:

其中,表示输入需求中任意一个关键词的敏感度,表示该关键词对应的缺一关键词组的若干匹配文档中共有 个综合相似度,表示第个综合相似度, 表示以自然常数为底的指数函数。

2.根据权利要求1所述的基于人工智能的代码自动生成方法,其特征在于,所述获取每个缺一关键词组在代码库中匹配的若干初始关键词组,包括的具体方法为:获取任意一个缺一关键词组,将该缺一关键词组与代码库中若干关键词数量与输入需求的关键词组中关键词数量相等的关键词组进行匹配,将其中包含该缺一关键词组所有关键词的代码库中的关键词组作为该缺一关键词组在代码库中匹配的初始关键词组。

3.根据权利要求1所述的基于人工智能的代码自动生成方法,其特征在于,所述根据初始关键词组与对应的缺一关键词组获取每个缺一关键词组的若干匹配文档,包括的具体方法为:将每个缺一关键词组对应的关键词记为缺一关键词,将每个初始关键词组中不匹配的关键词记为剩余关键词,将剩余关键词与缺一关键词中每个字分别作为一个元素,分别构成剩余关键词的剩余关键字集合与缺一关键词的缺一关键字集合;

每个缺一关键词组分别对应若干初始关键词组,每个初始关键词组分别对应一个剩余关键词,则每个缺一关键字集合分别对应若干剩余关键字集合,获取任意一个缺一关键字集合与对应的每个剩余关键字集合的交集,获取交集不为空的剩余关键字集合,将交集不为空的剩余关键字集合对应的初始关键词组的初始文档作为该缺一关键字集合对应的缺一关键词组的匹配文档。

4.根据权利要求1所述的基于人工智能的代码自动生成方法,其特征在于,所述获取任意一个缺一关键词组的若干匹配文档中的任意两个代码之间的整体相似度及匹配相似度,包括的具体方法为:将代码中的每个字母及字符均转换为ASCII码的十进制形式,则代码中的字母及字符分别用不同的数字表示,按照代码中的字母及字符顺序将数字进行排列得到两个代码的数字序列,获取两个数字序列之间的DTW距离,将DTW距离的倒数作为两个代码之间的整体相似度;

分别计算两个代码中各个字母出现的频率,对于其中一个代码的各字母按照出现频率从小到大的顺序排列得到字母频率序列,获取两个代码的字母频率序列,通过阈值分割获取两个代码中的高频字母;

将两个代码中的高频字母构建二分图,其中一个代码中的每个高频字母作为二分图的左侧节点,另一个代码中的每个高频字母作为二分图的右侧节点,节点之间的边值为两侧节点对应字母在各自代码中出现频率的比值,获取最佳匹配结果,将最佳匹配结果中每两个匹配的节点作为一个节点对,节点对中两个节点对应字母相同的记为相同节点对,将相同节点对的数量与所有节点对数量的比值作为两个代码之间的匹配相似度。

5.根据权利要求1所述的基于人工智能的代码自动生成方法,其特征在于,所述构建输入需求中关键词的第一图结构,包括的具体方法为:将输入需求中每个关键词分别作为一个节点,根据TextRank方法获取关键词过程中词之间的相连关系获取关键词之间的相连关系,将每个关键词对应的节点根据关键词之间的相连关系得到节点之间的边,将节点与边构成的图结构记为输入需求中关键词的第一图结构。

6.根据权利要求1所述的基于人工智能的代码自动生成方法,其特征在于,所述获取每个关键词在第一图结构中对应节点的最大路径,包括的具体方法为:每个关键词分别为第一图结构中的一个节点,获取第一图结构中每个节点到其他节点的路径长度,将每个节点最大的路径长度作为每个节点的最大路径;所述路径长度为每个节点到其他节点经过的边的数量。

7.根据权利要求1所述的基于人工智能的代码自动生成方法,其特征在于,所述获取代码库中若干候选关键词组,包括的具体方法为:在代码库中若干预设需求的关键词组中,获取与输入需求的关键词组完全一致的若干关键词组并记为候选关键词组,所述完全一致包括关键词组间关键词数量相同,且关键词一一对应完全相同。

8.根据权利要求1所述的基于人工智能的代码自动生成方法,其特征在于,所述获取每个关键词在第一图结构与每个第二图结构的一致性,包括的具体方法为:获取任意一个第二图结构,获取第一图结构与该第二图结构中任意两个对应关键词相同的节点,将与其中任意一个节点直接相连的节点记为该节点的一级节点,与一级节点相连的节点记为该节点的二级节点,以此类推分别获取该节点与另一个对应关键词相同的多级节点;

将两个节点的一级节点对应的关键词作为元素,分别获取两个节点的一级节点集合,获取两个一级节点集合的交集与并集,将交集与并集的比值作为两个节点的一级统一性;

以两个节点中第一图结构中节点的一致性邻域范围为范围,获取范围内两个节点的多级节点的多级统一性,将两个节点的一致性邻域范围内的多级节点的多级统一性的均值作为两个节点对应关键词的一致性。

说明书 :

基于人工智能的代码自动生成方法

技术领域

[0001] 本发明涉及数据处理技术领域,具体涉及基于人工智能的代码自动生成方法。

背景技术

[0002] 代码自动生成是一种根据用户输入需求,系统自动输出匹配的代码的技术;现有的代码自动生成方法通常计算获取输入需求中的关键词,计算关键词与代码库中每个代码预先设定的需求中的关键词的匹配程度,将最大匹配程度对应的代码作为输入需求的匹配代码;在关键词匹配过程中,往往是计算所有关键词的一致性,或结合关键词顺序的一致性进行匹配;但汉字表达含义较为复杂,经常出现一个词语中某个字的改变会导致词语的表达意思发生较大变化,进而导致句子的表达意思出现变化,句子表达意思变化的直观反应即是对应代码也会发生较大变化,进而因为某个字的改变而导致代码匹配结果出现较大误差;同时传统方法计算关键词通常选择某种规则来进行,例如将出现频率较大的作为关键词,但不满足规则的出现频率较小的词语不一定不重要,因此现有代码自动生成方法有时会导致匹配结果的较大误差。

发明内容

[0003] 本发明提供基于人工智能的代码自动生成方法,以解决现有的传统关键词匹配进行代码生成导致匹配不准确而产生较大误差的问题,所采用的技术方案具体如下:
[0004] 本发明一个实施例提供了基于人工智能的代码自动生成方法,该方法包括以下步骤:
[0005] 获取输入需求及代码库;
[0006] 获取输入需求中的关键词,将输入需求中的所有关键词作为一个关键词组,分别去除其中每个关键词得到若干缺一关键词组,所述每个缺一关键词组分别对应一个输入需求中的关键词;
[0007] 获取代码库中每条预设请求的关键词,将每条预设请求的若干关键词分别作为每条预设请求的关键词组,获取每个缺一关键词组在代码库中匹配的若干初始关键词组,将每个缺一关键词组匹配的若干初始关键词组与对应的代码分别作为每个缺一关键词组的若干初始文档,根据初始关键词组与对应的缺一关键词组获取每个缺一关键词组的若干匹配文档;
[0008] 获取任意一个缺一关键词组的若干匹配文档中的任意两个代码之间的整体相似度及匹配相似度,将整体相似度与匹配相似度的均值作为两个代码之间的综合相似度,根据每个缺一关键词组的若干匹配文档中的若干综合相似度获取输入需求中每个关键词的敏感度;
[0009] 构建输入需求中关键词的第一图结构,获取每个关键词在第一图结构中对应节点的最大路径,根据每个关键词的敏感度及对应节点的最大路径获取每个关键词的一致性邻域范围;获取代码库中若干候选关键词组,构建每个候选关键词组的第二图结构,获取每个关键词在第一图结构与每个第二图结构的一致性,将输入需求中所有关键词在第一图结构与任意一个第二图结构的一致性的均值作为输入需求与该第二图结构对应的候选关键词组的匹配度,将匹配度最大的候选关键词组对应的预设需求的代码作为输入需求的最佳匹配代码生成。
[0010] 可选的,所述获取每个缺一关键词组在代码库中匹配的若干初始关键词组,包括的具体方法为:
[0011] 获取任意一个缺一关键词组,将该缺一关键词组与代码库中若干关键词数量与输入需求的关键词组中关键词数量相等的关键词组进行匹配,将其中包含该缺一关键词组所有关键词的代码库中的关键词组作为该缺一关键词组在代码库中匹配的初始关键词组。
[0012] 可选的,所述根据初始关键词组与对应的缺一关键词组获取每个缺一关键词组的若干匹配文档,包括的具体方法为:
[0013] 将每个缺一关键词组对应的关键词记为缺一关键词,将每个初始关键词组中不匹配的关键词记为剩余关键词,将剩余关键词与缺一关键词中每个字分别作为一个元素,分别构成剩余关键词的剩余关键字集合与缺一关键词的缺一关键字集合;
[0014] 每个缺一关键词组分别对应若干初始关键词组,每个初始关键词组分别对应一个剩余关键词,则每个缺一关键字集合分别对应若干剩余关键字集合,获取任意一个缺一关键字集合与对应的每个剩余关键字集合的交集,获取交集不为空的剩余关键字集合,将交集不为空的剩余关键字集合对应的初始关键词组的初始文档作为该缺一关键字集合对应的缺一关键词组的匹配文档。
[0015] 可选的,所述获取任意一个缺一关键词组的若干匹配文档中的任意两个代码之间的整体相似度及匹配相似度,包括的具体方法为:
[0016] 将代码中的每个字母及字符均转换为ASCII码的十进制形式,则代码中的字母及字符分别用不同的数字表示,按照代码中的字母及字符顺序将数字进行排列得到两个代码的数字序列,获取两个数字序列之间的DTW距离,将DTW距离的倒数作为两个代码之间的整体相似度;
[0017] 分别计算两个代码中各个字母出现的频率,对于其中一个代码的各字母按照出现频率从小到大的顺序排列得到字母频率序列,获取两个代码的字母频率序列,通过阈值分割获取两个代码中的高频字母;
[0018] 将两个代码中的高频字母构建二分图,其中一个代码中的每个高频字母作为二分图的左侧节点,另一个代码中的每个高频字母作为二分图的右侧节点,节点之间的边值为两侧节点对应字母在各自代码中出现频率的比值,获取最佳匹配结果,将最佳匹配结果中每两个匹配的节点作为一个节点对,节点对中两个节点对应字母相同的记为相同节点对,将相同节点对的数量与所有节点对数量的比值作为两个代码之间的匹配相似度。
[0019] 可选的,所述获取输入需求中每个关键词的敏感度,包括的具体方法为:
[0020]
[0021] 其中,表示输入需求中任意一个关键词的敏感度,表示该关键词对应的缺一关键词组的若干匹配文档中共有 个综合相似度, 表示第 个综合相似度, 表示以自然常数为底的指数函数。
[0022] 可选的,所述构建输入需求中关键词的第一图结构,包括的具体方法为:
[0023] 将输入需求中每个关键词分别作为一个节点,根据TextRank方法获取关键词过程中词之间的相连关系获取关键词之间的相连关系,将每个关键词对应的节点根据关键词之间的相连关系得到节点之间的边,将节点与边构成的图结构记为输入需求中关键词的第一图结构。
[0024] 可选的,所述获取每个关键词在第一图结构中对应节点的最大路径,包括的具体方法为:
[0025] 每个关键词分别为第一图结构中的一个节点,获取第一图结构中每个节点到其他节点的路径长度,将每个节点最大的路径长度作为每个节点的最大路径;所述路径长度为每个节点到其他节点经过的边的数量。
[0026] 可选的,所述获取代码库中若干候选关键词组,包括的具体方法为:
[0027] 在代码库中若干预设需求的关键词组中,获取与输入需求的关键词组完全一致的若干关键词组并记为候选关键词组,所述完全一致包括关键词组间关键词数量相同,且关键词一一对应完全相同。
[0028] 可选的,所述获取每个关键词在第一图结构与每个第二图结构的一致性,包括的具体方法为:
[0029] 获取任意一个第二图结构,获取第一图结构与该第二图结构中任意两个对应关键词相同的节点,将与其中任意一个节点直接相连的节点记为该节点的一级节点,与一级节点相连的节点记为该节点的二级节点,以此类推分别获取该节点与另一个对应关键词相同的多级节点;
[0030] 将两个节点的一级节点对应的关键词作为元素,分别获取两个节点的一级节点集合,获取两个一级节点集合的交集与并集,将交集与并集的比值作为两个节点的一级统一性;以两个节点中第一图结构中节点的一致性邻域范围为范围,获取范围内两个节点的多级节点的多级统一性,将两个节点的一致性邻域范围内的多级节点的多级统一性的均值作为两个节点对应关键词的一致性。
[0031] 本发明的有益效果是:通过对输入需求中的每个缺一关键词组与代码库中每个预设需求对应的关键词组进行匹配,获取匹配代码集合;计算匹配代码集合中任意两个代码的相似度,通过关键词中的关键字的变化导致匹配代码的差异,得到输入需求每个关键词的敏感度,输入需求中关键词的敏感度较好地反映关键词中关键字的变化对关键词表达意思的影响,进而可以获取较为准确的匹配结果;从代码之间整体相似度和高频字母的匹配两方面计算任意两个代码之间的综合相似度,避免了单一角度计算时由于代码的可变性及汉字可替代性而导致的误差,对相似性进行了更好的度量;通过输入需求中每个关键词的敏感度得到每个关键词的一致性要求,通过一致性要求进行匹配度的计算,有助于得到更加符合汉字规律和代码变化的匹配度,进而完成更高精度的匹配,使得到的匹配结果可信度更大,准确性更高。

附图说明

[0032] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0033] 图1为本发明一个实施例所提供的基于人工智能的代码自动生成方法流程示意图。

具体实施方式

[0034] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035] 请参阅图1,其示出了本发明一个实施例所提供的基于人工智能的代码自动生成方法流程图,该方法包括以下步骤:
[0036] 步骤S001、获取用户的输入需求。
[0037] 本实施例的目的是根据用户的输入需求自动生成相应的匹配代码,因此首先需要获取用户的输入需求;获取用户输入到计算机中的自然语言命令,即为用户的输入需求。
[0038] 步骤S002、获取输入需求中的关键词,得到输入需求中每个关键词对应的缺一关键词组,获取每个缺一关键词组在代码库中匹配的若干初始关键词组,根据初始关键词组与对应的缺一关键词组获取每个缺一关键词组的若干匹配文档。
[0039] 需要说明的是,传统的代码自动生成方法中,代码库中有若干条代码,每条代码都有一个预设需求,通过对输入需求的关键词进行提取,再将其与预设需求中的关键词进行匹配,根据匹配结果获取输入需求相应的匹配代码;此种方法未考虑关键词中某些字的改变会对匹配结果造成很大的影响,有些关键词中多个字进行替换也不会使代码发生较大变化,而有些关键词中某个字发生改变就会使代码发生巨大变化;因此需要针对输入需求中每个关键词构建缺一关键词组,即将输入需求中的若干关键词去除该关键词后其他关键词组成缺一关键词组,根据缺一关键词组匹配到的若干代码对输入需求中每个关键词中关键字的变化影响进行量化。
[0040] 具体的,首先通过TextRank方法获取输入需求中的关键词,其中输入需求在步骤S001中已经获取到,TextRank方法为现有技术,本实施例不再赘述;得到输入需求中的关键词后,对每个关键词构建相应的缺一关键词组,所述构建相应的缺一关键词组的具体方法为:将输入需求中的所有关键词作为一个关键词组,分别去除其中每个关键词得到若干缺一关键词组,每个缺一关键词组即为去除掉的关键词所对应的缺一关键词组。
[0041] 进一步的,获取代码库中每条代码对应的预设需求的关键词组,采用方法为TextRank方法,并将每个预设需求对应的若干关键词分别作为每个预设需求的关键词组,将每个缺一关键词组与代码库中每个预设需求的关键词组进行匹配;需要说明的是,每个缺一关键词组进行匹配的对象均为关键词组中关键词数量比缺一关键词组中关键词数量多一个的预设需求的关键词组,即进行匹配的预设需求的关键词组中关键词数量与输入需求的关键词组中关键词数量相等;将匹配对象中与任意一个缺一关键词组完全匹配的预设需求的关键词组作为该缺一关键词组的初始关键词组,即初始关键词组中包含该缺一关键词组的所有关键词;例如某个缺一关键词组中有四个关键词,匹配的初始关键词组中有五个关键词且其中四个关键词与该缺一关键词组的四个关键词完全相同;按照上述方法获取每个缺一关键词组匹配的若干初始关键词组,并将每个关键词组与对应的代码分别作为一个文档,将每个缺一关键词组匹配的若干初始关键词组对应的文档记为每个缺一关键词组的若干初始文档。
[0042] 进一步需要说明的是,每个缺一关键词组匹配的若干初始关键词组中,有部分初始关键词组中不匹配的一个关键词与缺一关键词组对应的关键词无关,即两个关键词之间没有重复的关键字,需要将这些初始关键词组进行去除,避免对缺一关键词组对应的关键词的关键字变化影响的量化过程造成影响;因为这些初始关键词组与输入需求的关键词组之间存在一个完全不相关的关键词,两个关键词组之间差异很大,代码会出现巨大变化,即两者实际并不匹配,通过这些初始关键词组的代码进行量化无意义,因此需要去除。
[0043] 具体的,将每个缺一关键词组对应的关键词记为缺一关键词,将每个初始关键词组中不匹配的关键词记为剩余关键词,将剩余关键词与缺一关键词中每个字分别作为一个元素,分别构成剩余关键词的剩余关键字集合与缺一关键词的缺一关键字集合;由于每个缺一关键词组分别对应若干初始关键词组,每个初始关键词组分别对应一个剩余关键词,则每个缺一关键字集合分别对应若干剩余关键字集合,获取任意一个缺一关键字集合与对应的每个剩余关键字集合的交集,获取交集不为空的剩余关键字集合,将这些剩余关键字集合对应的初始关键词组的初始文档作为该缺一关键字集合对应的缺一关键词组的匹配文档;交集为空则说明缺一关键字集合与剩余关键字集合不存在相同元素,即缺一关键词与剩余关键词之间没有重复的关键字,二者完全不相关,因此需要对这些剩余关键词对应的初始关键词组进行去除;按照上述方法获取每个缺一关键词组的匹配文档。
[0044] 至此,获取到每个缺一关键词组的若干匹配文档,用于对每个缺一关键词中关键字的变化影响进行量化。
[0045] 步骤S003、计算任意一个缺一关键词组的若干匹配文档中的任意两个代码之间的整体相似度及匹配相似度,进而得到两个代码之间的综合相似度,根据每个缺一关键词组的若干匹配文档中的若干综合相似度获取输入需求中每个关键词的敏感度。
[0046] 需要说明的是,每个缺一关键词即为每个缺一关键词组对应的关键词,每个缺一关键词组对应若干匹配文档,这些匹配文档的关键词组中的剩余关键词与缺一关键词存在一定相关性,即存在相同的关键字,如果某个缺一关键词组的若干匹配文档中的各代码之间差异较小,综合相似度较大,表明这些剩余关键词尽管关键字存在较大差异,但表达意思相近,对于代码的变化影响较小,则相应的缺一关键词的敏感度较小;如果某个缺一关键词组的若干匹配文档中的各代码之间差异较大而综合相似度较小,表明这些剩余关键词表达意思相差较大,即缺一关键词中某个关键字的改变就会使代码发生较大变化,则该缺一关键词的敏感度较大。
[0047] 进一步需要说明的是,由于代码中某些语句可以有多种方法表达,即部分语句的改变不会影响整体代码的运行目的,因此需要考虑代码之间的整体相似度;同时由于某些代码中某些语句可以替换,仍会对整体相似度造成影响,需要引入代码中高频字母之间的匹配关系进而计算匹配的高频字母之间的相似度;根据整体相似度和匹配相似度获取代码之间的综合相似度,避免了单一角度计算时由于代码的可变性而导致的误差。
[0048] 具体的,对于任意一个缺一关键词组的若干匹配文档中的任意两个代码,将两个代码转化为数字序列,具体过程为:将代码中的每个字母及字符均转换为ASCII码的十进制形式,则代码中的字母及字符均分别用不同的数字表示,两个代码中相同的字母或字符用同一个数字表示,按照代码中的字母及字符顺序将数字进行排列则得到了两个代码的数字序列,获取两个数字序列之间的DTW距离,将DTW距离的倒数作为两个代码之间的整体相似度,特殊的DTW距离为0时两个代码的整体相似度为1;需要说明的是,DTW距离表示的是序列之间的整体相似关系,不要求每个位置的代码完全相同,且不考虑位置顺序关系,因此可以利用DTW距离判断整体相似性,DTW距离计算为现有技术,本实施例不再赘述。
[0049] 进一步的,对于获取到整体相似度的两个代码,分别计算两个代码中各个字母出现的频率,对于其中一个代码的各字母按照出现频率从小到大的顺序排列得到字母频率序列,获取两个代码的字母频率序列,利用OTSU阈值分割的方法对两个字母频率序列分别进行阈值分割,提取两个字母频率序列中出现频率分别大于各自分割阈值的若干字母,分别记为每个代码中的高频字母;将两个代码中的高频字母构建二分图,其中一个代码中的每个高频字母作为二分图的左侧节点,另一个代码中的每个高频字母作为二分图的右侧节点,节点值为每个字母在各自代码中的出现频率,节点之间的边值为两侧节点对应字母在各自代码中出现频率的比值,采用小值比大值的方法,通过最大值原则获取得到二分图的最佳匹配结果,将最佳匹配结果中每两个匹配的节点作为一个节点对,节点对中两个节点对应字母相同的记为相同节点对,将相同节点对的数量与所有节点对数量的比值作为两个代码之间的匹配相似度;需要说明的是,二分图的最佳匹配即为KM匹配算法,KM匹配算法与OTSU阈值分割方法均为现有技术,本实施例不再赘述。
[0050] 进一步的,将此时两个代码的整体相似度和匹配相似度的均值作为两个代码之间的综合相似度;按照上述方法获取该缺一关键词组的若干匹配文档中任意两个代码之间的综合相似度,则该缺一关键词组对应的缺一关键词的敏感度 的具体计算方法为:
[0051]
[0052] 其中,表示该缺一关键词组的若干匹配文档中共有 个综合相似度,即共有 个两两代码组合, 表示第 个两两代码组合的综合相似度, 表示以自然常数为底的指数函数,本实施例中用 表示反比例关系及进行归一化处理,具体实施过程可视情况进行反比例及归一化函数选择;需要说明的是,匹配文档中任意一个代码都需要与其他所有代码进行组合得到两两代码组合;若干匹配文档中各代码之间的综合相似度越大,综合相似度均值越大,表明缺一关键词的关键字变化影响较小,缺一关键词的敏感度较小;各代码之间的综合相似度越小,综合相似度均值越小,表明缺一关键词的关键字变化影响较大,缺一关键词的敏感度较大;按照上述方法获取每个缺一关键词的敏感度。
[0053] 至此,获取到每个缺一关键词的敏感度,缺一关键词即为每个缺一关键词组对应的关键词,即获取到了输入需求中每个关键词的敏感度。
[0054] 步骤S004、构建输入需求中关键词的第一图结构,根据每个关键词的敏感度及关键词在第一图结构中对应节点的最大路径获取每个关键词的一致性邻域范围,获取代码库中若干候选关键词组,构建每个候选关键词组的第二图结构,获取每个关键词在第一图结构与每个第二图结构的一致性,根据一致性获取输入需求与每个候选关键词组的匹配度,进而完成输入需求的最佳匹配代码生成。
[0055] 需要说明的是,在输入需求中,关键词的敏感度越大,关键词中的关键词变化会带来的代码变化越大,越需要保证该关键词在输入需求与代码库中预设需求的一致性;在保证关键词完全相同的情况下,可以通过提高与该关键词相关的输入需求中其他关键词的一致性来达成目的。
[0056] 进一步需要说明的是,在步骤S002中获取输入需求及预设需求中的关键词时采用的TextRank方法中,是将需求中所有词构成无向图结构,并获取到每个词的权值及相连关系,利用这种方法将关键词构成无向图结构用以表征需求中关键词的相关性,进而计算一致性。
[0057] 具体的,首先构建输入需求中关键词的第一图结构,每个关键词为一个节点,根据TextRank方法获取关键词过程中词之间的相连关系获取关键词之间的相连关系,将每个关键词对应的节点根据关键词之间的相连关系得到节点之间的边,将节点与边构成的图结构记为输入需求中关键词的第一图结构,所述第一图结构为无向图结构,其中通过TextRank方法获取关键词过程得到关键词之间的相连关系为现有技术,本实施例不再赘述;对第一图结构中每个节点计算最大路径,具体计算过程为:获取每个节点到其他节点的路径长度,所述路径长度即每个节点到其他节点经过的边的数量,将每个节点最大的路径长度作为每个节点的最大路径;将每个节点对应关键词的敏感度与最大路径的乘积作为每个节点对应关键词的一致性邻域范围,得到的结果进行向上取整;一致性邻域范围用于判断每个关键词范围内其他关键词的一致性,以达到提升匹配代码准确性的目的。
[0058] 进一步的,在代码库中若干预设需求的关键词组中,获取与输入需求的关键词组完全一致的若干关键词组并记为候选关键词组;需要说明的是,候选关键词组与输入需求的关键词组间,关键词数量相同,且关键词一一对应完全相同,但关键词之间存在顺序上的差异;通过TextRank方法获取预设需求的关键词过程得到预设需求中关键词之间中的相连关系,将每个候选关键词组中每个关键词分别作为一个节点,将每个关键词对应的节点根据关键词之间的相连关系得到节点之间的边,得到每个候选关键词组的第二图结构;所述第二图结构为无向图结构。
[0059] 对于第一图结构与若干候选关键词组分别对应的第二图结构,对于其中任意一个节点,与之直接相连的节点记为该节点的一级节点,与一级节点相连的节点记为该节点的二级节点,以此类推获取图结构中每个节点的多级节点;以第一图结构和任意一个第二图结构为例,对于两个图结构中任意两个对应关键词相同的节点,将两个节点的一级节点对应的关键词作为元素,分别获取两个节点的一级节点集合,获取两个一级节点集合的交集与并集,将交集与并集的比值作为两个节点的一级统一性;按照上述方法获取两个节点的一致性邻域范围内的多级节点的多级统一性;需要说明的是,所述一致性邻域范围采用第一图结构中节点的一致性邻域范围,仅计算一致性邻域范围内的节点,超出范围的不再参与计算,一致性邻域范围为敏感度与最大路径的乘积的向上取整值,实际意义仍为一个路径长度,则范围内的节点即为与该节点路径长度小于等于一致性邻域范围的其他节点;将两个节点的一致性邻域范围内的多级节点的多级统一性的均值作为两个节点对应关键词的一致性;需要说明的是,多级节点包括一级节点,多级统一性包括一级统一性;按照上述方法获取第一图结构中与该第二图结构中每个关键词的一致性,将一致性均值作为第一图结构与该第二图结构的匹配度,即输入需求与该第二图结构对应的候选关键词组的匹配度。
[0060] 按照上述方法获取输入需求与每个候选关键词组的匹配度,将匹配度最大的候选关键词组作为输入需求的最佳匹配关键词组,则对应的预设需求的代码即为输入需求的最佳匹配代码。
[0061] 至此,获取到输入需求在代码库中的最佳匹配代码,生成该代码即完成对于输入需求的代码自动生成。
[0062] 需要说明的是,本实施例中提到了关键词完全相同、关键词之间存在重复的关键字以及相同的字母或字符,本实施例中判断关键词、关键字以及字母或字符相同的方法均为字符串匹配及识别的方法,其为现有技术,本实施例不再赘述。
[0063] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。