[发明专利]基于哈希算法的代码分类方法有效
申请号: | 202310637656.3 | 申请日: | 2023-06-01 |
公开(公告)号: | CN116432125B | 公开(公告)日: | 2023-09-05 |
发明(设计)人: | 吴炜;江谜;罗川;钟萍 | 申请(专利权)人: | 中南大学 |
主分类号: | G06F18/243 | 分类号: | G06F18/243;G06F18/2411;G06F18/22;G06F8/41;G06F17/16 |
代理公司: | 长沙永星专利商标事务所(普通合伙) 43001 | 代理人: | 王婷婷;周咏 |
地址: | 410083 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 算法 代码 分类 方法 | ||
本发明公开了一种基于哈希算法的代码分类方法,包括获取已有的代码数据和对应的分类结果提取对应的抽象语法树;计算得到各个抽象语法树的表达;基于抽象语法树之间的相似度构建核矩阵;构建抽象语法树分类初步模型并训练得到抽象语法树分类模型;采用抽象语法树分类模型进行实际的代码的分类。本发明避免了神经网络中复杂的数学计算和海量的参数学习,同时不再依赖昂贵的高端硬件,能够在满足代码分类精度的前提下,明显降低时间开销,尤其适用于大规模代码数据集场景下的代码分类任务,而且本发明的可靠性高、准确性好且效率较高。
技术领域
本发明属于数据挖掘技术领域,具体涉及一种基于哈希算法的代码分类方法。
背景技术
随着互联网技术的快速发展,用户的需求也在飞速增长。为了满足用户的海量需求,开发者就需要开发出大量的应用。同时,大部分的开发者们,都倾向于将开发的应用源代码(部分或全部)分享到开源社区,以便进行交流、完善或者二次开发。因此,近年来,开源社区的源代码数据有了飞速的增长;这不仅丰富了软件的生态系统,也为日益复杂的软件开发提供了更多的选择和灵活性。
但是,随着开源社区源代码数据的飞速增长,代码库的分类变得越来越困难。如果不能对海量且复杂的代码数据进行有效的分类,那么这将直接导致代码库的体积极速增大,从而降低代码库或开源社区的运行效率。因此,如何快速且准确地提取代码数据的特征,并根据特征对代码数据进行分类,就变得极为重要。
代码数据是程序语言的一种,而针对代码数据的分类,其关键就在于如何高效且准确的提取得到代码数据中的语法和语义信息,从而实现代码的分类。传统的代码分类方案,其将代码视为自然语言,并基于令牌进行建模和分类;但是由于代码数据与自然语言数据之间具有的本质性差别,这使得这类分类方案的准确性较差。
近年来,抽象语法树技术已经开始逐步应用于提取代码数据的语义信息和结构信息,并结合机器学习模型来完成对代码的分类。但是,这类方案依旧存在一些缺陷:由于代码程序所对应的抽象语法树的规模通常较大且深度较深,基于该类抽象语法树的深度学习模型非常容易出现远端特征难以提取的问题,从而降低了代码分类的精确和可靠性;同时,现有的抽象语法树与机器学习组合的代码分类方案,其在运行时存在分类方案极其复杂,效率较差且成本较高的缺陷。
发明内容
本发明的目的在于提供一种可靠性高、准确性好且效率较高的基于哈希算法的代码分类方法。
本发明提供的这种基于哈希算法的代码分类方法,包括如下步骤:
S1. 获取已有的代码数据和对应的分类结果,并提取对应的抽象语法树;
S2. 针对步骤S1获取的抽象语法树,基于其中各个节点的属性信息和哈希算法,计算得到各个抽象语法树的表达;
S3. 根据步骤S2得到的各个抽象语法树的表达,计算任意两个抽象语法树之间的相似度,从而构建核矩阵;
S4. 基于支持向量机,构建抽象语法树分类初步模型;
S5. 采用步骤S3得到的核矩阵,对步骤S4构建的抽象语法树分类初步模型进行训练,得到抽象语法树分类模型;
S6. 采用步骤S5得到的抽象语法树分类模型,进行实际的代码的分类。
所述的步骤S2,具体包括如下步骤:
A. 根据步骤S1获取的抽象语法树,提取对应的节点的属性信息,并初始化抽象语法树中各个节点的向量表达;
B. 针对抽象语法树中的每个节点,提取以当前节点为根节点的各个深度的子树,并将根节点的向量表达与对应的所有子节点的向量表达进行拼接,以表示每个子树;
C. 为步骤B得到的每棵子树赋予唯一的整数识别号,并将所有子树的整数识别号组成的集合用于表示整棵抽象语法树;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中南大学,未经中南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310637656.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种客家娘酒及其发酵方法
- 下一篇:消毒袋生产原料预处理装置