欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法

文檔序號:6610119閱讀:251來源:國知局
專利名稱:一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法
技術(shù)領(lǐng)域
本發(fā)明涉及內(nèi)容分析技術(shù)領(lǐng)域,具體涉及一種快速內(nèi)容分析的多關(guān) 一建詞匹配方法。
背景技術(shù)
多關(guān)鍵詞匹配(Multiple Pattern String Matching )是計算沖幾科學領(lǐng)域 中的基本問題之一。其解決的問題是快速判斷某一數(shù)據(jù)塊中是否包含關(guān)鍵 詞集合中的某一或某些關(guān)鍵詞。多關(guān)鍵詞匹配技術(shù)廣泛應(yīng)用于文本處理、 網(wǎng)絡(luò)內(nèi)容分析、入侵檢測、信息檢索和病毒檢測等領(lǐng)域。
目前涌現(xiàn)出了大量多關(guān)鍵詞匹配算法,包括Aho-Corasick[l] 、 Wu-Manber[2]和E2XB[3]等(引用的所有文獻出處位于背景技術(shù)結(jié)尾處)。這些 多關(guān)鍵詞匹配算法都存在一個理想的應(yīng)用條件,比如,Aho-Corasick算法 的最佳應(yīng)用條件為小數(shù)量短關(guān)鍵詞場合,Wu-Manber的最佳應(yīng)用條件為中 等數(shù)量長關(guān)鍵詞應(yīng)用場合,E2XB的最佳應(yīng)用為入侵檢測場合。這些多關(guān) 鍵詞匹配算法在大數(shù)量長關(guān)鍵詞應(yīng)用場合下效果并不理想,因此并不適 合實時病毒檢測類應(yīng)用場合。實時病毒檢測類應(yīng)用場合下的多關(guān)鍵詞匹 配具有如下特點l)關(guān)鍵詞數(shù)量非常大, 一般在6萬到20萬條左右;2) 關(guān)鍵詞長度一般比較大,最小為8字節(jié);3)待檢測文本長度較大,從幾 千字節(jié)到幾兆字節(jié)不等;4)待檢測文本與任何關(guān)鍵詞匹配的成功概率異 常低。
文獻[4]給出了 一種針對病毒^r測類應(yīng)用場合多關(guān)4走詞匹配特點而設(shè) 計的多關(guān)鍵詞匹配方法HASH-AV,它構(gòu)建一個可容納于現(xiàn)代CPU高速 緩存中的Bloom Filter(布隆過濾器),并巧妙設(shè)計了 一組Bloom Filte喊列函 數(shù),通過依次調(diào)用該組散列函數(shù)來實現(xiàn)當前窗口中文本串不與任一關(guān)鍵詞 匹配的快速判定。由于病毒檢查等應(yīng)用場合下,文本數(shù)據(jù)流與任一關(guān)鍵詞
匹配的概率異常低,絕大多數(shù)情況下這種基于Bloom Filter的快速判定都 是成功的,因此并不需要執(zhí)行代價昂貴的全關(guān)鍵詞比較操作。與其它關(guān)鍵 詞匹配方法相比,該關(guān)鍵詞匹配方法更多地考慮了病毒檢測領(lǐng)域獨有的特 性,在病毒檢測應(yīng)用場合表現(xiàn)出了較好的掃描速率;但該方法仍然是一種 線性的關(guān)鍵詞匹配方法,它無法實現(xiàn)文本匹配窗口的連續(xù)多字節(jié)跳躍。
技術(shù)背景中引用的文獻列表如下
1) A. V. Aho, M.丄Corasick. Efficient String Matching: An Aid to Bibliographic Search,(中文名稱 一種用于目錄搜索的高效的字符串 匹配方法)Communications of the ACM, 1975,18(6):333隱340
2) S. Wu, U. Manber. A Fast Algorithm For Multi-Pattern Searching (中文 名稱 一 種快速的多模式匹配算法).Technical Report TR-94-17, University of Arizona. 1994:1-11
3) K. G. Anagnostakis, S. Antonatos, M. Polychronakis, and E. P. Markatos.: A domain-specific string matching algorithm for intrusion detection (中文名稱 一種領(lǐng)域相關(guān)的為入侵檢測設(shè)計得多模式匹 酉己算f去).In Proceedings of IFIP International Information Security Conference (SEC'03), May 2003
4) Erdogan, O.; Pei Cao, Hash-AV: fast virus signature scanning by cache-resident filters(中文名稱HASH-AV: —種采用緩存駐留過濾器的 快速病毒特征掃描方法),Global Telecommunications Conference, 2005. GLOBECOM apos;05. IEEE Volume 3, Issue , 28 Nov,2 Dec. 2005 Page(s): 6 pp,

發(fā)明內(nèi)容
本發(fā)明目的是克服現(xiàn)有技術(shù)的上述缺點,提供一種適合于實時病毒
檢測場合的多關(guān)鍵詞匹配方法,它利用Bloom Filter (布隆過濾器)實現(xiàn) 當前窗口中文本不與任何關(guān)鍵詞匹配的快速判定,同時允許文本匹配窗口 連續(xù)多字節(jié)跳躍。
本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的
一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法,包括預處理階段和模式匹配 階段,其中,
A) 所述預處理階l殳包括以下步驟
Al、根據(jù)設(shè)定的關(guān)鍵詞特征串長度,對關(guān)鍵詞集合中各關(guān)鍵詞進行 特征串抽取;
A2、根據(jù)設(shè)定的文本匹配窗口跳躍步長,將各關(guān)鍵詞特征串分割為 多個指定長度子串,即關(guān)鍵詞特征分片;
A3、構(gòu)造一個包含多個散列函數(shù)的Bloom Filter結(jié)構(gòu)體,將分割出的 所有關(guān)鍵詞特征分片映射到Bloom Filter結(jié)構(gòu)體中;
A4、構(gòu)造一個哈希表,將分割出的所有關(guān)鍵詞特征分片映射到哈希 表各單元中,對于具有哈希值沖突的元素,用鏈表方式串接起來;
A5、構(gòu)建一個包含所有原始關(guān)鍵詞的線性表,在步驟A4中建立的關(guān) 鍵詞特征分片哈希表的各表項中包含對應(yīng)原始關(guān)鍵詞的索引號;
B) 所述模式匹配階段包括以下步驟
Bl、設(shè)置一個與關(guān)鍵詞特征分片等長度的文本匹配窗口 ,首先將文 本匹配窗口與待匹配文本左對齊;
B2、以當前文本匹配窗口中文本串為輸入,依次調(diào)用步驟A3中構(gòu)造 Bloom Filter時選擇的散列函數(shù)組,并檢查散列函數(shù)值對應(yīng)的Bloom Filter 位串中比特位值如果值為0,則直接跳躍到步驟B5執(zhí)行;如果值為l,
則繼續(xù)調(diào)用下一個散列函數(shù);如果所有散列函數(shù)對應(yīng)的Bloom Filter中的比 特位均為l,則進入步驟B3;
B3、依據(jù)文本匹配窗口中當前文本檢索關(guān)鍵詞特征分片哈希表,如 果找到匹配的關(guān)鍵詞特征分片表項,則執(zhí)行步驟B4;如果未找到任何匹 配表項,則直接跳躍到步驟B5執(zhí)行;
B4、根據(jù)關(guān)鍵詞特征分片表項中的索引號從原始關(guān)鍵詞線性表讀取 對應(yīng)的原始關(guān)鍵詞,并與當前匹配窗口處文本串進行全長度字符串比較, 如果匹配成功則報告一個成功的關(guān)鍵詞匹配事件;繼續(xù)執(zhí)行步驟B5;
B5、將當前文本匹配窗口向右移動指定跳i 夭步長,并跳;f夭到步驟B2 繼續(xù)執(zhí)行,直至整個文本掃描結(jié)束。
優(yōu)選地,本發(fā)明所述的快速內(nèi)容分析多關(guān)鍵詞匹配方法中,所述預處 理階段A的步驟A1為對于原始關(guān)鍵詞集合中各關(guān)鍵詞,抽取的關(guān)鍵詞特 征串為整個關(guān)鍵詞集合中出現(xiàn)次數(shù)最少的關(guān)鍵詞子串。
優(yōu)選地,本發(fā)明所述的快速內(nèi)容分析多關(guān)鍵詞匹配方法,在步驟A3 中構(gòu)造Bloom Filter結(jié)構(gòu)體時,為該Bloom Filter結(jié)構(gòu)體設(shè)計的散列函數(shù)組 滿足如下要求該散列函數(shù)組中各散列函數(shù)是依次調(diào)用的;依次調(diào)用的各 散列函數(shù)的計算復雜度逐次增大,均勻特性也逐次變好。
優(yōu)選地,本發(fā)明所述的快速內(nèi)容分析多關(guān)鍵詞匹配方法,在步驟A4構(gòu) 造關(guān)鍵詞特征分片哈希表時,選擇的哈希表散列函數(shù)就是步驟A3中構(gòu)造 Bloom Filter時依次調(diào)用的散列函數(shù)組中的最后一個散列函數(shù)。
由以上本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明對關(guān)鍵詞集合中各 關(guān)鍵詞進行特征串抽取后,將抽取的關(guān)鍵詞特征串分割成多個關(guān)鍵詞特征 分片,并構(gòu)建了基于關(guān)鍵詞特征分片集合的Bloom Filter,以實現(xiàn)文本掃 描過程中當前文本不與任何關(guān)鍵詞特征分片匹配的快速判定,并允許文本 匹配窗口連續(xù)多字節(jié)跳躍,從而大大加快了文本掃描速度。在同等試驗條
件下,本發(fā)明方法在選擇不同連續(xù)跳躍步長時,均比HASH-AV方法快,特 別在連續(xù)跳躍步長為3字節(jié)時,文本掃描速度比HASH-AV快1倍。本發(fā)明方 法非常適合于在線實時入侵檢測和病毒檢測等應(yīng)用場合。


圖l為將一個元素插入到Bloom Filter數(shù)據(jù)結(jié)構(gòu)的過程; 圖2為判定某元素是否屬于Bloom Filter所表示集合的過程; 圖3為本發(fā)明方法的預處理階段工作流程圖。 圖4是本發(fā)明方法的模式匹配階段的文本掃描實現(xiàn)流程圖。
具體實施例方式
本發(fā)明方法包括預處理階段和模式匹配階段。下面結(jié)合附圖詳細說 明本發(fā)明方法各個階段的具體實施步驟。
在預處理階段,本發(fā)明方法需要對原始關(guān)鍵詞集合進行預處理,并 生成幾個關(guān)鍵的數(shù)據(jù)結(jié)構(gòu),以輔助模式匹配階段的文本掃描過程。
如附圖3所示,本發(fā)明方法預處理階段的實施步驟如下
步驟301、根據(jù)設(shè)定的關(guān)鍵詞特征串長度,對關(guān)鍵詞集合中各關(guān)鍵詞 進行特征串抽耳又;
步驟302、根據(jù)設(shè)定的文本匹配窗口跳躍步長,將各關(guān)鍵詞特征串分 割為多個指定長度子串,即關(guān)鍵詞特征分片;
步驟303、構(gòu)造一個包含多個散列函數(shù)的Bloom Filter (布隆過濾器) 結(jié)構(gòu)體,將分割出的所有關(guān)鍵詞特征分片映射到Bloom Filter結(jié)構(gòu)體中;
步驟304、構(gòu)造一個哈希表,將分割出的所有關(guān)鍵詞特征分片映射到 哈希表各單元中,對于具有哈希值沖突的元素,用鏈表方式串接起來;
步驟305、構(gòu)建一個包含所有原始關(guān)鍵詞的線性表,在步驟304中建立 的關(guān)鍵詞特征分片哈希表的各表項中包含對應(yīng)原始關(guān)鍵詞的索引號。 實施例l:
假設(shè)有K個需要搜尋的原始關(guān)鍵詞,表示為P-(PhP2,.,.,P!j。在實際 應(yīng)用場合中,需要搜尋的原始關(guān)鍵詞長度是不相等的。為便于實現(xiàn)多個關(guān) 鍵詞的并行匹配,本發(fā)明需要對所有關(guān)鍵詞進行等長度裁剪,即選擇一個 關(guān)鍵詞子串長度值W,對集合P中每個原始關(guān)鍵詞Pi,將其裁剪為W字節(jié)
長度的關(guān)鍵詞子串Mi。這個裁剪出的W字節(jié)長度的關(guān)鍵詞子串Mi稱為原 始關(guān)鍵詞特征串。由抽取的各關(guān)鍵詞特征串Mi組成的集合為關(guān)鍵詞特征 串集合M。注意,在選擇關(guān)鍵詞特征串長度時,W值大小不能大于原始關(guān) 鍵詞集合中最短關(guān)鍵詞的長度。最簡單的裁剪方法為取每個關(guān)鍵詞的W字 節(jié)前綴或后綴作為原始關(guān)鍵詞的關(guān)鍵詞特征串。在文本掃描過程中,首先 判定當前文本是否與某一關(guān)鍵詞特征串匹配,如果匹配成功,則將當前文 本與整個原始關(guān)鍵詞進行匹配,以實現(xiàn)全^^式長度的精確匹配。
在構(gòu)建了關(guān)鍵詞特征串集合M后,需要對各關(guān)鍵詞特征串進一步進行 子串分割,以確保文本匹配窗口連續(xù)多字節(jié)跳躍時不會漏掉任何可能的關(guān) 鍵詞匹配事件。假設(shè)要實現(xiàn)文本匹配窗口以S字節(jié)為步長的連續(xù)跳躍,為 保證文本匹配窗口連續(xù)跳躍過程中不漏掉任何可能的關(guān)鍵詞匹配,則需要 將關(guān)鍵詞特征串集合M中各關(guān)鍵詞特征串Mi分割為S個長度為W-S+l字節(jié) 的關(guān)鍵詞特征分片Ku,Ki2,…Kis。由所有這些關(guān)鍵詞特征分片Ku,Ki2,…Kis 組成的集合為關(guān)鍵詞特征分片集合K。
關(guān)鍵詞特征分片集合K構(gòu)建完畢后,需要構(gòu)造一個包含關(guān)鍵詞特征分 片集合K中所有元素的Bloom Filter結(jié)構(gòu)體。
Bloom Filter是一個壓縮的數(shù)據(jù)結(jié)構(gòu),用來表示一個集合中所有元素, 并支持對該集合中元素的查找,即可以回答"某個元素是否屬于某個集 合?"的問題。
Bloom Filter使用長度為m的位串(bit Vector)V來表達數(shù)據(jù)元素集合 設(shè)有k個具有均勻分布特性的散列函數(shù)W,^1,…,、滿足如
下條件Vx"AW"l,2,…,^,基于BloomFilter的集合元素表示法和集合 元素查找法如下
集合元素表示方法對于集合中任一元素"',使用預先定義的k個散列 函數(shù)依次對《進行哈希,得到k個散列值化A,…WAe[1,],然后依次將 位串V的^A,'A位置L附圖l示例了將一個元素插入到Bloom Filter數(shù)據(jù) 結(jié)構(gòu)的過程(k=3)。
集合元素查找方法當需要判定某一元素"是否屬于Bloom Filter表示 的集合時,方法如下1 )使用預先定義的k個散列函數(shù)依次對元素"進行
散列運算,得到k個散列值"A,…W,^P,];然后判斷位串V的6^2,…^ 位置上是否都為l,如果都為l,則表示該元素在集合中,否則表示不在集 合中。附圖2示例了基于Bloom Filter的集合元素查找過程(即歸屬判定過程)。
基于BloomFilter實現(xiàn)集合元素查找時可能存在誤報,但是,可以通過 控制位串V的長度m來將誤報率控制在可接受的范圍之內(nèi)。
本發(fā)明基于上面描述的公知的Bloom Filter構(gòu)造方法構(gòu)造用于表示關(guān) 4囊詞特征分片集合K中所有元素的Bloom Filter:
a) 設(shè)置一個長度為v的位串V,并為該Bloom Filter選定K個散列函數(shù) Hi,H2,..Hk;
b) 對于關(guān)鍵詞特征分片集合K中各元素Kij,依次調(diào)用K個散列函數(shù) H!,H2,,.Hk,將位串V中的K個散列函數(shù)值對應(yīng)的比特位置1 。
為實現(xiàn)文本匹配窗口中文本串與候選的關(guān)鍵詞特征分片子集進行精確 匹配,本發(fā)明還為關(guān)鍵詞特征分片集合K構(gòu)造了一個哈希表。為了使得構(gòu) 造的哈希表具有較好的平衡性,需要為哈希表構(gòu)造一個均勻性較好的哈希 映射函數(shù)H。并且,所構(gòu)造的哈希映射函數(shù)H應(yīng)具有較高的計算效率,以 減少哈希表的檢索開銷。對于關(guān)鍵詞特征分片集合K中具有散列值沖突的
關(guān)鍵詞特征分片,本發(fā)明采用鏈表方式將它們串接起來,并將鏈表中元素 按字典升序排列。 .
本發(fā)明還需要構(gòu)建一個包含原始關(guān)鍵詞集合P中各關(guān)鍵詞的線性表 L,以便于文本匹配窗口中文本串與某一關(guān)鍵詞特征分片匹配成功后,能 夠讀取與該關(guān)鍵詞特征分片對應(yīng)的原始關(guān)鍵詞進行全長度的精確匹配,從 而得到最后的關(guān)鍵詞匹配結(jié)果。為使得在文本匹配窗口中文本串與某一關(guān) 鍵詞特征分片匹配成功后能夠快速找到相關(guān)的原始關(guān)鍵詞,本發(fā)明在A4 步驟中建立的關(guān)鍵詞特征分片哈希表的各表項中包含了對應(yīng)原始關(guān)鍵詞的 索引號。
在模式匹配階段,本發(fā)明將基于預處理階段構(gòu)建的數(shù)據(jù)結(jié)構(gòu)體實現(xiàn)對 待檢測文本的快速掃描。為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明,下
面結(jié)合附圖4詳細介紹本發(fā)明涉及的模式匹配過程。包括以下步驟
步驟401、設(shè)置文本匹配窗口寬度為W-S+1字節(jié),其中,W為關(guān)^t詞 特征串長度,S為文本匹配窗口跳躍步長,將文本匹配窗口與待匹配文本 左對齊;
步驟402:以當前文本匹配窗口中文本串(長度為W-S+1字節(jié))為輸 入,依次調(diào)用關(guān)鍵詞特征分片Bloom Filter中選擇的散列函數(shù)組 HhH2,…Hk,并檢查Bloom Filter位串中對應(yīng)比特位的值如果某個散列函 數(shù)Hi對應(yīng)的Bloom Filter中的比特位為0,則直接跳躍到步驟405執(zhí)行;如果 當前散列函數(shù)Hi對應(yīng)的Bloom Filter中的比特位為l,則繼續(xù)調(diào)用下一個散列 函數(shù)Hw;如果所有散列函數(shù)對應(yīng)的Bloom Filter中的比特位均為1 ,則繼續(xù) 執(zhí)行步驟403。
步驟403:基于關(guān)鍵詞特征分片哈希表中的散列函數(shù)H,對當前文本 匹配窗口中文本串進行散列運算,根據(jù)散列值定位某一關(guān)鍵詞特征分片子 鏈,并將文本匹配窗口中文本串與子鏈中各關(guān)鍵詞特征分片進行精確匹
配如果與某關(guān)鍵詞特征分片匹配成功,則繼續(xù)執(zhí)行步驟404;如果未與 子鏈中任何關(guān)鍵詞特征分片匹配成功,則直接跳躍到步驟405執(zhí)行。
步驟404:從找到的關(guān)鍵詞特征分片表項中取出原始關(guān)鍵詞索引號, 從原始關(guān)鍵詞線性表中加載對應(yīng)的原始關(guān)鍵詞,將其與當前文本匹配窗口 位置處文本串進行基于字符比較的全匹配,如果匹配成功,則報告一個成 功的原始關(guān)鍵詞匹配事件;最后,不管匹配是否成功,都繼續(xù)執(zhí)行步驟 405。
步驟405:將當前文本匹配窗口向右移動S字節(jié)(S為跳躍步長),并 跳躍到步驟402繼續(xù)執(zhí)行,直至整個待檢測文本掃描結(jié)束。
在實施本發(fā)明時,本發(fā)明所述的預處理階段A的步驟A1可以采用如 下的優(yōu)選實施方式對于關(guān)鍵詞集合?=伙1,2,..., 1^}中每一關(guān)鍵詞&,抽 取的關(guān)鍵詞特征串Iv^為整個關(guān)鍵詞集合中出現(xiàn)次數(shù)最少的關(guān)鍵詞子串。
可以采用如下方法使得抽取的關(guān)鍵詞特征串Mi為整個關(guān)鍵詞集合中 出現(xiàn)次數(shù)最少的關(guān)鍵詞子串
a) 建立一個哈希表,用于存放所有可能的長度為W的關(guān)鍵詞子串;
b) 對于任一長度為tii的原始關(guān)鍵詞Pi,可以分割出(n廣W)個長度 為W的關(guān)鍵詞子串,對于每個分割出的關(guān)鍵詞子串,首先判斷其 是否在關(guān)鍵詞子串哈希表中如果不在哈希表中,則創(chuàng)建新的關(guān) 鍵詞子串表項,并將計數(shù)器值設(shè)置為l;如果相關(guān)關(guān)鍵詞表項出 現(xiàn)在哈希表中,則將對應(yīng)表項的計數(shù)器值加l;
c) 當原始關(guān)鍵詞集合中所有關(guān)鍵詞按步驟b)處理結(jié)束后,開始為每 個原始關(guān)鍵詞選擇出現(xiàn)次數(shù)最少的關(guān)鍵詞子串,具體過程為對 于任一長度為ni的原始關(guān)鍵詞Pi,檢索關(guān)鍵詞子串哈希表,分別 統(tǒng)計其(rii-W)個長度為W字節(jié)的關(guān)鍵詞子串的計數(shù)值,選這 (nrW)個關(guān)鍵詞子串中計數(shù)值最小者為本原始關(guān)鍵詞Pi的關(guān)鍵 詞特征串。
在實施本發(fā)明時,在步驟A3構(gòu)造用于表示關(guān)鍵詞特征分片集合中所 有元素的Bloom Filter時,可以采用如下優(yōu)選方式構(gòu)造其K個散列函數(shù) HbH&.Hk:即使得構(gòu)造的散列函數(shù)組滿足如下要求該K個散列函數(shù)的計 算復雜度為H,《H2《…《Hk。
將K個散列函數(shù)的計算復雜度設(shè)置為H,《H2《…《Hk的原因在于在 判定當前文本匹配窗口中文本串是否與某一關(guān)鍵詞特征分片匹配時,這K 個散列函數(shù)是順序調(diào)用的,如果某個散列函數(shù)Hi能夠判斷當前窗口中文本 串不與Bloom Filter所表示的任何元素匹配時,后續(xù)散列函數(shù)Hw,..Hk無 需再調(diào)用;在病毒檢測等關(guān)鍵詞匹配成功概率異常低的情況下,多數(shù)情況 下只需少數(shù)幾個散列函數(shù)就可以做出當前文本串不屬于關(guān)鍵詞特征分片集 合的判定,而無需全部調(diào)用K個散列函數(shù),因此,這種將K個散列函數(shù)的 計算復雜度設(shè)置為H, <H2《...《Hk方法可以大大提高Bloom Filter判定效 率。
一般情況下,設(shè)計得比較簡單的散列函數(shù),其計算復雜度小,但其散 列值均勻性稍差,構(gòu)造出的Bloom Filter可能不是最優(yōu)的;設(shè)計得比較復 雜的散列函數(shù),其計算復雜度大,但可以獲得一個均勻性較好的散列函 數(shù),構(gòu)造出的Bloom Filter則較好。在具體實施本發(fā)明時,建議采用移位 和異或操作來構(gòu)造簡單但均勻性稍差的散列函數(shù),而采用置換和替換等操 作來構(gòu)造復雜但均勻性好的散列函數(shù)。
在實施本發(fā)明時,在步驟A4構(gòu)造關(guān)鍵詞特征分片哈希表時,為節(jié)省哈 希表檢索時間,可以直接使用步驟A3中構(gòu)造Bloom Filter時K個散列函數(shù)中 的最后一個散列函數(shù)Hk作為本關(guān)鍵詞特征分片哈希表的散列函數(shù)H,這樣 就省去了散列函數(shù)H的計算時間,加快了哈希表檢索效率。并且,由于散
列函數(shù)Hk是Bloom Filter中K個散列函數(shù)中均勻性最好的,因此,基于Hk構(gòu)
造的關(guān)鍵詞特征分片哈希表將具有較好的平衡性。
實施例2:
下面通過一個實施例對本發(fā)明整個技術(shù)方案作進一步說明。 假設(shè)關(guān)鍵詞集合為P={abcdefg, abcopq, wyzopq},待匹配文本為 bcgilmnom。
按照本發(fā)明方法的預處理過程如下
首先,確定關(guān)鍵詞特征串長度并裁減出各關(guān)鍵詞對應(yīng)的關(guān)鍵詞特征 串。這里選擇關(guān)鍵詞長度為3字節(jié),并按照關(guān)鍵詞子串最少出現(xiàn)原則選擇 各關(guān)鍵詞的特征串,最后得到的關(guān)鍵詞特征串集合為lVN(bcd, cop, wyz}。
然后,設(shè)定文本匹配窗口跳躍步長并確定關(guān)鍵詞特征分片集合。這里 選擇文本匹配窗口跳躍步長為2字節(jié),于是,可從關(guān)鍵詞特征串集合M得 到所對應(yīng)的關(guān)鍵詞特征分片集合K^bc, cd, co, op, wy, yz}。
然后,開始基于關(guān)鍵詞特征分片集合K構(gòu)造Bloom Filter。這里選擇位 串大小為128比特,并定義三個散列函數(shù)H!, H2, H3,其中Hi函數(shù)值為兩 字節(jié)整數(shù)的最尾7比特所代表的數(shù)值,H2函數(shù)值由兩字節(jié)的移位和異或操作
定義,H3基于置換和替換搡作定義。
然后,基于構(gòu)造Bloom Filter時的散列函數(shù)H3構(gòu)造關(guān)鍵詞特征分片哈 希表。該哈希表中將包含關(guān)鍵詞特征分片集合中所有元素,即K^bc, cd, co, op, wy, yz}。
最后,為原始關(guān)4建詞集合P二 {abcdefg, abcopq, wyzopq》構(gòu)造一個線性 表,并將各原始關(guān)鍵詞的索引號存儲在關(guān)鍵詞特征分片哈希表的各相關(guān)表 項中,比如,表項bc和cd中存儲原始關(guān)鍵詞abcdefg的索引號O,表項co和 op中存儲原始關(guān)鍵詞abcopq的索引號1 ,表項wy和yz中存儲原始關(guān)鍵詞 wyzopq的索引號2。
按照本發(fā)明方法的^t式匹配過程如下
首先,確定文本匹配窗口寬度為2字節(jié),將兩字節(jié)文本匹配窗口與待 匹酉己^L4^bcgilmnomA只于$ 。
對于當前文本匹配窗口中文本bc,依次調(diào)用關(guān)鍵詞特征分片Bloom Filter中的3個散列函數(shù)并判斷Bloom Filter位串中對應(yīng)比特位的取值。由于 當前文本串bc屬于關(guān)鍵詞特征分片集合K,因此,散列函數(shù)H,,H2,H3散列 值對應(yīng)比特位都為l,快速排除判定失敗。這時,需要根據(jù)散列函數(shù) H3(bc)的值檢索關(guān)鍵詞特征分片哈希表,可以找到匹配的關(guān)鍵詞特征分片 表項bc,然后根據(jù)該表項中存儲的原始關(guān)鍵詞索引號0取出原始關(guān)鍵詞 abcdefg,并與當前窗口處文本進行全匹配,匹配失?。黄ヅ浣Y(jié)束后,文 本匹配窗口向前連續(xù)跳躍2字節(jié),此時,當前窗口中文本為gi。然后,依 次調(diào)用關(guān)^l詞特征分片Bloom Filter中的3個散列函凄t并判斷位串中對應(yīng)比 特位的取值,發(fā)現(xiàn)散列函數(shù)H"gi)散列值在Bloom Filter位串對應(yīng)比特位處 的值為0,說明當前文本gi不等于關(guān)鍵詞特征分片集合中任一元素,不再 繼續(xù)調(diào)用H2, H3函數(shù),直接將文本匹配窗口向前連續(xù)跳躍2字節(jié),此時, 當前窗口文本為ln。后續(xù)的文本掃描過程與上面類似,直到整個文本掃描 完畢,整個模式匹配階段結(jié)束。
雖然通過實施例描繪了本發(fā)明,本領(lǐng)域普通技術(shù)人員知道,本發(fā)明 有許多變形和變化而不脫離本發(fā)明的精神,希望所附的權(quán)利要求包括這些 變形和變化而不脫離本發(fā)明的精神。
權(quán)利要求
1.一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法,包括預處理階段和模式匹配階段,其特征在于包括以下步驟A)所述預處理階段包括以下步驟A1、根據(jù)設(shè)定的關(guān)鍵詞特征串長度,對關(guān)鍵詞集合中各關(guān)鍵詞進行特征串抽?。籄2、根據(jù)設(shè)定的文本匹配窗口跳躍步長,將各關(guān)鍵詞特征串分割為多個指定長度子串,即關(guān)鍵詞特征分片;A3、構(gòu)造一個包含多個散列函數(shù)的Bloom Filter結(jié)構(gòu)體,將分割出的所有關(guān)鍵詞特征分片映射到Bloom Filter結(jié)構(gòu)體中;A4、構(gòu)造一個哈希表,將分割出的所有關(guān)鍵詞特征分片映射到哈希表各單元中,對于具有哈希值沖突的元素,用鏈表方式串接起來;A5、構(gòu)建一個包含所有原始關(guān)鍵詞的線性表,在步驟A4中建立的關(guān)鍵詞特征分片哈希表的各表項中包含對應(yīng)原始關(guān)鍵詞的索引號;B)所述模式匹配階段包括以下步驟B1、設(shè)置一個與關(guān)鍵詞特征分片等長度的文本匹配窗口,首先將文本匹配窗口與待匹配文本左對齊;B2、以當前文本匹配窗口中文本串為輸入,依次調(diào)用步驟A3中構(gòu)造Bloom Filter時選擇的散列函數(shù)組,并檢查散列函數(shù)值對應(yīng)的Bloom Filter位串中比特位值如果值為0,則直接跳躍到步驟B5執(zhí)行;如果值為1,則繼續(xù)調(diào)用下一個散列函數(shù);如果所有散列函數(shù)對應(yīng)的Bloom Filter中的比特位均為1,則進入步驟B3;B3、依據(jù)文本匹配窗口中當前文本檢索關(guān)鍵詞特征分片哈希表,如果找到匹配的關(guān)鍵詞特征分片表項,則執(zhí)行步驟B4;如果未找到任何匹配表項,則直接跳躍到步驟B5執(zhí)行;B4、根據(jù)關(guān)鍵詞特征分片表項中的索引號從原始關(guān)鍵詞線性表讀取對應(yīng)的原始關(guān)鍵詞,并與當前匹配窗口處文本串進行全長度字符串比較,如果匹配成功則報告一個成功的關(guān)鍵詞匹配事件;繼續(xù)執(zhí)行步驟B5;B5、將當前文本匹配窗口向右移動指定跳躍步長,并跳躍到步驟B2繼續(xù)執(zhí)行,直至整個文本掃描結(jié)束。
2. 根據(jù)權(quán)利要求l所述的快速內(nèi)容分析多關(guān)鍵詞匹配方法,其特征在 于,所述預處理階段A的步驟A1為對于原始關(guān)鍵詞集合中各關(guān)鍵詞,抽 取的關(guān)鍵詞特征串為整個關(guān)鍵詞集合中出現(xiàn)次數(shù)最少的關(guān)鍵詞子串。
3. 根據(jù)權(quán)利要求l所述的快速內(nèi)容分析多關(guān)鍵詞匹配方法,其特征在 于,在步驟A3中構(gòu)造Bloom Filter結(jié)構(gòu)體時,為該Bloom Filter結(jié)構(gòu)體設(shè)計 的散列函數(shù)組滿足如下要求該散列函數(shù)組中各散列函數(shù)是依次調(diào)用的; 依次調(diào)用的各散列函數(shù)的計算復雜度逐次增大,均勻特性也逐次變好。
4. 根據(jù)權(quán)利要求l所述的快速內(nèi)容分析多關(guān)鍵詞匹配方法,其特征在 于,在步驟A4構(gòu)造關(guān)鍵詞特征分片哈希表時,選擇的哈希表散列函數(shù)就是 步驟A3中構(gòu)造Bloom Filter時依次調(diào)用的散列函數(shù)組中的最后一個散列函
全文摘要
本發(fā)明公開了一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法。所述發(fā)明方法包括預處理階段和模式匹配階段。其中,所述的預處理階段包括關(guān)鍵詞特征串裁剪和關(guān)鍵詞特征分片集合的構(gòu)建、基于關(guān)鍵詞特征分片集合的Bloom Filte(布隆過濾器)構(gòu)造,以及原始關(guān)鍵詞集合線性表構(gòu)造,所述關(guān)鍵詞匹配階段包括依據(jù)Bloom Filter實現(xiàn)當前窗口中文本串不與任何關(guān)鍵詞特征分片匹配的快速判定;只在判定失敗情況下通過字符串比較操作實現(xiàn)與候選關(guān)鍵詞的精確匹配;將文本匹配窗口連續(xù)多字節(jié)快速跳躍。本發(fā)明充分利用了待匹配文本與關(guān)鍵詞匹配成功概率異常低的特點,可實現(xiàn)大數(shù)量關(guān)鍵詞場景下的高速匹配,非常適合病毒檢測等在線病毒掃描應(yīng)用。
文檔編號G06F17/30GK101359325SQ20071011984
公開日2009年2月4日 申請日期2007年8月1日 優(yōu)先權(quán)日2007年8月1日
發(fā)明者華東明, 葉潤國, 博 李, 胡振宇 申請人:北京啟明星辰信息技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
常德市| 陕西省| 津南区| 利津县| 新建县| 淳化县| 绥阳县| 枞阳县| 广宁县| 惠水县| 大埔区| 富裕县| 扬中市| 黎川县| 曲阜市| 咸宁市| 乌兰浩特市| 克什克腾旗| 靖江市| 荥阳市| 图木舒克市| 遂宁市| 开鲁县| 合阳县| 垣曲县| 郎溪县| 定西市| 扎赉特旗| 巴楚县| 万荣县| 昌都县| 涟源市| 郯城县| 潞城市| 元氏县| 马龙县| 称多县| 山阴县| 嵊泗县| 桦川县| 驻马店市|