[发明专利]源代码语言类型检测方法和系统、设备及存储介质在审
申请号: | 202210344124.6 | 申请日: | 2022-04-02 |
公开(公告)号: | CN114840207A | 公开(公告)日: | 2022-08-02 |
发明(设计)人: | 何魏酉;张研;李薛 | 申请(专利权)人: | 三六零数字安全科技集团有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06K9/62 |
代理公司: | 北京市鼎立东审知识产权代理有限公司 11751 | 代理人: | 朱慧娟 |
地址: | 100015 北京市朝阳区酒*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 源代码 语言 类型 检测 方法 系统 设备 存储 介质 | ||
本申请涉及一种源代码语言类型检测方法和系统、设备及存储介质,其方法包括:基于预先构建的代码特征集合,提取当前要检测的源代码的代码特征;计算代码特征的TF‑IDF,并将计算得到的TF‑IDF输入至训练好的检测模型中,由检测模型根据TF‑IDF对当前要检测的源代码进行检测分类。通过采用预先构建的代码特征集合进行当前要检测的源代码的代码特征的提取,然后再根据所提取出来的代码特征采用检测模型进行源代码语言类型的检测,使得在对源代码语言类型进行检测时所提取的代码特征更加准确和全面,从而也就有效提高了源代码语言类型检测的速率。
技术领域
本公开涉及计算机技术领域,尤其涉及一种源代码语言类型检测方法和系统、设备及存储介质。
背景技术
源代码分类主要应用于代码高亮(根据代码识别编程语言对代码中的保留字符串、符号等进行高亮标注)、源代码存储库索引(识别对应代码的编程语言,分别进行类型标注,方便用户按编程语言进行代码搜索)、编程语言流行度趋势估计(基于源代码分类技术自动化对不同类型编程语言使用进行统计,进而判断编程语言流行度及未来趋势)等场景中。在相关技术中,用于实现源代码分类通常采用对代码进行N-Gram分词,然后采用传统机器学习方式进行分类。但是,N-Gram特征复杂,对代码进行N-Gram进行分词后也就失去了代码本身的语义,占用内存资源较高,导致源代码分类检测速度较慢。
发明内容
有鉴于此,本公开提出了一种源代码语言类型检测方法,可以有效提高源代码分类检测速度。
根据本公开的一方面,提供了一种源代码语言类型检测方法,包括:
基于预先构建的代码特征集合,提取当前要检测的源代码的代码特征;
计算所述代码特征的TF-IDF,并基于计算得到的TF-IDF结合训练好的检测模型,由所述检测模型根据所述TF-IDF对当前要检测的所述源代码进行检测分类。
在一种可能的实现方式中,所述代码特征集合中包括不同语言类型的源代码的变量类型、函数名、包名、语法格式、标识符中的至少一种。
在一种可能的实现方式中,基于预先构建的代码特征集合,提取当前要检测的源代码的代码特征时,按照元素匹配的方式进行。
在一种可能的实现方式中,还包括检测模型训练的步骤;
其中,对所述检测模型进行训练时,包括:
收集不同语言类型的源代码的变量类型、函数名、包名、语法格式、标识符中的至少一种构建所述代码特征集合,并收集预设数量的源代码作为样本数据;其中,预设数量的源代码的语言类型包括多种;
基于所述代码特征集合提取各所述样本数据的代码特征,并计算提取出的样本数据的代码特征计算TF-IDF;
将各所述样本数据的TF-IDF输入至检测模型中,对所述检测模型进行训练。
在一种可能的实现方式中,所述检测模型为随机森林模型。
在一种可能的实现方式中,基于预先构建的代码特征集合,提取当前要检测的源代码的代码特征之前,还包括:
由所述源代码中提取出特有特征,在提取出所述特有特征时,执行根据所述特有特征对所述源代码进行检测分类的步骤。
根据本公开的另一方面,还提供了一种源代码语言类型检测系统,包括:特征提取模块和检测分类模块;
所述特征提取模块,被配置为基于预先构建的代码特征集合,提取当前要检测的源代码的代码特征;
所述检测分类模块,被配置为计算所述代码特征的TF-IDF,并基于计算得到的TF-IDF结合训练好的检测模型,由所述检测模型根据所述TF-IDF对当前要检测的所述源代码进行检测分类。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于三六零数字安全科技集团有限公司,未经三六零数字安全科技集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210344124.6/2.html,转载请声明来源钻瓜专利网。