黃承慧,印 鑒,陸寄遠
(1. 中山大學信息科學與技術(shù)學院,廣東 廣州 510275;2. 廣東金融學院計算機科學與技術(shù)系,廣東 廣州510520)
隨著信息時代的到來,幾乎所有的紙質(zhì)文件都將轉(zhuǎn)化為電子版進行保存。這種趨勢是不可逆轉(zhuǎn)的,對比紙質(zhì)文件,電子文件更容易保存和使用,同時也更安全。所有這些要求促使我們尋找適當?shù)姆椒?,幫助用戶在日益廣闊的信息海洋中更加有效的瀏覽和管理這些電子文件。
Lucene是一個基于Java的用于文本檢索和搜索的開放源代碼工具包[1]。應(yīng)當指出的是,Lucene不是一個具備完整功能的搜索應(yīng)用程序,它只是一個具備索引和檢索功能的軟件庫,相對于其他檢索工具,Lucene有著更好的靈活性,人們可以將其應(yīng)用于文獻檢索和搜索引擎等。
盡管Lucene已經(jīng)被廣泛應(yīng)用,相關(guān)的研究也層出不窮,然而大多數(shù)研究都是基于Lucene內(nèi)部默認實現(xiàn)的詞頻分析檢索函數(shù)來考察檢索文本之間的相似性以進行檢索,很少有考慮詞項語義的Lucene檢索研究。此外,對于Lucene詞頻分析檢索函數(shù)的性能也很少被討論。因此,如果能對Lucene的檢索函數(shù)加以改進的話,則能夠有利于各種基于Lucene的應(yīng)用,如業(yè)界廣泛使用的開源搜索引擎Nutch[2]。
本文基于上述觀察,提出了一種結(jié)合檢索詞項語義的檢索函數(shù),該函數(shù)改進了傳統(tǒng)基于詞頻的方法對語義忽視所造成的檢索不夠精確的問題,同時也給出了一個初步判定文檔相似性的算法。通過這些改進,實驗結(jié)果表明,對比傳統(tǒng)的基于詞頻的方法,本文提出的方法能夠取得較好的檢索精確度和召回率。
Lucene作為優(yōu)秀的檢索軟件包,被廣泛的應(yīng)用到檢索領(lǐng)域中[3-5]。但其用于處理檢索結(jié)果排序的核心技術(shù)是基于傳統(tǒng)詞頻分析技術(shù)的,因而在檢索精確度和召回率上存在先天的不足。針對這些問題,許多文獻都利用附加的外部本體來改進Lucene的檢索工作。
文獻[6]為了解決傳統(tǒng)搜索引擎所面臨的低效檢索精確度以及無法理解用戶查詢意圖的缺陷,在Lucene的基礎(chǔ)上提出了一個基于本體的語義搜索引擎框架。文獻[7]在開放目錄項目(Open Directory Project)提供的輕量級本體的基礎(chǔ)上,利用經(jīng)典的TF-IDF詞頻分析技術(shù),Lucene 用于計算檢索結(jié)果和相關(guān)概念的相似度,以此提高搜索結(jié)果的質(zhì)量。文獻[8]則根據(jù)Wiki百科辭典的問答任務(wù),分析Wiki百科辭典中的文章和查詢中的單詞詞頻,利用Lucene計算相似度,獲得了較好的結(jié)果。
在各種本體的使用上,Wordnet是使用最多的一個本體知識庫。文獻[9-10]都是利用Wordnet提供的同義詞對用戶的查詢進行詞項擴展,同時優(yōu)化用戶提交查詢語句中的關(guān)鍵詞組,以此提高Lucene的檢索效果。文獻[11]利用潛語義索引技術(shù)和Wordnet作為本體,提出了一種獨立于Wordnet知識但依賴于潛語義索引知識的模型,利用該模型擴展Lucene查詢,取得了較好的效果。類似的,文獻[12]則集成了Lucene、WORDNET、潛語義分析以及和領(lǐng)域相關(guān)的受控詞匯等技術(shù)來改進Lucene檢索結(jié)果的有效性。
面對冗長的搜索結(jié)果列表,用戶通常只會選擇排在前面若干項的搜索結(jié)果而忽略后面的搜索列表。文獻[6]提出了一種高效的搜索方法來減少搜索結(jié)果的冗長列表。通過文中提出的基于本體的語義自適應(yīng)搜索技術(shù),本體中儲存了檢索詞項之間的關(guān)系,在用戶查詢被Lucene處理之前,該方法首先將用戶的查詢擴展為本體中的詞匯及其關(guān)系,并對擴展后的詞匯進行加權(quán)處理,每次用戶對檢索結(jié)果的點擊瀏覽都回引起權(quán)重的改變,從而逐步逼近用戶真實的查詢意圖,減少了不必要的檢索結(jié)果。
上述種種對Lucene檢索的擴展研究,或者考察利用本體對檢索詞項的詞頻進行分析,或者利用本體考察檢索詞項在本體中所處層次結(jié)構(gòu)的相似性,均未考察檢索詞項本身的語義相似性。因而不能更好的理解用戶檢索所涉及的真正意圖?;诖耍疚脑贚ucene內(nèi)置的詞頻相似度函數(shù)的基礎(chǔ)上考察詞項的語義相似性,以此提高檢索的準確度和召回率。
Lucene內(nèi)部缺省實現(xiàn)的相似度檢索函數(shù)來源于經(jīng)典的詞頻分析技術(shù)TF-IDF。該方法將文本看作是一個容納詞項的袋子,不考慮詞項出現(xiàn)的順序,也不考慮詞項的含義。文本特征向量由文本中出現(xiàn)的詞項在單個文本中出現(xiàn)的頻率以及該詞項在整個文本集中出現(xiàn)的頻率來表示。每一篇文本建模為文中出現(xiàn)的n個加權(quán)詞項組成的向量。該方法基于以下經(jīng)驗觀察
1) 詞頻(Term Frequency):某個詞項在一個文本中出現(xiàn)的次數(shù)越多,它和文本的主題越相關(guān);要注意在特定的語言環(huán)境下都有許多特定的詞不具備這種特性而應(yīng)將其排除,如中文的“的”“地”、英文的“a”“an”。
2) 逆文本頻率(Inverse Document Frequency):某個詞項在文本集合的多篇文本中出現(xiàn)越多,該詞項的區(qū)分能力越差。例如:在一個包含1000篇文本的集合中,如果某個詞項A在100篇文本中都出現(xiàn),而另一個詞項B只在10篇文本中出現(xiàn),則詞項B比A具有更好的區(qū)分能力。
通過對文本集合中的每一個詞項都進行上述分析,得到每一篇文本中每一個詞項的TF-IDF值。之后再利用這些TF-IDF值為每一篇文本建立一個向量模型,通過計算向量間的余弦相似度或者Jaccard系數(shù)來表示文本之間的相似性,最終根據(jù)檢索文檔與用戶查詢之間的相似度值高低排序,將檢索結(jié)果以列表形式返回給用戶。
Lucene的評分機制采用了信息檢索中的空間向量模型和布爾模型相結(jié)合的方法,來最終決定一個給定的文檔和一個用戶的查詢到底從多大程度上是相關(guān)的。在查詢中,使用布爾模型中的布爾邏輯首先減少了需要進行評分的文檔。其次,Lucene在支持布爾模型和模糊查詢的基礎(chǔ)上,還加入了一些性能提高和優(yōu)化。但是其核心還是基于向量模型。
Lucene采用的相似度計算函數(shù)如公式(1)所示
|D|×Boost(t,D))
(1)
上式中Q代表用戶查詢,D代表被檢索的文檔,兩者均被表示為詞頻向量。c(t,D)表示詞項t在文檔D中出現(xiàn)的頻率。df(t)是文檔集合中包含詞項t的文檔數(shù)目,|D|是文檔D的長度,|Q|是查詢Q的長度,|Q∩D|是同時出現(xiàn)在文檔D和查詢Q中的詞項的數(shù)目, Boost(t,D)表示與查詢詞項t和查詢D有關(guān)的加權(quán)因子。 qNorm(Q) 是一個規(guī)范化因子,在搜索的時候起作用,使得不同查詢間的分數(shù)可比較。其計算公式如下
(2)
其中qBoost(t,Q)表示與查詢詞項t和查詢Q有關(guān)的加權(quán)因子。
文獻[13]對信息檢索的相似度函數(shù)做了深入研究,提出了一種更健壯、更好的基于公理化思想的檢索相似度函數(shù)。其計算公式如下
(3)
其中c(t,Q)表示詞項t在查詢Q中出現(xiàn)的頻率,df(t)是文檔集合中包含詞項t的文檔數(shù)目,c(t,D)表示詞項t在文檔D中出現(xiàn)的頻率,|D|表示文檔D中所有不同詞項的總數(shù)目,即文檔詞項向量的維度,avdl則表示整個文檔集合中所有文檔包含的平均詞項數(shù)目。
盡管上述檢索函數(shù)在實踐中證明有著較好的效果,然而他們都未能捕捉文本中的語義信息。隨著互聯(lián)網(wǎng)的發(fā)展,海量的文本數(shù)據(jù)要求我們能夠更為精確的捕捉和刻畫文本的含義而不僅僅是文本詞項出現(xiàn)的頻率。例如一篇關(guān)于銀行(bank)的文章和一篇關(guān)于河岸(bank)的文章,由于銀行和河岸兩者詞項的拼寫都是bank,基于詞頻的檢索方法就會將它們檢索返回給用戶。而一篇關(guān)于蘋果和一篇關(guān)于橘子的文章則因為兩者的詞項拼寫不同(apple和orange)在用戶檢索時只返回蘋果或者橘子的文章,而無法同時返回給用戶。
如果考察檢索詞項的語義信息,更為準確的捕捉用戶的意圖就能夠有效地解決上述不足。為此,本文針對公式(3)結(jié)合詞項語義相似度進行改進,改進后的檢索函數(shù)如公式(4)所示
(4)
其中Sim(t,Q)表示查詢Q中與詞項t相似的詞的頻率,Sim_df(t)表示文檔集合中包含與詞項t相似的文檔數(shù)目,Sim(t,D)表示文檔D中與詞項t相似的詞項的頻率。這三個涉及詞項相似度的因子要求我們給出詞項相似度的閾值,我們將在實驗部分對其進行闡述。
與公式(3)比較,本文擴展了經(jīng)典的詞頻分析技術(shù),使得檢索結(jié)果不僅包含了被檢索詞項出現(xiàn)的文檔,而且還包含了與被檢索詞項相似的文檔,從而更為準確的體現(xiàn)了檢索的含義。我們注意到,由于相似性的引入,使得原本只由檢索詞項出現(xiàn)的檢索結(jié)果擴大為與檢索詞項具有相似性的檢索結(jié)果,從而大大的增加了檢索返回的文檔數(shù)目。因此,我們有必要對返回的檢索結(jié)果進行適當?shù)倪^濾處理,使得檢索結(jié)果既包含與用戶檢索需求相關(guān)的文檔,又不至于泛濫到包含所有與用戶檢索相關(guān)甚小的文檔。具體的算法描述如下
算法1:
1) 預處理文檔集合,刪除停用詞。
2) 初始化文檔向量。
3) 遍歷文檔集合,不考慮相似度計算df(t)。
4) 遍歷文檔集合根據(jù)詞項相似度計算方法尋找包含與檢索詞項相似度超過閾值μ(0<μ≤1)的詞匯的文檔。
5) 根據(jù)公式(4)計算文檔與用戶查詢的相關(guān)性,按相關(guān)性大小降序返回檢索列表PrimaryList。
6) 取檢索列表PrimaryList排名在df(t)/μ之前的文檔作為最終檢索結(jié)果ResultList。
算法1中用于計算詞項之間相似度的方法,采用了WordNet::Similarity工具包,該工具包實現(xiàn)了8種主流的詞與詞之間相似度計算的方法[14]。文獻[15]指出,基于信息內(nèi)容度量的相似度方法優(yōu)于其它方法。因此,本文采用了文獻[16]所實現(xiàn)的相似度算法作為算法1中計算詞項之間相似度的方法。相似度閾值μ在實驗部分有詳細描述。
實驗數(shù)據(jù)采用業(yè)界廣泛采用的Ruters-21578數(shù)據(jù)集(Re1),Re1數(shù)據(jù)集采用了ModApte劃分,共9 603篇文檔,Ruters-22173數(shù)據(jù)集(Re2),Re2數(shù)據(jù)集采用了ModWiener劃分,共9 610篇文檔。在數(shù)據(jù)集Re1,Re2上建立Lucene支持的布爾查詢,對Lucene缺省的相似度函數(shù)、改進的公理化相似度函數(shù)以及本文提出的基于語義相似性的度量函數(shù)進行了對比研究,實驗結(jié)果如圖1所示。
本文提出的語義相似度檢索公式(4)中,需要根據(jù)詞項的相似度來計算查詢Q中與詞項t相似的詞的頻率、文檔集合中包含與詞項t相似的文檔數(shù)目以及文檔D中與詞項t相似的詞項的頻率。實驗采用了基于信息內(nèi)容度量的相似度計算方法,在對文檔集合的常見詞匯進行計算后,我們設(shè)定詞項相似度閾值為0.57,即兩個詞項之間的相似度如果超過0.57,則認為這兩個詞項是相似的,從而對相應(yīng)的詞頻進行計數(shù)。需要指出的是,計算兩個詞項相似度的WordNet::Similarity工具包是采用Perl語言編寫的,計算效率較低。因此,本文對實驗數(shù)據(jù)集中的詞項相似度預先進行了計算,以名稱為兩個詞項,值為詞項相似度的哈希表的形式保存在內(nèi)存中,實際進行檢索時,只需從哈希表中查找已經(jīng)計算好的相似度,從而減少算法的運算時間。
實驗的總體結(jié)果是比較滿意的,在Re1,Re2兩個數(shù)據(jù)集上,對比傳統(tǒng)的基于詞頻的相似度函數(shù),本文提出的方法在檢索精度指標上均取得了10%以上的提升。這說明了本文在傳統(tǒng)詞頻分析的基礎(chǔ)上結(jié)合語義信息是可行的。
本文針對Lucene內(nèi)置的文本檢索相似度函數(shù)進行了改進,將傳統(tǒng)的基于詞頻分析的相似度函數(shù)增加詞項的語義信息,并利用基于信息理論的詞項語義相似度量理論計算詞項之間的語義相似性,以此對文檔進行檢索。實驗結(jié)果表明,本文提出的方法是有效的,能夠進一步提高檢索的精度。
本文對文本檢索的語義信息進行了有益的嘗試,實驗的結(jié)果雖然對比傳統(tǒng)方法有一定的改進,但計算詞項之間相似度的時間開銷是需要我們進一步去優(yōu)化和改進的。此外,單純的考察詞項之間的相似性丟失了文檔內(nèi)在的結(jié)構(gòu)性特征,以致檢索結(jié)果的提高有一定的局限性。我們預期在后續(xù)的研究里進一步考察文檔的結(jié)構(gòu)信息,并結(jié)合現(xiàn)有的語義相似度分析技術(shù),以便得到更好的檢索效果。
參考文獻:
[1]Lucene.Lucene Java 3.0.1[EB/OL].(2010-02-26)[2010-03-30]. http://lucene.apache.org/
[2]Nutch.Apache Nutch 1.0 release[EB/OL].(2009-03-23)[2010-03-30]. http://lucene.apache.org/nutch/
[3]SONG J, ZHU Y Q, LIU R D. Enhanced full text retrieval kit based on Lucene [J]. Computer Engineering and Applications, 2008, 44 (4): 172- 175.
[4]GUAN J H, GAN J F. Design and implementation of web search engine based on Lucene [J]. Computer Engineering and Design, 2007, 28(2):489-491.
[5]ZHOU D P, XIE K L. Lucene search engine [J]. Computer Engineering, 2007, 33(18):95-96.
[6]YANG C, YANG K C, YUAN H C. Improving the search process through ontology-based adaptive semantic search [J]. Metadata and Semantics for Digital Libraries, 2007, 25(2) : 234-248.
[7]ZHU D Y, DREHER H. Determining and satisfying search users real needs via socially constructed search concept classification [C]//IEEE DEST 2007, 2007.
[8]BUSCALDI D, ROSSO P. A bag-of-words based ranking method for the Wikipedia question answering task [C]//CLEF 2006, 2007: 550-553.
[9]ZHENG T, ZHENG C. Semantic retrieval system based on Lucene [J]. Computer Engineering, 2008, 34(16):92-94.
[10]JIANG Y F, WANG H, ZHANG Y H, et al. Design and implementation of semantic search engine based on Lucene[J]. Computer Engineering and Design, 2008, 29(20):5336-5341.
[11]DU L, JIN H D, DE VEL O, et al. A latent semantic indexing and WordNet based information retrieval model for digital forensics[C]// IEEE ISI 2008, 2008: 70-75.
[12]RAVISHANKAR D, THIRUNARAYAN K, IMMANENI T. A modular approach to document indexing and semantic search[C]// WTAS 2005, 2005: 165-170.
[13]FANG H, ZHAI C. An exploration of axiomatic approaches to information retrieval [C]//Proceedings of the 2005 ACM SIGIR Conference on Research and Development in Information Retrieval, 2005: 480-487.
[14]PEDERSEN T, PATWARDHAN S, MICHELIZZI J. Wordnet::similarity-measuring the relatedness of concepts[C]//Proc of AAAI-04, San Jose, California, USA, 2004: 1024-1025.
[15]BUDANITSKY A, HIRST G. Semantic distance in WordNet: an experimental, application-oriented evaluation of five measures [C]// Proc of the Workshop on WordNet and other Lexical Resources, 2001.
[16]LIN D. An information-theoretic definition of similarity[C]//Proceedings of the 15th International Conference on Machine Learning, Madison, WI, US, 1998.