CN106547878A - 基于多关键词的快速过滤方法 - Google Patents
基于多关键词的快速过滤方法 Download PDFInfo
- Publication number
- CN106547878A CN106547878A CN201610949845.4A CN201610949845A CN106547878A CN 106547878 A CN106547878 A CN 106547878A CN 201610949845 A CN201610949845 A CN 201610949845A CN 106547878 A CN106547878 A CN 106547878A
- Authority
- CN
- China
- Prior art keywords
- word
- rule
- keyword
- atomic
- key word
- 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.)
- Pending
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于多关键词的快速过滤方法。该方法通过关键词编号,结构存储,过滤规则分解成原子规则,对内容逐字进行关键词查找的步骤实现。本发明基于多关键词的快速过滤方法大大提高了关键词过滤的性能,普通单CPU执行性能大概在100W次/秒,满足了高效和迅速的内容过滤,过滤性能约是普通正则过滤的2000倍以上。
Description
技术领域
本发明涉及一种通讯词语的过滤方法,特别涉及一种基于多关键词的快速过滤方法。
背景技术
正则算法是通信过程中常用的逻辑算法,基于正则表达式,其来源可上溯至对人类神经系统如何工作的早期研究。Warren McCulloch和Walter Pitts这两位神经生理学家研究出一种数学方式来描述这些神经网络。1956年,一位叫Stephen Kleene的数学家在McCulloch和Pitts早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。随后,发现可以将这一工作应用于使用Ken Thompson的计算搜索算法的一些早期研究,Ken Thompson是Unix的主要发明人。正则表达式的第一个实用应用程序就是Unix中的qed编辑器。正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。列目录时,dir*.txt或ls*.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*的含义是不同的。正则表达式是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
在即时通信(如短信)过程中,基于内容的安全性和合法性,需要将信息里的词语进行过滤,以保证内容不违反相关法规。过滤规则涉及的关键词存在多词组合情况,存在“与”和“或”的规则。由于通信信息量大,且要保证信息的及时性,采用正则算法进行过滤,将产生严重的性能问题,而造成信息延误或积压。
发明内容
本发明的目的在于提供一种基于多关键词的快速过滤方法。
一种基于多关键词的快速过滤方法,包括如下步骤:
1)将所有关键词编号,结构存储,采用首字编码的位置索引,相同首字的关键词顺序存储。记作集合A;
2)将过滤规则分解成原子规则,原子规则即只含有单词组或“与关系”的多词组,如果原始规则中含有“或”,将被分解成多个原子规则,原子规则按照关键词编号增序排列,并对首词建立索引,相同首词的按编号增序存储,记作集合B;
3)对内容逐字进行关键词查找,在A找出内容里的不同关键词集合C,并将C集合按关键词编号进行位流标记,对集合C逐词在B中进行查找,如果B中某个首词内的规则被C包含,则内容包含这个过滤规则,过滤结束。
所述关键词规模为5000-80000个。
与现有技术相比,本发明具有如下有益效果:本发明基于多关键词的快速过滤方法大大提高了关键词过滤的性能,满足了高效和迅速的内容过滤,过滤性能约是普通正则过滤的2000倍以上。通过测试,关键词规模在10000个左右,规则在2000个,内容长度在100,普通单CPU执行性能大概在300-400次/秒,远远不能满足通信业务量的要求。采用本发明的过滤方法,普通单CPU执行性能大概在100W次/秒,大大提高了过滤性能。
附图说明
图1是本发明基于多关键词的快速过滤方法实现的逻辑流程图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
一种基于多关键词的快速过滤方法,包括如下步骤:
1)将所有关键词编号,结构存储,采用首字编码的位置索引,相同首字的关键词顺序存储。记作集合A;
2)将过滤规则分解成原子规则,原子规则即只含有单词组或“与关系”的多词组,如果原始规则中含有“或”,将被分解成多个原子规则,原子规则按照关键词编号增序排列,并对首词建立索引,相同首词的按编号增序存储,记作集合B;
3)对内容逐字进行关键词查找,在A找出内容里的不同关键词集合C,并将C集合按关键词编号进行位流标记,对集合C逐词在B中进行查找,如果B中某个首词内的规则被C包含,则内容包含这个过滤规则,过滤结束。
所述关键词规模为5000-80000个。
目前行业内对内容过滤通常采用正则规则进行过滤。正则过滤具有极高的灵活性和实用性,但在我们这个使用场景下,通用的正则过滤的几个实现工具都不能满足我们队过滤性能的要求。通过我们的测试,在关键词规模在10000个左右,规则在2000个,内容长度在100,普通单CPU执行性能大概在300-400次/秒,远远不能满足我们通信业务量的要求。采用我们自实现的过滤方法,普通单CPU执行性能大概在100W次/秒,大大提高了过滤性能。
首先,我们队规则进行的预先的原子分解,因此在实际过滤时我们不在有表达式的分析过程。假设内容长度为N,关键词规模为M,原子规则数为X,查找出的关键词集合为A。我们在进行关键词查找时,由于采用的位置索引,因此复杂度为常数级1。而在规则匹配时,复杂度A。因此整个算法复杂度为N*A。由于A在我们实际应用里,基本都是常数级的,因此整个算法大大优先于正则匹配。
以上公开的仅为本发明的具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (2)
1.一种基于多关键词的快速过滤方法,其特征在于,包括如下步骤:
1)将所有关键词编号,结构存储,采用首字编码的位置索引,相同首字的关键词顺序存储。记作集合A;
2)将过滤规则分解成原子规则,原子规则即只含有单词组或“与关系”的多词组,如果原始规则中含有“或”,将被分解成多个原子规则,原子规则按照关键词编号增序排列,并对首词建立索引,相同首词的按编号增序存储,记作集合B;
3)对内容逐字进行关键词查找,在A找出内容里的不同关键词集合C,并将C集合按关键词编号进行位流标记,对集合C逐词在B中进行查找,如果B中某个首词内的规则被C包含,则内容包含这个过滤规则,过滤结束。
2.根据权利要求1所述的基于多关键词的快速过滤方法,其特征在于,所述关键词规模为5000-80000个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610949845.4A CN106547878A (zh) | 2016-10-26 | 2016-10-26 | 基于多关键词的快速过滤方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610949845.4A CN106547878A (zh) | 2016-10-26 | 2016-10-26 | 基于多关键词的快速过滤方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106547878A true CN106547878A (zh) | 2017-03-29 |
Family
ID=58392726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610949845.4A Pending CN106547878A (zh) | 2016-10-26 | 2016-10-26 | 基于多关键词的快速过滤方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106547878A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857493A (zh) * | 2012-06-30 | 2013-01-02 | 华为技术有限公司 | 内容过滤方法和装置 |
CN105574090A (zh) * | 2015-12-10 | 2016-05-11 | 北京中科汇联科技股份有限公司 | 一种敏感词过滤方法及系统 |
-
2016
- 2016-10-26 CN CN201610949845.4A patent/CN106547878A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857493A (zh) * | 2012-06-30 | 2013-01-02 | 华为技术有限公司 | 内容过滤方法和装置 |
CN105574090A (zh) * | 2015-12-10 | 2016-05-11 | 北京中科汇联科技股份有限公司 | 一种敏感词过滤方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095755B2 (en) | Fast identification of complex strings in a data stream | |
Giugno et al. | Graphgrep: A fast and universal method for querying graphs | |
CN103150493B (zh) | 一种JavaScript代码的混淆方法和装置 | |
CN104391881B (zh) | 一种基于分词算法的日志解析方法及系统 | |
CN106874401A (zh) | 一种面向数据库加密字段模糊检索的密文索引方法 | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN104899264A (zh) | 一种多模式正则表达式匹配方法及装置 | |
CN105589894B (zh) | 文档索引建立方法和装置、文档检索方法和装置 | |
CN103164393B (zh) | 报表公式处理方法和系统 | |
CN107038026A (zh) | 一种增量式的自动机更新方法与系统 | |
CN103176905B (zh) | 一种缺陷关联方法及装置 | |
Din et al. | A stochastic stability analysis of an HBV–COVID-19 co-infection model in resource limitation settings | |
CN104035980A (zh) | 一种面向结构化医药信息的检索方法和系统 | |
CN107870935A (zh) | 一种搜索方法及装置 | |
CN106547878A (zh) | 基于多关键词的快速过滤方法 | |
CN105653567A (zh) | 一种文本序列数据中快速查找特征字符串的方法 | |
Horie et al. | Extracting differences between regular tree grammars | |
US20200380048A1 (en) | Architecture and functional model of a generic data excavation engine | |
Bhardwaj et al. | Efficient Wu Manber string matching algorithm for large number of patterns | |
CN109657120A (zh) | 一种匹配度高的互联网数据采集方法 | |
Tevatia et al. | An offensive algorithm for multi-pattern parameterized string matching | |
KR101331946B1 (ko) | 와일드카드 매칭을 이용한 검색 방법 | |
CN103885979B (zh) | 推送信息的方法和装置 | |
CN106547777A (zh) | 文章转载量的统计方法及装置 | |
CA2855398C (en) | Fast identification of complex strings in a data stream |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170329 |
|
RJ01 | Rejection of invention patent application after publication |