余棟柱

摘要 國家高質量發展戰略方案有序推進,隨著煙草行業監管要求不斷升級,出臺的規章制度與方針政策也在不斷豐富與細化。內部專賣監督管理隊伍的員工在煙草行業網查找自己需要的信息資料,難度也在不斷加大。本文提出以垂直搜索引擎框架構為基礎,構建基于煙草行業內部專賣監督管理需求的信息整合方案,旨在為煙草員工提供準確的搜索結果,實現更加有效的科學監管。
關鍵詞 煙草行業;高質量發展;垂直搜索引擎;信息整合;科學監管
隨著煙草行業內部網絡信息量的不斷增長以及行業監管要求的升級,員工在工作中獲取自己所需信息的難度也在不斷加大。行業內部網普通的搜索查詢結果難以滿足員工特定的搜索要求,并且上下級行業網的信息有不同程度的重復。這一現狀對于煙草行業內部專賣監督管理工作的開展,進行全過程閉環監督,構建監管長效機制,帶來了一定的困難。
基于煙草行業內部專賣監督管理的現實需求,為員工提供準確的搜索結果,實現有效的科學監管,需要構建一個信息整合方案,對各級煙草行業內部網進行頁面凈化、信息抽取、頁面分類、數據挖掘等深度加工,以獲取具有較高準確率、覆蓋率的搜索結果。經過對比,垂直搜索引擎是符合需求的一種技術方案。
一、垂直搜索引擎的相關技術
垂直搜索引擎,是對專業特定的領域或行業的內容進行專業和深入的分析挖掘、過濾篩選,使信息定位更精準的專業搜索引擎。它是搜索引擎的細分和延伸,能針對性地為某一特定領域、某一特定人群或某一特定需求提供專門的信息檢索服務,以滿足用戶個性化的信息需求。
二、Nutch框架的簡介
作為一個基于Java 實現的開源搜索引擎,Nutch提供了構建垂直搜索引擎所需的全部工具,包括網頁爬蟲、網頁解析器、索引器以及檢索器。
總體上,它可以分為爬網程序以及搜索程序兩個部分。第一是爬網程序,它使用自帶的Crawl命令,負責搜集頁面,并把爬取回來的網頁數據,解析做成反向索引;第二是搜索程序,網絡爬蟲的解析器將自動分析頁面,搜索第一步的反向索引,響應用戶的請求。
三、需要解決的行業需求問題
開源框架Nutch構造出性能良好的垂直搜索引擎后,依然需要解決一些特定的問題,才可滿足煙草行業內部專賣監督管理的信息整合需求,主要包括:
針對上面這些問題,再結合煙草內部專賣監督管理的具體需求,還需要在以Nutch為基礎的框架,增加頁面解析(parser)、頁面分類(classifier)、中文分詞(analyzer)、檢索排序(sorter)這四個關鍵的功能模塊,用來完成頁面解析分類、中文分詞以及檢索結果排序等功能。
四、構建垂直搜索引擎的方案
(一)網頁分類的設計
本方案的一個核心功能是讓網頁根據我們需要的內容自動分類。classifier模塊將抓取下來的網頁進行個性化分類。Contents模塊把煙草行業內部網頁的元素數據meta data和文本內容儲存起來。在Classifier模塊中,維持了采用XML的配置文件進行定義分類的規則。在方案中,利用分詞器Analyzer,對每個行業內部網頁的內容進行分詞,再將分詞后的內容和classifier模塊中的分類規則進行匹配檢驗,用分類便簽信息貼給網頁,這樣一來,索引器就能實現網頁分類的功能。
(二)網頁信息抽取的設計
框架的網頁解釋和網頁檢索是兩個相互獨立處理的過程,筆者把煙草行業內部網頁的信息抽取處理過程,劃分為兩部分,即抽取原始頁面的結構化信息與存儲抽取的結構化信息。
筆者提出的方案,把煙草內部網頁的處理分成四個步驟,分別是規范化網頁、凈化網頁、抽取結構化信息、存儲信息。前三個是抽取信息的過程,最后一個是存儲信息的過程。
1.網頁內容的凈化。普通網頁包括正文內容和其他內容。正文內容是主題信息內容,其他內容是和主題信息內容關聯不大的導航條、宣傳信息等內容,也叫“網頁噪音”。網頁凈化模塊,就是為了盡量剔除“網頁噪音”,讓后面步驟里的信息抽取有更高的效率和準確率。
了解對比國內中文網頁凈化算法后,再結合煙草行業內部專賣監督管理的現實情況,筆者提出一種特有的網頁凈化算法。將HTML頁面構建成一顆標簽樹,再利用網頁的標簽(主要是TABLE標簽)進行分塊,并對其添加語義屬性。它是剪枝凈化的依據,凈化后的標簽樹再還原成“去噪后”的HTML。分塊之間也有父子層次關系,這樣的標簽樹稱為擴展語義的DOM樹。
2.信息抽取。通過上面網頁凈化步驟的處理后的網頁結構相對簡單,建議采用基于模版信息抽取的方式進行結構化信息抽取。制定不同的正則表達式和使用XPath技術完成信息抽取的任務。
用XPath處理結點的優勢是處理字段結點全部內容為結構化數據字段值的情況;正則表達式的優勢是處理文本相關方面。算法中都用它們提取結構數據的字段值。
(三)中文分析器的設計
煙草行業內部網頁大多是中文字符,所以需要用Chinese Analyzer對網頁做索引,進一步對網頁內容進行分析處理。同時,還要對員工用戶輸入的中文詞語進行自動分詞,讓系統識別出最接近語義組合的結果;然后在系統查詢數據庫數據的時候,對輸入的查詢詞語分詞后,得到相關的詞語。
首字Hash+折半查找高,第一層Hash是根據詞匯的長度來計算的,第二層Hash是首字Hash,最后得到詞匯子表進行折半查找。第一次對第0個字進行Hash,所有首字相同的詞語是一個子集合。這個子集合相對整個詞典稱為子詞典。循環每個子詞典。
如果這個子詞典的詞語數小于某個常數C(暫使用C=16),那這個子詞典使用二分查找;否則繼續對這個子詞典做與第一次一樣的Hash,分解出再下一級的子詞典。
(四)檢索結果的排序和分頁
1.結果數據的排序。基于框架內部的Score和DocID的相關度,是本設計方案展示搜索結果的默認方式。Score是一種底層boost,它根據關鍵詞內部評分和做索引的需要而建立。優先排序Score高的條目,再根據索引先后順序排序,如果Score一樣,先索引的排前面。
可以根據需要,在每次執行查找操作的時候,人為干預提升某個文檔的相關度,只要修改boost里面的Score數值,就可以讓它的搜索結果排在靠前的位置。也可以使用系統自帶的Sort類對檢索結果進行排序。
2.分頁的解決。當查詢結果數據量大,一個版面(或者web版面)無法完全顯示的時候,目前通常的解決方案有如下四種。第一種是利用session的暫存數據二次獲取;第二種是對數據庫進行多次查詢獲得查詢目標數據;第三種,結合上面的第一種緩存和第二種的多次查詢;第四種,則是前面一二結合緩存和多次查詢后,再把數據緩存到數據庫級別當中。對于煙草行業整合數據的查詢,如果對定位的要求不高,第三種方式即可,當查詢用戶比較多的時候,推薦采用第四種方式。
這樣的好處是每個檢索結果在session緩存中的數據量可以進一步減少,這樣就可以用它緩存更多的檢索結果,能大大提升檢索速度。
五、結語
本文基于煙草行業內部專賣監督管理的信息整合需求,為了信息查詢操作更加方便,為了結果更符合行業部門人員的需求,提出了信息整合的方案,并對方案的設計方法作了闡述。在解決行業特定的問題的過程中,對網頁內容自動分類、解析頁面內容并提取、中文的分詞、檢索結果排序和分頁提出了設計解決方案,最終滿足行業自定義的信息整合需求。
(作者單位為廣州市煙草專賣局)
參考文獻
[1] 卷煙經營內部專賣管理監督工作指引(試行)[Z].國家煙草專賣局,2019.
[2] 陳昌平,張捷,胡州明,等.垂直搜索引擎在企業內部的應用探索[J].信息與電腦,2018(20):51-53.
[3] 趙雙雙,林紅,李仁旺.基于Lucene的煙草個性化搜索引擎的研究與實現[J].工業控制計算機,2015,28(1):114-116.