发明内容
有鉴于此,本申请提供了一种文件类型的识别方法、装置及电子设备,主要目的在于改善目前现有技术会影响文件类型识别的精确性的技术问题。
依据本申请的一个方面,提供了一种文件类型的识别方法,该方法包括:
获取待识别类型的文件;
根据不同文件类型的规范说明文档中的描述信息,检测所述文件中的逻辑特征,其中,所述逻辑特征为文件中的不同位置数据能够相互印证逻辑关系的特征;
依据在所述文件中检测到的逻辑特征,确定所述文件的文件类型。
可选的,所述根据不同文件类型的规范说明文档中的描述信息,检测所述文件中的逻辑特征,具体包括:
通过每种类型文件预先配置的特征检查与验证规则,对所述待识别类型的文件进行逻辑验证;
所述依据在所述文件中检测到的逻辑特征,确定所述文件的文件类型,具体包括:
若所述文件中存在符合目标文件类型的逻辑特征,则确定所述文件的文件类型为所述目标文件类型。
可选的,所述通过每种类型文件预先配置的特征检查与验证规则,对所述待识别类型的文件进行逻辑验证,具体包括:
按照目标文件类型的规范说明文档中的描述信息,计算在所述文件的入口处的第一偏移值;及,
获取所述文件中所述第一偏移值的偏移位置处的第一数据进行计算,得到第二偏移值,所述文件中所述第二偏移值的偏移位置处的第二数据为与所述第一数据之间能够相互印证逻辑关系的特征数据;
其中,每一文件类型均有各自对应的第一偏移值和第二偏移值的计算规则。
可选的,所述若所述文件中存在符合目标文件类型的逻辑特征,则确定所述文件的文件类型为所述目标文件类型,具体包括:
将所述第二数据与所述目标文件类型的签名信息进行匹配;
若匹配成功,则确定所述文件的文件类型为所述目标文件类型。
可选的,若经过逻辑特征检测未确定所述文件的文件类型,则所述方法还包括:
对所述文件进行数据表示,得到表示数据;
将所述表示数据输入到预设深度学习模型中进行计算,以便依据与所述表示数据对应相似样本表示数据的文件类型标签,确定所述文件的文件类型。
可选的,所述对所述文件进行数据表示,得到表示数据,具体包括:
将所述文件中的数据按字节进行表示;或,
将所述文件中的数据按切分的词单元进行表示。
可选的,在所述将所述表示数据输入到预设深度学习模型中进行计算之前,所述方法还包括:
创建训练集,所述训练集包含不同的文件类型标签,以及每一文件类型标签的样本文件进行数据表示相应得到的样本表示数据;
利用所述训练集训练得到所述预设深度学习模型。
可选的,在所述根据不同文件类型的规范说明文档中的描述信息,检测所述文件中的逻辑特征之前,所述方法还包括:
读取所述文件从文件头开始的预设固定长度数据;
根据不同文件类型分别对应的文件签名的偏移、签名长度以及签名内容,从所述预设固定长度数据中读取相应偏移和长度的签名内容进行比对;
若所述预设固定长度数据中按照当前类型的偏移和长度读取到的签名内容与所述当前类型对应的签名内容相同,则确定所述文件为所述当前类型的文件。
可选的,所述根据不同文件类型的规范说明文档中的描述信息,检测所述文件中的逻辑特征,具体包括:
若经过各个文件类型的签名内容比对后未确定所述文件的文件类型,则根据不同文件类型的规范说明文档中的描述信息,检测所述文件中的逻辑特征。
依据本申请的另一方面,提供了一种文件类型的识别装置,该装置包括:
获取模块,用于获取待识别类型的文件;
检测模块,用于根据不同文件类型的规范说明文档中的描述信息,检测所述文件中的逻辑特征,其中,所述逻辑特征为文件中的不同位置数据能够相互印证逻辑关系的特征;
确定模块,用于依据在所述文件中检测到的逻辑特征,确定所述文件的文件类型。
依据本申请又一个方面,提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述文件类型的识别方法。
依据本申请再一个方面,提供了一种电子设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述文件类型的识别方法。
借由上述技术方案,本申请提供的一种文件类型的识别方法、装置及电子设备,与目前现有的文件类型识别技术相比,本申请可通过逻辑特征检测的方式实现文件类型的准确识别。具体的,首先根据不同文件类型的规范说明文档中的描述信息,检测待识别类型的文件中的逻辑特征,这些逻辑特征为文件中的不同位置数据能够相互印证逻辑关系的特征,进而可依据在文件中检测到的逻辑特征,确定文件的文件类型。通过应用本申请的技术方案,不会出现在实际应用中如果文件的文件名被修改而导致识别错误的问题,可提高文件类型识别的精确性。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
为了改善目前现有技术会影响文件类型识别的精确性的技术问题。本实施例提供了一种文件类型的识别方法,如图1所示,该方法包括:
步骤101、获取待识别类型的文件。
该文件需要识别出具体的文件类型,即文件所代表的数据的种类,例如WORD文档、EXCEL文档等。
对于本实施例的执行主体可为文件类型识别的装置或设备,可用于如包括个人计算机(Personal Computer,PC)机与服务器端本地等终端,实现文件类型的精确识别处理,属于通用技术,可广泛应用于计算机数据处理等技术领域。
步骤102、根据不同文件类型的规范说明文档中的描述信息,检测待识别类型的文件中的逻辑特征。
其中,逻辑特征为文件中的不同位置数据能够相互印证逻辑关系的特征,该逻辑特征可存在于文件中固定的偏移处。
步骤103、依据在待识别类型的文件中检测到的逻辑特征,确定待识别类型的文件的文件类型。
例如,预先针对有逻辑特征的文件,参照每种文件类型的规范说明文档中的描述信息,通过编写每种类型文件的特征检查与验证规则(如编写多种特征识别函数),以便后续对待识别类型的文件进行逻辑验证,得到验证结果。如判断当前待识别的文件中是否存在符合某种文件类型的逻辑特征,如果当前待识别的文件中存在符合文件类型A的逻辑特征,则当前待识别的文件为文件类型A的文件;如果当前待识别的文件中存在符合文件类型B的逻辑特征,则当前待识别的文件为文件类型B的文件,以此类推。通过本实施例方法,基于逻辑校验的特征验证,可用于准确识别具有逻辑特征的多种文件类型。
与目前现有的文件类型识别技术相比,本实施例可通过逻辑特征检测的方式实现文件类型的准确识别。具体的,首先根据不同文件类型的规范说明文档中的描述信息,检测待识别类型的文件中的逻辑特征,这些逻辑特征为文件中的不同位置数据能够相互印证逻辑关系的特征,进而可依据在文件中检测到的逻辑特征,确定文件的文件类型。通过应用本实施例的技术方案,不会出现在实际应用中如果文件的文件名被修改而导致识别错误的问题,可提高文件类型识别的精确性。
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的实施方式,提供了另一种文件类型的识别方法,如图2所示,该方法包括:
步骤201、获取待识别类型的文件。
步骤202、对待识别类型的文件进行文件签名检测。
文件类型识别在非结构化数据处理中是最基础的并且相对重要的一个环节。在本实施例中可首先对待识别类型的文件进行文件签名检测,以便具有明显签名的文件类型。其中,文件签名(signature):文件中可以标识类型的特征字符串或类型标识数据,存放于文件中的固定偏移位置,有固定长度。
可选的,步骤202具体可包括:首先读取待识别类型的文件从文件头开始的预设固定长度数据(可根据实际需求预先设置这一固定长度,以覆盖已知类型文件的所有签名偏移和长度);再根据不同文件类型分别对应的文件签名的偏移、签名长度以及签名内容,从该预设固定长度数据中读取相应偏移和长度的签名内容进行比对;若预设固定长度数据中按照当前类型的偏移和长度读取到的签名内容与当前类型对应的签名内容相同,则确定文件为当前类型的文件。
例如,基于文件签名进行类型识别,大部分格式文件在文件中的固定偏移处有固定的数据特征,通过对比这一固定特征实现文件类型识别。具体可执行以下步骤:
(1)读取从文件头开始的一段固定长度数据,此段数据足以涵盖已知文件签名偏移和长度。
(2)从文件类型库中读取不同文件类型对应文件签名的偏移、签名长度以及签名信息备用。
(3)从待识别类型的文件数据中依据第(2)步读取的签名数据进行相应偏移和长度的读取,并与当前的类型的签名进行比对,如果相同,则认为是此种类型,结束流程。
(4)否则,重复第(3)步,直到比对完所有的文件类型签名数据,直到匹配到其中一种或0种,完成流程。
(5)输出匹配的结果类型(具体的文件类型)或者对于无法匹配的文件输出类型未知。
通过上述文件签名检测的方式,可实现准确识别具有明显签名的文件类型。而这种方式依赖于文件在特定偏移位置具有固定的签名信息,否则不能比对,无法对没有简单标识的文件进行精确识别,特别是针对文本格式的编程语言无法准确识别。因此本实施例针对签名信息不在固定位置或根本没有固定签名信息的文件采用两种新的匹配方法进行检测,即在识别简单文件类型的基础上采用复杂的逻辑处理和人工智能技术(ArtificialIntelligence,AI),具体可执行步骤203至205所示的过程,可对常用技术无法准确识别或难以识别的复杂二进制文档、源程序代码进行精准识别,极大地提升了对文档的类型识别能力,提升了后续数据处理代码的效率和健壮性。
步骤203、若待识别类型的文件通过文件签名检测未确定文件类型,则对待识别类型的文件进行逻辑特征检测。
在本实施例中,若经过各个文件类型的签名内容比对后未确定待识别类型的文件的文件类型,则可对待识别类型的文件进行逻辑特征检测,具体可根据不同文件类型的规范说明文档中的描述信息,检测待识别类型的文件中的逻辑特征,并依据在该文件中检测到的逻辑特征,确定该文件的文件类型。可选的,该过程具体可包括:通过每种类型文件预先配置的特征检查与验证规则,对待识别类型的文件进行逻辑验证;若待识别类型的文件中存在符合目标文件类型的逻辑特征,则确定该待识别类型的文件的文件类型为目标文件类型。
示例性的,通过每种类型文件预先配置的特征检查与验证规则,对待识别类型的文件进行逻辑验证,具体可包括:按照目标文件类型(以其中的一种文件类型为例)的规范说明文档中的描述信息,计算在待识别类型的文件的入口处的第一偏移值;以及,获取待识别类型的文件中该第一偏移值的偏移位置处的第一数据进行计算,得到第二偏移值,该文件中第二偏移值的偏移位置处的第二数据为与该第一数据之间能够相互印证逻辑关系的特征数据;其中,每一文件类型均有各自对应的第一偏移值和第二偏移值的计算规则。
例如,逻辑检测是按特定文件类型的规范说明文档中的描述,比如某图片文件,在入口处会得到一个偏移值(即第一偏移值),根据这个偏移得到一个数据(即第一数据),按该文件类型规范(预先设定的计算规则)上的公式进行计算,再从计算结果得到另一个偏移值(即第二偏移值),在这个偏移值处可以得到一个标识性的数据(即第二数据)。区别于步骤202文件签名检测的过程中,固定位置的固定标志数据,本实施例中逻辑特征检测得到的这种数据需要通过逻辑判断或计算才可以得到标识数据,从而可根据该标识数据确定文件类型。
相应的,若待识别类型的文件中存在符合目标文件类型的逻辑特征,则确定该待识别类型的文件的文件类型为目标文件类型,具体可包括:将第二数据与目标文件类型的签名信息进行匹配;若匹配成功,则确定该待识别类型的文件的文件类型为该目标文件类型。
例如,按照文件类型A的规范说明文档中的描述信息,计算在待识别类型的文件a的入口处的偏移值1,以及获取文件a中该偏移值1的偏移位置处的数据m进行计算,得到偏移值2。将该文件a中偏移值2的偏移位置处的数据n与文件类型A的签名信息进行匹配,如果匹配成功,则确定该文件a的文件类型为文件类型A;如果匹配失败,则接着按照下一个文件类型B的偏移值计算规则,对文件a进行逻辑特征检测。如按照文件类型B的规范说明文档中的描述信息,计算在文件a的入口处的偏移值3,以及获取文件a中该偏移值3的偏移位置处的数据x进行计算,得到偏移值4。将该文件a中偏移值4的偏移位置处的数据y与文件类型B的签名信息进行匹配,如果匹配成功,则确定该文件a的文件类型为文件类型B;如果匹配失败,则接着按照下一个文件类型C的偏移值计算规则,对文件a进行逻辑特征检测。以此类推,直至找到文件a的文件类型后结束,或者经过所有文件类型的逻辑特征检测后结束。
步骤204、若经过逻辑特征检测未确定待识别类型的文件的文件类型,则对该文件进行数据表示,得到表示数据。
可选的,对文件进行数据表示,得到表示数据,具体可包括:将文件中的数据按字节进行表示;或,将文件中的数据按切分的词单元进行表示。
数据表示,也叫表示学习,分为按字节或按词单元。对于按字节的,会选择固定的可见或不可见字符形成一个表格,对表格中的字符进行排序得到相应的序号。而对于按词单元的也是同样的处理,选择一定量的词作为词表,并排序得到每个词的序号。后续可通过神经网络的训练,会得到每个字或词单元的相应的相量表示。具体表示方法可以是随机向量或word2vec/BERT之类的模型进行进一步预训练得到的向量。用这些向量来表示相应的字符或词。
步骤205、将得到的表示数据输入到预设深度学习模型中进行计算,以便依据与该表示数据对应相似样本表示数据的文件类型标签,确定待识别类型的文件的文件类型。
进一步的,在步骤205之前还可包括:创建训练集,该训练集包含不同的文件类型标签,以及每一文件类型标签的样本文件进行数据表示相应得到的样本表示数据;然后利用该训练集训练得到预设深度学习模型。
对于本实施例,人工智能中的深度学习模型训练,不需要选择特征,只需要进行数据表示。数据表示的方法通常有Charlevel,或Text Level等。Charlevel的意思是按字节进行表示。Text Level是按token即可以切分的词单元进行表示。对这些字或词进行向量嵌入训练,得到相应的表示向量。具体文件表示特征是由深度神经网络模型自己学习到的。
在本实施例中,如果按字节进行数据表示,可最终训练得到CharacterCNN模型,如果按照词单元进行数据表示,可最终训练得到TextCNN模型。经过实际应用,采用55种类型的200万训练数据训练出TextCNN模型和CharacterCNN模型各一个。其中,TextCNN模型的正确率可超过98%,CharacterCNN模型的正确率可超过97%。而在算力开销上,TextCNN模型比ChraracterCNN模型增加一倍以上;在模型大小方面,TextCNN模型比CharacterCNN模型大10倍以上。后续在需要高精度的场合,可选择TextCNN模型进行识别计算,得到文件类型。在追求检测速度和资源开销的场合,可采用CharacterCNN模型进行识别计算,得到文件类型。
本实施例方法采用的模型不仅适用于源代码类型识别,也适用于其它二进制数据文件的识别,只需要待识别的文件类型本身具有潜在的共同特征。
为了说明上述各实施例的具体实施过程,给出如下应用示例,但不限于此:
为了实现文件类型的精确识别,基于本实施例提供的方法,可由三个模块组成,如图3所示,包括:签名检查模块、逻辑检查模块、AI检查模块。
对于一个待识别类型的文件,将文件的数据输入签名检查模块进行第一次识别,具体可执行步骤202中所示的过程。如果签名检查模块可以识别出文件类型,则输出得到的文件类型,本识别过程终止,这种类型的文件占工程实现中所能遇到的文档类型的一部分。
而对于签名检查后不能确定文件类型的文件,送入逻辑检查模块进行逻辑特征检查,通常是一些复杂的图片图像格式或者有封装容器(文件中用来存放数据的某种固定格式,其它数据存放于这种固定格式中,形如物理世界中的容器,比如Windows操作系统中常用的复合文档结构就是一种容器)的文档文件,此种文件通过逻辑检查模块进行识别,如果能得到确定的文件类型,则输出文件类型,本识别过程终止。
除去有明显签名信息的文件类型以及一小部分可以进行逻辑特征验证的文件类型外,有很大一部分是无明显特征的文件。这种文件通过经典方法是无法识别的,比如正则表达式或文本特征检测,都无法实现准确识别。而本实施例采用人工智能技术对大量文档进行人工智能建模,通过人工智能算法实现对无签名或逻辑特征的文件进行类型识别。即对于前两个模块无法识别类型的文件数据,送入AI检查模块,AI检查模块在最终程序中只包含正向推理算法及相应的AI模型,目前使用的模型是TextCNN模型或CharacterCNN模型。通过AI算法进行识别,对无明显签名特征或逻辑特征的文件先进行数据表示或表示学习,用得到的表示数据送入AI模型进行特征识分类,得到最终的识别类型。AI模型可以识别55种不同的文件类型(可包括54种编程语言类型与一种未知类型),更多的类型可以通过扩展模型进行增强。
通过本实施例方法,在识别简单文件类型的基础上采用复杂的逻辑处理和人工智能技术,对常用技术无法准识别或难以识别的复杂二进制文档、源程序代码进行精准识别,极大地提升了程序对文档的类型识别能力,提升了后续数据处理代码的效率和健壮性。可解决传统技术无法识别无明显签名特征文件类型的技术问题,将产品竞争力提升到了一个全新的水平。
进一步的,作为图1和图2所示方法的具体实现,本实施例提供了一种文件类型的识别装置,如图4所示,该装置包括:获取模块31、检测模块32、确定模块33。
获取模块31,用于获取待识别类型的文件;
检测模块32,用于根据不同文件类型的规范说明文档中的描述信息,检测所述文件中的逻辑特征,其中,所述逻辑特征为文件中的不同位置数据能够相互印证逻辑关系的特征;
确定模块33,用于依据在所述文件中检测到的逻辑特征,确定所述文件的文件类型。
在具体的应用场景中,检测模块32,具体用于通过每种类型文件预先配置的特征检查与验证规则,对所述待识别类型的文件进行逻辑验证;
相应的,确定模块33,具体用于若所述文件中存在符合目标文件类型的逻辑特征,则确定所述文件的文件类型为所述目标文件类型。
在具体的应用场景中,检测模块32,具体还用于按照目标文件类型的规范说明文档中的描述信息,计算在所述文件的入口处的第一偏移值;及,获取所述文件中所述第一偏移值的偏移位置处的第一数据进行计算,得到第二偏移值,所述所述文件中所述第二偏移值的偏移位置处的第二数据为与所述第一数据之间能够相互印证逻辑关系的特征数据;其中,每一文件类型均有各自对应的第一偏移值和第二偏移值的计算规则。
在具体的应用场景中,确定模块33,具体还用于将所述第二数据与所述目标文件类型的签名信息进行匹配;若匹配成功,则确定所述文件的文件类型为所述目标文件类型。
在具体的应用场景中,本装置还包括:计算模块;
计算模块,用于若经过逻辑特征检测未确定所述文件的文件类型,则对所述文件进行数据表示,得到表示数据;将所述表示数据输入到预设深度学习模型中进行计算,以便依据与所述表示数据对应相似样本表示数据的文件类型标签,确定所述文件的文件类型。
在具体的应用场景中,计算模块,具体用于将所述文件中的数据按字节进行表示;或,将所述文件中的数据按切分的词单元进行表示。
在具体的应用场景中,本模块还包括:训练模块;
训练模块,用于在所述将所述表示数据输入到预设深度学习模型中进行计算之前,创建训练集,所述训练集包含不同的文件类型标签,以及每一文件类型标签的样本文件进行数据表示相应得到的样本表示数据;利用所述训练集训练得到所述预设深度学习模型。
在具体的应用场景中,检测模块32,还用于在所述根据不同文件类型的规范说明文档中的描述信息,检测所述文件中的逻辑特征之前,读取所述文件从文件头开始的预设固定长度数据;根据不同文件类型分别对应的文件签名的偏移、签名长度以及签名内容,从所述预设固定长度数据中读取相应偏移和长度的签名内容进行比对;若所述预设固定长度数据中按照当前类型的偏移和长度读取到的签名内容与所述当前类型对应的签名内容相同,则确定所述文件为所述当前类型的文件;
相应的,检测模块32,具体用于若经过各个文件类型的签名内容比对后未确定所述文件的文件类型,则根据不同文件类型的规范说明文档中的描述信息,检测所述文件中的逻辑特征。
需要说明的是,本实施例提供的一种文件类型的识别装置所涉及各功能单元的其它相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
基于上述如图1和图2所示方法,相应的,本实施例还提供了一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述如图1和图2所示的文件类型的识别方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景的方法。
基于上述如图1和图2所示的方法,以及图4所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种电子设备,具体可以为个人计算机、笔记本电脑、智能手机、服务器或其他网络设备等,该设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1和图2所示的文件类型的识别方法。
可选的,上述实体设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的上述实体设备结构并不构成对该实体设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理上述实体设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与信息处理实体设备中其它硬件和软件之间通信。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现。通过应用本实施例的方案,与目前现有的文件类型识别技术相比,本实施例可通过逻辑特征检测的方式实现文件类型的准确识别。具体的,首先根据不同文件类型的规范说明文档中的描述信息,检测待识别类型的文件中的逻辑特征,这些逻辑特征为文件中的不同位置数据能够相互印证逻辑关系的特征,进而可依据在文件中检测到的逻辑特征,确定文件的文件类型。通过应用本实施例的技术方案,不会出现在实际应用中如果文件的文件名被修改而导致识别错误的问题,可提高文件类型识别的精确性。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。