CN100361128C - 一种用于文本或网络内容分析的多关键词匹配方法 - Google Patents
一种用于文本或网络内容分析的多关键词匹配方法 Download PDFInfo
- Publication number
- CN100361128C CN100361128C CNB2006100008013A CN200610000801A CN100361128C CN 100361128 C CN100361128 C CN 100361128C CN B2006100008013 A CNB2006100008013 A CN B2006100008013A CN 200610000801 A CN200610000801 A CN 200610000801A CN 100361128 C CN100361128 C CN 100361128C
- Authority
- CN
- China
- Prior art keywords
- node
- state
- finite
- character
- keyword
- 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.)
- Active
Links
Images
Abstract
本发明涉及一种用于文本或网络内容分析的多关键词匹配方法,属于文本或网络内容处理技术领域。首先根据待匹配的关键词,建立以状态为节点的有限状态自动机,并记录关键词中的字符;根据字符对上述有限状态自动机进行转换,得到以字符为节点的有限状态自动机,节点总数为m+1,m为上述关键词中的字符数;将待匹配的文本或网络数据流作为以字符为节点的有限状态自动机的输入,与关键词进行匹配。本发明方法与已有的AC方法相比,没有引入任何附加计算。当关键词集合中所出现的字符数量少于最大可能字符数时,可以大大降低内存空间消耗。
Description
技术领域
本发明涉及一种用于文本或网络内容分析的多关键词匹配方法,尤其涉及一种基于有限状态自动机的高效存储的快速多关键词匹配方法,属于文本或网络内容处理技术领域。
背景技术
多关键词匹配(Multiple Pattern String Matching)是计算机科学领域中的基本问题之一。其解决的问题是快速判断某一数据块中是否包含关键词集合中的某一或某些关键词。多关键词匹配技术广泛应用于文本处理、网络内容分析、入侵检测、生物信息学、信息检索等领域。
解决快速多关键词匹配问题的经典方法之一是基于有限状态自动机的方法。该方法最初有Alfred V. Aho和Margaret J.Corasick于1975年提出,通常以发明者的名字简称为AC多关键词匹配方法。AC方法的突出优点在于其具有相同的最坏和平均性能,可用于处理各种关键词集合(例如:不等长、大规模等),是一种高性能的多关键词匹配方法。
设关键词集合为:{he,hers,his,she},其对应的有限状态自动机如图1所示。有限状态自动机中每个“状态”实际代表了一个确定的关键词前缀,例如图1中状态‘5’代表了关键词前缀‘hi’。
已有AC多关键词匹配方法的描述如下:
1)预处理阶段
实现有限状态自动机。用符号AC有限状态自动机表示。AC多关键词匹配方法的有限状态自动机实现是基于“状态”的。每个节点代表一个状态,包含256个值,对应于单字节编码时所有可能的字符。
AC多关键词匹配方法实现的图1中的有限状态自动机如图2所示。节点中的值指明了在该“状态”下对应于某一输入字符时要跳转到的下一个“状态”。例如:从图2中‘state0’节点可以得知,在状态‘0’时输入字符‘h’,则跳转到状态‘1’。
将那些代表完整关键词的“状态”及其所代表的所有关键词信息存储为自动机的输出,如图3所示。将所有节点的存储地址存储在图2所示的索引表中。
2)匹配阶段
将待匹配的文本或网络数据流以字符为单位顺序输入自动机,判断其中是否包含某一或某些关键词。匹配过程如表1所示:
表1 AC多关键词匹配方法匹配流程 |
state=0; |
i=0;while(i<m)//m是待匹配数据的长度,以字节为单位{ State_Table=Index Table[state];next_state=State_Table[T[i]];//T代表待匹配数据state=next_state;if(match(state))//在状态state是否有输出?{output;}i++;} |
AC方法的有限状态自动机的主要缺点在于存储其自动机结构需要大量内存。例如图2中的自动机,当“节点”中用4字节时表示每个值时,每个“节点”需要消耗1024字节内存。10个节点共需10240字节内存。
发明内容
本发明的目的是提出一种用于文本或网络内容分析的多关键词匹配方法,是在保持已有AC多关键词匹配方法性能前提下,降低内存空间消耗,提高缓存命中率,从而提高多关键词匹配的速度。
本发明提出的用于文本或网络内容分析的多关键词匹配方法,包括以下步骤:
本发明提出的用于文本或网络内容分析的多关键词匹配方法,包括以下步骤:
(1)根据待匹配的关键词,建立以状态为节点的有限状态自动机,并记录关键词中的字符;
(2)根据上述字符对上述有限状态自动机进行转换,得到以字符为节点的有限状态自动机,节点总数为m+1,m为上述关键词中的字符数,将所有节点的地址存储为一个索引表;
(3)将待匹配的文本或网络数据流作为上述以字符为节点的有限状态自动机的输入,与关键词进行匹配。
上述方法中,对有限状态自动机进行转换的过程包括以下步骤:
(1)将以状态为节点的有限状态自动机的所有节点中与每个字符对应的值作为以字符为节点的有限状态自动机中节点的值;
(2)将以字符为节点的有限状态自动机中所有值都相同的多个节点合并为一个节点。
本发明提出的用于文本或网络内容分析的多关键词匹配方法,与已有的AC方法相比,没有引入任何附加计算。对于单字节编码文本,当关键词集合中所出现的字符数量少于最大可能字符数256时,可以大大降低内存空间消耗。对于实际应用,关键词集合中所出现的字符数总是小于256的。设自动机的状态数为n,关键词集合中出现的字符数量为m,自动机节点中用w字节表示每个值。已有AC方法的空间消耗为:n×256×w字节,本发明方法的内存空间消耗为:n×m×w字节。内存占用降低为原来的m/256。在实际应用中,通常关键词由英文字母组成,即使全部字母都出现,空间消耗也可以降低近5倍。对于图1示例的有限状态自动机,本发明方法的有限状态自动机节点空间占用仅为已有AC方法的2.34%。
附图说明
图1为与关键词集合{he,hers,his,she}对应的有限状态自动机示意图。
图2为与关键词集合{he,hers,his,she}对应的AC有限状态自动机示意图。
图3为与关键词集合{he,hers,his,she}对应的有限状态自动机的输出示意图。
图4为与关键词集合{he,hers,his,she}对应的本发明的有限状态自动机示意图。
具体实施方式
本发明提出的用于文本或网络内容分析的多关键词匹配方法,首先根据待匹配的关键词,建立以状态为节点的有限状态自动机,并记录关键词中的字符;根据上述字符对上述有限状态自动机进行转换,得到以字符为节点的有限状态自动机,节点总数为m+1,m为上述关键词中的字符数,将所有节点的地址存储为一个索引表;将待匹配的文本或网络数据流作为以字符为节点的有限状态自动机的输入,与关键词进行匹配。
上述方法中,对有限状态自动机进行转换的过程为:首先将以状态为节点的有限状态自动机的所有节点中与每个字符对应的值作为以字符为节点的有限状态自动机中节点的值;然后将以字符为节点的有限状态自动机中所有值都相同的多个节点合并为一个节点。
以下结合附图,详细介绍本发明方法的原理和过程:
图1所示的有限状态自动机,其AC有限状态自动机如图2所示。将AC有限状态自动机中所有节点中与每个字符对应的值作为以字符为节点的有限状态自动机中节点的值。例如,对于字符‘i’,AC有限状态自动机中所有节点中与其对应的值为:0(状态0),5(状态1),...,0(状态9)。将这10个值按照状态递增排列,作为以字符为节点的有限状态自动机中节点的值,如图4中节点‘i’。以字符为节点的有限状态自动机中节点的值指明了在该“输入字符”下对应于某一状态时要跳转到的下一个“状态”。例如:输入字符为‘h’,当前状态为‘0’时,则跳转到状态‘1’。
在AC有限状态自动机中,对于在关键词集合中未出现的字符,其在所有节点中对应的值都是相同的。因此在转换后的以字符为节点的有限状态自动机中在关键词集合中未出现的字符对应的节点,其值完全相同,将这些节点合并为一个节点,如图4中“其它”节点。将所有节点的地址存储在图4的索引表中。图2所示的AC有限状态自动机,转换成的以字符为节点的有限状态自动机如图4所示。
设有关键词集合P={p1,p2,...,pa},将以状态为节点的有限状态自动机转换为以字符为节点的有限状态自动机的过程可以如表2所示实现:
表2将以状态为节点的有限状态自动机转换为以字符为节点的有限状态自动机的过程 |
NewPrerocess(P,CL) |
以字符为节点的有限状态自动机建立之后,将待匹配的文本或网络数据流以字符为单位顺序输入以字符为节点的有限状态自动机,与关键词进行匹配。匹配过程可以如表3所示:
表3以字符为节点的有限状态自动机的匹配流程 |
state=0;i=0;while(i<m)//m是待匹配数据的长度,以字节为单位{State_Table=Index Table[T[i]];next_state=State_Table[state];//T代表待匹配数据state=next_Stare;if(match(state))//在状态state是否有输出?(output;)i++;{ |
Claims (2)
1、一种用于文本或网络内容分析的多关键词匹配方法,其特征在于该方法包括以下步骤:
(1)根据待匹配的关键词,建立以状态为节点的有限状态自动机,并记录关键词中的字符;
(2)根据上述字符对上述有限状态自动机进行转换,得到以字符为节点的有限状态自动机,节点总数为m+1,m为上述关键词中的字符数,将所有节点的地址存储为一个索引表;
(3)将待匹配的文本或网络数据流作为上述以字符为节点的有限状态自动机的输入,与关键词进行匹配。
2、如权利要求1所述的方法,其特征在于其中所述的对有限状态自动机进行转换的过程包括以下步骤:
(1)将以状态为节点的有限状态自动机的所有节点中与每个字符对应的值作为以字符为节点的有限状态自动机中节点的值;
(2)将以字符为节点的有限状态自动机中所有值都相同的多个节点合并为一个节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100008013A CN100361128C (zh) | 2006-01-13 | 2006-01-13 | 一种用于文本或网络内容分析的多关键词匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100008013A CN100361128C (zh) | 2006-01-13 | 2006-01-13 | 一种用于文本或网络内容分析的多关键词匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1801152A CN1801152A (zh) | 2006-07-12 |
CN100361128C true CN100361128C (zh) | 2008-01-09 |
Family
ID=36811155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100008013A Active CN100361128C (zh) | 2006-01-13 | 2006-01-13 | 一种用于文本或网络内容分析的多关键词匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100361128C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100495407C (zh) * | 2007-05-18 | 2009-06-03 | 北京哲安科技有限公司 | 一种多字符串匹配方法和芯片 |
CN101876986B (zh) * | 2009-11-27 | 2012-11-21 | 福建星网锐捷网络有限公司 | 基于有限状态自动机的字符串匹配方法及内容过滤设备 |
CN102521357A (zh) * | 2011-12-13 | 2012-06-27 | 曙光信息产业(北京)有限公司 | 一种利用自动机实现文本精确匹配的系统和方法 |
CN106156006B (zh) * | 2016-07-05 | 2019-07-23 | 尼玛扎西 | 藏文字成分分析方法、藏文排序方法以及对应装置 |
CN106487803A (zh) * | 2016-11-10 | 2017-03-08 | 深圳市任子行科技开发有限公司 | 用于大流量网络入侵检测系统的模式匹配算法和系统 |
CN108133052A (zh) * | 2018-01-18 | 2018-06-08 | 广州汇智通信技术有限公司 | 一种多关键字的搜索方法、系统、介质及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6073098A (en) * | 1997-11-21 | 2000-06-06 | At&T Corporation | Method and apparatus for generating deterministic approximate weighted finite-state automata |
US6856981B2 (en) * | 2001-09-12 | 2005-02-15 | Safenet, Inc. | High speed data stream pattern recognition |
-
2006
- 2006-01-13 CN CNB2006100008013A patent/CN100361128C/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6073098A (en) * | 1997-11-21 | 2000-06-06 | At&T Corporation | Method and apparatus for generating deterministic approximate weighted finite-state automata |
US6856981B2 (en) * | 2001-09-12 | 2005-02-15 | Safenet, Inc. | High speed data stream pattern recognition |
Non-Patent Citations (2)
Title |
---|
字符串匹配的自动机方法. 王世昌.Computer Applications. 1996 * |
改进的中文字串多模式匹配算法. 沈洲,王永成,刘功申.情报学报,第21卷第1期. 2002 * |
Also Published As
Publication number | Publication date |
---|---|
CN1801152A (zh) | 2006-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107463666B (zh) | 一种基于文本内容的敏感词过滤方法 | |
US5655129A (en) | Character-string retrieval system and method | |
US6470347B1 (en) | Method, system, program, and data structure for a dense array storing character strings | |
CN106852185B (zh) | 基于字典的并行压缩编码器 | |
CN101630323B (zh) | 确定自动机的空间压缩方法 | |
CN100361128C (zh) | 一种用于文本或网络内容分析的多关键词匹配方法 | |
CN112784127B (zh) | 多字符串模式匹配方法、装置、计算机设备及存储介质 | |
CN102867049B (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
Kilichev et al. | Errors in SMS to hide short messages | |
US20100057809A1 (en) | Information storing/retrieving method and device for state transition table, and program | |
CN101377816B (zh) | 匹配规则包含位移指示符的并行多模式匹配的方法及系统 | |
CN101388044A (zh) | 匹配规则包含或运算符的并行多模式匹配的方法及系统 | |
JP2009098952A (ja) | 情報検索システム | |
CN109446198B (zh) | 一种基于双数组的trie树节点压缩方法及装置 | |
WO2010043117A1 (zh) | 一种数字编码方法及其应用 | |
JP5120263B2 (ja) | パターンマッチング装置及び方法 | |
CN101677318A (zh) | 匹配规则包含次数指示符的并行多模式匹配的方法及系统 | |
CN101576877A (zh) | 一种快速分词的实现方法 | |
JPH10261969A (ja) | データ圧縮方法および装置 | |
CN111884659B (zh) | 一种fst数据的压缩方法和装置 | |
Ristov et al. | Ziv Lempel compression of huge natural language data tries using suffix arrays | |
CN117290523B (zh) | 基于动态索引表的全文检索方法及装置 | |
El-Khoribi et al. | An intelligent system based on statistical learning for searching in arabic text | |
CN116150442B (zh) | 一种基于tcam的网络数据检测方法和设备 | |
CN113419742B (zh) | 一种字符串编码和查找方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |