一种基于结构位置感知的代码自动摘要方法
摘要文本
本发明提供一种基于结构位置感知的代码自动摘要方法,属于代码自动摘要技术领域,包括:对源代码进行解析获得标记序列和抽象语法树AST, 并通过源代码的AST得到源代码的距离关系矩阵;将标记序列和距离关系矩阵传入到注意力模块中;编码器的输出结果作为最后的编码输出;解码器输入编码器输出和起始标识符;解码器依据编码向量和上一时刻的输出逐步生成代码摘要。本发明通过将距离关系矩阵和代码标记序列同时加入注意力计算模块,使得模型同时关注代码各个标记之间的语义和语法关联度,并根据关联度来做更好的特征融合,在注意力计算中添加了距离关系矩阵,使得模型同时关注源代码的语义和语法特征并增强了模型捕获源代码语法信息的能力。 更多数据:www.macrodatas.cn
申请人信息
- 申请人:武汉大学
- 申请人地址:430072 湖北省武汉市武昌区八一路299号
- 发明人: 武汉大学
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 一种基于结构位置感知的代码自动摘要方法 |
| 专利类型 | 发明授权 |
| 申请号 | CN202311701689.6 |
| 申请日 | 2023/12/12 |
| 公告号 | CN117407051B |
| 公开日 | 2024/3/8 |
| IPC主分类号 | G06F8/73 |
| 权利人 | 武汉大学 |
| 发明人 | 蔡波; 罗剑; 瞿志恒; 于耀翔 |
| 地址 | 湖北省武汉市武昌区珞珈山 |
专利主权项内容
1.一种基于结构位置感知的代码自动摘要方法,其特征在于,包括:一、对源代码进行解析获得标记序列和抽象语法树AST, 并通过源代码的AST得到源代码的距离关系矩阵;二、将标记序列和距离关系矩阵传入到Transformer代码摘要生成模型的注意力模块中,使得模型同时关注代码各个标记之间的语义和语法关联度; 三、编码器的输出结果作为最后的编码输出;四、解码器输入编码器输出和起始标识符;五、解码器依据编码向量和上一时刻的输出逐步生成代码摘要;在步骤一中,所述距离关系矩阵用于描述代码标记之间的语法关系,通过代码的AST完成构建,具体构建包括如下:抽象语法树AST中每个节点代表一个结构属性,通过前序遍历AST得到遍历序列,根据其距离位置和AST序列中对应的语义节点来确定节点之间的语法关联性;设AST序列为,/>表示第/>个语法节点,/>表示第/>个语义节点,/>和/>之间的距离/>描述了/>和/>的语法相关性,计算方法为/>,由于上述语义节点之间的距离计算方法使得距离过于离散化,需要对语义节点之间的距离再做一次转化来进行距离平滑处理;通过计算所有语义节点之间的距离,得到了距离关系矩阵/>,其中/>,,/>和/>为超参数;在步骤三中,编码器的输出结果为分别对代码标记之间的语义相关度和语法相关度进行综合考虑,最终形成的整体代码隐状态向量表示,具体包括如下:在每个注意头的嵌入向量序列中,/>被转化为隐状态向量序列,其中/>,嵌入向量序列/>被编码器编码并转换为一个隐状态向量序列/>来包含代码所有的语义和语法信息,计算具体如下:其中,,/>,/>,/>表示每个注意力层中的不同参数,扩展为/>的形状,并在每个注意力层中保持不变;在步骤一中,将源代码分词得到的子标记收集形成标记序列,用该标记序列来表示其语义信息,采用Transformer编码器来为标记序列编码,将序列中的标记替代为它对应的词嵌入向量来将标记转化为初始嵌入向量;设语义上下文信息,序列/>是/>经过标记嵌入层后得到的嵌入向量序列,其中/>表示标记/>的嵌入向量。