CN106776965A - 特征串集合的分组方法和装置 - Google Patents
特征串集合的分组方法和装置 Download PDFInfo
- Publication number
- CN106776965A CN106776965A CN201611104011.XA CN201611104011A CN106776965A CN 106776965 A CN106776965 A CN 106776965A CN 201611104011 A CN201611104011 A CN 201611104011A CN 106776965 A CN106776965 A CN 106776965A
- Authority
- CN
- China
- Prior art keywords
- length
- feature
- packet
- string
- strings
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/335—Filtering based on additional data, e.g. user or group profiles
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出一种特征串集合的分组方法和装置,其中方法包括:获取特征串集合中多个特征串中每个特征串的长度信息;统计每种长度信息下特征串的数量,根据数量生成特征串数量矩阵,并基于长度信息生成长度序列;根据长度序列确定分组数,并根据分组数和特征串数量矩阵确定初始分组;从初始分组中选取特征串长度最小的分组作为第一目标分组;若多个初始分组中包括第二目标分组,将第一目标分组中的每个特征串字符进行扩展,得到对应的多个扩展字符串;将第二目标分组和多个初始分组中剩余的分组作为第三目标分组,以基于第三目标分组对特征串集合进行匹配。通过本发明能够对特征集合串进行自动分组,且减少原始特征串的信息损失。
Description
技术领域
本发明涉及信息识别技术领域,尤其涉及一种特征串集合的分组方法和装置。
背景技术
模式匹配是信息识别中的重要核心技术之一,用于从目标串中发现特征串。随着信息技术的高速发展,模式匹配被越来越广泛地应用于网络信息搜索、数据流挖掘、网络入侵检测以及计算生物学等领域。
模式匹配是指在文本T=t1t2...tn中找出某个给定的特征串集合P={p1,p2,...,pr}的所有出现位置,其中T和pi(1≤i≤r)是在有限字符表Σ上的字符序列。随着网络和生物学的发展,在匹配更多的特征串条目的同时,需要保持有较高的处理速度,这就对多模式匹配的处理能力提出了更高的要求。然而在很多现有的多模式匹配算法中,当特征串规模超过1万时,由于其处理能力的下降,已经无法满足需求,因而基于位并行与q-gram技术的多模式匹配方法应运而生。此种方法在数量10万以下规模的特征串匹配过程中能够取得较好的效果。
基于位并行技术的多模式匹配算法,例如Shift-And/Or算法、BNDM算法,其基本思想是:将特征串集合与文本串的匹配状态用位向量存储,匹配过程就是用位操作更新位向量的过程。由于Shift-And和Shift-Or算法的原理基本相同,以下着重介绍Shift-And算法和BNDM算法的原理。
(1)Shift-And算法维护一个字符串的集合,集合中的每个字符串既是特征串p的前缀,同时也是已读入文本的后缀。每读入一个新的文本字符,该算法采用位并行的方法更新该集合。该集合用一个位掩码D=dm...d1来表示。D的第j位被置为1,当且仅当p1...pj是t1...ti的后缀。
Shift-And算法首先构造一个表B,记录字母表中每个字符的位掩码bm...b1。如果pj=c,掩码B[c]的第j位被置为1,否则为0。首先置D=0m,对于每个新读入的文本字符ti+1,用如下公式对D进行更新:
Di+1←((Di<<1)|0m+11)&B[ti+1]
上面0m表示有连续m个0,例如,用031来表示0001。在匹配时,逐个扫描文本字符并更新向量D,测试是否匹配成功的掩码为10m-1。即当Di&10m-1≠0m时,在文本位置i处匹配成功。
(2)BNDM(Backward Nondeterministic Dawg Matching,向后非确定性匹配)算法的搜索与BDM算法相同,但它使用位并行来识别特征串。在当前搜索窗口内,设已读入的字符串为u,BNDM算法维护一个集合,记录u在p中所有出现位置。同Shift-And算法一样,该集合可以用一个位向量D来表示。如果特征串p1...pj+|u|-1等于u,那么D的第m-j+1位是1,表示p的位置j是一个活动状态。
同Shift-And算法一样,BNDM算法预先计算一张表B,表B用一个位掩码记录了该字符在p中出现的位置。对于每个新读入的文本字符ti,利用如下公式,可以从D更新到D',其中,D'←(D<<1)&B[ti],初始化D=1m,且需要用额外变量last保存特征串前缀的最左位置。
为了能容纳更大的规则数,使用q-gram技术以扩大表的规模。该技术将q个字符转化为一个字符来处理。其中,将q个字符转化为一个q-gram字符有两种方式,即重叠q-gram和连续q-gram。当使用重叠q-gram时,依次从原字符串的每一个字符开始取q个字符进行转化,使用连续q-gram时,依次从原字符串的每q个字符开始去q个字符进行转化。例如,在转化字符串“pony”时,使用重叠q-gram转化为“po-on-ny”,而使用连续q-gram转化为“po-ny”。本文中使用q-gram技术时,使用的都是重叠q-gram。
为了实现快速的匹配,采用SOG算法或者BG算法来保证多模式匹配的执行效率。
SOG算法是使用q-gram将Shift-Or算法扩展成基于过滤技术的多模式匹配算法。该算法是以牺牲精确匹配为前提,将“确认能匹配”改成“确认不能匹配”,以一次相对快速的匹配过程,过滤掉大量不能成功匹配的数据,以保证算法的执行效率。对于少量过滤通过的情况,配合其他算法,再针对数据中的特定的位置进行精确匹配的校验。对于大多数匹配过程,最终不会产生命中,如果也没有误报产生,那么过滤算法的性能就等同于整个模式匹配过程的性能。
具体的方法是,首先在算法的预处理阶段,以每个特征串为基础,构建Shift-Or算法的掩码表B,然后将多个掩码表B,以每个字符位掩码为单位进行或运算,进而合并成为一张掩码表,后续的匹配过程不变。不同在于,当D[i]&10m-1≠0m时,在文本位置i处不再表示匹配成功,而是有可能会发生匹配,需要使用其他能够逐个字符比较的方法进行再次确认。
SOG算法需要将多个位向量进行或运算,位向量的位长就必须都是相等的,所以要求所有的特征串都是等长的。如果出现不等长的情况,就以最短串的长度为基准,将所有长串提取等长子串,让子串参与匹配。如果提取的等长子串长度lmin小于机器字长,lmin*r仍然不超过一个机器字长,还可以将一个机器字长划分成r个等长分组,将r个位向量包装进一个机器字内,从而节省空间。Shift-And/Or类的无跳跃的算法,还可支持不等长分组,使长字符串可以保留更长的子串。
作为实现快速模式匹配的另一种算法,BG是使用q-gram将BNDM算法扩展成为基于过滤技术的多模匹配算法,其扩展方法同Shift-And/Or算法类似。这里不再详述。
虽然SOG、BG算法与传统的多模匹配相比,在支持较大规模特征串的情况下,具有较好的处理速度。从实测数据看来,SOG算法与BG算法在特征串规模达到10000时,仍然保持了较好的处理速度,在这种规模下,传统的多模式匹配算法已经不再适用。然而,SOG算法与BG算法还存在一些不足,导致在特征串规模更大的情况下,其处理速度仍不能满足要求。其中,SOG算法与BG算法主要存在以下不足:
1)SOG与BG算法在构造掩码表时,都没有对特征串进行分组。因此只能对所有特征串都截取等长的前缀。当将较长字符串截取为较短的前缀时,会丢失大量特征信息,也会造成掩码表空间浪费,直接导致过滤算法的过滤效果变差。虽然SOG、BG算法也可以进行分组,但其只是简单的将特征串分为2组或4组,并没有提出有效的自动分组的算法,因此,分组带来的效果并不理想。而BG算法,从算法的基本原理看,不能进行不等长分组,这样当实际特征串集合中含有较短特征串时,BNDM算法的跳跃优势就会大大削弱。
2)当特征串数量达到一定规模时,会导致BG算法失去跳跃能力,此时,BG会因为过度的校验计算,使整体效率变的很低。
3)虽然SOG具有稳定性能,不会因为特征串的数量增大而导致过度校验计算,但也因为它没有跳跃的能力,当特征串规模减少时,其匹配速度也不会提升。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的一个目的在于提出一种特征串集合的分组方法,该方法能够对特征集合串进行自动分组,并且能够减少原始特征串的信息损失,以达到降低过滤阶段通过率的效果。
本发明的另一个目的在于提出一种特征串集合的分组装置。
为达到上述目的,本发明第一方面实施例提出的特征串集合的分组方法,包括:获取特征串集合中多个特征串中每个特征串的长度信息,得到多个长度信息;统计基于每种长度信息下特征串的数量,根据所述数量生成特征串数量矩阵,并基于所述长度信息生成长度序列;根据所述长度序列确定分组数,并根据所述分组数和所述特征串数量矩阵确定多个初始分组;从所述多个初始分组中,选取所包含的特征串长度最小的分组作为第一目标分组;若所述多个初始分组中包括第二目标分组,将所述第一目标分组中的每个特征串的字符进行扩展,得到与所述每个特征串对应的多个扩展字符串,并将所述多个扩展字符串置入所述第二目标分组中,其中,所述第二目标分组中所包含的特征串长度比所述第一目标分组中的特征串长度大1;将所述第二目标分组和所述多个初始分组中剩余的分组作为第三目标分组,以基于得到所述第三目标分组构建所述特征串集合的掩码表,并分组对所述特征串集合进行匹配。
在本发明的一个实施例中,还包括:
获取目标系数,其中,所述目标系数为:对所述特征串增加一个字符时,增加字符后的特征串的命中概率与增加字符前的特征串的命中概率之间的比例值;
根据所述目标系数对所述特征串集合的每个分组中的特征串数量进行调整。
在本发明的一个实施例中,在所述将所述第二目标分组和所述多个初始分组中剩余的分组作为第三目标分组之后,还包括:
将每个分组中的特征串长度与预设长度阈值作比对;
获取所包含特征串的长度大于或者等于所述预设长度阈值的分组的数量;
在所述分组的数量大于1时,获取所述分组中的特征串并作为目标特征串;
确定目标分组数,并根据所述目标分组数,结合K-means聚类算法对所述目标特征串进行分组。
在本发明的一个实施例中,所述确定目标分组数,包括:
对所述长度序列中不同的长度值按照升序进行逐个累加运算,得到每次的累加运算的结果作为对应的中间长度值;
判断所述中间长度值是否大于预设掩码表位长;
在所述中间长度值大于所述预设掩码表位长时,停止所述逐个累加运算;
获取小于所述预设掩码表位长的中间长度值中值最大的中间长度值并作为目标总长度值;
将所述预设掩码表位长和所述目标总长度值作差,得到差值;
判断所述长度序列中是否存在等于预设长度阈值的长度值,得到判断结果;
根据所述判断结果和所述差值确定所述目标分组数。
在本发明的一个实施例中,所述根据所述判断结果和所述差值确定所述目标分组数,包括:
对所述差值和所述预设长度阈值进行求余取模运算,得到模值;
在所述判断结果为所述长度序列中存在等于所述预设长度阈值的长度值时,将所述模值进行加1运算,得到加1运算后的值并作为所述目标分组数;
在所述判断结果为所述长度序列中不存在等于所述预设长度阈值的长度值时,直接将所述模值作为所述目标分组数。
在本发明的一个实施例中,所述基于所述长度信息生成长度序列,包括:
从多个所述长度信息中选取长度值小于或者等于预设长度阈值的长度信息并作为目标长度信息;
基于所述目标长度信息,按照长度值升序生成所述长度序列。
本发明第一方面实施例提出的特征串集合的分组方法,通过获取特征串集合中多个特征串中每个特征串的长度信息得到多个长度信息,统计每种长度信息下特征串的数量,并根据数量生成特征串数量矩阵,以及基于长度信息生成长度序列,根据长度序列确定分组数,进而根据分组数和特征串数量矩阵确定多个初始分组,从多个初始分组中选取特征串长度最小的作为第一目标分组,并在多个初始分组中包括有第二目标分组时,将第一目标分组中的每个特征串的字符进行扩展,得到对应的多个扩展字符串,并将第二目标分组和多个初始分组中剩余的分组作为第三目标分组,以根据第三目标分组后的分组结果对特征串集合进行匹配,从而避免了因特征串集合中有较短的特征串,而将所有特征串都按照最短特征串进行截断操作,有效减少了原始特征串的信息损失,降低了过滤阶段的通过率,提高了整体性能。
为达到上述目的,本发明第二方面实施例提出的特征串集合的分组装置,包括:第一获取模块,用于获取特征串集合中多个特征串中每个特征串的长度信息,得到多个长度信息;第一生成模块,用于统计基于每种长度信息下特征串的数量,根据所述数量生成特征串数量矩阵,并基于所述长度信息生成长度序列;确定模块,用于根据所述长度序列确定分组数,并根据所述分组数和所述特征串数量矩阵确定多个初始分组;第一选取模块,用于从所述多个初始分组中,选取所包含的特征串长度最小的分组作为第一目标分组;扩展模块,用于若所述多个初始分组中包括第二目标分组,将所述第一目标分组中的每个特征串的字符进行扩展,得到与所述每个特征串对应的多个扩展字符串,并将所述多个扩展字符串置入所述第二目标分组中,其中,所述第二目标分组中所包含的特征串长度比所述第一目标分组中的特征串长度大1;匹配模块,用于将所述第二目标分组和所述多个初始分组中剩余的分组作为第三目标分组,以基于得到所述第三目标分组构建所述特征串集合的掩码表,并对所述特征串集合进行匹配。
在本发明的一个实施例中,还包括:
第二获取模块,用于在所述第二目标分组和所述多个初始分组中剩余的分组作为第三目标分组,并根据第三目标分组对所述特征串集合进行匹配之前,获取目标系数,其中,所述目标系数为:对所述特征串增加一个字符时,增加字符后的特征串的命中概率与增加字符前的特征串的命中概率之间的比例值;
调整模块,用于根据所述目标系数对所述特征串集合的每个分组中的特征串数量进行调整。
在本发明的一个实施例中,所述匹配模块还包括:
比对模块,用于将每个分组中的特征串长度与预设长度阈值作比对;
第三获取模块,用于获取所包含特征串的长度大于或者等于所述预设长度阈值的分组的数量;
第四获取模块,用于在所述分组的数量大于1时,获取所述分组中的特征串并作为目标特征串;
分组模块,用于确定目标分组数,并根据所述目标分组数,结合K-means聚类算法对所述目标特征串进行分组。
在本发明的一个实施例中,所述分组模块包括:
第一计算单元,用于对所述长度序列中不同的长度值按照升序进行逐个累加运算,得到每次的累加运算的结果作为对应的中间长度值;
第一判断单元,用于判断所述中间长度值是否大于预设掩码表位长;
控制单元,用于在所述中间长度值大于所述预设掩码表位长时,停止所述逐个累加运算;
第一选取单元,用于获取小于所述预设掩码表位长的中间长度值中值最大的中间长度值并作为目标总长度值;
第二计算单元,用于将所述预设掩码表位长和所述目标总长度值作差,得到差值;
第二判断单元,用于判断所述长度序列中是否存在等于预设长度阈值的长度值,得到判断结果;
确定单元,用于根据所述判断结果和所述差值确定所述目标分组数。
在本发明的一个实施例中,所述确定单元具体用于:
对所述差值和所述预设长度阈值进行求余取模运算,得到模值;
在所述判断结果为所述长度序列中存在等于所述预设长度阈值的长度值时,将所述模值进行加1运算,得到加1运算后的值并作为所述目标分组数;
在所述判断结果为所述长度序列中不存在等于所述预设长度阈值的长度值时,直接将所述模值作为所述目标分组数。
在本发明的一个实施例中,所述第一生成模块,包括:
第二选取单元,用于从多个所述长度信息中选取长度值小于或者等于预设长度阈值的长度信息并作为目标长度信息;
生成单元,用于基于所述目标长度信息,按照长度值升序生成所述长度序列。
本发明第二方面实施例提出的特征串集合的分组装置,通过获取特征串集合中多个特征串中每个特征串的长度信息得到多个长度信息,统计每种长度信息下特征串的数量,并根据数量生成特征串数量矩阵,以及基于长度信息生成长度序列,以根据长度序列确定分组数,进而根据分组数和特征串数量矩阵确定多个初始分组,从多个初始分组中选取特征串长度最小的作为第一目标分组,并在多个初始分组中包括有第二目标分组时,将第一目标分组中的每个特征串的字符进行扩展,得到对应的多个扩展字符串,并将第二目标分组和多个初始分组中剩余的分组作为第三目标分组,以根据第三目标分组后的分组结果对特征串集合进行匹配,从而避免了因特征串集合中有较短的特征串,而将所有特征串都按照最短特征串进行截断操作,有效减少了原始特征串的信息损失,降低了过滤阶段的通过率,提高了整体性能。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一个实施例提出的特征串集合的分组方法的流程图;
图2是本发明另一个实施例提出的特征串集合的分组方法的流程图;
图3是本发明一个实施例提出的特征串集合的分组装置的结构示意图;
图4是本发明一个实施例提出的第一生成模块的结构示意图;
图5是本发明另一个实施例提出的特征串集合的分组装置的结构示意图;
图6是本发明再一个实施例提出的特征串集合的分组装置的结构示意图;
图7是本发明一个实施例提出的分组模块的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
下面参考附图1描述根据本发明第一方面实施例提出的一种特征串集合的分组方法。
图1为根据本发明一个实施例的特征串集合的分组方法的流程图。如图1所示,根据本发明实施例的特征串集合的分组方法,包括:
S101,获取特征串集合中多个特征串中每个特征串的长度信息,得到多个长度信息。
其中,在本发明的实施例中,可通过特征串长度信息工具获取该特征串集合中多个特征串中每个特征串的长度信息。例如,该特征字符串长度信息工具可以是length工具、size工具、strlen工具等。
S102,统计基于每种长度信息下特征串的数量,根据数量生成特征串数量矩阵,并基于长度信息生成长度序列。
作为一种示例,在得到多个长度信息之后,可统计出每种长度信息下特征串的数量。其中,当特征串集合中的多个特征串中每个特征串的长度信息超过特征串区分度阈值时,可按照特征串区分度阈值计算每种长度信息下特征串的数量。需要说明的是,特征串区分度阈值可以是一个确定的值,记为DL,例如,DL=12。当然该特征串区分度阈值可以根据实际需要进行适应性调整。
进一步地,在本发明实施例中,根据确定出的特征串数量可相应地生成特征串数量矩阵,例如RNum[i][j]。其中,RNum[i][j]的值是长度>=i,且长度<j的所有特征串的数量。
另外,在本发明实施例中,还可基于长度信息生成长度序列。具体地,从多个长度信息中选取长度值小于或者等于预设长度阈值的长度信息并作为目标长度信息;基于目标长度信息,按照长度值升序生成长度序列。例如,长度序列RL[i],其中,RL[i]值是特征串集合中所包含的特征串长度值,RL中的值是按照从小到大进行排序,且长度大于DL的,不计入其内。在本发明实施例中通过长度信息生成的长度序列可为下一步确定分组数作基础,以根据长度序列快速准确的确定出分组数。
S103,根据长度序列确定分组数,并根据分组数和特征串数量矩阵确定多个初始分组。
举例来说,假设特征串集合为{111、222、1114、2224、123456789、223456789、1234567890、2234567890、123456789012345、223456789012345},由于在上述步骤S102中已经举例出了DL为12,则对应的上述特征串集合中每种特征串的长度序列为3、4、9、10,从而通过上述特征串的长度序列可以确定出分组数为4组。
进一步地,在根据长度序列确定分组数后,可根据分组数和特征串数量确定多个初始分组。具体地,由于上述实施例中还有两个特征串的长度序列为15,超过了长度阈值12,因此在根据分组数和特征串数量确定多个初始分组时,可将超过长度阈值的两个特征串划分至长度序列为10的分组中,进而得到结果为4组的初始分组。例如,{111、222},{1114、222},{123456789、223456789},{1234567890、2234567890、123456789012345、223456789012345}。
通过上述步骤可以完成对特征串集合的初始分组,进而通过下面的步骤对初始分组中不符合要求的分组进行进一步地完善,使得分组更符合要求。
S104,从多个初始分组中,选取所包含的特征串长度最小的分组作为第一目标分组。
继续使用上述步骤S103中的例子来说明,在确定的4组初始分组中可以看出,最短长度分组为长度为3的分组,即{111、222},因此可将长度为3的分组选取为第一目标分组。
其中,在本发明实施例中,第一目标分组可记作SL。
应当理解,在多个初始分组中可能存在各种长度的分组,因此对初始分组中的每个分组进行处理之前,可先确定每种分组的具体长度,进而根据每种分组的具体长度进行对应处理。
S105,若多个初始分组中包括第二目标分组,将第一目标分组中的每个特征串的字符进行扩展,得到与每个特征串对应的多个扩展字符串,并将多个扩展字符串置入第二目标分组中,其中,第二目标分组中包含的特征串长度比第一目标分组中的特征串长度大1。
具体地,对第一目标分组中的每个特征串的字符进行扩展,可通过将该分组中的每一个特征串变成N个特征串,例如N取256。即将每一个特征串后面加一个字节,字节值分别取0到255,当扩展后的255个特征串中有一条命中时,就相当于变换前的特征串命中。其中,N的取值根据进行q-gram字符拆分时的字符转换函数有关。
应当理解,对第一目标分组中的每个特征串的字符进行扩展是指将第一目标分组中的特征串放到长度比第一目标分组大1的分组中,即将第一目标分组中的特征串置入第二目标分组中。
通过上述对第一目标分组进行扩展,使得在使用类似BNDM的跳跃类算法时,可加快过滤的速度。
继续使用上述步骤S103中的例子来说明,对第一目标分组,即长度为3的分组进行扩展,是指将长度为3的分组扩展成长度为4的分组,即将{111、222}扩展成{111*、222*}。
S106,将第二目标分组和多个初始分组中剩余的分组作为第三目标分组,以基于得到第三目标分组构建特征串集合的掩码表,并对特征串集合进行匹配。
在本发明实施例中,在对第一目标分组进行扩展之后,可将多个扩展字符置入第二目标分组中,从而可根据第二目标分组和多个初始分组中剩余的分组作为第三目标分组,进而基于第三目标分组的分组结果对特征串集合进行匹配操作。
具体地,在本发明实施例中,基于得到的第三目标分组后的分组结果,可构建特征串集合的掩码表,其中,在构建特征串集合的掩码表时可先对掩码表初始化。需要说明的是,对掩码表进行初始化是指利用已经分组好的特征串,按照组的长度由小到大,依次使用每组特征串设置掩码表。其中,组与组之间相互独立,分别使用掩码表不同的列,例如,设某组长为1,则此组利用掩码表相应的1-q-gram+1列。
下面对构建特征串集合的掩码表的具体过程进行说明,具体如下:
首先,将掩码表B所有位初始化为零,然后,依次对当前组中的每个特征串中的q-gram字符块,使用选取好的字符转换函数进行求职,对于所求的值找到掩码表B中相对应行,并根据当前字符块在特征串中的位置,找到掩码表B中的相应列,相对应的将该位置为1。
进一步地,在对第三目标分组后的分组结果,构建特征串集合的掩码表之后,可利用第三目标分组的分组结果对特征串集合进行匹配。在对特征串集合进行匹配操作之前,可先对每个分组中特征串数量进行调整。具体地,获取目标系数,其中,目标系数为:对特征串增加一个字符时,增加字符后的特征串的命中概率与增加字符前的特征串的命中概率之间的比例值;根据目标系数对特征串集合中的每个分组中的特征串数量进行调整。
其中,需要说明的是,根据目标系数对特征串集合中的每个分组中的特征串数量进行调整是为了避免某些分组中的特征串数量过多,或者某些分组中特征串数量过少,使得特征串分布不均衡,易导致特征串过多的分组在过滤阶段时通过率上升,进而影响了整体特征串匹配性能。
举例来说,对每个分组中特征串数量进行调整可通过以下几个步骤实现:
1)计算目标系数Q。其中,目标系数Q值为特征串增加一个字节时,其命中降低的比率。该目标系数与使用q-gram拆分字符时,使用的字符转换函数有关。其中q-gram值取3,使用(((a&0x3f)<<12)|((b&0x3f)<<6)|(c&0x3f))作为字符转换函数,则Q取值为64。因为该转换函数中每个字节只有6位有效区分位,所以Q取值为64。当然还可以使用其它字符转换函数时,Q值计算方法类似。
2)对于选取的长度序列RL[i],对于所有长度小于DL的分组,通过统计得到的RNum[i][j],并检验各长度序列对应的特征串数量,对于相邻的两个长度序列,如果其值差1,两个序列对应的特征串数量比例调整为1:Q,如果相邻的两个长度序列,其值差2,则特征串数量的比例调整为1:Q*Q,类似,当两个相邻字节相差n个字节时,则特征串数量的调整比例为1:Qn。
其中,需要说明的是,调整特征串数量时只能将特征串由长度长的序列中调整到长度短的序列中,不能进行反向调整。
通过上述步骤对第三目标分组进行特征串数量的调整可以提升分组的长度。
本发明第一方面实施例提出的特征串集合的分组方法,通过获取特征串集合中多个特征串中每个特征串的长度信息得到多个长度信息,统计每种长度信息下特征串的数量,并根据数量生成特征串数量矩阵,以及基于长度信息生成长度序列,以根据长度序列确定分组数,进而根据分组数和特征串数量矩阵确定多个初始分组,从多个初始分组中选取特征串长度最小的作为第一目标分组,并在多个初始分组中包括有第二目标分组时,将第一目标分组中的每个特征串的字符进行扩展,得到对应的多个扩展字符串,并将第二目标分组和多个初始分组中剩余的分组作为第三目标分组,以根据第三目标分组后的分组结果对特征串集合进行匹配,从而避免了因特征串集合中有较短的特征串,而将所有特征串都按照最短特征串进行截断操作,有效减少了原始特征串的信息损失,降低了过滤阶段的通过率,提高了整体性能。
图2为本发明另一个实施例的特征串集合的分组方法的流程图。如图2所示,本发明实施例的特征串集合的分组方法,包括:
S201,获取特征串集合中多个特征串中每个特征串的长度信息,得到多个长度信息。
S202,统计基于每种长度信息下特征串的数量,根据数量生成特征串数量矩阵,并基于长度信息生成长度序列。
S203,根据长度序列确定分组数,并根据分组数和特征串数量矩阵确定多个初始分组。
S204,从多个初始分组中,选取所包含的特征串长度最小的分组作为第一目标分组。
S205,若多个初始分组中包括第二目标分组,将第一目标分组中的每个特征串的字符进行扩展,得到与每个特征串对应的多个扩展字符串,并将多个扩展字符串置入第二目标分组中,其中,第二目标分组中包含的特征串的长度比第一目标分组中的特征串长度大1。
S206,将第二目标分组和多个初始分组中剩余的分组作为第三目标分组之后,将每个分组中的特征串长度与预设长度阈值做比对。
在本发明实施例中,在对第一目标分组进行扩展之后,可将第二目标分组和多个初始分组中剩余的分组作为第三目标分组,并且可将第三目标分组中的特征串长度进行判断,即将每个分组中的特征串长度与预设阈值进行比对。
需要说明的是,在本发明实施例中,预设长度阈值可以特征串区分度阈值,当然也可以是其他阈值,在此不对其进行详细赘述。
S207,获取所包含特征串的长度大于或等于预设长度阈值的分组的数量。
其中,获取特征串长度大于或等于预设长度阈值的分组的数量,可先获取第三目标分组中每个分组中的特征串的长度信息,进而根据获取的长度信息确定该分组的特征串数量。
S208,在分组的数量大于1时,获取分组中的特征串并作为目标特征串。
S209,确定目标分组数,并根据所述目标分组数,结合K-means聚类算法对目标特征串进行分组。
作为一种示例,当确定第三目标分组中的特征串数量大于1时,获取分组中的特征串并作为目标特征串,确定目标分组数,并根据目标分组数,结合K-means聚类算法对目标特征串进行分组。
具体地,在本发明实施例中,确定目标分组数包括:对长度序列中不同的长度值按照升序进行逐个累加运算,得到每次的累加运算的结果作为对应的中间长度值;判断中间长度值是否大于预设掩码表位长;在中间长度值大于预设掩码表位长时,停止逐个累加运算;获取小于预设掩码表位长的中间长度值中值最大的中间长度值并作为目标总长度值;将预设掩码表位长和目标总长度值作差,得到差值;判断长度序列中是否存在等于预设长度阈值的长度值,得到判断结果;根据判断结果和差值确定目标分组数。
其中,需要说明的是,预设掩码表位长可以根据实际情况选择不同的掩码表位长,一般位长选取为一个机器字的位长,记为BL。例如,BL=64。
更具体地,在本发明实施例中,根据判断结果和差值确定目标分组数,包括:对差值和预设长度阈值进行求余取模运算,得到模值;在判断结果为长度序列中存在等于预设长度阈值的长度值时,将模值值进行加1运算,得到加1运算后的值并作为目标分组数;在判断结果为长度序列中不存在等于预设长度阈值的长度值时,直接将模值值作为目标分组数。
举例来说,利用特征串的长度序列RL[i],对特征串集合中不同的特征串长度值从小到大进行累加求和运算,如果出现加上某个长度L,总和超过掩码表位长BL时就停止,则将长度L不加入到总和中,记总和为AL。其中,掩码表中剩余的位数可通过LF=BL-AL表示。
如果累加求和过程中选取的长度序列中包含长度DL,则待分组数为k=1+LF/DL,否则k=LF/DL。
进一步地,在确定好目标分组之后,可根据目标分组数结合K-means聚类算法对目标特征串进行分组,具体地可通过以下步骤实现:
其中,需要说明的是,初始簇的数目设置为k,使用欧式距离计算向量之间的相似性。
1)先用字符转换函数将长度大于等于DL的待分组特征串转换为数值向量。
2)随机选择k个向量作为质心,即簇的中心。
3)当任意一个点的簇分配结果发生改变时进行,转到步骤4。
4)对数据集中的每个向量,计算其与质心的欧式距离,将数据点分配到与其最近的质心所属簇中。
5)对于每一个簇,计算簇中所有点的均值,并将其作为质心,转到步骤3。
经过上述聚类过程,可以将特征串分为k组。将特征串分为k组时,可能会出现k个集合中的特征串分布非常不均匀的情况,对于上情况,可以选择对各组数量进行局部调整。调整方法如下:
在聚类过程中,记录当前质点到所属质心的距离,对于某一特征串数量很大的组,按照某种原则从中取数量为t的特征串,该t个特征串为此组中与质心距离最远的t个特征串。对于该t个特征串,再次计算与其它质心的距离,选择一个最近的加入其中。其中,对于数量t的选取,可以根据特征集合内特征串的相似性程度进行选取。从而通过对长度值大于预设长度阈值的分组进行聚类分组,以提高特征串匹配的效率。
本发明实施例的特征串集合的分组方法,通过在第三目标分组中确定出大于或等于预设长度阈值的分组数量,并且在分组的数量大于1时获取分组中的特征串作为目标特征串,并对该目标特征串进行聚类算法,以得到最终的分组,从而有效减少了原始特征串的信息损失,降低了过滤阶段的通过率,提高了整体性能。
为了实现上述实施例,本发明还提出一种特征串集合的分组装置。
图3为根据本发明一个实施例的特征串集合的分组装置的结构示意图。
如图3所示,根据本发明实施例的特征串集合的分组装置100,包括:第一获取模块110、第一生成模块120、确定模块130、第一选取模块140、扩展模块150、以及匹配模块160。
具体地,第一获取模块110用于获取特征串集合中多个特征串中每个特征串的长度信息,得到多个长度信息。其中,在本发明的实施例中,可通过特征串长度信息工具获取该特征串集合中多个特征串中每个特征串的长度信息。例如,该特征字符串长度信息工具可以是length工具、size工具、strlen工具等。
第一生成模块120用于统计基于每种长度信息下特征串的数量,根据数量生成特征串数量矩阵,并基于长度信息生成长度序列。
作为一种示例,在得到多个长度信息之后,可统计出每种长度信息下特征串的数量。其中,当特征串集合中的多个特征串中每个特征串的长度信息超过特征串区分度阈值时,可按照特征串区分度阈值计算每种长度信息下特征串的数量。需要说明的是,特征串区分度阈值可以是一个确定的值,记为DL,例如,DL=12。当然该特征串区分度阈值可以根据实际需要进行适应性调整。
进一步地,在本发明实施例中,根据确定出的特征串数量可相应地生成特征串数量矩阵,例如RNum[i][j]。其中,RNum[i][j]的值是长度>=i,且长度<j的所有特征串的数量。
另外,在本发明实施例中,如图4所示,本发明实施例的第一生成模块120包括:第二选取单元121、生成单元122。
其中,第二选取单元121用于从多个长度信息中选取长度值小于或者等于预设长度阈值的长度信息并作为目标长度信息;生成单元122用于基于目标长度信息,按照长度值升序生成长度序列。例如,长度序列RL[i],其中,RL[i]值是特征串集合中所包含的特征串长度值,RL中的值是按照从小到大进行排序,且长度大于DL的,不计入其内。在本发明实施例中通过长度信息生成的长度序列可为下一步确定分组数作基础,以根据长度序列快速准确的确定出分组数。
确定模块130用于根据长度序列确定分组数,并根据分组数和特征串数量矩阵确定多个初始分组。
举例来说,假设特征串集合为{111、222、1114、2224、123456789、223456789、1234567890、2234567890、123456789012345、223456789012345},由于在上述步骤S102中已经举例出了DL为12,则对应的上述特征串集合中每种特征串的长度序列为3、4、9、10,从而通过上述特征串的长度序列可以确定出分组数为4组。
进一步地,在根据长度序列确定分组数后,可根据分组数和特征串数量确定多个初始分组。具体地,由于上述实施例中还有两个特征串的长度序列为15,超过了长度阈值12,因此在根据分组数和特征串数量确定多个初始分组时,可将超过长度阈值的两个特征串划分至长度序列为10的分组中,进而得到结果为4组的初始分组。例如,{111、222},{1114、222},{123456789、223456789},{1234567890、2234567890、123456789012345、223456789012345}。
通过上述步骤可以完成对特征串集合的初始分组,进而通过下面的步骤对初始分组中不符合要求的分组进行进一步地完善,使得分组更符合要求。
第一选取模块140用于从多个初始分组中,选取所包含的特征串长度最小的分组作为第一目标分组。
继续使用上述确定模块130中的例子来说明,在确定的4组初始分组中可以看出,最短长度分组为长度为3的分组,即{111、222},因此可将长度为3的分组选取为第一目标分组。
其中,在本发明实施例中,第一目标分组可记作SL。
应当理解,在多个初始分组中可能存在各种长度的分组,因此对初始分组中的每个分组进行处理之前,可先确定每种分组的具体长度,进而根据每种分组的具体长度进行对应处理。
扩展模块150用于若多个初始分组中包括第二目标分组,将第一目标分组中的每个特征串的字符进行扩展,得到与每个特征串对应的多个扩展字符串,并将多个扩展字符串置入第二目标分组中,其中,第二目标分组中包含的特征串长度比第一目标分组中的特征串长度大1。
具体地,对第一目标分组中的每个特征串的字符进行扩展,可通过将该分组中的每一个特征串变成N个特征串,例如N取256。即将每一个特征串后面加一个字节,字节值分别取0到255,当扩展后的255个特征串中有一条命中时,就相当于变换前的特征串命中。其中,N的取值根据进行q-gram字符拆分时的字符转换函数有关。
应当理解,对第一目标分组中的每个特征串的字符进行扩展是指将第一目标分组中的特征串放到长度比第一目标分组大1的分组中,即将第一目标分组中的特征串置入第二目标分组中。
通过上述对第一目标分组进行扩展,使得在使用类似BNDM的跳跃类算法时,可加快过滤的速度。
继续使用上述确定模块130中的例子来说明,对第一目标分组,即长度为3的分组进行扩展,是指将长度为3的分组扩展成长度为4的分组,即将{111、222}扩展成{111*、222*}。
匹配模块160用于将第二目标分组和多个初始分组中剩余的分组作为第三目标分组,以基于得到第三目标分组后的分组结果,构建特征串集合的掩码表,并对特征串集合进行匹配。
在本发明实施例中,在对第一目标分组进行扩展之后,可将多个扩展字符置入第二目标分组中,从而可根据第二目标分组和多个初始分组中剩余的分组作为第三目标分组,进而基于第三目标分组的分组结果对特征串集合进行匹配操作。
具体地,在本发明实施例中,基于得到的第三目标分组可构建特征串集合的掩码表,其中,在构建特征串集合的掩码表时可先对掩码表初始化。需要说明的是,对掩码表进行初始化是指利用已经分组好的特征串,按照组的长度由小到大,依次使用每组特征串设置掩码表。其中,组与组之间相互独立,分别使用掩码表不同的列,例如,设某组长为1,则此组利用掩码表相应的1-q-gram+1列。
下面对构建特征串集合的掩码表的具体过程进行说明,具体如下:
首先,将掩码表B所有位初始化为零,然后,依次对当前组中的每个特征串中的q-gram字符块,使用选取好的字符转换函数进行求职,对于所求的值找到掩码表B中相对应行,并根据当前字符块在特征串中的位置,找到掩码表B中的相应列,相对应的将该位置为1。
进一步地,在对第三目标分组构建特征串集合的掩码表之后,可利用第三目标分组对特征串集合进行匹配。在对特征串集合进行匹配操作之前,可先对每个分组中特征串数量进行调整。具体地,如图5所示,本发明实施例还包括:第二获取模块170和调整模块180。其中,第二获取模块170用于获取目标系数,其中,目标系数为:对特征串增加一个字符时,增加字符后的特征串的命中概率与增加字符串的特征串的命中概率之间的比例值;调整模块180用于根据目标系数对特征串集合的每个分组中的特征串数量进行调整。
其中,需要说明的是,根据目标系数对特征串集合中的每个分组中的特征串数量进行调整是为了避免某些分组中的特征串数量过多,或者某些分组中特征串数量过少,使得特征串分布不均衡,易导致特征串过多的分组在过滤阶段时通过率上升,进而影响了整体特征串匹配性能。
举例来说,对每个分组中特征串数量进行调整可通过以下几个步骤实现:
1)计算目标系数Q。其中,目标系数Q值为特征串增加一个字节时,其命中降低的比率。该目标系数与使用q-gram拆分字符时,使用的字符转换函数有关。其中q-gram值取3,使用(((a&0x3f)<<12)|((b&0x3f)<<6)|(c&0x3f))作为字符转换函数,则Q取值为64。因为该转换函数每个字节只有6位有效区分位,所以Q取值为64。当然还可以使用其它字符转换函数时,Q值计算方法类似。
2)对于选取的长度序列RL[i],对于所有长度小于DL的分组,通过统计得到的RNum[i][j],并检验各长度序列对应的特征串数量,对于相邻的两个长度序列,如果其值差1,两个序列对应的特征串数量比例调整为1:Q,如果相邻的两个长度序列,其值差2,则特征串数量的比例调整为1:Q*Q,类似,当两个相邻字节相差n个字节时,则特征串数量的调整比例为1:Qn。
其中,需要说明的是,调整特征串数量时只能将特征串由长度长的序列中调整到长度短的序列中,不能进行反向调整。
通过上述步骤对第三目标分组进行特征串数量的调整可以提升分组的长度。
本发明实施例的特征串集合的分组装置,通过获取特征串集合中多个特征串中每个特征串的长度信息得到多个长度信息,统计每种长度信息下特征串的数量,并根据数量生成特征串数量矩阵,以及基于长度信息生成长度序列,以根据长度序列确定分组数,进而根据分组数和特征串数量矩阵确定多个初始分组,从多个初始分组中选取特征串长度最小的作为第一目标分组,并在多个初始分组中包括有第二目标分组时,将第一目标分组中的每个特征串的字符进行扩展,得到对应的多个扩展字符串,并将第二目标分组和多个初始分组中剩余的分组作为第三目标分组,以根据第三目标分组后的分组结果对特征串集合进行匹配,从而避免了因特征串集合中有较短的特征串,而将所有特征串都按照最短特征串进行截断操作,有效减少了原始特征串的信息损失,降低了过滤阶段的通过率,提高了整体性能。
图6为根据本发明再一个实施例的特征串集合的分组装置的结构示意图。
如图6所示,根据本发明实施例的特征串集合的分组装置200,包括:第一获取模块110、第一生成模块120、确定模块130、第一选取模块140、扩展模块150、比对模块260、第三获取模块270、第四获取模块280以及分组模块290。
具体地,第一获取模块110用于获取特征串集合中多个特征串中每个特征串的长度信息,得到多个长度信息。其中,在本发明的实施例中,可通过特征串长度信息工具获取该特征串集合中多个特征串中每个特征串的长度信息。例如,该特征字符串长度信息工具可以是length工具、size工具、strlen工具等。
第一生成模块120用于统计基于每种长度信息下特征串的数量,根据数量生成特征串数量矩阵,并基于长度信息生成长度序列。
作为一种示例,在得到多个长度信息之后,可统计出每种长度信息下特征串的数量。其中,当特征串集合中的多个特征串中每个特征串的长度信息超过特征串区分度阈值时,可按照特征串区分度阈值计算每种长度信息下特征串的数量。需要说明的是,特征串区分度阈值可以是一个确定的值,记为DL,例如,DL=12。当然该特征串区分度阈值可以根据实际需要进行适应性调整。
进一步地,在本发明实施例中,根据确定出的特征串数量可相应地生成特征串数量矩阵,例如RNum[i][j]。其中,RNum[i][j]的值是长度>=i,且长度<j的所有特征串的数量。
另外,在本发明实施例中,如图4所示,本发明实施例的第一生成模块120包括:第二选取单元121、生成单元122。其中,第二选取单元121用于从多个长度信息中选取长度值小于或者等于预设长度阈值的长度信息并作为目标长度信息;生成单元122用于基于目标长度信息,按照长度值升序生成长度序列。例如,长度序列RL[i],其中,RL[i]值是特征串集合中所包含的特征串长度值,RL中的值是按照从小到大进行排序,且长度大于DL的,不计入其内。在本发明实施例中通过长度信息生成的长度序列可为下一步确定分组数作基础,以根据长度序列快速准确的确定出分组数。
确定模块130用于根据长度序列确定分组数,并根据分组数和特征串数量矩阵确定多个初始分组。
举例来说,假设特征串集合为{111、222、1114、2224、123456789、223456789、1234567890、2234567890、123456789012345、223456789012345},由于在上述步骤S102中已经举例出了DL为12,则对应的上述特征串集合中每种特征串的长度序列为3、4、9、10,从而通过上述特征串的长度序列可以确定出分组数为4组。
进一步地,在根据长度序列确定分组数后,可根据分组数和特征串数量确定多个初始分组。具体地,由于上述实施例中还有两个特征串的长度序列为15,超过了长度阈值12,因此在根据分组数和特征串数量确定多个初始分组时,可将超过长度阈值的两个特征串划分至长度序列为10的分组中,进而得到结果为4组的初始分组。例如,{111、222},{1114、222},{123456789、223456789},{1234567890、2234567890、123456789012345、223456789012345}。
通过上述步骤可以完成对特征串集合的初始分组,进而通过下面的步骤对初始分组中不符合要求的分组进行进一步地完善,使得分组更符合要求。
第一选取模块140用于从多个初始分组中,选取所包含的特征串长度最小的分组作为第一目标分组。
继续使用上述确定模块130中的例子来说明,在确定的4组初始分组中可以看出,最短长度分组为长度为3的分组,即{111、222},因此可将长度为3的分组选取为第一目标分组。
其中,在本发明实施例中,第一目标分组可记作SL。
应当理解,在多个初始分组中可能存在各种长度的分组,因此对初始分组中的每个分组进行处理之前,可先确定每种分组的具体长度,进而根据每种分组的具体长度进行对应处理。
扩展模块150用于若多个初始分组中包括第二目标分组,将第一目标分组中的每个特征串的字符进行扩展,得到与每个特征串对应的多个扩展字符串,并将多个扩展字符串置入第二目标分组中,其中,第二目标分组中包含的特征串长度比第一目标分组中的特征串长度大1。
具体地,对第一目标分组中的每个特征串的字符进行扩展,可通过将该分组中的每一个特征串变成N个特征串,例如N取256。即将每一个特征串后面加一个字节,字节值分别取0到255,当扩展后的255个特征串中有一条命中时,就相当于变换前的特征串命中。其中,N的取值根据进行q-gram字符拆分时的字符转换函数有关。
应当理解,对第一目标分组中的每个特征串的字符进行扩展是指将第一目标分组中的特征串放到长度比第一目标分组大1的分组中,即将第一目标分组中的特征串置入第二目标分组中。
通过上述对第一目标分组进行扩展,使得在使用类似BNDM的跳跃类算法时,可加快过滤的速度。
继续使用上述确定模块130中的例子来说明,对第一目标分组,即长度为3的分组进行扩展,是指将长度为3的分组扩展成长度为4的分组,即将{111、222}扩展成{111*、222*}。
比对模块260用于将第二目标分组和多个初始分组中剩余的分组作为第三目标分组,将每个分组中的特征串长度与预设长度阈值作比对。
在本发明实施例中,在对第一目标分组进行扩展之后,可相应的生成第三目标分组。其中,在得到第三目标分组的分组结果之后,可对每个分组中的特征串长度进行判断,即将每个分组中的特征串长度与预设阈值进行比对。需要说明的是,在本发明实施例中,预设长度阈值可以特征串区分度阈值,当然也可以是其他阈值,在此不对其进行详细赘述。
第三获取模块270,用于获取所包含特征串的长度大于或者等于预设长度阈值的分组的数量。其中,获取特征串长度大于或等于预设长度阈值的分组的数量,可先获取第三目标分组中每个分组中的特征串的长度信息,进而根据获取的长度信息确定该分组的特征串数量。
第四获取模块280,用于在分组的数量大于1时,获取分组中的特征串并作为目标特征串。
分组模块290,用于确定目标分组数,并根据目标分组数,结合K-means聚类算法对目标特征串进行分组。
作为一种示例,当确定第三目标分组中的特征串数量大于1时,获取分组中的特征串并作为目标特征串,确定目标分组数,并根据目标分组数,结合K-means聚类算法对目标特征串进行分组。
具体地,在本发明的实施例中,如图7所示,本发明实施例中的分组模块290包括:第一计算单元291、第一判断单元292、控制单元293、第一选取单元294、第二计算单元295、第二判断单元296和确定单元297。其中,第一计算单元291用于对长度序列中不同的长度值按照升序进行逐个累加运算,得到每次的累加运算的结果作为对应的中间长度值;第一判断单元292用于判断中间长度值是否大于预设掩码表位长;控制单元293用于在中间长度值大于预设掩码表位长时,停止逐个累加运算;第一选取单元294用于获取小于预设掩码表位长的中间长度值中值最大的中间长度值并作为目标总长度值;第二计算单元295用于将预设掩码表位长和目标总长度值作差,得到差值;第二判断单元296用于判断长度序列中是否存在等于预设长度阈值的长度值,得到判断结果;确定单元297用于根据判断结果和差值确定目标分组数。
其中,需要说明的是,预设掩码表位长可以根据实际情况选择不同的掩码表位长,一般位长选取为一个机器字的位长,记为BL。例如,BL=64。
更具体地,在本发明实施例中,确定单元290具体用于:对差值和预设长度阈值进行求余取模运算,得到模值;在判断结果为长度序列中存在等于预设长度阈值的长度值时,将模值进行加1运算,得到加1运算后的值并作为目标分组数;在判断结果为长度序列中不存在等于预设长度阈值的长度值时,直接将模值作为目标分组数。
举例来说,利用特征串的长度序列RL[i],对特征串集合中不同的特征串长度值从小到大进行累加求和运算,如果出现加上某个长度L,总和超过掩码表位长BL时就停止,则将长度L不加入到总和中,记总和为AL。其中,掩码表中剩余的位数可通过LF=BL-AL表示。
如果累加求和过程中选取的长度序列中包含长度DL,则待分组数为k=1+LF/DL,否则k=LF/DL。
进一步地,在确定好目标分组之后,可根据目标分组数结合K-means聚类算法对目标特征串进行分组,具体地可通过以下步骤实现:
其中,需要说明的是,初始簇的数目设置为k,使用欧式距离计算向量之间的相似性。
1)先用字符转换函数将长度大于等于DL的待分组特征串转换为数值向量。
2)随机选择k个向量作为质心,即簇的中心。
3)当任意一个点的簇分配结果发生改变时进行,转到步骤4。
4)对数据集中的每个向量,计算其与质心的欧式距离,将数据点分配到与其最近的质心所属簇中。
5)对于每一个簇,计算簇中所有点的均值,并将其作为质心,转到步骤3。
经过上述聚类过程,可以将特征串分为k组。将特征串分为k组时,可能会出现k个集合中的特征串分布非常不均匀的情况,对于上情况,可以选择对各组数量进行局部调整。调整方法如下:
在聚类过程中,记录当前质点到所属质心的距离,对于某一特征串数量很大的组,按照某种原则从中取数量为t的特征串,该t个特征串为此组中与质心距离最远的t个特征串。对于该t个特征串,再次计算与其它质心的距离,选择一个最近的加入其中。其中,对于数量t的选取,可以根据特征集合内特征串的相似性程度进行选取。从而通过对长度值大于预设长度阈值的分组进行聚类分组,以提高特征串匹配的效率。
本发明实施例的特征串集合的分组装置,通过在第三目标分组中确定出大于或等于预设长度阈值的分组数量,并且在分组的数量大于1时获取分组中的特征串作为目标特征串,并对该目标特征串进行聚类算法,以得到最终的分组,从而有效减少了原始特征串的信息损失,降低了过滤阶段的通过率,提高了整体性能。
需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种特征串集合的分组方法,其特征在于,包括以下步骤:
获取特征串集合中多个特征串中每个特征串的长度信息,统计基于每种长度信息下特征串的数量,根据所述数量生成特征串数量矩阵,并基于所述长度信息生成长度序列;
根据所述长度序列确定分组数,并根据所述分组数和所述特征串数量矩阵确定多个初始分组;
从所述多个初始分组中,选取所包含的特征串长度最小的分组作为第一目标分组;
若所述多个初始分组中包括第二目标分组,将所述第一目标分组中的每个特征串的字符进行扩展,得到与所述每个特征串对应的多个扩展字符串,并将所述多个扩展字符串置入所述第二目标分组中,其中,所述第二目标分组中所包含的特征串长度比所述第一目标分组中的特征串长度大1;
将所述第二目标分组和所述多个初始分组中剩余的分组作为第三目标分组,以基于所述第三目标分组构建所述特征串集合的掩码表,并对所述特征串集合进行匹配。
2.如权利要求1所述的特征串集合的分组方法,其特征在于,还包括:
获取目标系数,其中,所述目标系数为:对所述特征串增加一个字符时,增加字符后的特征串的命中概率与增加字符前的特征串的命中概率之间的比例值;
根据所述目标系数对所述特征串集合的每个分组中的特征串数量进行调整。
3.如权利要求1所述的特征串集合的分组方法,其特征在于,在所述将所述第二目标分组和所述多个初始分组中剩余的分组作为第三目标分组之后,还包括:
将每个分组中的特征串长度与预设长度阈值作比对;
获取所包含特征串的长度大于或者等于所述预设长度阈值的分组的数量;
在所述分组的数量大于1时,获取所述分组中的特征串并作为目标特征串;
确定目标分组数,并根据所述目标分组数,结合K-means聚类算法对所述目标特征串进行分组。
4.如权利要求3所述的特征串集合的分组方法,其特征在于,所述确定目标分组数,包括:
对所述长度序列中不同的长度值按照升序进行逐个累加运算,得到每次的累加运算的结果作为对应的中间长度值;
判断所述中间长度值是否大于预设掩码表位长;
在所述中间长度值大于所述预设掩码表位长时,停止所述逐个累加运算;
获取小于所述预设掩码表位长的中间长度值中值最大的中间长度值并作为目标总长度值;
将所述预设掩码表位长和所述目标总长度值作差,得到差值;
判断所述长度序列中是否存在等于预设长度阈值的长度值,得到判断结果;
根据所述判断结果和所述差值确定所述目标分组数。
5.如权利要求4所述的特征串集合的分组方法,其特征在于,所述根据所述判断结果和所述差值确定所述目标分组数,包括:
对所述差值和所述预设长度阈值进行求余取模运算,得到模值;
在所述判断结果为所述长度序列中存在等于所述预设长度阈值的长度值时,将所述模值进行加1运算,得到加1运算后的值并作为所述目标分组数;
在所述判断结果为所述长度序列中不存在等于所述预设长度阈值的长度值时,直接将所述模值作为所述目标分组数。
6.如权利要求1所述的特征串集合的分组方法,其特征在于,所述基于所述长度信息生成长度序列,包括:
从多个所述长度信息中选取长度值小于或者等于预设长度阈值的长度信息并作为目标长度信息;
基于所述目标长度信息,按照长度值升序生成所述长度序列。
7.一种特征串集合的分组装置,其特征在于,包括:
第一获取模块,用于获取特征串集合中多个特征串中每个特征串的长度信息,得到多个长度信息;
第一生成模块,用于统计基于每种长度信息下特征串的数量,根据所述数量生成特征串数量矩阵,并基于所述长度信息生成长度序列;
确定模块,用于根据所述长度序列确定分组数,并根据所述分组数和所述特征串数量矩阵确定多个初始分组;
第一选取模块,用于从所述多个初始分组中,选取所包含的特征串长度的最小的分组作为第一目标分组;
扩展模块,用于若所述多个初始分组中包括第二目标分组,将所述第一目标分组中的每个特征串的字符进行扩展,得到与所述每个特征串对应的多个扩展字符串,并将所述多个扩展字符串置入所述第二目标分组中,其中,所述第二目标分组中所包含的特征串长度比所述第一目标分组中的特征串长度大1;
匹配模块,用于将所述第二目标分组和所述多个初始分组中剩余的分组作为第三目标分组,以基于得到所述第三目标分组构建所述特征串集合的掩码表,并对所述特征串集合进行匹配。
8.如权利要求7所述的特征串集合的分组装置,其特征在于,还包括:
第二获取模块,用于在所述第二目标分组和所述多个初始分组中剩余的分组作为第三目标分组,并根据第三目标分组对所述特征串集合进行匹配之前,获取目标系数,其中,所述目标系数为:对所述特征串增加一个字符时,增加字符后的特征串的命中概率与增加字符前的特征串的命中概率之间的比例值;
调整模块,用于根据所述目标系数对所述特征串集合的每个分组中的特征串数量进行调整。
9.如权利要求7所述的特征串集合的分组装置,其特征在于,所述匹配模块还包括:
比对模块,用于将每个分组中的特征串长度与预设长度阈值作比对;
第三获取模块,用于获取所包含特征串的长度大于或者等于所述预设长度阈值的分组的数量;
第四获取模块,用于在所述分组的数量大于1时,获取所述分组中的特征串并作为目标特征串;
分组模块,用于确定目标分组数,并根据所述目标分组数,结合K-means聚类算法对所述目标特征串进行分组。
10.如权利要求9所述的特征串集合的分组装置,其特征在于,所述分组模块包括:
第一计算单元,用于对所述长度序列中不同的长度值按照升序进行逐个累加运算,得到每次的累加运算的结果作为对应的中间长度值;
第一判断单元,用于判断所述中间长度值是否大于预设掩码表位长;
控制单元,用于在所述中间长度值大于所述预设掩码表位长时,停止所述逐个累加运算;
第一选取单元,用于获取小于所述预设掩码表位长的中间长度值中值最大的中间长度值并作为目标总长度值;
第二计算单元,用于将所述预设掩码表位长和所述目标总长度值作差,得到差值;
第二判断单元,用于判断所述长度序列中是否存在等于预设长度阈值的长度值,得到判断结果;
确定单元,用于根据所述判断结果和所述差值确定所述目标分组数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611104011.XA CN106776965B (zh) | 2016-12-05 | 2016-12-05 | 特征串集合的分组方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611104011.XA CN106776965B (zh) | 2016-12-05 | 2016-12-05 | 特征串集合的分组方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106776965A true CN106776965A (zh) | 2017-05-31 |
CN106776965B CN106776965B (zh) | 2019-11-26 |
Family
ID=58874065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611104011.XA Active CN106776965B (zh) | 2016-12-05 | 2016-12-05 | 特征串集合的分组方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776965B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382325A (zh) * | 2020-03-16 | 2020-07-07 | 北京搜狗科技发展有限公司 | 一种模式串分配方法、装置和用于模式串分配的装置 |
CN112836239A (zh) * | 2021-02-19 | 2021-05-25 | 支付宝(杭州)信息技术有限公司 | 保护隐私的双方协同确定目标对象数据的方法及装置 |
CN113347214A (zh) * | 2021-08-05 | 2021-09-03 | 湖南戎腾网络科技有限公司 | 一种高频状态匹配方法及*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398820A (zh) * | 2007-09-24 | 2009-04-01 | 北京启明星辰信息技术有限公司 | 一种大规模关键词匹配方法 |
CN101359325B (zh) * | 2007-08-01 | 2010-06-16 | 北京启明星辰信息技术股份有限公司 | 一种快速内容分析的多关键词匹配方法 |
CN102184205A (zh) * | 2011-04-28 | 2011-09-14 | 哈尔滨工业大学 | 基于可扩展精度混沌哈希的多模式串匹配算法 |
CN102243656A (zh) * | 2011-06-16 | 2011-11-16 | 中国科学院计算技术研究所 | 基于散列的串匹配方法及其选择模式串子窗口的方法 |
CN103544208A (zh) * | 2013-08-16 | 2014-01-29 | 东软集团股份有限公司 | 海量特征串集合的匹配方法及*** |
CN105141583A (zh) * | 2015-07-28 | 2015-12-09 | 中国电子科技集团公司第三十六研究所 | 一种字符串匹配方法和*** |
-
2016
- 2016-12-05 CN CN201611104011.XA patent/CN106776965B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359325B (zh) * | 2007-08-01 | 2010-06-16 | 北京启明星辰信息技术股份有限公司 | 一种快速内容分析的多关键词匹配方法 |
CN101398820A (zh) * | 2007-09-24 | 2009-04-01 | 北京启明星辰信息技术有限公司 | 一种大规模关键词匹配方法 |
CN102184205A (zh) * | 2011-04-28 | 2011-09-14 | 哈尔滨工业大学 | 基于可扩展精度混沌哈希的多模式串匹配算法 |
CN102243656A (zh) * | 2011-06-16 | 2011-11-16 | 中国科学院计算技术研究所 | 基于散列的串匹配方法及其选择模式串子窗口的方法 |
CN103544208A (zh) * | 2013-08-16 | 2014-01-29 | 东软集团股份有限公司 | 海量特征串集合的匹配方法及*** |
CN105141583A (zh) * | 2015-07-28 | 2015-12-09 | 中国电子科技集团公司第三十六研究所 | 一种字符串匹配方法和*** |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382325A (zh) * | 2020-03-16 | 2020-07-07 | 北京搜狗科技发展有限公司 | 一种模式串分配方法、装置和用于模式串分配的装置 |
CN111382325B (zh) * | 2020-03-16 | 2023-07-28 | 北京搜狗科技发展有限公司 | 一种模式串分配方法、装置和用于模式串分配的装置 |
CN112836239A (zh) * | 2021-02-19 | 2021-05-25 | 支付宝(杭州)信息技术有限公司 | 保护隐私的双方协同确定目标对象数据的方法及装置 |
CN113347214A (zh) * | 2021-08-05 | 2021-09-03 | 湖南戎腾网络科技有限公司 | 一种高频状态匹配方法及*** |
CN113347214B (zh) * | 2021-08-05 | 2021-11-12 | 湖南戎腾网络科技有限公司 | 一种高频状态匹配方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN106776965B (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fränti et al. | Randomised local search algorithm for the clustering problem | |
JP3077765B2 (ja) | 語彙辞書の検索範囲を削減するシステム及び方法 | |
CN106776965A (zh) | 特征串集合的分组方法和装置 | |
CN108595913A (zh) | 鉴别mRNA和lncRNA的有监督学习方法 | |
CN107247873B (zh) | 一种差异甲基化位点识别方法 | |
CN107256205A (zh) | 异常数据自动识别方法、设备和可读存储介质 | |
CN113257364B (zh) | 基于多目标进化的单细胞转录组测序数据聚类方法及*** | |
CN104809393A (zh) | 一种基于流行度分类特征的托攻击检测算法 | |
CN114639441B (zh) | 一种基于带权多粒度扫描的转录因子结合位点预测方法 | |
CN106407364A (zh) | 一种基于人工智能的信息推荐方法和装置 | |
CN110083507A (zh) | 关键性能指标分类方法及装置 | |
CN106445918A (zh) | 一种中文地址处理方法及*** | |
CN104376234B (zh) | 启动子识别方法及*** | |
CN106599097A (zh) | 海量特征串集合的匹配方法和装置 | |
CN103544208B (zh) | 海量特征串集合的匹配方法及*** | |
CN114091597A (zh) | 基于自适应组样本扰动约束的对抗训练方法、装置及设备 | |
CN110399285B (zh) | 一种基于弱变异分析的测试用例约减方法 | |
CN114861760A (zh) | 一种基于密度峰值聚类算法的改进研究 | |
CN114242178A (zh) | 基于梯度提升决策树的ERα拮抗剂的生物活性定量预测方法 | |
CN113033709A (zh) | 链路预测方法和装置 | |
CN104794215A (zh) | 一种适合大规模数据的快速递归聚类方法 | |
Takusagawa et al. | Negative information for motif discovery | |
CN109885685A (zh) | 情报数据处理的方法、装置、设备及存储介质 | |
CN112906871A (zh) | 基于混合多层神经网络模型的温度预测方法及*** | |
JP6659120B2 (ja) | 情報処理装置、情報処理方法、およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |