本发明涉及计算机,特别是涉及一种代码文件识别方法、一种代码文件识别装置、一种电子设备及一种存储介质。
背景技术:
1、随着社会的发展和科技的进步,数据安全问题越来越备受关注。存储在介质上的明文数据和在网络上传输的数据已不再安全,为此产生了很多数据防泄漏的手段,针对软件行业最重要的代码资产的保护,需要对常规代码文件进行识别,判断代码类型,从而在日常工作的文档流通中管控代码资产。
2、目前,针对常规代码文件的识别,有众多人工智能训练算法和解决方案,其可通过针对性训练出专门识别代码的人工智能算法库去进行内容识别与判断。
3、然而,其他常见文件中也可能存在大量代码,由于文件格式不同,通过现有技术无法直接读取内容进行语义判断,故无法识别其他常见文件格式内容中是否存在大量代码。如果没有高效准确的手段去准确识别常规代码文件,或是其他常见文件格式内容中是否存在大量代码,就无法在日常工作的文档流通中正确管控代码资产,对客户和公司主体造成不可逆的损失。
技术实现思路
1、针对现有技术中的缺陷,本发明实施例提供了一种代码文件识别方法、一种代码文件识别装置、一种电子设备及一种存储介质。
2、第一方面,本发明实施例提供一种代码文件识别方法,包括:
3、获取待检测文件,判断所述待检测文件的文件类型;
4、根据所述文件类型,解析所述待检测文件,获取所述待检测文件的文本内容;
5、根据所述文本内容,通过贝叶斯分类器识别所述待检测文件是否为代码文件;
6、若所述待检测文件为代码文件,则基于关键词和所述文本内容识别所述代码文件的代码类型。
7、如上述方法,可选地,所述贝叶斯分类器通过下述方式确定:
8、获取训练样本,所述训练样本包括代码文本样本和非代码文本样本;
9、分别选取所述代码文本样本和所述非代码文本样本中的特征词;
10、统计所述训练样本中的文本数量和特征词数量;
11、根据所述文本数量和所述特征词数量计算每个特征词的词频;
12、基于每个特征词的词频,通过朴素贝叶斯方法训练特征分类模型;
13、基于所述特征分类模型,生成贝叶斯分类器。
14、如上述方法,可选地,所述分别选取所述代码文本样本和所述非代码文本样本中的特征词,包括:
15、从代码语言标准词、自然语言停止词和特殊字符三个维度,分别选取所述代码文本样本和所述非代码文本样本中的特征词。
16、如上述方法,可选地,所述基于每个特征词的词频,通过朴素贝叶斯方法训练特征分类模型,包括:
17、分别计算所述训练样本中代码类的第一先验概率和非代码类的第二先验概率;
18、根据每个特征词的词频,计算所述每个特征词是代码类的第一条件概率和非代码类的第二条件概率;
19、根据每个特征词的第一先验概率和第一条件概率,确定每个特征词是代码类的第一后验概率;
20、根据每个特征词的第二先验概率和第二条件概率,确定每个特征词是非代码类的第二后验概率。
21、如上述方法,可选地,所述基于所述特征分类模型,生成贝叶斯分类器,包括:
22、根据所述训练样本中每个样本文本中的特征词的第一后验概率,计算样本文本为代码文件的第一分类概率;
23、根据所述样本文本中的特征词的第二后验概率,计算所述样本文本为非代码文件的第二分类概率;
24、若所述第一分类概率大于所述第二分类概率,则所述样本文本被分为代码文件,否则所述样本文本被分为非代码文件。
25、如上述方法,可选地,所述判断所述待检测文件的文件类型,包括:
26、获取所述待检测文件的文件头和文件后缀;
27、根据所述文件头和文件后缀判断所述待检测文件的文件类型。
28、如上述方法,可选地,所述基于关键词识别所述代码文件的代码类型,包括:
29、从所述代码文件的文本内容中,检索与代码类型对应的唯一关键词;
30、若检索到所述唯一关键词,则确定所述代码文件为所述唯一关键词指示的代码类型。
31、如上述方法,可选地,所述基于关键词识别所述代码文件的代码类型,还包括:
32、若未检索到代码类型对应的唯一关键词,则从所述代码文件的文本内容中,检索与多个代码类型对应的通用关键词;
33、若检索到多个通用关键词,则根据所述多个通用关键词指示的代码类型的交集,确定所述代码文件的代码类型。
34、第二方面,本发明实施例提供一种代码文件识别装置,包括:
35、判断模块,用于获取待检测文件,判断所述待检测文件的文件类型;
36、解析模块,用于根据所述文件类型,解析所述待检测文件,获取所述待检测文件的文本内容;
37、检测模块,用于根据所述文本内容,通过贝叶斯分类器识别所述待检测文件是否为代码文件;
38、识别模块,用于若所述待检测文件为代码文件,则基于关键词和所述文本内容识别所述代码文件的代码类型。
39、第三方面,本发明实施例提供一种电子设备,包括:
40、存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如上述第一方面任一项所述的代码文件识别方法。
41、第四方面,本发明实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面任一项所述的代码文件识别方法。
42、本发明实施例提供的代码文件识别方法,以源文件为数据源,以文件实际内容为目标进行代码类型判断处理,通过内容解析,处理各种文件格式,将其文本内容提取出来,利用高效的贝叶斯分类器,对文本内容进行快速判断,将普通文档和代码文件进行二元分割,利用常见的代码关键字,确定代码文件属于哪种语言的代码,无需人工干预,能够实现文件类型判断、文件内容解析和代码类型判断的任务,提供准确、高效的解析和判断功能,解决了市场上常见文件不同格式无法直接读取内容进行语义判断的问题,能够提高代码类型识别的准确性和效率,实现了日常工作的文档流通中正确管控代码资产的目的。
1.一种代码文件识别方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述贝叶斯分类器通过下述方式确定:
3.根据权利要求2所述的方法,其特征在于,所述分别选取所述代码文本样本和所述非代码文本样本中的特征词,包括:
4.根据权利要求3所述的方法,其特征在于,所述基于每个特征词的词频,通过朴素贝叶斯方法训练特征分类模型,包括:
5.根据权利要求4所述的方法,其特征在于,所述基于所述特征分类模型,生成贝叶斯分类器,包括:
6.根据权利要求1-5任一项所述的方法,其特征在于,所述判断所述待检测文件的文件类型,包括:
7.根据权利要求1-5任一项所述的方法,其特征在于,所述基于关键词识别所述代码文件的代码类型,包括:
8.根据权利要求7所述的方法,其特征在于,所述基于关键词识别所述代码文件的代码类型,还包括:
9.一种代码文件识别装置,其特征在于,包括:
10.一种电子设备,其特征在于,包括:
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的方法。