本发明属于互联网信息交互,具体涉及一种高性能防绕过关键词过滤的方法及系统。
背景技术:
1、在互联网中,存在诸多场景需要向服务端提交数据,例如设置昵称,发表评论,发送弹幕和论坛发帖等,所以,服务端需要对大量数据进行识别处理。针对大量并发数据处理,关键词高效识别速度和系统响应时间是特别重要的性能指标。过滤关键词是对系统提交数据的一种检查技术手段,构建关键词库,然后判断提交的数据中能否匹配到关键词,如果能够匹配到关键词,需要对提交的数据进行处理,将匹配到的关键词屏蔽,从而得到不带有关键词等违规内容的数据,再进行发表等处理。
2、然而,通过遍历关键词库进行匹配的方式,在大量数据请求处理时,具有处理效率低的问题。另一种方法是使用优化过的有利于快速检索的结构化词库,比如树形结构,然后遍历提交的数据进行匹配,相对遍历词库内容长度大大减小,提高效率,但不能有效的识别其它字符混淆到关键词里的数据,容易被绕过。
技术实现思路
1、针对现有技术存在的缺陷,本发明提供一种高性能防绕过关键词过滤的方法及系统,可有效解决上述问题。
2、本发明采用的技术方案如下:
3、本发明提供一种高性能防绕过关键词过滤的方法,包括以下步骤:
4、步骤1,定义字符类型;
5、步骤2,将需要过滤的所有关键词生成字典树;在所述字典树中,假设任意关键词由n个字符按顺序组成,分别为:第0位置字符,第1位置字符,…,第n-1位置字符;则其在所述字典树中的表示方式为:由2n个节点按前后顺序级联形成,其中,2n个节点按前后顺序分别代表:第0位置字符的字符类型,第0位置字符,第1位置字符的字符类型,第1位置字符,…,第n-1位置字符的字符类型,第n-1位置字符;
6、步骤3,遍历需要检测的字符串,如果当前位置不存在字符,代表遍历字符串结束,检测结束;如果当前位置存在字符,读取当前字符chari,根据步骤1定义的字符类型,获得当前字符chari的字符类型typei,执行步骤4;
7、步骤4,在所述字典树中,判断能否匹配到与字符类型typei对应的节点,如果能,假设匹配到的节点为节点nodej,然后执行步骤5;如果不能,则执行步骤8;
8、步骤5,将检测状态设置为字典检测中状态,执行步骤6;
9、步骤6,在所述字典树中,定位到节点nodej的下一级直接连接的节点,表示为节点nodej+1,然后,判断节点nodej+1代表的字符是否与当前字符chari匹配,如果匹配,记录当前字符chari以及当前字符chari在字符串中的位置,然后执行步骤7;如果不匹配,则将检测状态设置为无检测状态,清空记录,字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
10、步骤7,将检测状态设置为字典检测中状态;在所述字典树中,判断节点nodej+1是否具有下一级直接连接的节点,如果没有,表示字典树完结,检测结束;如果有,返回步骤3,遍历字符串的下一个字符;
11、步骤8,判断当前的检测状态,如果为字典检测中状态,则在字典树中当前定位到的节点位置保持不变,返回步骤3,遍历字符串的下一个字符;如果为无检测状态,则字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
12、通过步骤3到步骤8,最终记录得到字符以及其在字符串中的位置,记录的各个字符按其在字符串中的位置排列后,形成字符序列,即为在被检测的字符串中,检测到的需要过滤的字符序列。
13、优选的,所述字符类型包括四种,分别为:汉字字符类型、英文字母字符类型、数字字符类型和其他字符类型。
14、优选的,所述英文字母字符类型,包括大写英文字母字符类型和小写英文字母字符类型。
15、本发明还提供一种高性能防绕过关键词过滤的系统,包括:
16、字符类型定义模块,用于定义字符类型;
17、字典树生成模块,用于将需要过滤的所有关键词生成字典树;在所述字典树中,假设任意关键词由n个字符按顺序组成,分别为:第0位置字符,第1位置字符,…,第n-1位置字符;则其在所述字典树中的表示方式为:由2n个节点按前后顺序级联形成,其中,2n个节点按前后顺序分别代表:第0位置字符的字符类型,第0位置字符,第1位置字符的字符类型,第1位置字符,…,第n-1位置字符的字符类型,第n-1位置字符;
18、防绕过关键词检测模块,用于采用以下方法,从需要检测的字符串中,识别出关键词:
19、步骤3,遍历需要检测的字符串,如果当前位置不存在字符,代表遍历字符串结束,检测结束;如果当前位置存在字符,读取当前字符chari,根据步骤1定义的字符类型,获得当前字符chari的字符类型typei,执行步骤4;
20、步骤4,在所述字典树中,判断能否匹配到与字符类型typei对应的节点,如果能,假设匹配到的节点为节点nodej,然后执行步骤5;如果不能,则执行步骤8;
21、步骤5,将检测状态设置为字典检测中状态,执行步骤6;
22、步骤6,在所述字典树中,定位到节点nodej的下一级直接连接的节点,表示为节点nodej+1,然后,判断节点nodej+1代表的字符是否与当前字符chari匹配,如果匹配,记录当前字符chari以及当前字符chari在字符串中的位置,然后执行步骤7;如果不匹配,则将检测状态设置为无检测状态,清空记录,字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
23、步骤7,将检测状态设置为字典检测中状态;在所述字典树中,判断节点nodej+1是否具有下一级直接连接的节点,如果没有,表示字典树完结,检测结束;如果有,返回步骤3,遍历字符串的下一个字符;
24、步骤8,判断当前的检测状态,如果为字典检测中状态,则在字典树中当前定位到的节点位置保持不变,返回步骤3,遍历字符串的下一个字符;如果为无检测状态,则字典树重置为初始状态,然后返回步骤3,遍历字符串的下一个字符;
25、通过步骤3到步骤8,最终记录得到字符以及其在字符串中的位置,记录的各个字符按其在字符串中的位置排列后,形成字符序列,即为在被检测的字符串中,检测到的需要过滤的字符序列。
26、本发明提供的高性能防绕过关键词过滤的方法及系统具有以下优点:
27、本发明能够高效的对字符串进行检测,准确识别出字符串中的关键词,尤其当字符串中混淆其它字符时,仍然能够识别出字符串中的关键词,防止跳字符绕过。
1.一种高性能防绕过关键词过滤的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的高性能防绕过关键词过滤的方法,其特征在于,所述字符类型包括四种,分别为:汉字字符类型、英文字母字符类型、数字字符类型和其他字符类型。
3.根据权利要求2所述的高性能防绕过关键词过滤的方法,其特征在于,所述英文字母字符类型,包括大写英文字母字符类型和小写英文字母字符类型。
4.一种高性能防绕过关键词过滤的系统,其特征在于,包括: