專利名稱:一種海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)檢索技術(shù)領(lǐng)域,尤其涉及一種海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)的普及和TOB2.0技術(shù)的興起,用戶生成內(nèi)容開始充斥著互聯(lián)網(wǎng),而移動(dòng)互聯(lián)網(wǎng)的蓬勃興起將加速這一趨勢(shì)。每個(gè)人都可以方便的發(fā)布自己的觀點(diǎn),互聯(lián)網(wǎng)已經(jīng)成為最有影響力的新媒體,但是帶來的問題是惡意的人會(huì)發(fā)布非法的內(nèi)容,比如政治、色情的內(nèi)容。為了凈化互聯(lián)網(wǎng),有必要對(duì)用戶生成內(nèi)容進(jìn)行審查,但是在每個(gè)人都可以方便的產(chǎn)生內(nèi)容的情況下,人工審核顯然不可能,工作量太大。一個(gè)可行的方法是維護(hù)一份詞表, 包含非法內(nèi)容的核心關(guān)鍵詞或短語,稱為關(guān)鍵詞表。使用程序來查找用戶生成內(nèi)容的關(guān)鍵詞,這樣仍然需要極大的計(jì)算能力,本發(fā)明提出一種新的實(shí)現(xiàn)快速掃描關(guān)鍵詞的方法。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法,用以在海量文本數(shù)據(jù)快速查找關(guān)鍵詞。為了上述目的,本發(fā)明提出的技術(shù)方案是,一種海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法,其特征是所述方法包括步驟1 設(shè)定關(guān)鍵詞;步驟2 對(duì)設(shè)定的關(guān)鍵詞進(jìn)行預(yù)處理,生成第一哈希數(shù)據(jù)結(jié)構(gòu)和第二哈希數(shù)據(jù)結(jié)構(gòu);步驟3 對(duì)文本進(jìn)行掃描,獲取其中的關(guān)鍵詞。所述步驟2具體包括如下步驟步驟21 取每個(gè)關(guān)鍵詞的第一個(gè)字符,計(jì)算所述字符的哈希值;步驟22 建立所述哈希值到關(guān)鍵詞長度的映射,記為第一映射;步驟23 將第一映射裝載到哈希數(shù)據(jù)結(jié)構(gòu)中,從而生成第一哈希數(shù)據(jù)結(jié)構(gòu);步驟M 將長度相同的關(guān)鍵詞放入同一個(gè)集合中,記為同長度關(guān)鍵詞集合;步驟25 建立關(guān)鍵詞長度到同長度關(guān)鍵詞集合的映射,記為第二映射;步驟沈?qū)⒌诙成溲b載到哈希數(shù)據(jù)結(jié)構(gòu)中,從而生成第二哈希數(shù)據(jù)結(jié)構(gòu)。所述步驟3具體包括步驟31 設(shè)定文本中字符串的位置為pos,且pos = 1 ;步驟32 取文本中的第pos個(gè)位置的字符并計(jì)算其哈希值;步驟33 判斷第一哈希數(shù)據(jù)結(jié)構(gòu)中,是否找到計(jì)算出的哈希值,如果是,則執(zhí)行步驟34;否則,執(zhí)行步驟38;步驟34 根據(jù)計(jì)算出的哈希值,找到與其對(duì)應(yīng)的關(guān)鍵詞長度;
步驟35 針對(duì)每個(gè)關(guān)鍵詞長度,從第pos個(gè)位置開始,向后截取與關(guān)鍵詞長度相等的子串;步驟36 判斷第二哈希數(shù)據(jù)結(jié)構(gòu)中,是否找到截取的子串,如果是,則執(zhí)行步驟 37 ;否則,執(zhí)行步驟38 ;步驟37 截取的子串就是要查找的關(guān)鍵詞;步驟38 判斷第pos個(gè)位置是否是文本的最后一個(gè)字符位置,如果是,則執(zhí)行步驟 39 ;否則,令pos = pos+Ι,返回步驟32 ;步驟39:查找結(jié)束。本發(fā)明提升了在海量文本數(shù)據(jù)中查找給定關(guān)鍵詞表的速度,節(jié)省計(jì)算資源。
圖1是海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法流程圖;圖2是對(duì)設(shè)定的關(guān)鍵詞進(jìn)行預(yù)處理流程圖;圖3是第一映射表;圖4是第二映射表;圖5是對(duì)文本進(jìn)行掃描并獲取其中的關(guān)鍵詞流程圖。
具體實(shí)施例方式下面結(jié)合附圖,對(duì)優(yōu)選實(shí)施例作詳細(xì)說明。應(yīng)該強(qiáng)調(diào)的是,下述說明僅僅是示例性的,而不是為了限制本發(fā)明的范圍及其應(yīng)用。實(shí)施例設(shè)定本實(shí)施例中給出的文本包含的字符串是‘She enters into the garden forplanting,,。圖1是海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法流程圖,圖1中,本發(fā)明提供的方法包括步驟1:設(shè)定關(guān)鍵詞。關(guān)鍵詞根據(jù)實(shí)際需要設(shè)定。在本發(fā)明中,設(shè)定關(guān)鍵詞包括“enter”、“plant”、 “ come,,、“ go,,和“ enhance ”。本發(fā)明就是在上述文本字符串中查找這幾個(gè)關(guān)鍵詞。步驟2 對(duì)設(shè)定的關(guān)鍵詞進(jìn)行預(yù)處理,生成第一哈希數(shù)據(jù)結(jié)構(gòu)和第二哈希數(shù)據(jù)結(jié)構(gòu)。圖2是對(duì)設(shè)定的關(guān)鍵詞進(jìn)行預(yù)處理流程圖,圖2中,針對(duì)設(shè)定的上述5個(gè)關(guān)鍵詞的預(yù)處理過程是步驟21 取每個(gè)關(guān)鍵詞的第一個(gè)字符,計(jì)算所述字符的哈希值。本步驟的目的是為了將關(guān)鍵詞的第一個(gè)字符轉(zhuǎn)換為整數(shù)數(shù)值。將字符轉(zhuǎn)換成整數(shù)摘要的算法有很多,在本實(shí)施例中,將字符在英文字母表中的位置,作為該字符的整數(shù)數(shù)值,即哈希值。如字符“a”的哈希值為1,字符“b”的哈希值為2,依次類推。根據(jù)上述計(jì)算規(guī)則,步驟1設(shè)定的關(guān)鍵詞“拙切1~,,、“?13壯,,、“(01^,,、“80,,和 "enhance"的第一個(gè)字符的哈希值分別為5、16、3、7和5。步驟22 建立所述哈希值到關(guān)鍵詞長度的映射,記為第一映射。
步驟1 設(shè)定的關(guān)鍵詞 “enter”、“plant”、“C0me”、“g0” 和 “enhance” 的長度分別為 5、5、4、2 和 7。建立哈希值到關(guān)鍵詞長度的映射形成的映射表如圖3所示。步驟23 將第一映射裝載到哈希數(shù)據(jù)結(jié)構(gòu)中,從而生成第一哈希數(shù)據(jù)結(jié)構(gòu)。步驟M 將長度相同的關(guān)鍵詞放入同一個(gè)集合中,記為同長度關(guān)鍵詞集合。在設(shè)定的關(guān)鍵詞“enter,,、“plant,,、“come,,、“go”和“enhance” 中,“enter” 和 “plant”的長度相同,均為5,因此將“enter”和“plant”放入同一個(gè)集合{enter, plant} 中,該集合為同長度關(guān)鍵詞集合。步驟25 建立關(guān)鍵詞長度到同長度關(guān)鍵詞集合的映射,記為第二映射。第二映射表如圖4所示。步驟沈?qū)⒌诙成溲b載到哈希數(shù)據(jù)結(jié)構(gòu)中,從而生成第二哈希數(shù)據(jù)結(jié)構(gòu)。步驟3 對(duì)文本進(jìn)行掃描,獲取其中的關(guān)鍵詞。圖5是對(duì)文本進(jìn)行掃描并獲取其中的關(guān)鍵詞流程圖。圖5中,對(duì)文本進(jìn)行掃描并獲取其中的關(guān)鍵詞包括步驟31 設(shè)定文本中字符串的位置為pos,且pos = 1。步驟32 取文本中的第pos個(gè)位置的字符并計(jì)算其哈希值。步驟33 判斷第一哈希數(shù)據(jù)結(jié)構(gòu)中,是否找到計(jì)算出的哈希值,如果是,則執(zhí)行步驟34;否則,執(zhí)行步驟38。步驟34 根據(jù)計(jì)算出的哈希值,找到與其對(duì)應(yīng)的關(guān)鍵詞長度。步驟35 針對(duì)每個(gè)關(guān)鍵詞長度,從第pos個(gè)位置開始,向后截取與關(guān)鍵詞長度相等的子串。步驟36 判斷第二哈希數(shù)據(jù)結(jié)構(gòu)中,是否找到截取的子串,如果是,則執(zhí)行步驟 37 ;否則,執(zhí)行步驟38。步驟37 截取的子串就是要查找的關(guān)鍵詞。步驟38 判斷第pos個(gè)位置是否是文本的最后一個(gè)字符位置,如果是,則執(zhí)行步驟 39 ;否則,令pos = pos+Ι,返回步驟32。步驟39:查找結(jié)束。為了使步驟3的過程更加清晰,本發(fā)明針對(duì)文本“Sie enters into the garden for planting",以pos = Upos = 5和pos = 32是為例進(jìn)行說明,其他位置的掃描過程于此相同。當(dāng)pos = 1時(shí),上述文本的第1個(gè)位置的字符為“S”,其哈希值為19。由于該數(shù)值不在第一哈希數(shù)據(jù)結(jié)構(gòu)中(可參見圖3的第一映射表),則執(zhí)行步驟38,即判斷第1個(gè)位置是否是文本的最后一個(gè)字符位置,顯然它不是最后一個(gè)位置,則令pos = pos+1 = 2,從文本的第2個(gè)位置繼續(xù)掃描。當(dāng)pos = 5時(shí),上述文本的第5個(gè)位置的字符為“e”(空格也算1個(gè)字符位置), 其哈希值為5。由于該數(shù)值在第一哈希數(shù)據(jù)結(jié)構(gòu)中,因此在第一哈希數(shù)據(jù)結(jié)構(gòu)中找到與其對(duì)應(yīng)的關(guān)鍵詞長度分別為5和7。針對(duì)關(guān)鍵詞長度5和7,從第pos = 5個(gè)位置開始,向后截取與關(guān)鍵詞長度相等的子串,即從第5個(gè)位置向后分別截取5個(gè)子串和7個(gè)子串,分別得到 “enter”和“enter”。由于第二哈希數(shù)據(jù)結(jié)構(gòu)中存在截取的子串“enter”,則“enter”就是查找到的關(guān)鍵詞。再判斷第5個(gè)位置不是文本的最后一個(gè)字符位置,則令Pos = pos+1 = 6,從文本的第6個(gè)位置繼續(xù)掃描。當(dāng)pos = 32時(shí),上述文本的第32個(gè)位置的字符為“ρ”,其哈希值為16。由于該數(shù)值存在于第一哈希數(shù)據(jù)結(jié)構(gòu)中,因此在第一哈希數(shù)據(jù)結(jié)構(gòu)中找到與其對(duì)應(yīng)的關(guān)鍵詞長度分別為5。針對(duì)關(guān)鍵詞長度5,從第pos = 32個(gè)位置開始,向后截取與關(guān)鍵詞長度相等的子串, 即從第32個(gè)位置向后分別截取5個(gè)子串,得到“plant”。由于第二哈希數(shù)據(jù)結(jié)構(gòu)中存在截取的子串“plant”,則“plant”就是查找到的關(guān)鍵詞。再判斷第32個(gè)位置不是文本的最后一個(gè)字符位置,則令pos = 33,從文本的第33個(gè)位置繼續(xù)掃描。經(jīng)過上述步驟,從文本 “She enters into the garden for planting” 中找出了兩個(gè)關(guān)鍵詞,分別為“enter”和“plant”。本發(fā)明將字符轉(zhuǎn)換為數(shù)值,而后利用哈希數(shù)據(jù)結(jié)構(gòu)進(jìn)行定位查找。由于哈希數(shù)據(jù)結(jié)構(gòu)查找的時(shí)間復(fù)雜度為0(1),因此本發(fā)明大大提升了海量文本數(shù)據(jù)查找的速度,節(jié)省了計(jì)算資源。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此, 任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換, 都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法,其特征是所述方法包括 步驟1 設(shè)定關(guān)鍵詞;步驟2 對(duì)設(shè)定的關(guān)鍵詞進(jìn)行預(yù)處理,生成第一哈希數(shù)據(jù)結(jié)構(gòu)和第二哈希數(shù)據(jù)結(jié)構(gòu); 步驟3 對(duì)文本進(jìn)行掃描,獲取其中的關(guān)鍵詞。
2.根據(jù)權(quán)利要求1所述的一種海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法,其特征是所述步驟2具體包括如下步驟步驟21 取每個(gè)關(guān)鍵詞的第一個(gè)字符,計(jì)算所述字符的哈希值; 步驟22 建立所述哈希值到關(guān)鍵詞長度的映射,記為第一映射; 步驟23 將第一映射裝載到哈希數(shù)據(jù)結(jié)構(gòu)中,從而生成第一哈希數(shù)據(jù)結(jié)構(gòu); 步驟M 將長度相同的關(guān)鍵詞放入同一個(gè)集合中,記為同長度關(guān)鍵詞集合; 步驟25 建立關(guān)鍵詞長度到同長度關(guān)鍵詞集合的映射,記為第二映射; 步驟沈?qū)⒌诙成溲b載到哈希數(shù)據(jù)結(jié)構(gòu)中,從而生成第二哈希數(shù)據(jù)結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述的一種海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法,其特征是所述步驟3具體包括步驟31 設(shè)定文本中字符串的位置為pos,且pos = 1 ; 步驟32 取文本中的第pos個(gè)位置的字符并計(jì)算其哈希值;步驟33 判斷第一哈希數(shù)據(jù)結(jié)構(gòu)中,是否找到計(jì)算出的哈希值,如果是,則執(zhí)行步驟 34;否則,執(zhí)行步驟38;步驟34 根據(jù)計(jì)算出的哈希值,找到與其對(duì)應(yīng)的關(guān)鍵詞長度;步驟35 針對(duì)每個(gè)關(guān)鍵詞長度,從第pos個(gè)位置開始,向后截取與關(guān)鍵詞長度相等的子串;步驟36 判斷第二哈希數(shù)據(jù)結(jié)構(gòu)中,是否找到截取的子串,如果是,則執(zhí)行步驟37;否則,執(zhí)行步驟38;步驟37 截取的子串就是要查找的關(guān)鍵詞;步驟38 判斷第pos個(gè)位置是否是文本的最后一個(gè)字符位置,如果是,則執(zhí)行步驟39 ; 否則,令pos = pos+Ι,返回步驟32 ; 步驟39 查找結(jié)束。
全文摘要
本發(fā)明公開了數(shù)據(jù)檢索技術(shù)領(lǐng)域中的一種海量文本數(shù)據(jù)關(guān)鍵詞的快速查找方法。所述方法包括設(shè)定關(guān)鍵詞;對(duì)設(shè)定的關(guān)鍵詞進(jìn)行預(yù)處理,生成第一哈希數(shù)據(jù)結(jié)構(gòu)和第二哈希數(shù)據(jù)結(jié)構(gòu);對(duì)文本進(jìn)行掃描,獲取其中的關(guān)鍵詞。本發(fā)明將字符轉(zhuǎn)換為數(shù)值,而后利用哈希數(shù)據(jù)結(jié)構(gòu)進(jìn)行關(guān)鍵詞定位查找,提高了海量文本數(shù)據(jù)查找的速度,節(jié)省了計(jì)算資源。
文檔編號(hào)G06F17/30GK102184245SQ20111012911
公開日2011年9月14日 申請(qǐng)日期2011年5月18日 優(yōu)先權(quán)日2011年5月18日
發(fā)明者劉向杰, 馬苗苗 申請(qǐng)人:華北電力大學(xué)