本发明涉及代码摘要生成,尤其涉及一种代码摘要生成方法、装置、设备及存储介质。
背景技术:
1、相关技术中,代码摘要生成方法遵循标准的编码器-解码器框架,未考虑代码和代码摘要之间的语义区别,导致生成的代码摘要准确性较低。
技术实现思路
1、本发明的主要目的在于:提供一种代码摘要生成方法、装置、设备及存储介质,旨在解决现有代码摘要生成方法,生成的代码摘要准确性低的技术问题。
2、为实现上述目的,本发明采用如下技术方案:
3、第一方面,本发明提供一种代码摘要生成方法,方法包括:
4、根据待处理代码,生成多个初始代码摘要和代码图;代码图包括待处理代码对应的抽象语法树和数据流边,且抽象语法树的令牌节点通过数据流边连接;
5、从多个初始代码摘要中,提取出多个摘要语义特征;
6、根据代码图中各令牌节点的节点流向路径,获得代码语义特征;
7、根据摘要语义特征与代码语义特征之间的语义相似度,从多个初始代码摘要中筛选出目标代码摘要;
8、根据目标代码摘要和代码语义特征,生成待处理代码的结果代码摘要。
9、可选地,根据代码图中各令牌节点的节点流向路径,获得代码语义特征之前,方法还包括:
10、将多个令牌节点中任一令牌节点,作为起始节点;
11、将起始节点作为当前节点;
12、将当前节点的共现节点,作为下一个路径节点;其中,共现节点为与当前节点语义紧密的节点;
13、根据下一个路径节点更新当前节点,并返回执行将当前节点的共现节点,作为下一个路径节点,直到获得预设长度的节点流向路径;
14、将多个令牌节点中任一令牌节点之外的其他令牌节点,作为起始节点,并返回执行将起始节点作为当前节点,直到获得多个令牌节点的多个节点流向路径。
15、可选地,根据代码图中各令牌节点的节点流向路径,获得代码语义特征,包括:
16、对节点流向路径上所有路径节点进行向量化处理,得到多个词嵌入向量;
17、对多个词嵌入向量进行平均池化处理,得到路径节点向量;
18、根据多个节点流向路径对应的多个路径节点向量,得到代码语义特征。
19、可选地,根据摘要语义特征与代码语义特征之间的语义相似度,从多个初始代码摘要中筛选出目标代码摘要,包括:
20、根据语义相似度函数,获得多个摘要语义特征与代码语义特征之间的多个语义相似度;
21、根据多个语义相似度和待处理代码与初始代码摘要之间的似然度,从多个初始代码摘要中筛选出目标代码摘要。
22、可选地,根据语义相似度函数,获得多个摘要语义特征与代码语义特征之间的多个语义相似度之前,方法还包括:
23、获取多个样本代码,生成多个样本代码图和多个样本代码摘要;样本代码图包括样本代码对应的样本抽象语法树和样本数据流边,且样本抽象语法树的样本令牌节点通过样本数据流边连接;
24、从多个样本代码摘要中,提取出多个样本摘要语义特征;
25、分别根据多个样本代码图中各样本令牌节点对应的样本节点流向路径,获得多个样本代码语义特征;
26、将样本代码语义特征和对应的样本摘要语义特征,作为正样本对,得到多个正样本对;
27、根据样本代码语义特征和样本摘要语义特征,构造多个扩展样本代码语义特征和多个扩展样本摘要语义特征;
28、根据多个样本代码语义特征、多个扩展样本代码语义特征、多个样本摘要语义特征和多个扩展样本摘要语义特征,得到多个负样本对;
29、根据多个正样本对和多个负样本对进行对比学习,得到语义相似度函数。
30、可选地,根据样本代码语义特征和样本摘要语义特征,构造多个扩展样本代码语义特征和多个扩展样本摘要语义特征,包括:
31、获取任一样本代码语义特征和对应的任一样本摘要语义特征之间的第一欧式距离,任一样本代码语义特征和多个其他样本代码语义特征之间的多个第二欧式距离,任一样本摘要语义特征和多个其他样本摘要语义特征之间的多个第三欧式距离;其中,其他样本代码语义特征为多个样本代码语义特征中任一样本代码语义特征之外的样本代码语义特征,其他样本摘要语义特征为多个样本摘要语义特征中任一样本摘要语义特征之外的样本摘要语义特征;
32、根据任一样本代码语义特征、多个其他样本代码语义特征、第一欧式距离和多个第二欧式距离,构造多个扩展样本代码语义特征;
33、根据任一样本摘要语义特征、多个其他样本摘要语义特征、第一欧式距离和多个第三欧式距离,构造多个扩展样本摘要语义特征。
34、可选地,根据多个样本代码语义特征、多个扩展样本代码语义特征、多个样本摘要语义特征和多个扩展样本摘要语义特征,得到多个负样本对,包括:
35、将任一样本代码语义特征和多个扩展样本代码语义特征中任一扩展样本代码语义特征之外的其他扩展样本语义特征,作为第一负样本对,得到多个第一负样本对;任一扩展样本代码语义特征为根据任一样本代码语义特征构造的扩展样本代码语义特征;
36、将任一样本摘要语义特征和多个扩展样本摘要语义特征中任一扩展样本摘要语义特征之外的其他扩展摘要样本语义特征,作为第二负样本对,得到多个第二负样本对;任一扩展样本摘要语义特征为根据任一样本摘要语义特征构造的扩展样本摘要语义特征;
37、根据多个正样本对和多个负样本对进行对比学习,得到语义相似度函数,包括:
38、根据多个正样本对、多个第一负样本和多个第二负样本对进行对比学习,得到语义相似度函数。
39、第二方面,本发明还提供一种代码摘要生成装置,装置包括:
40、代码处理模块,用于根据待处理代码,生成多个初始代码摘要和代码图;代码图包括待处理代码对应的抽象语法树和数据流边,且抽象语法树的令牌节点通过数据流边连接;
41、摘要语义提取模块,用于从多个初始代码摘要中,提取出多个摘要语义特征;
42、代码语义提取模块,用于根据代码图中各令牌节点的节点流向路径,获得代码语义特征;
43、语义对齐模块,用于根据摘要语义特征与代码语义特征之间的语义相似度,从多个初始代码摘要中筛选出目标代码摘要;
44、摘要生成模块,用于根据目标代码摘要和代码语义特征,生成待处理代码的结果代码摘要。
45、第三方面,本发明还提供一种代码摘要生成设备,设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的代码摘要生成程序,通过代码摘要生成程序配置为实现如上述任一项代码摘要生成方法的步骤。
46、第四方面,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任一项的代码摘要生成方法的步骤。
47、本发明提供一种代码摘要生成方法、装置、设备及存储介质,根据待处理代码,生成多个初始代码摘要和代码图;代码图包括待处理代码对应的抽象语法树和数据流边,且抽象语法树的令牌节点通过数据流边连接;从多个初始代码摘要中,提取出多个摘要语义特征;根据代码图中各令牌节点的节点流向路径,获得代码语义特征;根据摘要语义特征与代码语义特征之间的语义相似度,从多个初始代码摘要中筛选出目标代码摘要;根据目标代码摘要和代码语义特征,生成待处理代码的结果代码摘要。
48、由此,本发明通过生成待处理代码对应的多个初始代码摘要,提取多个摘要语义特征,并生成待处理代码对应的代码图,根据代码图中令牌节点沿数据流边方向的节点流向路径,获得代码语义特征,根据摘要语义特征和代码语义特征之间的语义相似度,从多个初始代码中筛选出目标代码摘要,根据目标代码摘要和代码语义特征生成结果代码摘要。在生成结果代码摘要的过程中利用代码的抽象语法树和数据流边,深入探索代码语义特征,根据代码语义特征与摘要语义特征之间的语义相似度,弥合摘要语义特征和代码语义特征之间的语义区别,考虑了代码语义对于代码摘要的影响,用代码语义指导代码摘要的生成过程,强调了代码和摘要之间的语义对应关系,增强了对形式类似但是语义不一致的待处理代码的区分度,提高了生成的代码摘要的准确性。