[發明專利]一種在任意文本中匹配識別海量關鍵詞的方法有效
| 申請號: | 201811558241.2 | 申請日: | 2018-12-19 |
| 公開(公告)號: | CN109783607B | 公開(公告)日: | 2023-04-25 |
| 發明(設計)人: | 苗陽 | 申請(專利權)人: | 南京萊斯信息技術股份有限公司 |
| 主分類號: | G06F16/33 | 分類號: | G06F16/33;G06F40/289 |
| 代理公司: | 江蘇圣典律師事務所 32237 | 代理人: | 賀翔 |
| 地址: | 210000 *** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 任意 文本 匹配 識別 海量 關鍵詞 方法 | ||
本發明提供一種在任意文本中匹配識別海量關鍵詞的方法,包括針對海量關鍵詞庫的優化處理、匹配掃描算法的優化,該方法有效解決了在任意的一段文本數據中,快速、精確地識別出存在哪些指定的關鍵詞,而且適用于關鍵詞的數量非常龐大的場景,可以精準且快速的給出識別的關鍵詞、在文本中的位置、以及匹配到的次數。
技術領域
本專利涉及到信息處理技術,尤其是在征信/信用領域的計算機信息處理。
背景技術
針對征信/信用領域的計算機信息處理系統中,有一類文本數據的處理需求,需要在任意的一段文本數據中,快速、精確地識別出存在哪些指定的關鍵詞,而關鍵詞的數量非常龐大(千萬到億數量級的),因此,一般通用的敏感詞過濾算法(如DFA、Aho-Corasick算法、正則表達式等)無法適用于此場景下。
現有的通用的敏感詞過濾算法DFA/Aho-Corasick算法主要的問題是,因為需要事先將所有關鍵詞構造為字典樹(狀態遷移表),當存在海量的關鍵詞時,字典樹的規模將會變得大到不可接受,內存中無法容納。
正則表達式的方案效率本身比較低,而且需要進行多次匹配,更加不適合于海量的關鍵詞的情形。
全文檢索算法也不適用與本方案針對的場景,全文檢索通常是少量(一個或幾個)的關鍵詞的檢索,一般以原始文本的預處理/分詞為主,無法用于海量的關鍵詞的高效檢索。
發明內容
發明目的:本發明用以解決如何在任意的一段文本數據中,快速、精確地識別出存在哪些指定的關鍵詞,而且適用于關鍵詞的數量非常龐大的場景。
技術方案:為實現上述發明目的,本發明可采用以下技術方案:
一種在任意文本中匹配識別海量關鍵詞的方法,包括以下步驟,
(1)、關鍵詞庫設立:
建立一級詞庫,把原始詞庫作為二級詞庫,用以減少一級詞庫中的詞條數量,使一級詞庫能直接裝載到計算機內存中;
(2)、關鍵詞的匹配和識別,包括:
(2.1)、輸入文本X,并定位到文本X的起始位置;
(2.2)、自起始位置讀取文本X中的一個字符C,以字符C為關鍵字符Key在一級詞庫中查找,若不存在該字符C則重新讀取字符C的下一個字符再在一級詞庫中查找直至找到一級詞庫中存在對應的字符后,進入步驟(2.3);
(2.3)、取一詞級庫中Key對應的長度L和尾字符T,依據長度L和尾字符T,判斷文本X剩余長度是否大于等于L,并且當前位置+L處的字符是否等于T,如不匹配則回到步驟(2.2),如匹配則進入步驟(2.4);
(2.4)、從文本X當前位置取L長度子串S,到二級詞庫中進行完整匹配;若在二級詞庫中未找到匹配則回到步驟(2.2),如在二級詞庫中找到匹配則進入步驟(2.5);
(2.5)、記錄匹配結果,并直接跳過L長度。
進一步的,所述步驟(2.2)中,若字符C的位置已經到文本X中的結尾,則結束匹配和識別并輸出匹配和識別結果。
進一步的,步驟(1)中,取關鍵字詞條的首、尾字符和總長度,生成對應一級詞庫條目。
進一步的,采用字庫并行化處理:
步驟(1)中,將原始關鍵詞庫物理分割為多個二級詞庫;
在步驟(2)中,由主線程將待處理的文本復制為多份,依據二級庫的個數,啟動多個線程同時進行處理,每個線程掃描獨立的文本副本,使用不同的二級關鍵詞庫,互不干擾,主線程等待每個處理線程完成后,獲取結果并統一合并處理結果。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南京萊斯信息技術股份有限公司,未經南京萊斯信息技術股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811558241.2/2.html,轉載請聲明來源鉆瓜專利網。





