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

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

文檔序號:6570449閱讀:1369來源:國知局

專利名稱::快速內(nèi)容分析的多關(guān)鍵詞匹配方法
技術(shù)領(lǐng)域
:本發(fā)明屬于內(nèi)容分析領(lǐng)域,特別涉及一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法。
背景技術(shù)
:多關(guān)鍵詞匹配(KeywordsMatching)有時(shí)也稱為多模式匹配(MultiplePatternMatching)或者字典匹配(DirectoryMatching、SetMatching),是一個(gè)經(jīng)典的算法問題,它研究從大量數(shù)據(jù)中快速匹配多個(gè)關(guān)鍵詞(多個(gè)模式)的技術(shù)。關(guān)鍵詞匹配算法根據(jù)對文本還是模式進(jìn)行預(yù)先處理分為索引方案和非索引方案。索引方案可以對文本先進(jìn)行預(yù)先處理,再進(jìn)行關(guān)鍵詞匹配。我們主要考慮是非索引方案。這種方案由于不需要對搜索文本進(jìn)行預(yù)處理,所以是網(wǎng)絡(luò)信息監(jiān)控系統(tǒng)的核心算法。到2002年,研究報(bào)告表明算法只能處理1Gbps帶寬的數(shù)據(jù)。但是網(wǎng)絡(luò)帶寬發(fā)展速度遠(yuǎn)遠(yuǎn)快于計(jì)算機(jī)硬件發(fā)展速度,實(shí)時(shí)信息檢測必須同時(shí)依靠算法改進(jìn)和硬件發(fā)展。當(dāng)前G帶寬網(wǎng)絡(luò)下信息監(jiān)控、入侵檢測系統(tǒng)還沒有很好的方案。在保證較低誤報(bào)率和漏報(bào)率下有效處理網(wǎng)絡(luò)數(shù)據(jù)流的問題還需要進(jìn)一步研究。
發(fā)明內(nèi)容本發(fā)明的目的在于,提供一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法,該方法能夠快速處理大量關(guān)鍵詞。本發(fā)明一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法,是一種基于哈夫曼編碼的多關(guān)鍵詞匹配算法;其特征在于,包括如下步驟1)對關(guān)鍵詞進(jìn)行預(yù)處理;2)根據(jù)字符在關(guān)鍵詞中出現(xiàn)的概率,建立每個(gè)字符的哈夫曼編碼,然后把每個(gè)關(guān)鍵詞編碼為一個(gè)整數(shù);3)使用全部關(guān)鍵詞建立一張檢測表;4)對文本進(jìn)行掃描;5)使用該檢測表,快速的進(jìn)行文本內(nèi)容分析。其中步驟4)所述的對文本進(jìn)行掃描哈夫曼從左往右一邊掃描文本一邊把這部分文本編碼為一個(gè)整數(shù),再使用一個(gè)檢測表來判斷是否匹配了任何一個(gè)關(guān)鍵詞。具體實(shí)施例方式我們設(shè)計(jì)的一種基于哈夫曼編碼的多關(guān)鍵詞匹配(Huff-Match)算法是基于曼編碼編碼方式(Huffmancode)的多關(guān)鍵詞匹配算法。在預(yù)處理階段,Huff-Match先根據(jù)字符在關(guān)鍵詞中出現(xiàn)的概率,建立每個(gè)字符的Huffman編碼,然后把每個(gè)關(guān)鍵詞編碼為一個(gè)整數(shù)。在掃描階段,Huff-Match從左往右一邊掃描文本一邊把這部分文本編碼為一個(gè)整數(shù)。再使用一個(gè)檢測表來判斷是否匹配了任何一個(gè)關(guān)鍵詞。由于文本任何一個(gè)位置的編碼整數(shù)很容易從前面位置的編碼計(jì)算出來,所以Huff-Match能夠快速處理大量關(guān)鍵詞。在實(shí)際實(shí)現(xiàn)算法時(shí),有一檢測表不能太大,所以我們只取編碼的一部分來運(yùn)算,但是最后使用嚴(yán)格匹配來確認(rèn)關(guān)鍵詞的出現(xiàn)。Huff-Match算法最接近的前人工作是SumKim算法。這個(gè)算法使用簡單的編碼同時(shí)對關(guān)鍵詞和文本進(jìn)行壓縮。Huff-Match則使用Huffmancode來壓縮關(guān)鍵詞,但是不需要對全部文本進(jìn)行編碼。同時(shí)Huff-Match工作原來類似于Commentz-Walteralgorithm,是從右往左編碼關(guān)鍵詞的,而SumKim算法沒有使用跳躍思想,它是從從左往右編碼關(guān)鍵詞和文本的。由于Huff-Match同時(shí)使用壓縮技術(shù)和跳躍思想,所以它具有更好的性能。我們使用∑表示字符集合,使用∑*表示字符串(模式),P∈(∑*)*表示多關(guān)鍵詞集合,t表示文本,我們使用ti..i+j表示從i到i+j的文本;pi表示模式串。n=|t|,m=|pi|表示的t,pi的長度。r=|P|表示集合P的大小,即關(guān)鍵詞個(gè)數(shù)。pi表示一個(gè)關(guān)鍵詞,w表示機(jī)器字的字節(jié)數(shù)(對于32位機(jī)器,則是4)。為了描述算法方便,假設(shè)所有關(guān)鍵詞長度相同即|pi|=n;多模式匹配問題就是在文本x中,查詢{p1,p2…pr}的全部出現(xiàn)位置。當(dāng)前多模式匹配問題可以認(rèn)為屬于串處理(StringProcessing)和組合模式匹配(CombinatorialPatternMatching)。Huff-Match算法描述Huff-Match分為預(yù)處理關(guān)鍵詞階段和執(zhí)行掃描匹配兩個(gè)階段。在現(xiàn)實(shí)網(wǎng)絡(luò)信息監(jiān)控中,由于關(guān)鍵詞集合固定不變,所以預(yù)處理只進(jìn)行一次,但是可以在多次文本匹配中重復(fù)使用。所以考慮算法性能時(shí),一般不計(jì)算預(yù)處理的時(shí)間。為了描述算法簡單,我們假定所有關(guān)鍵詞的長度是相等。預(yù)處理關(guān)鍵詞階段我們建立了Huffman樹,從而得到了CodeTable數(shù)組后,我們也就知道了任何一個(gè)字符的編碼和編碼長度。從而我們可以把任何一個(gè)關(guān)鍵詞編碼成一個(gè)整數(shù)。在table3中描述的算法就是把任何字符串編碼為一個(gè)整數(shù)的算法。注意的是這個(gè)算法是從右往左對字符串進(jìn)行編碼,同時(shí)我們沒有考慮溢出處理。使用編碼算法我們把全部關(guān)鍵詞集合P變換為一個(gè)整數(shù)集合I。實(shí)施例設(shè)P={“chin”,”tech”,”echo”},則整數(shù)集合I={4073,625,78}.table2中描述了每個(gè)關(guān)鍵詞和它的編碼整數(shù)。將來在掃描匹配階段,當(dāng)我們從左往右掃描文本時(shí)候,我們希望能夠快速的判斷當(dāng)前文本的編碼整數(shù)是不是出現(xiàn)在關(guān)鍵詞的編碼整數(shù)集合I中,所以我們在預(yù)處理階段定義一個(gè)檢測表CheckTable。由于Huffman編碼是唯一可譯碼的編碼,所以任何不同的字符串編碼成的整數(shù)一定是不同的。因此在理想情況下,CheckTable表中是不會(huì)有任何沖突情況的。我們定義如果關(guān)鍵詞i的整數(shù)編碼是k,則CheckTable[k]等于i+1;如果CheckTable的下標(biāo)不在編碼整數(shù)集合I,則相應(yīng)的項(xiàng)為0。掃描匹配階段前面定義了關(guān)鍵詞長度為相等的m,每個(gè)關(guān)鍵詞可以由一個(gè)整數(shù)編碼表示,同時(shí)這個(gè)整數(shù)編碼集合可以使用CheckTable快速判定。下面我們將描述從左往右掃描匹配文本的過程。首先我們判斷當(dāng)前字符的編碼長度是否小于0,如果小于0,則可以跳躍下面一段文本。如果需要編碼,我們則總右往左把當(dāng)前文本編碼為一個(gè)整數(shù)。如果k表示對ti..i+m的編碼整數(shù),則如果CheckTable[k]大于0,我們知道PcheckTable[k]-1就是當(dāng)前位置出現(xiàn)的關(guān)鍵詞。如果CheckTable[k]等于0,我們就可以繼續(xù)掃描文本。為了快速計(jì)算后一個(gè)位置的文本編碼整數(shù),我們可以使用下面這個(gè)遞推公式。定義F(i)文本ti.i+m-1的編碼整數(shù);H(i)文本ti的Huffman編碼;“+”按位聯(lián)接兩個(gè)整數(shù),形成新整數(shù);“-“按位清除一個(gè)整數(shù)的多少位由于F(i)=H(i+m-1)+H(i+m-2)+...+H(i+1)+H(i)又因?yàn)镕(i+1)=H(i+m)+H(i+m-1)+...+H(i+2)++H(i+1);所以F(i+1)=F(i)-H(i)+H(i+m);因此ti+1..i+1+m-1的編碼整數(shù)可以快速地從ti.i+m-1計(jì)算出來。這樣可以加快對必須編碼文本的編碼速度。我們知道,Boyer-Moore算法使用窗口來掃描文本。對窗口中的每一個(gè)位置,我們可以計(jì)算可以直接跳躍的距離。Huff-Match算法也采用了類似的做法。主要思想是當(dāng)掃描到文本某個(gè)位置的時(shí)候,判斷當(dāng)前的字符是否是關(guān)鍵詞中的字符,如果這個(gè)字符根本不在關(guān)鍵詞集合中,也就是說這個(gè)字符的Huffman編碼長度等于-1,我們則可以在文本中安全移動(dòng)整個(gè)關(guān)鍵詞的長度。下面Table4是掃描階段的例子代碼。在具體實(shí)現(xiàn)Huff-Match算法的時(shí)候,還需要注意這兩個(gè)問題。首先,如果關(guān)鍵詞或者文本中任何一個(gè)部分的編碼整數(shù)大于一個(gè)機(jī)器字長,則table4中的變量now_code將會(huì)溢出。我們采用的解決方法是限制Huffman編碼的最大長度。因?yàn)镠uff-Match算法主要適合關(guān)鍵詞比較短的情況,所以對于過長的編碼,我們只取它的最后幾位。第二個(gè)問題是,如果CheckTable很大,那么就需要考慮Cache的問題,所以我們需要限定表的大小。同時(shí)考慮到關(guān)鍵詞可能長度不同,在關(guān)鍵詞最短長度內(nèi),兩個(gè)關(guān)鍵詞完全相同??紤]這個(gè)問題,實(shí)際實(shí)現(xiàn)算法的時(shí)候我們對長的關(guān)鍵詞只取它的前面部分,計(jì)算Huffman編碼。然后在CheckTable中使用”鏈地址法”解決散列沖突和關(guān)鍵詞前面部分相同。使用本發(fā)明的方法,提高了內(nèi)容分析系統(tǒng)的性能。本發(fā)明適用于高性能網(wǎng)絡(luò)信息過濾、入侵檢測、信息監(jiān)控、病毒檢測等領(lǐng)域。權(quán)利要求1.一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法,是一種基于哈夫曼編碼的多關(guān)鍵詞匹配算法;其特征在于,包括如下步驟1)對關(guān)鍵詞進(jìn)行預(yù)處理;2)根據(jù)字符在關(guān)鍵詞中出現(xiàn)的概率,建立每個(gè)字符的哈夫曼編碼,然后把每個(gè)關(guān)鍵詞編碼為一個(gè)整數(shù);3)使用全部關(guān)鍵詞建立一張檢測表;4)對文本進(jìn)行掃描;5)使用該檢測表,快速的進(jìn)行文本內(nèi)容分析。2.按權(quán)利要求1所述的快速內(nèi)容分析的多關(guān)鍵詞匹配方法,其特征在于,其中步驟4)所述的對文本進(jìn)行掃描哈夫曼從左往右一邊掃描文本一邊把這部分文本編碼為一個(gè)整數(shù),再使用一個(gè)檢測表來判斷是否匹配了任何一個(gè)關(guān)鍵詞。全文摘要本發(fā)明一種快速內(nèi)容分析的多關(guān)鍵詞匹配方法,包括如下步驟1)對關(guān)鍵詞進(jìn)行預(yù)處理;2)根據(jù)字符在關(guān)鍵詞中出現(xiàn)的概率,建立每個(gè)字符的哈夫曼編碼,然后把每個(gè)關(guān)鍵詞編碼為一個(gè)整數(shù);3)使用全部關(guān)鍵詞建立一張檢測表;4)對文本進(jìn)行掃描;5)使用該檢測表,快速的進(jìn)行文本內(nèi)容分析。它能根據(jù)關(guān)鍵詞中的每個(gè)字的出現(xiàn)頻率,進(jìn)行動(dòng)態(tài)調(diào)整,從而提高多關(guān)鍵詞匹配的速度。與傳統(tǒng)的文件內(nèi)容分析相比,本發(fā)明的特點(diǎn)是針對大量短關(guān)鍵詞集合設(shè)計(jì)了新的基于哈夫曼編碼的多關(guān)鍵詞匹配算法(Huff-Match)。使用這種新算法,提高了內(nèi)容分析系統(tǒng)的性能。本發(fā)明適用于高性能網(wǎng)絡(luò)信息過濾、入侵檢測、信息監(jiān)控、病毒檢測等領(lǐng)域。文檔編號G06F12/14GK1508721SQ0215788公開日2004年6月30日申請日期2002年12月20日優(yōu)先權(quán)日2002年12月20日發(fā)明者譚建龍,卜東波,張鑫,余智華,郭莉申請人:中國科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
曲麻莱县| 梁平县| 兴安盟| 准格尔旗| 黄大仙区| 同德县| 大英县| 惠州市| 娱乐| 桂东县| 固镇县| 金堂县| 镇安县| 腾冲县| 象州县| 丰顺县| 隆安县| 博罗县| 启东市| 崇阳县| 巴林右旗| 自治县| 咸宁市| 彩票| 松阳县| 都安| 乌鲁木齐县| 邹城市| 海门市| 驻马店市| 宁城县| 石阡县| 富宁县| 高邑县| 晋城| 城步| 大竹县| 林州市| 杭锦后旗| 四子王旗| 德州市|