当前位置: 首页 > 专利查询>中南大学专利>正文

基于哈希算法的代码分类方法技术

技术编号:38203208 阅读:20 留言:0更新日期:2023-07-21 16:47
本发明专利技术公开了一种基于哈希算法的代码分类方法,包括获取已有的代码数据和对应的分类结果提取对应的抽象语法树;计算得到各个抽象语法树的表达;基于抽象语法树之间的相似度构建核矩阵;构建抽象语法树分类初步模型并训练得到抽象语法树分类模型;采用抽象语法树分类模型进行实际的代码的分类。本发明专利技术避免了神经网络中复杂的数学计算和海量的参数学习,同时不再依赖昂贵的高端硬件,能够在满足代码分类精度的前提下,明显降低时间开销,尤其适用于大规模代码数据集场景下的代码分类任务,而且本发明专利技术的可靠性高、准确性好且效率较高。准确性好且效率较高。准确性好且效率较高。

【技术实现步骤摘要】
基于哈希算法的代码分类方法


[0001]本专利技术属于数据挖掘
,具体涉及一种基于哈希算法的代码分类方法。

技术介绍

[0002]随着互联网技术的快速发展,用户的需求也在飞速增长。为了满足用户的海量需求,开发者就需要开发出大量的应用。同时,大部分的开发者们,都倾向于将开发的应用源代码(部分或全部)分享到开源社区,以便进行交流、完善或者二次开发。因此,近年来,开源社区的源代码数据有了飞速的增长;这不仅丰富了软件的生态系统,也为日益复杂的软件开发提供了更多的选择和灵活性。
[0003]但是,随着开源社区源代码数据的飞速增长,代码库的分类变得越来越困难。如果不能对海量且复杂的代码数据进行有效的分类,那么这将直接导致代码库的体积极速增大,从而降低代码库或开源社区的运行效率。因此,如何快速且准确地提取代码数据的特征,并根据特征对代码数据进行分类,就变得极为重要。
[0004]代码数据是程序语言的一种,而针对代码数据的分类,其关键就在于如何高效且准确的提取得到代码数据中的语法和语义信息,从而实现代码的分类。传统的代码分类方案,其将代码本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于哈希算法的代码分类方法,其特征在于包括如下步骤:S1. 获取已有的代码数据和对应的分类结果,并提取对应的抽象语法树;S2. 针对步骤S1获取的抽象语法树,基于其中各个节点的属性信息和哈希算法,计算得到各个抽象语法树的表达;S3. 根据步骤S2得到的各个抽象语法树的表达,计算任意两个抽象语法树之间的相似度,从而构建核矩阵;S4. 基于支持向量机,构建抽象语法树分类初步模型;S5. 采用步骤S3得到的核矩阵,对步骤S4构建的抽象语法树分类初步模型进行训练,得到抽象语法树分类模型;S6. 采用步骤S5得到的抽象语法树分类模型,进行实际的代码的分类。2.根据权利要求1所述的基于哈希算法的代码分类方法,其特征在于所述的步骤S2,具体包括如下步骤:A. 根据步骤S1获取的抽象语法树,提取对应的节点的属性信息,并初始化抽象语法树中各个节点的向量表达;B. 针对抽象语法树中的每个节点,提取以当前节点为根节点的各个深度的子树,并将根节点的向量表达与对应的所有子节点的向量表达进行拼接,以表示每个子树;C. 为步骤B得到的每棵子树赋予唯一的整数识别号,并将所有子树的整数识别号组成的集合用于表示整棵抽象语法树;D. 基于哈希算法,计算当前的抽象语法树的向量表达;E. 重复步骤A~D直至得到每一棵抽象语法树的向量表达。3.根据权利要求2所述的基于哈希算法的代码分类方法,其特征在于所述的步骤A,具体包括如下步骤:针对当前的抽象语法树,提取得到抽象语法树中所有节点的属性信息,得到属性信息集合A;根据提取得到的属性信息,采用如下算式构造每个节点的属性特征向量a:其中,属性特征向量a的每一个维度表示抽象语法树中的一个节点;属性特征向量a中的第zz个元素满足;若当前节点不是第i个节点的父节点,则,否则取值为第i个节点的属性;为当前的抽象语法树中节点的总数。4.根据权利要求3所述的基于哈希算法的代码分类方法,其特征在于所述的步骤B,具体包括如下步骤:针对抽象语法树中的每个节点,将节点的关系矩阵进行行压缩存储,通过索引操作提取以当前节点为根节点的各个深度的子树,并将子树中节点的向量表达按照抽象语法树的层次遍历次序进行拼接,以表示每棵子树。5.根据权利要求4所述的基于哈希算法的代码分类方法,其特征在于所述的步骤C,具体包括如下步骤:采用str2hash函数为步骤B得到的每棵子树赋予唯一的整数识别号,从而将以子树为
元素的集合表示为整数集合;进而,将所有子树的整数识别号组成的集合用于表示整棵抽象语法树。6.根据权...

【专利技术属性】
技术研发人员:吴炜江谜罗川钟萍
申请(专利权)人:中南大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1