CN113342343B - 基于多跳推理机制的代码摘要生成方法及系统 - Google Patents
基于多跳推理机制的代码摘要生成方法及系统 Download PDFInfo
- Publication number
- CN113342343B CN113342343B CN202110426243.1A CN202110426243A CN113342343B CN 113342343 B CN113342343 B CN 113342343B CN 202110426243 A CN202110426243 A CN 202110426243A CN 113342343 B CN113342343 B CN 113342343B
- Authority
- CN
- China
- Prior art keywords
- abstract
- code
- syntax tree
- initial
- abstract syntax
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000007246 mechanism Effects 0.000 title claims abstract description 30
- 239000013598 vector Substances 0.000 claims abstract description 56
- 230000014509 gene expression Effects 0.000 claims abstract description 27
- 230000004927 fusion Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims abstract description 9
- 230000015654 memory Effects 0.000 claims description 18
- 238000012549 training Methods 0.000 claims description 18
- 238000009826 distribution Methods 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000003860 storage Methods 0.000 claims description 8
- 235000008694 Humulus lupulus Nutrition 0.000 claims description 3
- 238000010606 normalization Methods 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000013528 artificial neural network Methods 0.000 claims 1
- 238000012423 maintenance Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000007373 indentation Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000002679 ablation Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/36—Creation of semantic tools, e.g. ontology or thesauri
- G06F16/367—Ontology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Animal Behavior & Ethology (AREA)
- Databases & Information Systems (AREA)
- Machine Translation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于多跳推理机制的代码摘要生成方法及系统,包括:获取待生成摘要的代码;对待生成摘要的代码进行解析,生成抽象语法树;对抽象语法树进行特征提取,得到抽象语法树特征向量;将抽象语法树特征向量和自然语言表述特征向量,输入到训练后的transformer模型中,得到代码的初始摘要;对代码的初始摘要和已知的知识图谱,利用多跳推理算法进行处理,得到代码的推理摘要;将代码的初始摘要和代码的推理摘要进行加权融合,得到最终的代码摘要。使得生成的代码摘要更加通顺和准确,方便代码维护人员的理解。
Description
技术领域
本发明涉及人工智能与软件工程相关技术领域,特别是涉及基于多跳推理机制的代码摘要生成方法及系统。
背景技术
本部分的陈述仅仅是提到了与本发明相关的背景技术,并不必然构成现有技术。
随着互联网技术的快速发展,各种各样的开发软件层出不穷,并且软件的功能变得越来越丰富,这随之带来的就是代码实现的规模越来越庞大,结构越来越复杂,在这种情况下程序员如何对代码进行有效的维护成为了一个问题。
传统的帮助代码维护人员进行代码理解的方法有两种:第一种是代码开发人员在开发时对代码进行代码注释和摘要,由于现在的实现软件功能的代码越来越庞大,这对代码开发人员无疑不是一个负担;第二种是代码摘要生成技术,可以自动对代码片段进行注释,帮助开发人员在开发过程中更加关注代码编写。
发明人发现,目前传统的代码摘要生成技术对代码片段解析出来相应的自然语言描述表达不顺畅,甚至有些描述会出现歧义,生成的效果较差,因而无法满足维护人员对代码的快速理解。
发明内容
为了解决现有技术的不足,本发明提供了基于多跳推理机制的代码摘要生成方法及系统;
第一方面,本发明提供了基于多跳推理机制的代码摘要生成方法;
基于多跳推理机制的代码摘要生成方法,包括:
获取待生成摘要的代码;
对待生成摘要的代码进行解析,生成抽象语法树;对抽象语法树进行特征提取,得到抽象语法树特征向量;
将抽象语法树特征向量和自然语言表述特征向量,输入到训练后的transformer模型中,得到代码的初始摘要;
对代码的初始摘要和已知的知识图谱,利用多跳推理算法进行处理,得到代码的推理摘要;
将代码的初始摘要和代码的推理摘要进行加权融合,得到最终的代码摘要。
第二方面,本发明提供了基于多跳推理机制的代码摘要生成系统;
基于多跳推理机制的代码摘要生成系统,包括:
获取模块,其被配置为:获取待生成摘要的代码;
特征提取模块,其被配置为:对待生成摘要的代码进行解析,生成抽象语法树;对抽象语法树进行特征提取,得到抽象语法树特征向量;
初始摘要生成模块,其被配置为:将抽象语法树特征向量和自然语言表述特征向量,输入到训练后的transformer模型中,得到代码的初始摘要;
推理摘要生成模块,其被配置为:对代码的初始摘要和已知的知识图谱,利用多跳推理算法进行处理,得到代码的推理摘要;
加权融合模块,其被配置为:将代码的初始摘要和代码的推理摘要进行加权融合,得到最终的代码摘要。
第三方面,本发明还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述第一方面所述的方法。
第四方面,本发明还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述的方法。
与现有技术相比,本发明的有益效果是:
(1)本公开提出了在代码摘要自动生成任务中,对最后的生成的代码摘要通过在知识图谱上利用推理机制对其进行优化,这使得生成的代码摘要更加通顺和准确,方便代码维护人员的理解。
(2)本公开使用了当前比较流行的transformer模型,该模型广泛应用于自然语言处理,该模型可以被微调后可以广泛用于面向程序理解的下游任务。
(3)本公开将代码片段进行AST嵌入向量表示,能更加全面地表示代码片段的内容,并通过训练可以将给定的代码片段描述自动转化为描述其功能的注释,从而减轻了软件开发人员的工作负担,提高了软件开发的效率。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为本公开实施例1所述的一种基于多跳推理机制的代码摘要生成示意总图;
图2为本公开实施例1所述的对部分知识图谱进行嵌入的示意图;
图3为本公开实施例1所述的多跳推理机制工作过程的示意图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本发明使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
术语解释:AST,Abstract Syntax Tree,抽象语法树;
实施例一
本实施例提供了基于多跳推理机制的代码摘要生成方法;
如图1所示,基于多跳推理机制的代码摘要生成方法,包括:
S101:获取待生成摘要的代码;
S102:对待生成摘要的代码进行解析,生成抽象语法树;对抽象语法树进行特征提取,得到抽象语法树特征向量;
S103:将抽象语法树特征向量和自然语言表述特征向量,输入到训练后的transformer模型中,得到代码的初始摘要;
S104:对代码的初始摘要和已知的知识图谱,利用多跳推理算法进行处理,得到代码的推理摘要;
S105:将代码的初始摘要和代码的推理摘要进行加权融合,得到最终的代码摘要。
进一步地,所述S102:对待生成摘要的代码进行解析,生成抽象语法树;具体包括:
利用JavaParser解析代码,生成其对应的AST树;
其中,利用JavaParser解析代码,解析后得到两部分信息:一是AST树结点所代表的信息;二是结点与结点的指向关系,存储边的信息。
其中,AST树结点所代表的信息,包括:结点所对应某行代码的具体信息和结点所对应某行代码所属的类型。
示例性的,根据程序的缩进信息,构建有序树。依次读取程序语句,通过将根结点从函数的定义语句中构建根结点来初始化树。迭代地用通过计算缩进分配的缩进索引来标记每个后续语句,使得具有与相同的缩进索引i的语句构造为有序的兄弟结点和上述具有缩进索引i的此类语句块之上的前述语句i-1构造为父结点。
进一步地,所述S102:对抽象语法树进行特征提取,得到抽象语法树特征向量;具体包括:
采用图卷积神经网络(Graph Convolutional Network,GCN),对抽象语法树进行图嵌入,得到抽象语法树特征向量。
进一步地,所述S103:将抽象语法树特征向量和自然语言表述特征向量,输入到训练后的transformer模型中,得到代码的初始摘要;具体包括:
将抽象语法树特征向量输入到训练后的transformer模型的编码器,得到编码向量;
将获取的自然语言表述进行特征提取,得到自然语言表述特征向量;
将编码向量和自然语言表述特征向量,输入到训练后的transformer模型的解码器中,得到代码的初始摘要。
进一步地,所述S103训练后的transformer模型,其训练步骤包括:
构建训练集;所述训练集,包括:已知代码摘要的代码片段和自然语言表述;
将训练集的代码片段解析,生成抽象语法树;对抽象语法树进行特征提取,得到抽象语法树特征向量;
将抽象语法树特征向量作为transformer模型的编码器的输入值;
将训练集的自然语言表述进行特征提取,得到自然语言表述特征向量;
将编码器的输出值和自然语言表述特征向量,均作为transformer模型的解码器的输入值,将训练集的已知代码摘要,作为transformer模型的解码器的输出值,对transformer模型进行训练,当模型的损失函数达到最小值时,停止训练,得到训练后的transformer模型。
进一步地,所述S104:对代码的初始摘要和已知的知识图谱,利用多跳推理算法进行处理,得到代码的推理摘要;具体包括:
将代码的初始摘要,放入多跳推理机制算法中,与已知的知识图谱中的实体概念进行关联,得到代码的推理摘要。
如图2所示,显示了知识图谱的部分信息,并对其进行嵌入。由于本发明主要是做代码摘要的方向,所以,知识图谱只需包含代码所实现一些功能的描述表达的内容即可。纳入常识性知识对文本生成来说至关重要,以增加有限的文本信息。
使用非参数组成操作α(·)将结点嵌入和关系嵌入组合。
给定抽象语法树的输入图G=(V,E)和带有LG层的GCN,用GCN完成对将代码片段解析出的AST形式进行嵌入,生成相应的嵌入向量;GCN的输入就是将代码片段解析出的AST树的形式;GCN输出的是嵌入向量;GCN需要预先训练。
对于每一个结点v∈V,通过其包含结点u和相关联系r成对组成的本地邻居N(v)聚合信息,更新在j+1层的结点向量。
N(v)是由与结点v相邻结点和边组成的多个对;
定义组合操作α(hu,hr)=hu-hr。
hu,hr表示结点u和相关关系r的嵌入向量;
通过线性转换更新关系嵌入:
如图3所示,显示了多跳推理机制的工作原理。为了在生成期间对图形结构进行显式推理,设计了一种动态推理模块,该模块利用知识图谱和上下文信息的结构模式,以沿着每个解码步骤的关系路径传播证据。
所述知识图谱是通过不同知识的关联性形成成一个网状的知识结构。
所述知识图谱就是从计算机领域文本中抽取语义和结构化的数据,用节点表示语义符号,用边表示语义之间的关系。
所述知识图谱的抽取过程是从计算机领域文本中利用实体命名识别、关系抽取、实体统一和指代消解等技术来生成知识图谱,并且以RDF的形式进行存储。
本发明中知识图谱的组成要素包括:实体和关系。
实体:又叫又叫作本体(Ontology),指客观存在并可相互区别的事物,可以是具体的人、事、物,也可以是抽象的概念或联系。实体是知识图谱中最基本的元素。比如知识图谱、谷歌、深度学习、文件和文件路径等。
关系:在知识图谱中,边表示知识图谱中的关系,用来表示不同实体间的某种联系。图灵和人工智能之间是提出的关系,知识图谱和谷歌之间也是提出的关系,谷歌和深度学习之间是应用的关系,文件路径和文件之间有着存储的关系。
具体地,多跳推理机制在知识图谱Q广播信息更新外部结点的得分,以便在访问的所有结点上访问其访问的邻居,直到访问所有结点。最初,相对应概念Cx的结点给出1的分数,而其他没有访问的结点分配0。
对于未访问到的结点v∈V,通过从Nin(v)的汇集的信息来计算其结点得分ns(v),Nin(v)表示与v直接连接的访问结点u和边r。
多跳推理算法的表达式为:
其中,f(·)是聚集来自连接结点的分数的聚合器,ns(v)表示结点v的分数;u表示访问的结点;r表示访问结点与v直接相连的边;γ是控制来自先前跳跃的信息流强度的折扣因子;ns(u)是指访问结点u的分数;
使用聚合器max(·)获得主要结果,在消融研究中使用聚合器mean(·)来呈现结果。
R(u,r,v)是三重相关性,反映了在当前背景下的三元组给(u,r,v)给出的证据的相关性;计算三重相关性:
在H跳之后,通过归一化获得结点上的最终分布:
p(ct|s<t,G)=softmaxv∈V(ns(v)) (3-4)
其中,ct是在t时间步选取的结点的概念。p(ct|s<t,G)表示代码的推理摘要。直观地,通过计算结点的分数来完成推理学会通过考虑根据当前解码器状态的三维证据来动态分发;S<t表示s1,s2,s3,...,st-1。
进一步地,所述S105:将代码的初始摘要和代码的推理摘要进行加权融合,得到最终的代码摘要;具体包括:
P(yt|y<t,G)=gt+N.P(ct+N|s<t+N,G)+(1-gt+N).P(st+N|s<t+N) (4-1)
其中,yt表示t时刻最后输出的代码摘要;G表示知识图谱;
y<t表示y1,y2,y3,...,yt-1;y<t表示t时刻之前的解码器的输出;
s<t+N表示s1,s2,s3,...,st+N-1;
N是transformer的解码器输出的长度,软性门概率gt用来表示是否在生成中复制概念以控制与复制机制类似的两个分布的权重。
最终输出分布是分别由gt和1-gt两个分布权重的线性组合。
带有门控的生成分布。最终一代分布将概念的分布和标准词汇的分布进行结合。
通过将代码片段表征为AST并嵌入后输入到transformer模型的编码器,将相应的自然语言描述进行嵌入后输入到transformer模型的解码器,然后进行训练相关参数;然后,将推理机制算法应用于知识图谱上,根据transformer解码器输出的代码初始摘要通过推理机制对知识图谱中的信息进行相关推理,综合原有输出的代码初始摘要和对知识图谱推理出的代码的推理摘要进行比例结合进而得到最终通畅准确的自然语言描述。
解码器是对获取的代码片段表示进行解码,生成相应的注释,从而导出它们相关的自然语言摘要。通过编码给定的代码片段来通过生成初始解码状态s0={x}来启动解码处理。
在步骤t,解码器生成的状态st,以维护源代码片段和先前生成的单词y1,y2,y3,...,yt-1,即st={x,y1,y2,y3,...,yt-1}。
具体地,先前生成的单词y1,y2,y3,...,yt-1被transformer的编码器编码成向量,随后与状态st-1连接。
解码器的输出端连接softmax函数层;
该方法通过使用softmax函数来预测第t个单词。
p(yt|st)=softmax(Wsst+bs) (1-1)
其中,p(yt|st)表示第t个单词yt在状态st下的概率分布。
接下来,将st和st+1来生成下一个单词。这一过程迭代直到超过最大步骤或序列结束标记,以生成与代码片段对应的整个注释。
实施例二
本实施例提供了基于多跳推理机制的代码摘要生成系统;
基于多跳推理机制的代码摘要生成系统,包括:
获取模块,其被配置为:获取待生成摘要的代码;
特征提取模块,其被配置为:对待生成摘要的代码进行解析,生成抽象语法树;对抽象语法树进行特征提取,得到抽象语法树特征向量;
初始摘要生成模块,其被配置为:将抽象语法树特征向量和自然语言表述特征向量,输入到训练后的transformer模型中,得到代码的初始摘要;
推理摘要生成模块,其被配置为:对代码的初始摘要和已知的知识图谱,利用多跳推理算法进行处理,得到代码的推理摘要;
加权融合模块,其被配置为:将代码的初始摘要和代码的推理摘要进行加权融合,得到最终的代码摘要。
此处需要说明的是,上述获取模块、特征提取模块、初始摘要生成模块、推理摘要生成模块和加权融合模块对应于实施例一中的步骤S101至S105,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为系统的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
上述实施例中对各个实施例的描述各有侧重,某个实施例中没有详述的部分可以参见其他实施例的相关描述。
所提出的系统,可以通过其他的方式实现。例如以上所描述的系统实施例仅仅是示意性的,例如上述模块的划分,仅仅为一种逻辑功能划分,实际实现时,可以有另外的划分方式,例如多个模块可以结合或者可以集成到另外一个系统,或一些特征可以忽略,或不执行。
实施例三
本实施例还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述实施例一所述的方法。
应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
实施例一中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
实施例四
本实施例还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一所述的方法。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.基于多跳推理机制的代码摘要生成方法,其特征是,包括:
获取待生成摘要的代码;
对待生成摘要的代码进行解析,生成抽象语法树;对抽象语法树进行特征提取,得到抽象语法树特征向量;
将抽象语法树特征向量和自然语言表述特征向量,输入到训练后的transformer模型中,得到代码的初始摘要;
对代码的初始摘要和已知的知识图谱,利用多跳推理算法进行处理,得到代码的推理摘要;
所述多跳推理算法的表达式为:
其中,f(·)是聚集来自连接结点的分数的聚合器,ns(v)表示结点v的分数;u表示访问的结点;r表示访问结点与v直接相连的边;γ是控制来自先前跳跃的信息流强度的折扣因子;ns(u)是指访问结点u的分数;
R(u,r,v)是三重相关性,反映了在当前背景下的三元组给(u,r,v)给出的证据的相关性;计算三重相关性:
在H跳之后,通过归一化获得结点上的最终分布:
p(ct|s<t,G)=softmaxv∈V(ns(v)) (3-4)
其中,ct是在t时间步选取的结点的概念;p(ct|s<t,G)表示代码的推理摘要,s<t表示s1,s2,s3,…,st-1;
将代码的初始摘要和代码的推理摘要进行加权融合,得到最终的代码摘要。
2.如权利要求1所述的基于多跳推理机制的代码摘要生成方法,其特征是,对待生成摘要的代码进行解析,生成抽象语法树;具体包括:
利用JavaParser解析代码,生成其对应的抽象语法树;
其中,利用JavaParser解析代码,解析后得到两部分信息:一是抽象语法树结点所代表的信息;二是结点与结点的指向关系,存储边的信息。
3.如权利要求1所述的基于多跳推理机制的代码摘要生成方法,其特征是,对抽象语法树进行特征提取,得到抽象语法树特征向量;具体包括:
采用图卷积神经网络,对抽象语法树进行图嵌入,得到抽象语法树特征向量。
4.如权利要求1所述的基于多跳推理机制的代码摘要生成方法,其特征是,将抽象语法树特征向量和自然语言表述特征向量,输入到训练后的transformer模型中,得到代码的初始摘要;具体包括:
将抽象语法树特征向量输入到训练后的transformer模型的编码器,得到编码向量;
将获取的自然语言表述进行特征提取,得到自然语言表述特征向量;
将编码向量和自然语言表述特征向量,输入到训练后的transformer模型的解码器中,得到代码的初始摘要。
5.如权利要求1所述的基于多跳推理机制的代码摘要生成方法,其特征是,训练后的transformer模型,其训练步骤包括:
构建训练集;所述训练集,包括:已知代码摘要的代码片段和自然语言表述;
将训练集的代码片段解析,生成抽象语法树;对抽象语法树进行特征提取,得到抽象语法树特征向量;
将抽象语法树特征向量作为transformer模型的编码器的输入值;
将训练集的自然语言表述进行特征提取,得到自然语言表述特征向量;
将编码器的输出值和自然语言表述特征向量,均作为transformer模型的解码器的输入值,将训练集的已知代码摘要,作为transformer模型的解码器的输出值,对transformer模型进行训练,当模型的损失函数达到最小值时,停止训练,得到训练后的transformer模型。
6.如权利要求1所述的基于多跳推理机制的代码摘要生成方法,其特征是,对代码的初始摘要和已知的知识图谱,利用多跳推理算法进行处理,得到代码的推理摘要;具体包括:
将代码的初始摘要,放入多跳推理机制算法中,与已知的知识图谱中的实体概念进行关联,得到代码的推理摘要。
7.基于多跳推理机制的代码摘要生成系统,其特征是,包括:
获取模块,其被配置为:获取待生成摘要的代码;
特征提取模块,其被配置为:对待生成摘要的代码进行解析,生成抽象语法树;对抽象语法树进行特征提取,得到抽象语法树特征向量;
初始摘要生成模块,其被配置为:将抽象语法树特征向量和自然语言表述特征向量,输入到训练后的transformer模型中,得到代码的初始摘要;
推理摘要生成模块,其被配置为:对代码的初始摘要和已知的知识图谱,利用多跳推理算法进行处理,得到代码的推理摘要;
所述多跳推理算法的表达式为:
其中,f(·)是聚集来自连接结点的分数的聚合器,ns(v)表示结点v的分数;u表示访问的结点;r表示访问结点与v直接相连的边;γ是控制来自先前跳跃的信息流强度的折扣因子;ns(u)是指访问结点u的分数;
R(u,r,v)是三重相关性,反映了在当前背景下的三元组给(u,r,v)给出的证据的相关性;计算三重相关性:
在H跳之后,通过归一化获得结点上的最终分布:
p(ct|s<t,G)=softmaxv∈V(ns(v)) (3-4)
其中,ct是在t时间步选取的结点的概念;p(ct|s<t,G)表示代码的推理摘要,s<t表示s1,s2,s3,…,st-1;
加权融合模块,其被配置为:将代码的初始摘要和代码的推理摘要进行加权融合,得到最终的代码摘要。
8.一种电子设备,其特征是,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110426243.1A CN113342343B (zh) | 2021-04-20 | 2021-04-20 | 基于多跳推理机制的代码摘要生成方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110426243.1A CN113342343B (zh) | 2021-04-20 | 2021-04-20 | 基于多跳推理机制的代码摘要生成方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113342343A CN113342343A (zh) | 2021-09-03 |
CN113342343B true CN113342343B (zh) | 2022-05-27 |
Family
ID=77468237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110426243.1A Active CN113342343B (zh) | 2021-04-20 | 2021-04-20 | 基于多跳推理机制的代码摘要生成方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113342343B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116561299B (zh) * | 2023-07-10 | 2023-10-20 | 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) | 代码摘要生成方法、装置、设备及存储介质 |
CN116661805B (zh) * | 2023-07-31 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 代码表示的生成方法和装置、存储介质及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960506A (zh) * | 2018-12-03 | 2019-07-02 | 复旦大学 | 一种基于结构感知的代码注释生成方法 |
US10809983B1 (en) * | 2018-11-23 | 2020-10-20 | Amazon Technologies, Inc. | Using an abstract syntax tree for generating names in source code |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908042B (zh) * | 2010-08-09 | 2016-04-13 | 中国科学院自动化研究所 | 一种双语联合语义角色的标注方法 |
US9606990B2 (en) * | 2015-08-04 | 2017-03-28 | International Business Machines Corporation | Cognitive system with ingestion of natural language documents with embedded code |
US11003856B2 (en) * | 2018-02-22 | 2021-05-11 | Google Llc | Processing text using neural networks |
US10606570B2 (en) * | 2018-03-08 | 2020-03-31 | Fujitsu Limited | Representing software with an abstract code graph |
US20190287012A1 (en) * | 2018-03-16 | 2019-09-19 | Microsoft Technology Licensing, Llc | Encoder-decoder network with intercommunicating encoder agents |
US10909157B2 (en) * | 2018-05-22 | 2021-02-02 | Salesforce.Com, Inc. | Abstraction of text summarization |
US11226797B2 (en) * | 2018-05-24 | 2022-01-18 | Chaldal, Inc. | Representation and analysis of workflows using abstract syntax trees |
CN110543297B (zh) * | 2018-05-28 | 2021-03-30 | 北京京东尚科信息技术有限公司 | 用于生成源码的方法和装置 |
US11334467B2 (en) * | 2019-05-03 | 2022-05-17 | International Business Machines Corporation | Representing source code in vector space to detect errors |
US11003444B2 (en) * | 2019-06-28 | 2021-05-11 | Intel Corporation | Methods and apparatus for recommending computer program updates utilizing a trained model |
CN111625276B (zh) * | 2020-05-09 | 2023-04-21 | 山东师范大学 | 基于语义与语法信息融合的代码摘要生成方法及系统 |
CN111797242B (zh) * | 2020-06-29 | 2023-04-07 | 哈尔滨工业大学 | 一种基于代码知识图谱和知识迁移的代码摘要生成方法 |
-
2021
- 2021-04-20 CN CN202110426243.1A patent/CN113342343B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10809983B1 (en) * | 2018-11-23 | 2020-10-20 | Amazon Technologies, Inc. | Using an abstract syntax tree for generating names in source code |
CN109960506A (zh) * | 2018-12-03 | 2019-07-02 | 复旦大学 | 一种基于结构感知的代码注释生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113342343A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110018820B (zh) | 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法 | |
WO2022095682A1 (zh) | 文本分类模型的训练方法、文本分类方法、装置、设备、存储介质及计算机程序产品 | |
CN112329474B (zh) | 融合注意力的方面级用户评论文本情感分析方法及系统 | |
CN111061847A (zh) | 对话生成及语料扩充方法、装置、计算机设备和存储介质 | |
Liu et al. | Dynamic knowledge graph reasoning based on deep reinforcement learning | |
US12061876B2 (en) | Efficient transformer language models with disentangled attention and multi-step decoding | |
CN111930906A (zh) | 基于语义块的知识图谱问答方法及装置 | |
JP2022088319A (ja) | 文書中の自然言語テキストの解析 | |
CN113342343B (zh) | 基于多跳推理机制的代码摘要生成方法及系统 | |
CN113342318A (zh) | 基于多视图代码特征的细粒度代码自动生成方法及系统 | |
CN111625276A (zh) | 基于语义与语法信息融合的代码摘要生成方法及系统 | |
CN115617963A (zh) | 用于进行问答的生成关系链接 | |
CN113779220A (zh) | 一种基于三通道认知图谱和图注意力网络的蒙语多跳问答方法 | |
CN114358201A (zh) | 基于文本的情感分类方法和装置、计算机设备、存储介质 | |
CN115599901A (zh) | 基于语义提示的机器问答方法、装置、设备及存储介质 | |
WO2023231513A1 (zh) | 对话内容的生成方法及装置、存储介质、终端 | |
CN116661852B (zh) | 一种基于程序依赖图的代码搜索方法 | |
CN111767694A (zh) | 文本生成方法、装置和计算机可读存储介质 | |
CN114492661B (zh) | 文本数据分类方法和装置、计算机设备、存储介质 | |
CN108875024B (zh) | 文本分类方法、系统、可读存储介质及电子设备 | |
CN115730568A (zh) | 抽象语义到文本的生成方法、装置、电子设备和存储介质 | |
CN113076089A (zh) | 一种基于对象类型的api补全方法 | |
CN112560487A (zh) | 一种基于国产设备的实体关系抽取方法及系统 | |
Pileggi et al. | Ontology in software engineering | |
CN115238698A (zh) | 生物医疗命名实体识别方法及系统 |
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 | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231218 Address after: No. 546, Luoyu Road, Hongshan District, Wuhan, Hubei Province, 430000 Patentee after: HUBEI CENTRAL CHINA TECHNOLOGY DEVELOPMENT OF ELECTRIC POWER Co.,Ltd. Address before: 250014 No. 88, Wenhua East Road, Lixia District, Shandong, Ji'nan Patentee before: SHANDONG NORMAL University |
|
TR01 | Transfer of patent right |