基于哈希有向圖的敏感詞檢查方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明總體上涉及敏感詞檢查,更具體地,涉及一種基于哈希有向圖的敏感詞檢 查方法和設(shè)備。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)時(shí)代的到來(lái),自由、共享、創(chuàng)新的互聯(lián)網(wǎng)精神深深地影響著人們的生活 和工作。互聯(lián)網(wǎng)用戶在網(wǎng)絡(luò)上可以自由地獲取知識(shí)、傳播思想,而這一過(guò)程中最主要的方式 是通過(guò)文字(互聯(lián)網(wǎng)上亦稱為文本)進(jìn)行交流。相對(duì)于傳統(tǒng)信息溝通交流方式(如信件、 短信等),由于網(wǎng)絡(luò)文本服務(wù)具有內(nèi)容豐富、互動(dòng)性強(qiáng)、實(shí)時(shí)性強(qiáng)的特點(diǎn),被越來(lái)越多的網(wǎng)絡(luò) 用戶使用。
[0003] 基于文本的網(wǎng)絡(luò)服務(wù)如即時(shí)通訊工具、社區(qū)論壇、電子商務(wù)、博客微博等網(wǎng)絡(luò)服務(wù) 已經(jīng)滲透到社會(huì)的各個(gè)領(lǐng)域。然而,網(wǎng)民有意或無(wú)意會(huì)發(fā)布一些未經(jīng)核實(shí)或者包含不良內(nèi) 容的信息,這些內(nèi)容不但違反相關(guān)地區(qū)國(guó)家的法律法規(guī),也極大的損害了公眾利益,破壞了 互聯(lián)網(wǎng)環(huán)境。為了遵守法律法規(guī)和維護(hù)凈化互聯(lián)網(wǎng)環(huán)境,越來(lái)越多的網(wǎng)絡(luò)服務(wù)或應(yīng)用集成 了關(guān)鍵詞/敏感詞過(guò)濾功能,其在網(wǎng)絡(luò)文本服務(wù)中發(fā)揮著不可替代的作用。要保證網(wǎng)絡(luò)文 本服務(wù)的質(zhì)量,提高用戶的體驗(yàn),希望網(wǎng)絡(luò)文本服務(wù)平臺(tái)在提供服務(wù)時(shí)具有較快的請(qǐng)求響 應(yīng)速度。因此,設(shè)計(jì)一個(gè)高效、準(zhǔn)確度高的過(guò)濾檢查方式是非常重要且必要的。
[0004] 常見(jiàn)的敏感詞檢查過(guò)濾有以下兩種方式。第一種是字典檢查方式(如圖1所示), 這種方式主要將敏感詞庫(kù)的敏感詞與待測(cè)文本進(jìn)行逐一匹配,直到匹配完成為止。第二種 方式是正則檢查方式,這種方式是將敏感詞庫(kù)的所有詞組構(gòu)造成一個(gè)正則表達(dá)式,然后將 正則表達(dá)式作用到文本消息,進(jìn)而進(jìn)行匹配檢查。
[0005] 字典檢查方式需要反復(fù)將敏感詞庫(kù)中的敏感詞與文本或者文本中可能出現(xiàn)的詞 組進(jìn)行對(duì)比匹配,這種重復(fù)多次執(zhí)行詞庫(kù)查找匹配大大地增加了時(shí)間消耗。對(duì)于正則檢查 方式,為了匹配出具體敏感詞,正則表達(dá)式需要采用分組模式。JAVA正則表達(dá)式采用遞歸下 降方式進(jìn)行模式的編譯處理,而另一方面,正則查找采用了子串貪婪方式進(jìn)行查找,其時(shí)間 效率隨著待檢文本長(zhǎng)度和敏感詞庫(kù)的敏感詞數(shù)量的增加而大大降低。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的一個(gè)方面提供了一種基于哈希有向圖HSDG的敏感詞檢查方法,用于檢 查輸入文本T = (tp t2,. . . tk)中的敏感詞,ti~11<依次表示T中的各個(gè)字符,k是不小于 1的整數(shù),該方法包括:
[0007] 在步驟Sl :掃描T中的第i個(gè)字符h,i多1,i初始值為1 ;
[0008] 在步驟S2 :判斷字符h是否在存在于HSDG的哈希表中,若存在,則執(zhí)行步驟S3, 否則i = i+Ι,執(zhí)行Sl ;
[0009] 在步驟S3 :對(duì)于T中的第j個(gè)字符,在SDGU1)中執(zhí)行字符廣度優(yōu)先搜索匹配算 法,j的初始值為i+Ι,算法處理如下:
[0010] 1)如果SDG(ti)中節(jié)點(diǎn)tj i沒(méi)有子節(jié)點(diǎn),則記錄(t i,…tj D到R中,i = j,執(zhí)行 Sl ;
[0011] 2)如果SDGU1)中節(jié)點(diǎn)t, i有子節(jié)點(diǎn)但其子節(jié)點(diǎn)與t ,不匹配時(shí),則i = j,執(zhí)行 Sl ;以及
[0012] 3)其他情況下,則掃描第j+Ι個(gè)字符,若j+1 >k,則執(zhí)行S4,否則繼續(xù)執(zhí)行S3 ;以 及
[0013] 在步驟S4 :返回記錄到檢查結(jié)果集R,
[0014] 其中,HSDG包括敏感詞集有向圖SDG和由SDG中入度為0的節(jié)點(diǎn)組織成的哈希表, SDGai)是SDG中以節(jié)點(diǎn)h為父節(jié)點(diǎn)的子圖。
[0015] 本發(fā)明的另一個(gè)方面還提供了一種基于哈希有向圖HSDG的敏感詞檢查設(shè)備,用 于檢查輸入文本T = (tp t2,. . . tk)中的敏感詞,ti~11<依次表示T中的各個(gè)字符,k是不 小于1的整數(shù),該設(shè)備包括:
[0016] 第一裝置,用于掃描T中的第i個(gè)字符h,i彡1,i初始值為1 ;
[0017] 第二裝置,用于判斷字符^是否在存在于HSDG的哈希表中,若存在,則操作第三 裝置,否則i = i+Ι,操作第一裝置;
[0018] 第三裝置,用于對(duì)于T中的第j個(gè)字符,在SDGai)中執(zhí)行字符廣度優(yōu)先搜索匹 配算法,j的初始值為i+Ι,算法處理如下:
[0019] 1)如果SDGUi)中節(jié)點(diǎn)tj i沒(méi)有子節(jié)點(diǎn),則記錄(t ;,…tj J到R中,i = j,操作 第一裝置;
[0020] 2)如果SDGai)中節(jié)點(diǎn)t, i有子節(jié)點(diǎn)但其子節(jié)點(diǎn)與t f匹配時(shí),則i = j,操作第 一裝置;以及
[0021] 3)其他情況下,則掃描第j+Ι個(gè)字符,若j+1 >k,則操作第四裝置,否則繼續(xù)操作 第三裝置;以及
[0022] 第四裝置,用于返回記錄到檢查結(jié)果集R,
[0023] 其中,HSDG包括敏感詞集有向圖SDG和由SDG中入度為0的節(jié)點(diǎn)組織成的哈希表, SDGai)是SDG中以節(jié)點(diǎn)h為父節(jié)點(diǎn)的子圖。
【附圖說(shuō)明】
[0024] 為了更完整地理解本發(fā)明及其優(yōu)勢(shì),現(xiàn)在將參考結(jié)合附圖的以下描述,其中:
[0025] 圖1示意性示出了敏感詞的字典檢查方式;
[0026] 圖2示意性示出了根據(jù)本發(fā)明實(shí)施例的基于哈希有向圖的敏感詞檢查設(shè)備的結(jié) 構(gòu)框圖;
[0027] 圖3示意性示出了根據(jù)本發(fā)明實(shí)施例的敏感詞集有向圖;
[0028] 圖4示意性示出了根據(jù)本發(fā)明實(shí)施例的具有限定的敏感詞集有向圖;
[0029] 圖5示意性示出了根據(jù)本發(fā)明實(shí)施例的哈希有向圖;以及
[0030] 圖6示意性示出了根據(jù)本發(fā)明實(shí)施例的基于哈希有向圖的敏感詞檢查方法的流 程圖。
[0031 ] 貫穿附圖,相同參考數(shù)字應(yīng)理解為指示相同部分、部件和結(jié)構(gòu)。
【具體實(shí)施方式】
[0032] 根據(jù)結(jié)合附圖對(duì)本發(fā)明示例性實(shí)施例的以下詳細(xì)描述,本發(fā)明的其它方面、優(yōu)勢(shì) 和突出特征對(duì)于本領(lǐng)域技術(shù)人員將變得顯而易見(jiàn)。
[0033] 在本發(fā)明中,術(shù)語(yǔ)"包括"和"含有"及其派生詞意為包括而非限制;術(shù)語(yǔ)"或"是 包含性的,意為和/或。
[0034] 在本說(shuō)明書(shū)中,下述用于描述本發(fā)明原理的各種實(shí)施例只是說(shuō)明,不應(yīng)該以任何 方式解釋為限制發(fā)明的范圍。參照附圖的下述描述用于幫助全面理解由權(quán)利要求及其等同 物限定的本發(fā)明的示例性實(shí)施例。下述描述包括多種具體細(xì)節(jié)來(lái)幫助理解,但這些細(xì)節(jié)應(yīng) 認(rèn)為僅僅是示例性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)認(rèn)識(shí)到,在不背離本發(fā)明的范圍和精神 的情況下,可以對(duì)本文中描述的實(shí)施例進(jìn)行多種改變和修改。此外,為了清楚和簡(jiǎn)潔起見(jiàn), 省略了公知功能和結(jié)構(gòu)的描述。此外,貫穿附圖,相同參考數(shù)字用于相似功能和操作。
[0035] 圖2示意性示出了根據(jù)本發(fā)明實(shí)施例的基于哈希有向圖的敏感詞檢查設(shè)備200的 結(jié)構(gòu)框圖。如圖2所示,該設(shè)備200包括預(yù)處理裝置210、哈希有向圖存儲(chǔ)裝置220和敏感 詞檢測(cè)裝置230。待檢文本通過(guò)預(yù)處理裝置220處理,得到處理后文本,由敏感詞檢測(cè)裝置 230將處理后文本與哈希有向圖存儲(chǔ)裝置220中存儲(chǔ)的敏感詞哈希有向圖進(jìn)行匹配,以檢 測(cè)文本中的敏感詞。
[0036] 以下具體說(shuō)明各裝置的操作。
[0037] 預(yù)處理裝詈210
[0038] 待檢文本的長(zhǎng)度在很大程度上影響著敏感詞過(guò)濾的時(shí)間效率,文本長(zhǎng)度越短檢測(cè) 時(shí)間越短。大多數(shù)網(wǎng)絡(luò)文本內(nèi)容含有大量的特殊字符包括語(yǔ)義字符、助詞等不構(gòu)成敏感詞 的字符或者單字單詞。在本發(fā)明中,預(yù)處理裝置210將文本中的這些字符或者單字單詞剔 除掉,以縮短待測(cè)文本的長(zhǎng)度。例如:"ABB⑶DE",其中C是語(yǔ)氣助詞,D、E是語(yǔ)義字符,通過(guò) 文本預(yù)處理后,待測(cè)文本長(zhǎng)度由7縮短為3。通過(guò)文本預(yù)處理能夠有效地縮短待測(cè)文本的長(zhǎng) 度,避免待檢文本的全文匹配,而這一過(guò)程時(shí)間開(kāi)銷是很小的。
[0039] 哈希有向圖存儲(chǔ)裝詈220
[0040] 哈希有向圖存儲(chǔ)裝置220用于存儲(chǔ)基于哈希表的敏感詞有向圖表達(dá)(HSDG)。詞組 的字符排列順序影響著詞組的具體語(yǔ)義,例如"ABC"和"CBA"表達(dá)的語(yǔ)義是截然不同的,進(jìn) 一步而言,詞組具有矢量特點(diǎn)。為了方便描述,定義敏感詞為由一個(gè)或者多個(gè)字符按照一定 順序組成的詞組。在不同的語(yǔ)義環(huán)境中敏感詞有不同的表現(xiàn)形式,例如在中文語(yǔ)義下由一 個(gè)或多個(gè)單字組成的詞組,在英文語(yǔ)義下是由一個(gè)或多個(gè)英文字符組成的單詞或短語(yǔ)。
[0041] 由于詞組的矢量性,敏感詞集合S可以由有向圖來(lái)表達(dá)(如圖3所示),稱其為敏 感詞集有向圖(Sensitive Words Directed Graph,SDG)。有向圖SDG中的每一條有向路 徑(a!,a2, · · · an)即是一個(gè)每j[感詞表達(dá)。圖3中的a~h、j、k、m和η表示特定語(yǔ)義環(huán)境中 的字符,也稱為節(jié)點(diǎn)。節(jié)點(diǎn)X的子節(jié)點(diǎn)數(shù)稱為X的敏感度,敏感度為0的節(jié)點(diǎn)稱為葉子節(jié) 點(diǎn),敏感度大于0的節(jié)點(diǎn)稱為非葉節(jié)點(diǎn);節(jié)點(diǎn)X的父節(jié)點(diǎn)數(shù)稱節(jié)點(diǎn)X的入度。有向路徑(ap a 2, ... an)的長(zhǎng)度稱為敏感詞長(zhǎng)度;以節(jié)點(diǎn)X為父節(jié)點(diǎn)的子圖用SDG(X)表示。如果一個(gè)詞 組A標(biāo)記為敏感詞,且文本T中包含詞組A,那么則稱文本T含有敏感詞A。由此可以得出 一個(gè)推論:如果字符序列( ai,a2,. . . an)定義為敏感詞表達(dá),并且(ai,a2,. . . an)是字符序列 031,132,...13|11)的子序列,即(&,士,..忍") (:二0)!,1^.'.]3",),其中111彡11彡1,那么字符序列〇3 1, b2,. . . bj是敏感詞表達(dá)。為使SDG的組成節(jié)點(diǎn)更精簡(jiǎn),同時(shí)也能保證其完整的包含敏感詞 集合的語(yǔ)義,根據(jù)推論本文限定:SDG中不存在一條有向路徑是敏感詞表達(dá),而其子路徑也 是敏感詞表達(dá)。例如:敏感詞集合S = {abc,abe,abed},根據(jù)限定,其SDG如圖4所示。
[0042] 假設(shè):敏感詞集合S的敏感詞有向圖表達(dá)為SDG,待測(cè)文本T =匕,t2,