一种待分析文件的文件具体类型的判断方法及装置制造方法及图纸

技术编号:10015267 阅读:114 留言:0更新日期:2014-05-08 10:34
本发明专利技术公开一种待分析文件的文件具体类型的判断方法及装置,判断方法包括:步骤(11),扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;步骤(12),选择一种未分析的编程语言作为待分析编程语言;步骤(13),计算特征符号下出现待分析编程语言概率;如果还有其他未分析的编程语言,则执行步骤(12),否则执行步骤(14);步骤(14),从多个特征符号下出现待分析编程语言概率中选择最大值对应的待分析编程语言,作为所述待分析文件的编程语言;步骤(15),根据所述待分析文件的编程语言,确定所述待分析文件的文件具体类型。本发明专利技术准确性高,即使文件具体类型有多个,也能确定文件具体类型。

【技术实现步骤摘要】
一种待分析文件的文件具体类型的判断方法及装置
本专利技术涉及文件分析相关
,特别是一种待分析文件的文件具体类型的判断方法及装置。
技术介绍
文件具体类型包括文件类型(比如各种格式的图片,OfficeWord文档等等)以及如果是文本文件的话,其可能所属的编程语言的类型(如Java语言源代码文件,LinuxShell脚本等等)等更为具体的信息。当对代码仓库进行展示时,需要知道各文件具体类型,例如对图片格式的文件进行图片展示;对二进制类型的文件只展示一个占位符以便用户点击进行下载,对于各种编程语言的源代码文件则需要根据相应的语法进行语法高亮展示。另外,在对用户的代码仓库进行统计分析时,以及在用户按语言搜索时等很多场景下,也需要知道每个文件的类型及所属语言。这对于用户体验及数据挖掘都非常重要。然而,现有技术一般仅仅通过文件某一个或一些方面的特性来判断文件类型及所属语言,因此:1)准确性低,特别是对于几种均等的可能性毫无判断的方法;2)判断的标准单一导致局限非常大;3)针对源代码文件无法提供针对性的分析判断;4)判断方法扩展性低,无法通过大量的新数据升级及修正现有的判断标准;5)不能根据实际的需要提供满足不同性能及准确性需要的灵活解决方案。
技术实现思路
基于此,有必要针对现有技术对文件具体类型判断不准确的技术问题,提供一种待分析文件的文件具体类型的判断方法及装置。一种待分析文件的文件具体类型的判断方法,包括:步骤11,扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;步骤12,选择一种未分析的编程语言作为待分析编程语言;步骤13,获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率;将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率;将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率;如果还有其他未分析的编程语言,则执行步骤12,得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行步骤14;步骤14,从多个特征符号下出现编程语言概率中选择最大值,将最大值对应的编程语言,作为所述待分析文件的编程语言;步骤15,根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。一种待分析文件的文件具体类型的判断装置,包括:扫描模块,扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;分析语言选择模块,选择一种未分析的编程语言作为待分析编程语言;分析模块,获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率;将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率;将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率;如果还有其他未分析的编程语言,则执行分析语言选择模块,得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行编程语言确认模块;编程语言确认模块,从多个特征符号下出现编程语言概率中选择最大值,将最大值对应的编程语言,作为所述待分析文件的编程语言;文件具体类型确认模块,根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。本专利技术根据待分析编程语言下特征符号出现总概率与样本数据库中待分析编程语言出现概率,计算出特征符号下出现待分析编程语言概率,从中选择最大值所对应的待分析编程语言作为待分析文件的编程语言,根据待分析文件的编程语言,确定待分析文件的文件具体类型。因此,本专利技术准确性高,即使文件具体类型有多个,也能通过本专利技术的方法确定编程语言,从而确定文件具体类型。且本专利技术判断的标准丰富,适用范围大,能针对源代码文件提供针对性的客观分析判断,同时判断方法扩展性高,可通过大量的新数据升级及修正现有的判断标准。并且可根据实际的需要提供满足不同性能及准确性需要的灵活解决方案。附图说明图1为本专利技术一种待分析文件的文件具体类型的判断方法的工作流程图;图2为本专利技术一种待分析文件的文件具体类型的判断方法其中一个实施例的工作流程图;图3为本专利技术一种待分析文件的文件具体类型的判断方法一个例子的工作流程图;图4为本专利技术一种待分析文件的文件具体类型的判断装置的结构模块图。具体实施方式下面结合附图和具体实施例对本专利技术做进一步详细的说明。如图1所示为本专利技术一种待分析文件的文件具体类型的判断方法的工作流程图,包括:步骤11,扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;步骤12,选择一种未分析的编程语言作为待分析编程语言;步骤13,获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率;将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率;将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率;如果还有其他未分析的编程语言,则执行步骤12,得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行步骤14;步骤14,从多个特征符号下出现编程语言概率中选择最大值,将最大值对应的编程语言,作为所述待分析文件的编程语言;步骤15,根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。步骤11中扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数,如果完全扫描不到与编程语言有关的特征符号或者每个特征符号在所述待分析文件中的出现次数过小,则可以判断待分析文件为普通文本文件。步骤12选择一种未分析的编程语言可以在样本数据库所包括的所有的编程语言中选择,也可以是一个预设的范围内选择。对于在多种编程语言中选择,根据贝叶斯定理(Bayes'theorem):在B出现的前提下,A出现的概率等于A出现的前提下B出现的概率乘以A出现的概率再除以B出现的概率。通过联系A与B,计算从一个事件产生另一事件的概率,即从结果上溯原。朴素贝叶斯分类法的正式定义如下:1、设x={a1,a2,...,am}为一个待分类项,而每个a为x的一个特征属性。2、有类别集合C={y1,y2,...,yn}。3、计算P(y1|x),P(y2|x),...,P(yn|x)。4、如果P(yk|x)=max{P(y1|x),P(y2|x),...,P(yn|x)},则x∈yk。步骤13计算本文档来自技高网...
一种待分析文件的文件具体类型的判断方法及装置

【技术保护点】
一种待分析文件的文件具体类型的判断方法,其特征在于,包括:步骤(11),扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;步骤(12),选择一种未分析的编程语言作为待分析编程语言;步骤(13),获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率;将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率;将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率;如果还有其他未分析的编程语言,则执行步骤(12),得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行步骤(14);步骤(14),从多个特征符号下出现待分析编程语言概率中选择最大值,将最大值对应的待分析编程语言,作为所述待分析文件的编程语言;步骤(15),根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。...

【技术特征摘要】
1.一种待分析文件的文件具体类型的判断方法,其特征在于,包括:步骤(11),扫描待分析文件中与编程语言有关的特征符号及每个特征符号在所述待分析文件中的出现次数;步骤(12),选择一种未分析的编程语言作为待分析编程语言;步骤(13),获取样本数据库中每个特征符号在待分析编程语言中出现的概率,根据每个特征符号在所述待分析文件中的出现次数以及样本数据库中每个特征符号在待分析编程语言中出现的概率,计算待分析编程语言下特征符号出现总概率;将样本数据库中待分析编程语言的源代码文件的个数除以样本数据库中源代码文件的总个数,计算结果作为样本数据库中待分析编程语言出现概率;将所述待分析编程语言下特征符号出现总概率乘以样本数据库中待分析编程语言出现概率,计算结果作为特征符号下出现待分析编程语言概率;如果还有其他未分析的编程语言,则执行步骤(12),得到其他未分析的编程语言的特征符号下出现待分析编程语言概率,否则执行步骤(14);步骤(14),从多个特征符号下出现编程语言概率中选择最大值,将最大值对应的编程语言,作为所述待分析文件的编程语言;步骤(15),根据所述待分析文件的编程语言,确定所述待分析文件属于所述编程语言的文件具体类型。2.根据权利要求1所述的待分析文件的文件具体类型的判断方法,其特征在于,所述待分析编程语言下特征符号出现总概率采用如下方式计算:获取样本数据库中每个特征符号在待分析编程语言中出现的概率乘以对应特征符号在所述待分析文件中的出现次数,计算结果作为待分析编程语言下特征符号出现概率,将每个特征符号对应的所述待分析编程语言下特征符号出现概率相加,计算结果作为待分析编程语言下特征符号出现总概率。3.根据权利要求1所述的待分析文件的文件具体类型的判断方法,其特征在于,还包括:步骤(21),获取多个已知编程语言的源代码样本文件保存在样本数据库中;步骤(22),选择一个未统计的编程语言作为待统计编程语言;步骤(23),扫描待统计编程语言的所有源代码样本文件中与编程语言有关的特征符号及每个特征符号在所述源代码样本文件中的出现次数,计算每个特征符号在待统计编程语言中的出现次数除以所有特征符号在待统计编程语言中的出现次数,计算结果作为特征符号在待统计编程语言中出现的概率并保存在样本数据库中,如果还有未统计的编程语言则执行步骤(22),否则执行步骤(24);步骤(24),结束对多个已知编程语言的源代码样本文件的统计。4.根据权利要求3所述的待分析文件的文件具体类型的判断方法,其特征在于,步骤(24)具体包括:将保存在样本数据库中所有源代码样本文件计算一个摘要作为统计摘要,并保存在样本数据库中,结束对多个已知编程语言的源代码样本文件的统计。5.根据权利要求4所述的待分析文件的文件具体类型的判断方法,其特征在于,还包括:将保存在样本数据库中所有源代码样本文件计算一个摘要作为校验摘要,如果所述校验摘要与所述统计摘要一致,则执行步骤(12),否则执行统计步骤(21)至步骤(24)后,执行步骤(12)。6.根据权利要求1所述的待分析文件的文件具体类型的判断方法,其特征在于,还包括:判断待分析文件是否为文本文件,如果待分析文件为文本文件,则根据待分析文件的文件名、扩展名以及幻数匹配查找所述待分析文件的文件具体类型,如果待分析文件的文件具体类型所属编程语言的可能性多于一种,则执行步骤(11)至步骤(15),确定所述待分析文件的文件具体类型。7.一种待分析文件的文件具体类型...

【专利技术属性】
技术研发人员:甘露
申请(专利权)人:北京京东尚科信息技术有限公司
类型:发明
国别省市:北京;11

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

1