李永可 李悅 陳燕紅 朱靜
摘要:通過對(duì)農(nóng)業(yè)信息分類技術(shù)的研究,依據(jù)農(nóng)業(yè)信息分類標(biāo)準(zhǔn),設(shè)計(jì)農(nóng)業(yè)信息知識(shí)庫;在農(nóng)業(yè)信息知識(shí)庫基礎(chǔ)上,對(duì)倒排索引技術(shù)進(jìn)行研究,利用lucene構(gòu)建倒排索引,開發(fā)設(shè)計(jì)農(nóng)業(yè)科技知識(shí)檢索系統(tǒng),為坐席人員提供信息檢索支持。坐席人員通過該檢索系統(tǒng),解答農(nóng)牧民生產(chǎn)過程中遇到的實(shí)際問題,充分發(fā)揮農(nóng)業(yè)科技知識(shí)對(duì)農(nóng)牧民生產(chǎn)的指導(dǎo)作用。
關(guān)鍵詞:農(nóng)業(yè)知識(shí)庫;信息檢索;倒排索引;lucene
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)23-5449-04
農(nóng)業(yè)科技已成為指導(dǎo)農(nóng)牧民科學(xué)種植、科學(xué)養(yǎng)殖致富增收的重要手段,農(nóng)業(yè)科技咨詢服務(wù)是解決農(nóng)牧民生產(chǎn)過程中遇到問題的重要途徑,也是農(nóng)業(yè)科技知識(shí)服務(wù)農(nóng)業(yè)生產(chǎn)的重要方法。該文通過對(duì)農(nóng)業(yè)知識(shí)分類技術(shù)的研究,設(shè)計(jì)農(nóng)業(yè)知識(shí)庫,在農(nóng)業(yè)知識(shí)庫的基礎(chǔ)上,利用開源項(xiàng)目lucene構(gòu)建倒排索引,開發(fā)設(shè)計(jì)農(nóng)業(yè)科技知識(shí)檢索系統(tǒng),為坐席人員提供信息檢索服務(wù),幫助坐席人員更準(zhǔn)確更詳細(xì)地解答農(nóng)牧民咨詢問題。
1 系統(tǒng)分析
該系統(tǒng)主要包括知識(shí)庫、人工錄入模塊、檢索模塊三大模塊組成,知識(shí)庫主要用來存儲(chǔ)農(nóng)業(yè)科技知識(shí);人工錄入模塊主要完成人工知識(shí)的錄入及倒排索引的創(chuàng)建;檢索模塊主要完成倒排索引的搜索和檢索結(jié)果的展示,系統(tǒng)總體結(jié)構(gòu)。
錄入人員通過瀏覽器訪問知識(shí)錄入模塊,在知識(shí)錄入模塊中錄入人員不但要錄入知識(shí)標(biāo)題和正文內(nèi)容而且要選擇知識(shí)所屬的類別,知識(shí)成功錄入知識(shí)庫后,倒排索引模塊將對(duì)該條知識(shí)分詞并建立倒排索引,以達(dá)到知識(shí)錄入后即可進(jìn)行知識(shí)實(shí)時(shí)查詢的目的,坐席人員通過瀏覽器輸入查詢內(nèi)容,服務(wù)器將對(duì)倒排索引進(jìn)行查詢并對(duì)查詢結(jié)果進(jìn)行相關(guān)性排序,將與結(jié)果最相關(guān)的結(jié)果返回給坐席人員,坐席人員點(diǎn)擊瀏覽器返回結(jié)果的超鏈接,瀏覽器向數(shù)據(jù)庫服務(wù)器發(fā)送請(qǐng)求,即可取得該條知識(shí)的詳細(xì)信息。采用先檢索倒排索引后檢索數(shù)據(jù)庫的數(shù)據(jù)檢索模式,不但能大大提高檢索效率,而且使數(shù)據(jù)庫支持了自然語言檢索,大大提高檢索精確度和召回率。
2 系統(tǒng)設(shè)計(jì)
2.1 農(nóng)業(yè)知識(shí)庫設(shè)計(jì)
Code1為一級(jí)碼表,code1為一級(jí)類別編碼,name為類別名稱;Code2為二級(jí)碼表,code2為二級(jí)類別編碼,code1為二級(jí)類別對(duì)應(yīng)一級(jí)父類編碼;Code3為三級(jí)碼表,code3為三級(jí)類別編碼,code2為三級(jí)類別對(duì)應(yīng)二級(jí)父類編碼;Code4為四級(jí)碼表,code4為四級(jí)編碼,code3為四級(jí)類別對(duì)應(yīng)三級(jí)父類編碼。四張碼表通過主外鍵關(guān)聯(lián)實(shí)現(xiàn)四級(jí)類別的聯(lián)動(dòng)。
2.2 知識(shí)錄入模塊
知識(shí)錄入模塊主要完成農(nóng)業(yè)科技知識(shí)錄入工作,知識(shí)獲取主要包括三種途徑,一是將已掌握的大量農(nóng)業(yè)科技知識(shí)資料錄入知識(shí)庫,二是通過網(wǎng)絡(luò)爬蟲從網(wǎng)上獲取相關(guān)農(nóng)業(yè)網(wǎng)頁,若從知識(shí)庫中查詢不到所需要的結(jié)果,將從網(wǎng)絡(luò)爬蟲抓取的網(wǎng)頁中進(jìn)行查詢,三是坐席人員查詢不到的知識(shí)將自動(dòng)記錄進(jìn)入數(shù)據(jù)庫,將組織專業(yè)人員對(duì)這些問題進(jìn)行解答,然后入庫,這樣可以不斷的豐富知識(shí)庫。
2.3 倒排索引創(chuàng)建
倒排索引是本系統(tǒng)的關(guān)鍵,在知識(shí)成功錄入知識(shí)庫后就需對(duì)該條知識(shí)分詞并建立倒排索引,以實(shí)現(xiàn)知識(shí)錄入完成后能實(shí)時(shí)進(jìn)行檢索的效果。Lucene是由Apache軟件基金會(huì)提供和支持的一套用于全文檢索的開源程式庫,Lucene為開發(fā)者提供了一個(gè)簡單卻功能強(qiáng)大的應(yīng)用程序接口,開發(fā)者可以利用這些接口做全文索引和檢索。在Java開發(fā)環(huán)境里L(fēng)ucene是一個(gè)成熟的免費(fèi)開源工具。就其本身而言,Lucene是當(dāng)前以及最近幾年最受歡迎的免費(fèi)Java信息檢索程序庫。該文通過對(duì)開源項(xiàng)目Lucene的研究,利用lucene3.5構(gòu)建倒排索引并進(jìn)行信息檢索,通過對(duì)庖丁解牛、IKAnalyzer、ictclas等中文分詞器的比較,最終采用IKAnalyzer2012_u6作為本系統(tǒng)的分詞器,該分詞器不但具有160萬/秒的高性能分詞能力,而且能方便的添加自定義詞典和停用詞典,同時(shí)還具備智能分詞和最細(xì)粒度分詞兩種可選擇模式,方便研發(fā)人員定制開發(fā)。
倒排索引主要包括四個(gè)域,分別為標(biāo)題、正文、表名和記錄id,標(biāo)題和正文內(nèi)容是倒排索引需要檢索的域,因此在建立倒排索引時(shí)需對(duì)這兩個(gè)域進(jìn)行分詞并存儲(chǔ),當(dāng)坐席人員點(diǎn)擊檢索返回結(jié)果超鏈接進(jìn)行科技知識(shí)詳細(xì)信息瀏覽時(shí)需從數(shù)據(jù)庫讀取對(duì)應(yīng)記錄,因此倒排索引需保存記錄所在的表名及該記錄在表中的編號(hào),表名及編號(hào)需進(jìn)行存儲(chǔ)但不需要進(jìn)行分詞。倒排索引創(chuàng)建完成后保存在本地磁盤。
2.4 倒排索引檢索
倒排索引創(chuàng)建完成后,即可對(duì)倒排索引進(jìn)行檢索,前端檢索界面使用jsp開發(fā),后臺(tái)業(yè)務(wù)邏輯開發(fā)采用java,當(dāng)坐席人員輸入查詢語句后,前端檢索頁面將查詢語句發(fā)送至后臺(tái)業(yè)務(wù)邏輯處理單元,查詢語句經(jīng)分詞器處理,查詢語句成為一個(gè)個(gè)單獨(dú)的詞元,分詞結(jié)果將在倒排索引的標(biāo)題和正文內(nèi)容兩個(gè)域中進(jìn)行查詢,無論標(biāo)題或者正文內(nèi)容那個(gè)域包含查詢關(guān)鍵詞,該條記錄都應(yīng)該作為檢索返回結(jié)果,因此,該文采用lucene3.5的多域查詢接口MultiFieldQueryParser()進(jìn)行檢索詞處理,域之間采用邏輯或關(guān)系,檢索結(jié)果如圖4所示。
tf(t in d)為詞頻,表示查詢?cè)~中每個(gè) Term在對(duì)應(yīng)的結(jié)果文檔中(d)中出現(xiàn)的次數(shù)。查詢?cè)~出現(xiàn)的次數(shù)越多,表示出現(xiàn)頻率越高,文檔的檢索得分就越高。為了避免獲得更大的相關(guān)性函數(shù),實(shí)際中,使用次數(shù)的平方跟作為文檔頻率 tf的值,避免數(shù)值過度放大。
idf(t)為倒文檔頻,表示當(dāng)term(t)在某篇文檔中出現(xiàn)的頻率越高,而在其它文檔中出現(xiàn)的頻率越低,term(t)對(duì)這篇文檔越重要,計(jì)算公式如下。
[idf(t)=1.0+log(numDocs/(docFreq+1))]
t.getBoost(),獲得詞的權(quán)重,可以在查詢中設(shè)定某個(gè)詞更加重要。
d.getBoost(),獲得文檔的權(quán)重,在索引階段寫入nrm文件,表明某些文檔比其他文檔更重要。
f.getBoost(),獲得域的權(quán)重,在索引階段寫入nrm文件,表明某些域比其他的域更重要。
norm(t, d),標(biāo)準(zhǔn)化因子,它包括三個(gè)參數(shù):
Document boost:此值越大,說明此文檔越重要。
Field boost:此域越大,說明此域越重要。
lengthNorm(field) = (1.0 / Math.sqrt(numTerms)):一個(gè)域中包含的Term總數(shù)越多,也即文檔越長,此值越小,文檔越短,此值越大。
[norm(t,d)=d.getBoost()×lengthNorm(field)×fieldfindf.getBoost()]
2.5 性能測(cè)試
該系統(tǒng)為典型的垂直搜索引擎,查準(zhǔn)率、召回率、精確度是衡量搜索引擎性能的重要指標(biāo),為了對(duì)本系統(tǒng)檢索性能進(jìn)行衡量,該文對(duì)檢索系統(tǒng)的查準(zhǔn)率、召回率、精確度進(jìn)行了測(cè)試,通過測(cè)試三項(xiàng)衡量指標(biāo)均能達(dá)到97%以上,檢索時(shí)間在毫秒級(jí),檢索效率較高。
3 結(jié)束語
系統(tǒng)正在進(jìn)行測(cè)試階段,知識(shí)庫數(shù)據(jù)相對(duì)較少,倒排索引文件也相對(duì)較小,因此,檢索速度較快,隨著數(shù)據(jù)量的不斷增加,檢索效率會(huì)降低,因此要考慮采用分布式系統(tǒng)來解決數(shù)據(jù)量增加帶來的效率問題,該問題將作為下一階段研究方向。
參考文獻(xiàn):
[1] 胡毅,劉波,方逵.農(nóng)業(yè)知識(shí)庫知識(shí)檢索系統(tǒng)研究與實(shí)現(xiàn)[J].農(nóng)機(jī)化研究.2013(6):13-18.
[2] 李永可,張?zhí)t,馮向萍.中文農(nóng)業(yè)網(wǎng)站多元線性回歸識(shí)別研究[J].新疆農(nóng)業(yè)大學(xué)學(xué)報(bào).2011,34(5):442-446.
[3] 駱浩文,曾志康,黃樑.基于網(wǎng)絡(luò)的農(nóng)業(yè)科技信息分類編碼標(biāo)準(zhǔn)體系研究與應(yīng)用[J].2007,19(3):150-154.
[4] 王斌.信息檢索導(dǎo)論[M].北京:人民郵電出版社,2010.
[5] 馬文峰,杜小勇.知識(shí)檢索研究[J].情報(bào)理論與實(shí)踐.2006,29(2):157-158.
[6] 王玉娟.農(nóng)業(yè)知識(shí)文本庫檢索系統(tǒng)關(guān)鍵技術(shù)研究[D].長沙:湖南農(nóng)業(yè)大學(xué),2012.
[7] 羅武.農(nóng)業(yè)知識(shí)庫知識(shí)錄入系統(tǒng)關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[D].長沙:湖南農(nóng)業(yè)大學(xué),2011.
[8] 王春花.基于nutch的農(nóng)業(yè)搜索引擎檢索結(jié)果排序策略的研究[D].西安:西北農(nóng)林科技大學(xué),2010.
[9] 王玉娟,方逵.農(nóng)業(yè)知識(shí)庫檢索系統(tǒng)探索[J].寧夏農(nóng)林科技,2012(4).