[发明专利]一种基于多维度特征和混合神经网络的代码可读性评估方法在审
申请号: | 202011169449.2 | 申请日: | 2020-10-28 |
公开(公告)号: | CN112416354A | 公开(公告)日: | 2021-02-26 |
发明(设计)人: | 米庆;于洋 | 申请(专利权)人: | 北京工业大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F40/126;G06N3/04;G06N3/08 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 沈波 |
地址: | 100124 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 多维 特征 混合 神经网络 代码 可读性 评估 方法 | ||
1.一种基于多维度特征和混合神经网络的代码可读性评估方法,本方法综合利用字符级、词条级表征方式,保留源代码中的可读性信息以供算法和模型使用;基于混合神经网络构建特征提取模型,从结构、语义不同角度深度挖掘源代码中蕴含的可读性特征,最终实现对于代码可读性的量化评估;其特征在于:该方法包括以下步骤:
步骤1:字符级表征,将代码片段中的每个字符都视为独立的符号并进行编码;
步骤2:词条级表征,将代码片段中的每个词条都视为独立的符号并进行编码;
步骤3:可读性特征提取,构建混合神经网络直接提取并学习隐藏在源代码中的结构特征和语义特征;
步骤4:代码可读性评估。
2.根据权利要求1所述的一种基于多维度特征和混合神经网络的代码可读性评估方法,其特征在于:步骤1中,步骤1.1:解析,将代码片段解析为一个字符序列,具体包括:1)字母,即a-z和A-Z;2)数字,即0-9;3)符号,“=”和“+”;4)空白符,即空格、水平制表符和行结束符;
步骤1.2:编码,使用ASCII值对步骤1.1中所得的字符序列进行编码;
步骤1.3:对齐,将步骤1.2中所得的数值序列转换为50×300的二维矩阵,对于矩阵中无符号的位置,使用NUL进行填充。
3.根据权利要求1所述的一种基于多维度特征和混合神经网络的代码可读性评估方法,其特征在于:步骤2中,步骤2.1:解析,使用srcML以及正则表达式将代码片段解析为一个词条序列,具体包括:1)表示数据类型、控制逻辑的关键字;2)自定义标识符;3)各种符号;4)空白符,即空格、水平制表符和行结束符;
步骤2.2:编码,使用独热编码方法对步骤2.1中所得的词条序列进行编码;
步骤2.3:对齐,使用embedding层将步骤2.2中所得的数值序列转换为词向量序列,维度设置为64,最大输入长度限制为300。
4.根据权利要求3所述的一种基于多维度特征和混合神经网络的代码可读性评估方法,其特征在于:步骤2.1中,将自定义标识符归纳为TypeName、FunctionName和VariableName三类,用于解决由自定义标识符的无限性引起的数据稀疏与维度爆炸问题。
5.根据权利要求1所述的一种基于多维度特征和混合神经网络的代码可读性评估方法,其特征在于:步骤3中,步骤3.1:结构特征提取,将步骤1.3中所得的二维矩阵作为CNN模块的输入数据,利用多维度同时卷积再聚合,实现空间结构特征以及语法结构特征的提取;
步骤3.2:语义特征提取,将步骤2.3中所得的词向量序列作为BiGRU模块的输入数据,通过综合考虑上下文信息以及语序关系,对代码片段中的语义特征进行提取。
6.根据权利要求1所述的一种基于多维度特征和混合神经网络的代码可读性评估方法,其特征在于:步骤4中,步骤4.1:特征融合,将所得的结构特征以及所得的语义特征按照给定轴相接构成新的向量;
步骤4.2:模型训练,将步骤4.1中所得的特征向量依次送入全连接层以及sigmoid层,训练过程以最小化网络损失为目的,采用二元交叉熵函数作为损失函数:
其中,N=16为批尺寸,M=2为类别数,pj表示样本i是否属于类别j,qj表示模型所预测的概率;
步骤4.3:使用步骤4.2中所得的分类器进行可读性评估,其输出是一个代码可读性的分类预测,即可读或者不可读;若预测结果与代码片段自身的可读性标签相同,则说明该分类预测正确。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京工业大学,未经北京工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011169449.2/1.html,转载请声明来源钻瓜专利网。