本發(fā)明涉及信息過濾技術領域,特別涉及一種基于動態(tài)詞庫的敏感詞過濾方法及系統(tǒng)。
背景技術:
隨著互聯(lián)網(wǎng)絡的發(fā)展,便利了人與人之間的信息傳播,但是一些低俗、色情、暴力、反動的詞匯也通過互聯(lián)網(wǎng)進行擴散,不利于互聯(lián)網(wǎng)的健康發(fā)展,為了克服這種現(xiàn)狀,目前市場上針對敏感詞過濾主要有以下幾種方法:
字符串匹配:優(yōu)點是實現(xiàn)簡單。存在的問題是效率低,需要將所有詞庫中的詞循環(huán)在給定的字符串中查找,對于詞庫非常大的商業(yè)應用,這個效率是非常低的,基本行不通。
正則表達式匹配:存在的問題是靈活性差,需要將所有詞庫拼裝成為一個正則表達式,拼裝這個表達式本身的難度就很高,而且正則表達式的效率也很低下,如果后期要增加新的詞匯,將要修改表達式,且非常難以維護。
字典樹(Trie)方式的實現(xiàn):字典樹的本質是確定有窮自動機(DFA)即Deterministic Finite Automaton,也就是確定有窮自動機,它是通過event和當前的state得到下一個state,即event+state=nextstate。字典樹是一種樹形結構,它的優(yōu)點是:利用字符串的公共前綴來節(jié)約存儲空間,最大限度地減少無謂的字符串比較,查詢效率比哈希表高。它的主要步驟如下:
(1)、創(chuàng)建字典樹,
(2)、將待分詞的內(nèi)容進行切字,將內(nèi)容打散成為單字,
(3)、對每一個字開始進行查找,每次從根節(jié)點開始一次查找,取得該字對應的子樹繼續(xù)進行查找,在相應的子樹上取得要要查找的第二個字,并進一步對相應的子樹進行查找,如果查找到的節(jié)點是一個末級節(jié)點,也就是該節(jié)點下沒有子節(jié)點,這該節(jié)點的所有父級節(jié)點構成一個我們需要查找的關鍵詞。
目前常用方案是一個分詞服務公用一個詞典文件,這樣做的缺點是分詞結果比較單一,無法進行自定義,無法滿足靈活的業(yè)務需求。如果需要修改詞庫必須要中斷服務進行詞典的重新構建,分詞的精準化和差異化程度不高。
特別是在電商領域,商品錄入時避免商品描述或標題中有一些敏感詞,導致虛假宣傳和惡意內(nèi)容。因為不同類目下的商品存在的敏感詞是不一樣的,例如在某些類目下“最大”就屬于敏感詞,但是在電器這個類目下,商品一般有“最大功率”的描述,因此當描述中“最大功率”是在電器類目下“最大”就不是敏感詞。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明提出一種能夠避免由于不同類目的商品分詞結果都一致造成誤判的基于動態(tài)詞庫的敏感詞過濾方法及系統(tǒng)。
一種基于動態(tài)詞庫的敏感詞過濾方法,其包括如下步驟:
S1、獲取不同商品類目的不同敏感詞,生成不同商品類目對應的敏感詞列表,并存儲于數(shù)據(jù)庫中;
S2、從數(shù)據(jù)庫中讀取敏感詞列表,并根據(jù)不同的商品類目以及商品類目下的敏感詞生成不同商品類目對應的唯一識別符,并根據(jù)該唯一識別符構建一個唯一的字典樹,所有唯一的字典樹構成一用于分詞服務的基礎字典樹對象池;
S3、接收待處理數(shù)據(jù),并根據(jù)待處理數(shù)據(jù)對應的待處理商品的類目對應基礎字典樹對象池中字典樹對待處理數(shù)據(jù)進行分詞;根據(jù)分詞結果實現(xiàn)敏感詞過濾。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾方法中,
所述步驟S1中不同商品類目的不同敏感詞由用戶通過一web界面維護到數(shù)據(jù)庫。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾方法中,
所述步驟S2還包括:
敏感詞列表,按照一個商品類目對應一個詞庫的方式構建不同的詞庫;所述詞庫的格式為X.dic,其中X為詞庫名稱。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾方法中,
所述步驟S3包括如下子步驟:
S31、接收待處理數(shù)據(jù),判斷待處理數(shù)據(jù)對應的商品類目,并跳轉到步驟S32;
S32、根據(jù)待處理數(shù)據(jù)對應的商品類目從基礎字典樹對象池中檢索與該商品類目對應的字典樹;在存在時跳轉到步驟S33;否則跳轉到步驟S34;
S33、通過該字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束;
S34、判斷是否存在與待處理數(shù)據(jù)對應的商品類目對應的詞庫,在存在時跳轉到步驟S35,否則跳轉到步驟S36;
S35、根據(jù)待處理數(shù)據(jù)對應的商品類目對應的詞庫動態(tài)構建字典樹,并根據(jù)構建的字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束;
S36、調用預先設置的通用詞庫,并根據(jù)通用詞庫構建通用字典樹,并根據(jù)構建的通用字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束。
本發(fā)明還提供一種基于動態(tài)詞庫的敏感詞過濾系統(tǒng),其包括如下單元:
敏感詞配置單元,用于獲取不同商品類目的不同敏感詞,生成不同商品類目對應的敏感詞列表,并存儲于數(shù)據(jù)庫中;
字典樹對象池生成單元,用于從數(shù)據(jù)庫中讀取敏感詞列表,并根據(jù)不同的商品類目以及商品類目下的敏感詞生成不同商品類目對應的唯一識別符,并根據(jù)該唯一識別符構建一個唯一的字典樹,所有唯一的字典樹構成一用于分詞服務的基礎字典樹對象池;
分詞過濾單元,用于接收待處理數(shù)據(jù),并根據(jù)待處理數(shù)據(jù)對應的待處理商品的類目對應基礎字典樹對象池中字典樹對待處理數(shù)據(jù)進行分詞;根據(jù)分詞結果實現(xiàn)敏感詞過濾。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾系統(tǒng)中,
所述敏感詞配置單元中不同商品類目的不同敏感詞由用戶通過一web界面維護到數(shù)據(jù)庫。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾系統(tǒng)中,
所述字典樹對象池生成單元還包括:
敏感詞列表,按照一個商品類目對應一個詞庫的方式構建不同的詞庫;所述詞庫的格式為X.dic,其中X為詞庫名稱。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾系統(tǒng)中,
所述分詞過濾單元包括如下子單元:
數(shù)據(jù)接收子單元,用于接收待處理數(shù)據(jù),判斷待處理數(shù)據(jù)對應的商品類目,并跳轉到字典樹檢索子單元;
字典樹檢索子單元,用于根據(jù)待處理數(shù)據(jù)對應的商品類目從基礎字典樹對象池中檢索與該商品類目對應的字典樹;在存在時跳轉到第一分詞過濾子單元;否則跳轉到詞庫判斷子單元;
第一分詞過濾子單元,用于通過該字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束;
詞庫判斷子單元,用于判斷是否存在與待處理數(shù)據(jù)對應的商品類目對應的詞庫,在存在時跳轉到第二分詞過濾子單元,否則跳轉到第三分詞過濾子單元;
第二分詞過濾子單元,用于根據(jù)待處理數(shù)據(jù)對應的商品類目對應的詞庫動態(tài)構建字典樹,并根據(jù)構建的字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束;
第三分詞過濾子單元,用于調用預先設置的通用詞庫,并根據(jù)通用詞庫構建通用字典樹,并根據(jù)構建的通用字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束。
實施本發(fā)明提供的基于動態(tài)詞庫的敏感詞過濾方法及系統(tǒng)與現(xiàn)有技術相比具有以下有益效果:通過構建了一個分詞服務的基礎字典樹對象池。根據(jù)不同的商品類目以及該商品類目下的敏感詞生成一個唯一識別符,并根據(jù)該唯一識別符構建一個唯一的字典樹,當進行商品描述分詞時根據(jù)該商品所屬類目從字典樹對象池中找到對應的字典樹來進行精確的分詞,避免由于不同類目的商品分詞結果都一致造成誤判。
附圖說明
圖1是本發(fā)明實施例的基于動態(tài)詞庫的敏感詞過濾方法流程圖。
具體實施方式
如圖1所示,本發(fā)明提供一種基于動態(tài)詞庫的敏感詞過濾方法,其包括如下步驟:
S1、獲取不同商品類目的不同敏感詞,生成不同商品類目對應的敏感詞列表,并存儲于數(shù)據(jù)庫中;
S2、從數(shù)據(jù)庫中讀取敏感詞列表,并根據(jù)不同的商品類目以及商品類目下的敏感詞生成不同商品類目對應的唯一識別符,并根據(jù)該唯一識別符構建一個唯一的字典樹,所有唯一的字典樹構成一用于分詞服務的基礎字典樹對象池;
S3、接收待處理數(shù)據(jù),并根據(jù)待處理數(shù)據(jù)對應的待處理商品的類目對應基礎字典樹對象池中字典樹對待處理數(shù)據(jù)進行分詞;根據(jù)分詞結果實現(xiàn)敏感詞過濾。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾方法中,
所述步驟S1中不同商品類目的不同敏感詞由用戶通過一web界面維護到數(shù)據(jù)庫。在本發(fā)明實施例中,不同商品類目的不同敏感詞可以用業(yè)務人員自主靈活配置。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾方法中,
所述步驟S2還包括:
敏感詞列表,按照一個商品類目對應一個詞庫的方式構建不同的詞庫;所述詞庫的格式為X.dic,其中X為詞庫名稱。例如有以下分類的敏感詞:
a:免檢....
b:最大功率....
c:最大...
那么將創(chuàng)建三個詞庫文件a.dic b.dic c.dic。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾方法中,
所述步驟S3包括如下子步驟:
S31、接收待處理數(shù)據(jù),判斷待處理數(shù)據(jù)對應的商品類目,并跳轉到步驟S32;
S32、根據(jù)待處理數(shù)據(jù)對應的商品類目從基礎字典樹對象池中檢索與該商品類目對應的字典樹;在存在時跳轉到步驟S33;否則跳轉到步驟S34;
S33、通過該字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束;
S34、判斷是否存在與待處理數(shù)據(jù)對應的商品類目對應的詞庫,在存在時跳轉到步驟S35,否則跳轉到步驟S36;
S35、根據(jù)待處理數(shù)據(jù)對應的商品類目對應的詞庫動態(tài)構建字典樹,并根據(jù)構建的字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束;
S36、調用預先設置的通用詞庫,并根據(jù)通用詞庫構建通用字典樹,并根據(jù)構建的通用字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束。
例如“根據(jù)待處理商品的類目,調用專有字典樹對其進行分詞。例如商品的類目是a_b,那么首先查找目前是否已經(jīng)有了一個名為a_b的字典樹對象,如果有直接通過該字典樹進行分詞,否則讀取詞庫文件a.dic和b.dic動態(tài)構建一個字典樹對象并開始進行分詞。
同時由于并不是每個類目下都有不同的敏感詞,可能大部分類目的敏感詞都是相同的,因為我們維護了一個通用的敏感詞庫,即所有類目都有的敏感詞庫common.dic。這樣可以有效減少詞庫的數(shù)量,當商品的類目不同但實際敏感詞相同時可以使用同一個字典樹。
例如有以下分類敏感詞:
分類a:免檢
分類b:最大功率
分類c:最大
對應的3個詞庫文件:a.dic b.dic c.dic
商品A所屬分類為a、b、e、f,則從字典樹對象池中讀取a_b_e_f字典樹,字典樹對象池首先判斷a、b、e、f是否都有特殊的敏感詞,通過讀取詞庫文件發(fā)現(xiàn),只有a、b兩個類目下有特殊自定的敏感詞,因此生成唯一標識符a_b,并根據(jù)a_b查找當前有沒有敏感詞字典樹,如果沒有,則讀取讀取a.dic和b.dic的詞庫文件和通用的common.dic文件生成標識為a_b詞典樹進行分詞。商品B所屬分類為a、b、f、g。則對象池根據(jù)上面的判斷發(fā)現(xiàn)只有a、b的類目下有特殊敏感詞,因此生成a_b標識符進行查找,發(fā)現(xiàn)已經(jīng)有一個a_b的字典樹。因此直接使用詞典樹a_b進行分詞即可,而不需要重新加載詞庫文件生成詞典樹。這樣在保證分詞結果精準的同時也極大的降低了冗余的字典樹?!?/p>
商品A的描述包含字符串‘該免檢產(chǎn)品最大功率’。采用雙向詞典樹方式進行分詞,結果為:該/免/檢/免檢/產(chǎn)/品/最/大/功/率/最大功率,則匹配到‘免檢’和‘最大’。
本發(fā)明還提供一種基于動態(tài)詞庫的敏感詞過濾系統(tǒng),其包括如下單元:
敏感詞配置單元,用于獲取不同商品類目的不同敏感詞,生成不同商品類目對應的敏感詞列表,并存儲于數(shù)據(jù)庫中;
字典樹對象池生成單元,用于從數(shù)據(jù)庫中讀取敏感詞列表,并根據(jù)不同的商品類目以及商品類目下的敏感詞生成不同商品類目對應的唯一識別符,并根據(jù)該唯一識別符構建一個唯一的字典樹,所有唯一的字典樹構成一用于分詞服務的基礎字典樹對象池;
分詞過濾單元,用于接收待處理數(shù)據(jù),并根據(jù)待處理數(shù)據(jù)對應的待處理商品的類目對應基礎字典樹對象池中字典樹對待處理數(shù)據(jù)進行分詞;根據(jù)分詞結果實現(xiàn)敏感詞過濾。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾系統(tǒng)中,
所述敏感詞配置單元中不同商品類目的不同敏感詞由用戶通過一web界面維護到數(shù)據(jù)庫。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾系統(tǒng)中,
所述字典樹對象池生成單元還包括:
敏感詞列表,按照一個商品類目對應一個詞庫的方式構建不同的詞庫;所述詞庫的格式為X.dic,其中X為詞庫名稱。
在本發(fā)明所述的基于動態(tài)詞庫的敏感詞過濾系統(tǒng)中,
所述分詞過濾單元包括如下子單元:
數(shù)據(jù)接收子單元,用于接收待處理數(shù)據(jù),判斷待處理數(shù)據(jù)對應的商品類目,并跳轉到字典樹檢索子單元;
字典樹檢索子單元,用于根據(jù)待處理數(shù)據(jù)對應的商品類目從基礎字典樹對象池中檢索與該商品類目對應的字典樹;在存在時跳轉到第一分詞過濾子單元;否則跳轉到詞庫判斷子單元;
第一分詞過濾子單元,用于通過該字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束;
詞庫判斷子單元,用于判斷是否存在與待處理數(shù)據(jù)對應的商品類目對應的詞庫,在存在時跳轉到第二分詞過濾子單元,否則跳轉到第三分詞過濾子單元;
第二分詞過濾子單元,用于根據(jù)待處理數(shù)據(jù)對應的商品類目對應的詞庫動態(tài)構建字典樹,并根據(jù)構建的字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束;
第三分詞過濾子單元,用于調用預先設置的通用詞庫,并根據(jù)通用詞庫構建通用字典樹,并根據(jù)構建的通用字典樹對待處理數(shù)據(jù)進行分詞,根據(jù)分詞結果實現(xiàn)敏感詞過濾,結束。
實施本發(fā)明提供的基于動態(tài)詞庫的敏感詞過濾方法及系統(tǒng)與現(xiàn)有技術相比具有以下有益效果:通過構建了一個分詞服務的基礎字典樹對象池。根據(jù)不同的商品類目以及該商品類目下的敏感詞生成一個唯一識別符,并根據(jù)該唯一識別符構建一個唯一的字典樹,當進行商品描述分詞時根據(jù)該商品所屬類目從字典樹對象池中找到對應的字典樹來進行精確的分詞,避免由于不同類目的商品分詞結果都一致造成誤判。
可以理解的是,對于本領域的普通技術人員來說,可以根據(jù)本發(fā)明的技術構思做出其它各種相應的改變與變形,而所有這些改變與變形都應屬于本發(fā)明權利要求的保護范圍。