一种基于simhash的文件相似度判定方法及系统
技术领域
本申请实施例涉及人工智能
技术领域
,具体涉及一种基于SIMHASH的文件相似度判定方法及系统。背景技术
对在互联网接入口之间传输的文件进行涉密检查及密级判定是保密监察体系中的重要一环,在拥有巨大流量的网络上监察是否有涉密文件的传输是对保密人员的一个工作挑战。
在此种背景下就亟需一种技术,以快速并准确地帮助保密人员对文件完成自动化的检查系统。
发明内容
为此,本申请实施例提供一种基于SIMHASH的文件相似度判定方法及系统,基于SIMHASH精准的进行文件相似度判断,大大减少了人工判定的成本,也提高了保密处置效率。
为了实现上述目的,本申请实施例提供如下技术方案:
根据本申请实施例的第一方面,提供了一种基于SIMHASH的文件相似度判定方法,所述方法包括:
提取待判断文件的文件消息,写入kafka;
相似判定处理引擎对所述文件消息进行tika解析,得到tika解析结果;
Simhash引擎对tika解析结果进行simhash计算,得到待判断文本的simhash值;
将待判断文件的simhash值与样本库中样本的simhash值进行比较,得到海明距离;
判断海明距离是否大于0,若是,则基于设定相似度判断所述待判断文件是否相似,若相似,则将结果写入hbase数据库,在样本库中更新样本状态,所述样本状态包括涉密和非涉密。
可选地,所述设定相似度为海明距离小于等于三。
可选地,Simhash引擎对tika解析结果进行simhash计算,得到待判断文本的simhash值,包括:
Simhash引擎对tika解析结果中的纯文本进行simhash计算,得到待判断文本的simhash值,所述simhash值为64位的01字符串。
可选地,所述方法还包括:
每隔设定周期对样本库中所有样本文件进行一次simhash值比较计算,将满足设定相似度的文本文件进行处置。
根据本申请实施例的第二方面,提供了一种基于SIMHASH的文件相似度判定系统,所述系统包括:
文件提取模块,用于提取待判断文件的文件消息,写入kafka;
相似判定处理引擎,用于对所述文件消息进行tika解析,得到tika解析结果;
Simhash引擎,用于对tika解析结果进行simhash计算,得到待判断文本的simhash值;
海明距离计算模块,用于将待判断文件的simhash值与样本库中样本的simhash值进行比较,得到海明距离;
相似判定模块,用于判断海明距离是否大于0,若是,则基于设定相似度判断所述待判断文件是否相似,若相似,则将结果写入hbase数据库,在样本库中更新样本状态,所述样本状态包括涉密和非涉密。
可选地,所述设定相似度为海明距离小于等于三。
可选地,Simhash引擎,具体用于:对tika解析结果中的纯文本进行simhash计算,得到待判断文本的simhash值,所述simhash值为64位的01字符串。
可选地,所述系统还包括:
定期处置模块,用于每隔设定周期对样本库中所有样本文件进行一次simhash值比较计算,将满足设定相似度的文本文件进行处置。
根据本申请实施例的第三方面,提供了一种设备,所述设备包括:数据采集装置、处理器和存储器;所述数据采集装置用于采集数据;所述存储器用于存储一个或多个程序指令;所述处理器,用于执行一个或多个程序指令,用以执行第一方面任一项所述的方法。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,所述计算机存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于执行如第一方面任一项所述的方法。
综上所述,本申请实施例提供了一种基于SIMHASH的文件相似度判定方法及系统,通过提取待判断文件的文件消息,写入kafka;相似判定处理引擎对所述文件消息进行tika解析,得到tika解析结果;Simhash引擎对tika解析结果进行simhash计算,得到待判断文本的simhash值;将待判断文件的simhash值与样本库中样本的simhash值进行比较,得到海明距离;判断海明距离是否大于0,若是,则基于设定相似度判断所述待判断文件是否相似,若相似,则将结果写入hbase数据库,在样本库中更新样本状态,所述样本状态包括涉密和非涉密。基于SIMHASH精准的进行文件相似度判断,大大减少了人工判定的成本,也提高了保密处置效率。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的hmn nn附图引伸获得其它的实施附图。
本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
图1为本申请实施例提供的一种基于SIMHASH的文件相似度判定方法流程示意图;
图2为本申请实施例提供的一种基于SIMHASH的文件相似度判定系统框图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供的系统具备建立涉密文件库非涉密文件库并自动匹配等功能。建立涉密文件库即对已处置过的涉密文件进行样本保存,在网络流量中如果发现与其相似的文件可以立即抓取并产生告警。建立非涉密文件库指对相似的非涉密文件进行自动过滤,以减少保密人员处置的文件数量,让保密处置人员的精力更多的用在“刀刃上”。
随着涉密文件库和非涉密文件库样本数量的增加,可以一定程度上减少保密人员对文件的处置工作大大提高处置效率获得更好的保密监察工作成果。
对于文件样本库的建立有ElasticSearch引擎法、正则匹配法、及SIMHASH判定法。
基于样本库对文件进行涉密判断就是要模拟人的判断方法,对样本库的文件和待判断文件进行一个相似度的匹配工作,再辅以业务流程的处理来完成对涉密文件判定的比较工作。其中,对于文件相似度的判断基于正则匹配法,其思路简单但实际应用效率低下,因为正则匹配需要对两个长字符串进行匹配,在大量样本和海量网络流文件这种需要笛卡尔积比较的情况下正则匹配较难在有限时间内完成大量的文件比较工作,且文本相似性的判断参数无法灵活调整。而ElasticSearch引擎法虽然效率比较高,但是由于对匹配程度的打分机制计算无法脱离引擎自控所以无法较好的把握文件相似的程度和具体情况,在实际开发与维护上比较难实现。
为了较快较准确的完成笛卡尔积数量级的文件比较任务,本申请实施例基于文件内容计算SIMHASH的方法完成自动根据样本库对文件进行涉密判定的工作。由于SIMHASH可以在文件产生时先行计算后再进行比较,所以这种异步计算和比较的方式可以大大提高计算的效率。
文件消息由前端抓取并产生,将文件消息推入kafka消息存储引擎系统中。再由文件解析程序进行消费。消费消息的过程主要有:获取文件,将文件内容通过Tika进行解析,计算文件的SIMHASH值,保存计算结果等步骤。
文件的解析是先于文件的判断的,是在网络流量中获得文件时进行SIMHASH计算,所以计算成本分散,效率较高。而对文件相似度的判断通过根据SIMHASH计算海明距离(也是在样本库变化时进行计算),因此计算成本同样分散,效率高。
图1示出了本申请实施例提供的一种基于SIMHASH的文件相似度判定方法,所述方法包括:
步骤101:提取待判断文件的文件消息,写入kafka;
步骤102:相似判定处理引擎对所述文件消息进行tika解析,得到tika解析结果;
步骤103:Simhash引擎对tika解析结果进行simhash计算,得到待判断文本的simhash值;
步骤104:将待判断文件的simhash值与样本库中样本的simhash值进行比较,得到海明距离;
步骤105:判断海明距离是否大于0,若是,则基于设定相似度判断所述待判断文件是否相似,若相似,则将结果写入hbase数据库,在样本库中更新样本状态,所述样本状态包括涉密和非涉密。
在一种可能的实施方式中,所述设定相似度为海明距离小于等于三。设定相似度可以根据实际情况做小范围的伸缩。
在一种可能的实施方式中,在步骤103中,Simhash引擎对tika解析结果进行simhash计算,得到待判断文本的simhash值,包括:Simhash引擎对tika解析结果中的纯文本进行simhash计算,得到待判断文本的simhash值,所述simhash值为64位的01字符串。
在一种可能的实施方式中,所述方法还包括:每隔设定周期对样本库中所有样本文件进行一次simhash值比较计算,将满足设定相似度的文本文件进行处置。
在一种可能的实施方式中,simhas值的获得有两种可能,一种是之前计算过直接获取,一种是之前没计算过,则计算后将结果保存。样本库的simhash值是多个。待判断文件和样本库是一对多的关系,一个待判断文件和每个样本都可以获得一个海明距离(即simhash 01位不同的个数)。
在一种可能的实施方式中,在海明距离的计算过程中如果有异常的simhash值出现,则将计算的海明距离值设置为-1,用来标记其不是一个合法的海明距离。
本申请实施例提供的方法适用的系统架构采用Kafka+Hbase+Tika文件识别引擎+文件相似判定引擎实现了基于相似判定计算方案,从网络流中的文件数据消息采集到Kafka,由消息处理引擎对消息进行处理。将处理结果也就是通过文件解析出的纯文本、及根据纯文本计算出的SIMHASH保存到Hbase数据库中以备查询使用。最后在需要进行相似度比较时比较海明距离即可。
其中,消息产生模块,用于由ETL工具在网络流量上抽取文件消息并写入Kafka。消息处理模块:相似判定处理引擎根据文件消息对文件进行Tika解析,然后SimHash引擎对Tika解析结果进行simhash计算,得到一个64位的01字符串(simhash值)。判定处置层:第一种情况,每隔一段时间对系统内所有未处置记录进行一次筛选比较,将满足相似条件的文件进行处置。为了更及时的自动处置,第二种情况是样本库更新的时候会触发:根据新增样本的文件比较所有未处置记录,将匹配满足项进行处置。处置后的结果会写入Hbase数据库并由前端进行展示。展示最后处置的结果,也就是文件的状态,如:涉密或非涉密。
每次的相似条件是用户通过前台页面写入到数据库,然后通过读取数据库的值来设置的。
综上所述,本申请实施例提供了一种基于SIMHASH的文件相似度判定方法,通过提取待判断文件的文件消息,写入kafka;相似判定处理引擎对所述文件消息进行tika解析,得到tika解析结果;Simhash引擎对tika解析结果进行simhash计算,得到待判断文本的simhash值;将待判断文件的simhash值与样本库中样本的simhash值进行比较,得到海明距离;判断海明距离是否大于0,若是,则基于设定相似度判断所述待判断文件是否相似,若相似,则将结果写入hbase数据库,在样本库中更新样本状态,所述样本状态包括涉密和非涉密。基于SIMHASH精准的进行文件相似度判断,大大减少了人工判定的成本,也提高了保密处置效率。
基于相同的技术构思,本申请实施例还提供了一种基于SIMHASH的文件相似度判定系统,如图2所示,所述系统包括:
文件提取模块201,用于提取待判断文件的文件消息,写入kafka;
相似判定处理引擎202,用于对所述文件消息进行tika解析,得到tika解析结果;
Simhash引擎203,用于对tika解析结果进行simhash计算,得到待判断文本的simhash值;
海明距离计算模块204,用于将待判断文件的simhash值与样本库中样本的simhash值进行比较,得到海明距离;
相似判定模块205,用于判断海明距离是否大于0,若是,则基于设定相似度判断所述待判断文件是否相似,若相似,则将结果写入hbase数据库,在样本库中更新样本状态,所述样本状态包括涉密和非涉密。
在一种可能的实施方式中,所述设定相似度为海明距离小于等于三。
在一种可能的实施方式中,Simhash引擎203,具体用于:对tika解析结果中的纯文本进行simhash计算,得到待判断文本的simhash值,所述simhash值为64位的01字符串。
在一种可能的实施方式中,所述系统还包括:定期处置模块,用于每隔设定周期对样本库中所有样本文件进行一次simhash值比较计算,将满足设定相似度的文本文件进行处置。
基于相同的技术构思,本申请实施例还提供了一种设备,所述设备包括:数据采集装置、处理器和存储器;所述数据采集装置用于采集数据;所述存储器用于存储一个或多个程序指令;所述处理器,用于执行一个或多个程序指令,用以执行所述的方法。
基于相同的技术构思,本申请实施例还提供了一种计算机可读存储介质,所述计算机存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于执行所述的方法。
本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。
需要说明的是,尽管在附图中以特定顺序描述了本发明方法的操作,但这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然本申请提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。