一种多策略-多规则检测方案的优化方法
技术领域
本发明涉及内容检测领域,尤其涉及一种多策略-多规则检测方案的优化方法。
背景技术
在使用多个含有多条规则及逻辑关系的策略对一段内容进行检测时,现有技术有两种方法分别是:
1.使用每个策略分别对待测内容进行检测,然后查看是否检测到满足检测策略中的规则条件的内容。
2.使用每个策略中的规则分别对待检测内容进行检测,然后通过逻辑关系判断是否检测到满足各检测规则的条件及他们之间逻辑关系的内容。
现有的检测技术由于需要应用每条策略中的所有规则对待检测内容进行检测,所以此种检测方法效率是极其低下的。尤其是在大量不同策略中存在着相同的规则的情形下,极大的增加了时间和空间的消耗。
发明内容
为了解决上述问题,本发明提供一种多策略-多规则检测方案的优化方法:
本发明提供的多策略-多规则检测方案的优化方法,包括以下步骤:
S1,将策略中的所有规则加权归并,得到所述规则的权重值;
S2,根据S1得到的所述权重值构造最优检测流程图;
S3,根据S2得到的所述最优检测流程图实施检测。
优选的,S1具体为把所有所述策略中的所有规则进行归并,并分别记录引用同一规则的所述策略的数量,将所述数量值作为该规则的权重值。
优选的,S2具体为,为S1加权归并后的每条规则分别创建实例,在所述最优检测流程图中创建规则节点,所述规则节点均为相应所述实例的引用,将每个所述规则节点所引用的实例代表的规则的权重值及逻辑关系赋予该规则节点,使所述规则节点成为所述实例代表的规则的映射,所述规则节点以其所引用的实例代表的规则的权重值和逻辑关系为排列依据排列于所述最优检测流程图上,构造所述最优检测流程图。
优选的,S 2包括以下步骤:
S21,在每个所述实例中设置有检测状态标记,所述检测状态标记用于表示待检测内容是否被相应规则检测过;
S22,将权重值最高的规则节点置于所述最优检测流程图的左上角;将逻辑关系为逻辑或的规则节点按照所述权重值由高到低纵向由上向下依次排列于所述最优检测流程图上;将逻辑关系为逻辑与的规则节点按照所述权重值由高到低横向由左向右依次排列于所述最优检测流程图上;
在排列过程中的特殊过程处理:若权重值最高的规则节点没有出现在第一列中,则在保证将所述权重值最高的规则节点插入后第一列规则节点的权重值依然符合由高到低纵向由上向下依次排列的前提下,将所述权重值最高的规则节点插入第一列中的相应位置;
若待排列规则节点的位置已被占用,则比较待排列规则节点的权重值和占位规则节点的权重值,如果占位规则节点的权重值大于或等于待排列规则节点的权重值,则在占位规则节点位置正下方插入一行,将待排列规则节点置入被占用位置的正下方,用有向线从上到下连接两个节点,并标记为“不满足”,然后从下侧规则节点处根据权重值从大到小继续向右依次排列;如果占位规则节点的权重小于待排列规则节点的权重值,则将占位规则节点及其右侧所有规则节点下移到新的一行中,并将待排列规则节点置入原占位规则节点的位置,用有向线从上到下连接两个规则节点,并标记为“不满足”,然后从上侧节点处根据规则继续向右依次排列规则节点;
特殊过程处理过后,应保证当前已存在的有向线指向的规则节点的权重值小于或等于有向线起始规则节点的权重值;
S23,用有向线从左到右,依次连接每两个相邻的规则节点,并标记为“满足”;
S24,用有向线从上到下,依次连接每个规则节点和相邻下一行中第一列的规则节点,并标记为“不满足”;此过程不包括在S22中已构造出的有向线所属的起始规则节点;
S25,根据每条所述策略中规则之间的逻辑关系,遍历每条横向有向线上的规则节点,将符合某条策略时所述有向线指向的规则节点标记为“符合策略”;如果某行中最右端的规则节点刚好符合某策略,那么在其右端构造一个虚规则节点,并将其标记为“符合策略”;
S26,最优检测流程图构造完毕。
优选的,S3具体为根据S2中构造的最优检测流程图对待检测内容进行检测。
优选的,S3包括以下步骤:
S31,将所述最优检测流程图左上角的所述规则节点设为检测起始点;
S32,沿横向有向线自左向右依次用所述有向线上的规则节点所引用的实例代表的规则检测所述待检测内容,并将所述实例中的检测状态标记置为已检测过;
S33,检测过程中,首先看该规则节点是否已被标记为“符合策略”,如果是,则报告检测结果并退出检测流程;如果否,则看被检测内容是否满足当前规则节点所引用的实例代表的规则,并根据检测结果按照S2构造的最优检测流程图中的有向线依次使用规则节点所引用的实例代表的规则对被检测内容进行检测,直到所述最优检测流程图的最后一行最右端的规则节点。
本发明实现的有益效果是:
1.本方法首先对各个策略中的所有规则进行归并,筛选出所有策略中不重复的规则,并根据规则被策略引用的数量来确定该规则的权重,然后根据策略从权重最高的规则开始构建最优检测流程图,后边的整个检测过程都按照该最优检测流程图中的流程进行,以实现最优且快速的检测。
2.本发明优化了使用含有一个或多个规则的策略检测内容时的时间和空间消耗,并通过先检测大概率事件来削减检测时的开销,不仅提升了检测程序的性能同时减少了内存空间消耗,另外,在其他领域,如工作流程规划等方面也可以应用以优化流程。
3.本发明不仅优化了计算机程序中检测的机制,同时由于本发明的通用性,它还可以对任意可以被拆分为多个步骤和模块的工作流程进行快速有效的优化,从而达到最高的工作效率。
附图说明
图1是策略与其中的规则关系示意图;
图2是现有技术检测方法检测流程示意图;
图3是依照本发明的揭示的方法优化后的最优检测流程示意图;
图4是应用实例中构造的最优检测流程图。
具体实施方式
以下结合附图详述本发明:
本发明提供的多策略-多规则检测方案的优化方法,包括步骤:S1,将策略中的所有规则加权归并,得到所述规则的权重值;S2,根据S1得到的所述权重值构造最优检测流程图;S3,根据S2得到的所述最优检测流程图实施检测。
S1具体为把所有所述策略中的所有规则进行归并,并分别记录引用同一规则的所述策略的数量,将所述数量值作为该规则的权重值。
S2具体为,为S1加权归并后的每条规则分别创建实例,在所述最优检测流程图中创建规则节点,所述规则节点均为相应所述实例的引用,将每个所述规则节点所引用的实例代表的规则的权重值及逻辑关系赋予该规则节点,使所述规则节点成为所述实例代表的规则的映射,所述规则节点以其所引用的实例代表的规则的权重值和逻辑关系为排列依据排列于所述最优检测流程图上,构造所述最优检测流程图。
S2包括步骤:S21,在每个所述实例中设置有检测状态标记,所述检测状态标记用于表示待检测内容是否被相应规则检测过;S22,将权重值最高的规则节点置于所述最优检测流程图的左上角;将逻辑关系为逻辑或的规则节点按照所述权重值由高到低纵向由上向下依次排列于所述最优检测流程图上;将逻辑关系为逻辑与的规则节点按照所述权重值由高到低横向由左向右依次排列于所述最优检测流程图上;
在排列过程中的特殊过程处理:若权重值最高的规则节点没有出现在第一列中,则在保证将所述权重值最高的规则节点插入后第一列规则节点的权重值依然符合由高到低纵向由上向下依次排列的前提下,将所述权重值最高的规则节点插入第一列中的相应位置;若待排列规则节点的位置已被占用,则比较待排列规则节点的权重值和占位规则节点的权重值,如果占位规则节点的权重值大于或等于待排列规则节点的权重值,则在占位规则节点位置正下方插入一行,将待排列规则节点置入被占用位置的正下方,用有向线从上到下连接两个节点,并标记为“不满足”,然后从下侧规则节点处根据权重值从大到小继续向右依次排列;如果占位规则节点的权重小于待排列规则节点的权重值,则将占位规则节点及其右侧所有规则节点下移到新的一行中,并将待排列规则节点置入原占位规则节点的位置,用有向线从上到下连接两个规则节点,并标记为“不满足”,然后从上侧节点处根据规则继续向右依次排列规则节点;
特殊过程处理过后,应保证当前已存在的有向线指向的规则节点的权重值小于或等于有向线起始规则节点的权重值;
S23,用有向线从左到右,依次连接每两个相邻的规则节点,并标记为“满足”;S24,用有向线从上到下,依次连接每个规则节点和相邻下一行中第一列的规则节点,并标记为“不满足”;此过程不包括在S22中已构造出的有向线所属的起始规则节点;S25,根据每条所述策略中规则之间的逻辑关系,遍历每条横向有向线上的规则节点,将符合某条策略时所述有向线指向的规则节点标记为“符合策略”;如果某行中最右端的规则节点刚好符合某策略,那么在其右端构造一个虚规则节点,并将其标记为“符合策略”;S26,最优检测流程图构造完毕。
S3具体为根据S2中构造的最优检测流程图对待检测内容进行检测。
S3包括步骤:S31,将所述最优检测流程图左上角的所述规则节点设为检测起始点;S32,沿横向有向线自左向右依次用所述有向线上的规则节点所引用的实例代表的规则检测所述待检测内容,并将所述实例中的检测状态标记置为已检测过;S33,检测过程中,首先看该规则节点是否已被标记为“符合策略”,如果是,则报告检测结果并退出检测流程;如果否,则看被检测内容是否满足当前规则节点所引用的实例代表的规则,并根据检测结果按照S2构造的最优检测流程图中的有向线依次使用规则节点所引用的实例代表的规则对被检测内容进行检测,直到所述最优检测流程图的最后一行最右端的规则节点。
本发明是在多策略,每条策略含有多个规则,各个规则之间有一定逻辑关系,不同策略中可能含有重复规则的情况下对检测流程进行优化后再进行检测,不采用现有技术对待检测内容进行遍历式检测,而通过寻找出一条最优的检测方法,然后按照此最优检测方法进行快速检测的方法。
本发明首先对各个策略中的所有规则进行归并,筛选出所有策略中不重复的规则,并根据规则被策略的引用数量来确定该规则的权重,然后根据策略从权重最高的规则开始构建一张最优检测流程图,整个检测过程按照该最优检测流程图中的流程进行,以实现最优且快速的检测。
如图1,目前有3条策略,其中策略2中的所有规则及逻辑关系在策略1中也有。假设现在有内容C待检测。如果按照现有技术的检测流程(如图2所示),如果待检测内容C可以满足规则2和规则3,那么按照现有技术的检测流程将会执行4步操作,即(不满足)规则1->(满足)规则2->(满足)规则3->(报告)策略2被触发。而按照本发明优化后的检测流程(如图3所示)只需要3步操作,即(满足)规则2->(满足)规则3->(报告)策略2被触发。就可完成对待测内容的检测。
本发明优化了这种使用含有一个或多个规则的策略检测内容时的时间和空间消耗,并通过先检测大概率事件来削减检测时的开销,不仅提升了检测程序的性能同时减少了内存空间消耗,另外,在其他领域,如工作流程规划等方面也可以应用以优化流程。比如,某公司生产零件A,B,C和D,其中A和C可以组装成为一个产品P1,B,C和D可以组装成为另一个产品P2。那么在进行检验时可以先对零件C进行检测。如果不合格,那么两款产品都不用继续检查下去。因为必然两款产品都有问题。
本发明不仅优化了计算机程序中检测的机制,同时由于方法的通用性,它还可以对任意可以被拆分为多个步骤和模块的工作流程进行快速有效的优化。从而达到最高的工作效率。
下面以使用本发明提供的技术方案对一段文本内容进行检测为例详细说明本技术方案的实施过程:
根据实际检测需要制定如下十条规则:
规则1:文本中含有身份证号码
规则2:文本中含有以holystone.com.cn为后缀的邮件地址
规则3:文本中含有字符“公司”
规则4:文本中含有字符“合同”
规则5:文本中含有字符“工资”
规则6:文本中含有字符“资料”
规则7:文本中含有字符“标书”
规则8:文本中含有字符“竞标”
规则9:文本中含有以“http://”开头的文字
规则10:文本中含有以“ftp://”开头的文字
根据实际检测需要制定七条策略,每条策略所包含的规则及规则间的逻辑关系如下:
“&”表示逻辑与,“|”表示逻辑或
策略1:规则1&规则5
策略2:规则3&规则4&规则6
策略3:规则1&规则2&规则3&规则6
策略4:规则7|规则8
策略5:规则3&规则7
策略6:规则9|规则10
策略7:规则7
首先为10个规则创建10个实例I1,I 2,I 3,I 4,I5,I6,I7,I8,I9,I10;
对于10个规则,他们的权重分别为2,1,3,1,1,2,2,1,1,1;
根据权重从大到小排序后的实例为I3,I1,I6,I7,I2,I4,I5,I8,I9,I10;
引用相应实例创建规则节点:N1,N2,N 3,N4,N5,N6,N7,N8,N9,N10;
构造得到如图4所示最优检测流程图;
依照图4所示最优检测流程图对待检测文本内容进行检测。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。