焦 洋,王 純,韓靜茹
(中國民航科學技術研究院 北京市民航安全分析及預防工程技術中心,北京 100028)
在如今科技引領發(fā)展的時代,企業(yè)將科技創(chuàng)新作為工作重點。以往企事業(yè)單位申報科研課題基本通過線下紙質介質申報,管理部門人工審閱批示。但隨著時間的推移,大量歷史申報課題擠壓,紙質文檔存儲的缺點逐漸暴露。第一,文檔數量龐大,不利于保存,需要專門的存儲空間和人員管理。第二,檢索效率低。隨著數量的增加,查找歷史文檔越來越困難。為此,利用Web技術開展無紙化辦公成為企業(yè)信息化建設的一項工作。目前,大部分煤礦企業(yè)擁有自己的OA辦公系統,能夠實現公文的流程。但是在科研管理工作上很少有企業(yè)開展信息化建設,往往只是利用excel工具進行簡單的登記記錄,即使有系統,功能也非常簡單,僅僅實現了申報數據記錄和查詢的功能,每年新申請的課題無法與往年課題形成對比,以至于一些課題被重復申報,浪費科研經費。
為此,利用Java Web技術,以企業(yè)科研管理業(yè)務為背景,設計研發(fā)了科研管理系統。該系統嵌入Lucene檢索工具包,實現對申報項目的檢索查新,將重復率高于30%的已有文檔進行排列顯示,供科研管理部門參考,從而完善科研項目申報的鑒定方法,以提高申報項目的領域水平,促進科研工作的有效開展。
Lucene[1]是Apache軟件基金會Jakarta項目組的一個子項目,是一個純Java編寫的開放源代碼的全文檢索工具[2]。近年來,學者對基于Lucene全文檢索的應用研究層出不窮,如行業(yè)應用、圖像視頻檢索、全文檢索技術研究以及Web應用等[3-6]。也出現了很多基于Lucene的開源軟件,例如Solr全文搜索服務器,是一款非常優(yōu)秀的全文搜索引擎[7-8]。Lucene實際上是為檢索系統提供的工具包,其主要功能是實現了全文檢索。全文檢索指先建立索引,后對索引進行搜索的過程,主要分為兩個過程:索引創(chuàng)建和搜索索引[9-10]。
索引創(chuàng)建主要分四步:讀取文本、文本分詞、詞元處理、創(chuàng)建索引。
(1)讀取文本:獲取需要創(chuàng)建索引的源數據;
(2)文本分詞:將一整段文本,分為一個個Token及詞元;
(3)詞元處理:將詞元轉換為Term單詞,例如將英語單詞復數轉變?yōu)閱螖?
(4)創(chuàng)建索引:將處理后所得的Term單詞,出重后建立索引。
索引結構如圖1所示。

圖1 索引鏈表結果
搜索索引也主要分四步:查詢輸入、詞法分析、搜索索引、相關性計算。
(1)查詢輸入:過去需要查詢的文本數據;
(2)詞法分析:類似索引創(chuàng)建的步驟二和三,將查詢文本進行處理,處理后為單詞;
(3)搜索索引:通過反向索引鏈表,找到包含處理后單詞對應文檔的ID;
(4)相關性計算:為搜索出的每個文檔進行打分,分值越高說明與查詢文本相似度越大。
該系統基于Java Web技術,嵌入Lucene檢索工具包,結合企事業(yè)單位科研管理業(yè)務,設計實現科研管理系統。具體步驟如下:
(1)基于Java Web技術搭建B/S架構的系統框架,結合SQL Server 2008數據庫,實現數據的增、刪、改、查等業(yè)務操作。
(2)嵌入ntko控件,實現電子文檔的上傳、下載與在線打開功能。ntko為能夠在線打開office、pdf等文檔的第三方控件。
(3)嵌入Lucene檢索工具包,調用Lucene提供的API,實現申報課題索引建立、詞組劃分,計算文檔相關性打分,并轉換為重復率。將重復率高于30%的文檔羅列顯示。
(4)結合JPBM工作流引擎,根據科研項目申報評審業(yè)務流程,實現所有申報項目的線上審批、駁回操作,基本實現無紙化科研管理。
系統采用B/S架構,邏輯架構主要分為4層:物理層、數據層、核心層、應用層,如圖2所示。

圖2 系統邏輯架構
應用層為查新系統提供的各種應用功能,包括各種頁面的瀏覽與數據的操作,負責處理來自瀏覽器的業(yè)務請求。核心層作為應用層的底層支撐,一般為抽象出的成熟的工具、控件和功能模塊,例如該系統調用的Lucene檢索工具包,負責為應用層查新功能提供API;潤乾報表服務器為統計報表提供樣式封裝和數據分組等服務;權限認證為公用功能模塊,已經應用在很多Web系統中。數據層表示數據的來源和存儲,該系統涉及三方面的數據,系統填報數據存放到SQL Server數據庫中,Lucene檢索數據以文件形式存儲,還有上傳的電子文檔也以文件形式存儲在數據服務器中。物理層表示整個系統的硬件設備,該系統只使用了一些常規(guī)的網絡設備和兩臺IBM X3850服務器。
前面簡單介紹了Lucene的搜索索引步驟,其中第一、二步都是對輸入查詢的操作,在實際應用中發(fā)現,對實際輸入的文本進行分詞、搜索,效果比較理想,但是對采用了相近詞替代的文本,則搜索效果不理想,例如運銷和地銷,含義相近,但搜索時不相關。因此采用了結合領域本體的辦法[11-13]。在系統中建立領域術語庫,將煤炭領域相近的術語以樹形結構存儲到數據庫中,存儲結構如圖3所示。

圖3 領域術語存儲結構
目前近似單詞查詢只是根據查詢單詞,簡單地將該單詞所屬父節(jié)點下的葉子節(jié)點找出,取出的葉子節(jié)點表示語義近似的相關術語。例如查詢單詞為采掘機,根據樹形結構找到父節(jié)點為開采設備,發(fā)現近義詞為截煤機,同理根據汽車衡可以查詢到地磅。
在查詢文本處理為單詞之后,進行領域本題庫查詢,將近似的單詞一并查出后,進行合并,合并后再進行索引搜索和相關性打分操作。
查新結果展示中,一般會將重復的單詞高亮顯示,這樣便于操作人員直觀瀏覽查重結果。Lucene提供了設置高亮的API,對比結果可以高亮顯示,但是系統應用中發(fā)現,由于高亮顯示的都是詞法分析后的單詞,即使一句話中除了“的、地”等詞,其余業(yè)務詞語全部高亮,Lucene沒能形成整句或者整段的高亮,所以感覺不夠連續(xù),頁面凌亂。因此,該系統對高亮顯示進行了更改,在原有高亮設置的基礎上,進行了二次處理。
首先,利用Lucene提供的query方法[5],對文本進行高亮設置,代碼如下:
StringpreHighlight="";
StringpostHightlight="";
query.setHighlightSimplePre(preHighlight);
query.setHighlightSimplePost(postHightlight);
設置完成后進行檢索搜索,檢索成功后,通過正則表達式,將查詢文本和搜索文檔按常用標點斷句,代碼如下:
Pattern pattern=Pattern.compile
("(^|(?![.,?!;。,?!:;…]))[“]?[^.,?!;。,?!:;…]+(([.,?!;。,?!:;…][…]?[”]?)|$)");
然后循環(huán)處理每句話,公式如下:
(1)
其中,n表示包含高亮字符preHightlight的個數;Xi表示第i個高亮區(qū)域包含的字符個數;Y表示當前斷句包含的所有字符個數。計算后保留三位小數。根據實際測試效果,P取閾值為0.7。如果P值大于0.7,則整句話表述意思基本相同,則高亮顯示當前整條語句,處理后對比顯示凌亂的問題得到明顯改善。
Lucene是一個檢索工具包,所以沒有提供重復率計算的方法。系統采用Lucene提供的相關性打分計算公式進行重復率計算。打分方法采用的是向量空間模型(VSM)算法,將查詢語句分解后的每個詞和權重看作一個向量及查詢向量,同理將搜索文檔的每個單詞和權重看作文檔向量,VSM模型算法就是計算這兩個向量的夾角,夾角越小相關性越大,相關性打分公式如下:
score(q,d)=coord(q,d)×queryNorm(q)×

t.getBoost()×norm(t,d))
(2)
其中,t表示搜索的單詞Term;coord(q,d)表示當一篇文檔中包含的搜索詞越多,則此文檔打分越高;queryNorm(q)計算每個查詢條目的方差和;tf(tind)為t在文檔d中出現的詞頻;idf(t)表示t在幾篇文檔中出現過;norm(t,d)為標準化因子;t.getBoost()指查詢語句中每個詞的權重。
利用上面公式計算的相關性分數,只是表示檢索后的文檔與查詢文本的相似度,公式中很多因素,例如權重、詞頻、搜索詞個數等,不是用來體現重復率,僅僅用相關性不能代表重復率。經過實際測試,Lucene的打分機制并不適用于該系統,因此放棄了相關性模型計算公式,采用基于文本處理的方法進行重復率計算。
按照上述內容進行搜索高亮和高亮后二次處理,這樣處理后,整片文檔的相似語句已經標黃,計算重復率只要統計查詢文本中標黃語句占整篇查詢文本的比例,即可作為重復率使用。實現效果如圖4所示,經測試重復率較準確。

圖4 重復率顯示頁面
系統功能結構如圖5所示。

圖5 系統功能結構
項目、成果、論文、專利四個管理模塊,是系統的主要業(yè)務模塊,提供科技項目、科技成果、優(yōu)秀論文、專利的申請、查新、審批、驗收等功能,覆蓋了整個系統業(yè)務流程。業(yè)務模塊中涵蓋了查新功能,在上面章節(jié)已經講述。
報表管理模塊負責系統統計分析數據的展示,包括歷年科研經費匯總信息、申報入庫信息、專利匯總信息等報表,便于企業(yè)科研管理工作者直觀地分析科研情況。
系統管理主要包含系統的基礎功能和Lucene領域庫的配置信息。
隨著同煤集團技術中心的快速發(fā)展,科研項目和科技成果的數量呈現指數級增長,隨之出現了申報過程繁瑣、科技查新難度大和管理過程復雜等一系列問題。而科技查新針對不同類型的查新項目,通過檢索文獻手段,運用綜合分析、對比分析等方法,為科技管理部門、評審機構和用戶提供事實性情報信息的咨詢服務[14-15],是提高科技立項水平的必要手段。所以同煤集團技術中心在此背景下決定在企業(yè)內部搭建科技成果、論文申報檢索查新管理系統,以實現科研項目和成果的在線申報、在線查新和統一管理。

圖6 計劃項目明細頁面
系統通過給定的項目編號、時間段等信息可以查詢各個狀態(tài)的申報信息,以列表形式展示。圖6為一條申報信息的明細頁面,點擊頁面中的附件信息可以下載上傳的附件文檔,查閱更詳細的資料。系統目前已在同煤集團技術中心正式上線運行,取得了較好的應用效果。
以Java Web技術為基礎,嵌入Lucene檢索工具包,設計實現了一套科研管理系統。提出領域術語庫結合Lucene的詞法分析的想法,加入了查詢單詞的近義詞或別稱,提升了文檔檢索的準確性。針對Lucene高亮顯示零散的問題,提出了高亮顯示二次處理方法,該方法能夠平滑處理對比文檔的重復區(qū)域,使得對比查閱文檔重復內容更加自然。在此基礎上,依據文本高亮處理結果,重新設計了文檔重復率的計算算法。系統在同煤集團技術中心進行了上線應用,根據現場運行情況反饋,滿足了屏蔽項目重復申報和項目流程管理的需求,豐富了企事業(yè)單位科研管理工作的技術手段。對于查詢單詞的近義詞搜索,目前僅僅通過簡單地引用領域庫資源樹的葉子節(jié)點,可以進一步加入單詞權重計算,更智能地搜索單詞相近詞語。
參考文獻:
[1] 徐葉強,朱艷輝,栗春亮,等.基于Lucene的海量數據庫全文檢索的設計與實現[J].湖南工業(yè)大學學報,2011,25(2):81-84.
[2] 黃江平,黃理燦,徐 玲.基于Lucene的PDF文檔的全文檢索的實現[J].工業(yè)控制計算機,2012,25(5):103-104.
[3] 勞志佳.基于Lucene 3.5搜索技術的研究與實現[J].現代計算機,2012(4):70-73.
[4] 夏 天,黃 文,馬駿濤,等.Lucene全文檢索軟件及其在學科信息服務平臺中的應用[J].圖書情報工作,2011,55(21):106-109.
[5] 李雪利,黃理燦,范晨熙.基于Lucene的文檔管理系統的設計與實現[J].工業(yè)控制計算機,2012,25(10):87-88.
[6] MILOSAVLJEVIC B,BOBERIC D,SURLA D.Retrieval of bibliographic records using Apache Lucene[J].Electronic Library,2010,28(4):525-539.
[7] FENG Xia,TANG Xianchao.An improved dictionary-based Chinese word segmentation approach in Lucene[C]//Proceedings of 2010 international conference on services science,management and engineering.[s.l.]:IEEE,2010:363-366.
[8] 溫慧明,宮曉輝.基于Solr的科技成果查新系統的構建研究[J].計算機技術與發(fā)展,2014,24(6):67-70.
[9] 羅 剛.解密搜索引擎技術實戰(zhàn):Lucene&Java精華版[M].北京:電子工業(yè)出版社,2016.
[10] 吳眾欣,沈家立.Lucene分析與應用[M].北京:機械工業(yè)出本社,2008.
[11] LIU Tianyuan,SONG Meina,ZHANG Xiaoqi.Research of massive heterogeneous data integration based on Lucene and Xquery[C]//Proceedings of 2010 IEEE 2nd symposium on Web society.Beijing:IEEE,2010:648-652.
[12] GANTER B.Two basic algorithms in concept analysis[M].Berlin,Germany:Springer-Verlag,2010.
[13] RESNIK P.Semantic similarity in a taxonomy:an information based measure and its application to problems of ambiguity and natural language[J].Journal of Artificial Intelligence Research,1999,11:95-130.
[14] 馬小雨.基于AHP的煤炭科研項目評價系統的設計與實現[D].北京:北京郵電大學,2007.
[15] 李廣利,李書寧.科技查新報告自動生成軟件的設計與實現[J].現代圖書情報技術,2013(2):82-87.