張 勇 楊賽軍 黃 華
(1.中國科學技術(shù)信息研究所,北京 100038;2.北京萬方數(shù)據(jù)股份有限公司,北京 100038)
信息檢索系統(tǒng)能夠幫助文獻查閱者快速查找目標文獻,檢索系統(tǒng)在收到用戶的檢索請求時,根據(jù)用戶輸入的檢索詞,使用倒排索引技術(shù)查找到所有符合用戶檢索語句的文獻,然后使用預先設(shè)定的指標對這些文獻計算分值并排序返回。面對用戶不同的文獻搜索需求,檢索系統(tǒng)需要結(jié)合引證關(guān)系、時間因子、實時熱度等各類指標,計算出每一篇文獻的分值,對命中文獻進行實時排序。具體指標包括出版時間、被引用次數(shù)、相關(guān)度、下載次數(shù)等。搜索引擎按照一定的規(guī)則對文獻進行排序,以幫助用戶精準發(fā)現(xiàn)所需的文獻。
萬方數(shù)據(jù)的搜索引擎收錄有近3 億篇的文獻,包含中外文期刊、學位、會議、專利等,如果僅使用PageRank值進行排序,不是所有文獻都能找到引證關(guān)系,尤其是新文獻,因此無法有效計算PageRank值。如何使用更有效的評分指標對海量文獻進行排序,滿足用戶搜索文獻需求,已成為萬方數(shù)據(jù)搜索引擎首要解決的問題。本文研究了基于引證關(guān)系的PageRank算法和引入時間衰減因子的CiteRank算法,同時加入其他歸一化的指標,包括出版年份、下載次數(shù)等,對文獻進行評分,以提升新文獻和熱門文獻被閱讀的概率。
經(jīng)典的文獻排序算法包括PageRank和CiteRank。PageRank算法的核心是PageRank值,假設(shè)用戶在瀏覽網(wǎng)頁時,會隨著這篇網(wǎng)頁的鏈接引導一直點擊進入下一層引用的頁面,直到完成瀏覽關(guān)閉頁面、或隨機打開了一個新的網(wǎng)頁。這里有兩個假設(shè):數(shù)量假設(shè)和質(zhì)量假設(shè)[1]。數(shù)量假設(shè)是指在網(wǎng)頁鏈接圖模型中,一個頁面節(jié)點接收到的其他網(wǎng)頁被指向的入度數(shù)量越多,則這個頁面就會越重要;質(zhì)量假設(shè)是指頁面的入度質(zhì)量不同,質(zhì)量高的頁面會通過鏈接向其他頁面?zhèn)鬟f更多的權(quán)重?;谝陨蟽蓚€假設(shè),PageRank算法起初為網(wǎng)頁分配相同的重要性得分,使用遞歸計算方法去更新各頁面的PageRank值,直到該值達到穩(wěn)定的狀態(tài)為止。搜索引擎對于不同的查詢語句,召回候選頁面,優(yōu)先排序PageRank值高的頁面。某一個頁面i的PageRank值計算公式如下:
在式(1)中,PR(pi) 表示頁面pi的PR值,C(pk)表示引用頁面pj鏈出的頁面總數(shù),d為阻尼因子。
在使用PageRank算法通過引證關(guān)系計算文獻分值的時候,有以下兩個特點:一是網(wǎng)頁鏈接可以是雙向的,而引證關(guān)系是單向的,在時間上只能是后發(fā)表的文獻引用先發(fā)表的文獻;二是網(wǎng)頁鏈接是動態(tài)的,而引文是靜態(tài)的,文獻的引證關(guān)系在發(fā)布后不再改變。對于發(fā)布時間久遠的文獻,被引次數(shù)往往大于新發(fā)表的文獻。在評估新文獻價值方面,孫澤鋒等[2]提出了一種改進的文獻排序算法,結(jié)合PageRank思想以及常用的被引量,并將出版時間作為阻尼因子,使得新文獻和舊文獻在價值評估時分別有不同的權(quán)重。張光前等[3]使用閱讀價值衡量一篇文獻的重要程度,閱讀價值由文獻所在期刊、文獻作者、文獻內(nèi)容等的重要程度決定。劉松濤[4]提出了一種使用相關(guān)強度對引文進行排序的方法,用于對學術(shù)期刊文獻的引用和被引用關(guān)系進行定量分析。
文獻檢索系統(tǒng)根據(jù)用戶輸入的查詢語句,在索引中查詢文獻,并根據(jù)預設(shè)的評價指標對查詢到的文獻進行統(tǒng)一排序。在實際應用中,有的用戶更關(guān)注新文獻和熱門文獻,而基于PageRank的文獻排序算法,更適用于發(fā)現(xiàn)年代久的文獻,在發(fā)現(xiàn)新文獻和熱門文獻方面不占優(yōu)勢。CiteRank算法改善了PageRank的這種局限性,在計算文獻權(quán)重時引入了時間因素。其計算原理是,對于一個更合理的模型應該是優(yōu)先從最近的文獻開始瀏覽,并通過引用鏈接逐步瀏覽發(fā)布時間越來越久的文獻。
本文研究了一種多指標混合排序模型,將搜索結(jié)果文獻相關(guān)度得分和PageRank、CiteRank、出版時間、下載次數(shù)等指標進行歸一化處理,并分配不同的權(quán)重,從而對命中文獻進行混合排序,使得搜索結(jié)果更契合用戶的需求。
本文首先研究了引入時間衰減因子的CiteRank算法對于提升新文獻被訪問概率的可行性,然后提出使用TF-IDF為命中文獻進行相關(guān)度評分的方法,最后提出一種基于CiteRank值、文獻相關(guān)度、下載次數(shù)等指標的混合排序算法。
CiteRank模型中定義了兩個參數(shù)Tdir和α。Tdir是文獻的特征衰減時間,即某一學科領(lǐng)域的熱度衰減;α是每一次瀏覽后滿意并退出的概率。那么每次不滿意并點擊引用鏈接的概率是1-α[5]。
CiteRank模型的轉(zhuǎn)移矩陣如下:
表示文獻j的被引用次數(shù)。用ρi表示最開始時選擇文獻i的概率:,通過初步選擇可發(fā)現(xiàn)文獻的概率為,點擊該文獻的引用鏈接發(fā)現(xiàn)文獻的概率為:(1 ? α)W·。
CiteRank可用式(3)計算得出:
t年前的一篇文獻的CiteRank為Ttot(t),它主要由以下兩部分組成:
一是直接的(direct)訪問Tdir(t),表示t年前所有文獻的初始選擇為:
二是間接的(indirect)訪問Tind(t),既通過引用列表點擊跳轉(zhuǎn)的訪問:
表明進入t年前的文獻的鏈接可以來自所有可能的中間時間的文獻。Pc(t′,t) 表示從t′年前文獻中引用t年前文獻的比例,這是一個經(jīng)驗值[2],它可以被近似為
對Ttot(t)=Tdir(t)+Tind(t)進行傅利葉變換可以得到式(6):
解析Ttot(ω)并進行傅利葉反變換得到式(7):
從式(7)中可以得出,對于大的α,小的τdir表示最新的文獻會被更大的概率訪問;對于小的α,大的τdir表示會相應提高舊文獻的訪問量。
文獻相關(guān)度得分是評價搜索結(jié)果與查詢語句匹配程度的重要指標。搜索引擎根據(jù)查詢語句與命中文獻的匹配程度計算相關(guān)度得分,但并不是所有的文獻都包含查詢語句中的詞,并且每個詞的重要程度不同,因此一個文獻的相關(guān)度評分取決于每個查詢語句在文獻中的權(quán)重[6]。
萬方數(shù)據(jù)的文獻在索引過程中使用了倒排序索引技術(shù)[7],搜索引擎使用布爾模型(Boolean model)查找與輸入詞條相匹配的文獻,并用TF/IDF(term frequency/inverse document frequency)公式來計算文獻相關(guān)度得分。搜索引擎使用TF表示詞條t在文獻d中出現(xiàn)的頻率,即。如果詞或短句在某一篇文獻中出現(xiàn)的頻率比較高,并且在其他文獻中很少出現(xiàn),則可以認為該詞或者短句具備很好的類別區(qū)分能力,適用于解決分類問題,一些通用的詞語對于文獻主題并沒有太大的作用,反倒是一些出現(xiàn)頻率非常少的詞才能夠更多地表達文獻的主題,所以僅僅使用詞頻是不合適的。因此在計算文獻相關(guān)度得分時,必須考慮詞的權(quán)重。一個詞預測主題的能力越強,則權(quán)重越大;反之,權(quán)重越小。
在倒排序索引中,如果文獻的一些詞只是在少數(shù)幾篇文獻中出現(xiàn),那么這些詞對文獻主題的貢獻作用會很大,這些詞和短句的權(quán)重應該被設(shè)計得大一些。IDF就是詞的權(quán)重,即,此時IDF為逆向文獻頻率(inverse document frequency),如果包含詞條t的文獻少,則IDF會越大,表明詞條t具有非常好的類別區(qū)分能力。如果一些文獻中含有詞條t的文獻數(shù)量為m,而其他文獻中含有詞條t的文獻數(shù)量為k,那么可以得出所有包含t的文獻數(shù)量為n = m + k。當m越大時,n也會越大,按照IDF公式得到的IDF值就會越小,說明該詞條t的區(qū)分類別的能力不強。但是在實際情況中,如果一個詞條或短句在一個類別的文獻中經(jīng)常出現(xiàn),則可以說明這個詞條能夠很好地表示這個類別的文本特征,這些詞條應該被賦予更高的權(quán)重,并用來作為該類別文本的特征詞,用以區(qū)別于其他類別的文獻。
在給定的文獻里,詞頻(term frequency,TF)表示的是某一個給定的詞語或短句在該文獻中出現(xiàn)的頻率。這個數(shù)值是對詞數(shù)量的(term count)歸一化,用于防止該值偏向比較文字較多的文獻。但是在實際使用過程中,會根據(jù)不同的命中屬性(標題、摘要、關(guān)鍵詞)預先設(shè)計不同的權(quán)重wz。如標題命中時權(quán)重會更高,摘要則會賦予相對低一些的權(quán)重。因此,可得詞i命中文獻j的z字段時分值為式(8):
文獻的相關(guān)度得分Sr即為所有詞在文獻所有字段中的分值之和Sr=∑Si,z
文獻的最終分值將由相關(guān)度得分Sr、Cite-Rank分值Sc、下載次數(shù)Sp等指標乘以相應的權(quán)重得出。
其中,Sc為Ttot(t)歸一化后的結(jié)果,下載次數(shù)Sp可以在文獻進入索引庫時預先計算為0 到100 之間的值,這兩個指標根據(jù)數(shù)據(jù)進入索引的周期,會定期進行更新。這種預先計算分值的方式,可以避免在排序時進行大量的實時計算,使用存儲空間換取計算時間,節(jié)省了大量的計算資源,提升了排序性能。在用戶使用搜索引擎時,輸入檢索詞,檢索集群會為數(shù)百萬命中文獻進行排序。為了有效節(jié)省內(nèi)存資源,將排序時的資源消耗限定在合理的范圍內(nèi),搜索引擎只在內(nèi)存中保存分值最大的N個值(top N)。
本文以萬方數(shù)據(jù)收錄的文獻和2020年被下載數(shù)據(jù)作為實驗數(shù)據(jù),對混合排序算法進行驗證,文獻數(shù)據(jù)集合符合標準定義[8],包含標題、摘要、關(guān)鍵詞、刊物收錄情況、作者、作者單位等字段[9],以及文獻的引證關(guān)系[10]。本文在計算CiteRank時,使用了不同的α和τdir來預測文獻被訪問到的概率,并由此比對了PageRank和CiteRank分值的區(qū)別。最后基于萬方數(shù)據(jù)的用戶搜索行為日志,分析使用混合排序前后,用戶對搜索結(jié)果前三條的點擊率變化,來驗證混合排序算法的有效性。
使用公式(7)可以計算各出版年份下文獻被訪問到的概率,本文使用了3 組不同的τdir和α參數(shù)進行計算,對比結(jié)果如圖1所示,x軸表示文獻發(fā)布年份與2020年之間的差距,數(shù)字越小表示文獻越新。由數(shù)據(jù)結(jié)果可以得出:對于小的τdir,大的α,表示最新的文獻相比舊的文獻有更高的概率被訪問到;對于大的τdir,小的α,表示則會相應提高舊文獻被訪問的概率。為了契合部分用戶訪問新文獻的需求,萬方數(shù)據(jù)使用了CiteRank作為文獻排序的一個指標。通過對比3組參數(shù)的計算結(jié)果,本文選擇τdir=2.1,α=0.7 作為計算CiteRank時的參數(shù),從而可以做到以更大的概率將較新的文獻排在前面。
圖1 α和τdir參數(shù)模擬各年份文獻被訪問的概率
本文選擇使用萬方數(shù)據(jù)收錄的2000年至2020年文獻元數(shù)據(jù)和這些文獻之間的引用關(guān)系作為數(shù)據(jù)集,分別計算每一篇文獻的PageRank和CiteRank值。表1截取了部分近5年的數(shù)據(jù),包含典型的權(quán)威文獻和流行文獻,對比了同一篇文獻的CiteRank和PageRank。由于PageRank值在計算過程中僅使用文獻之間的引用關(guān)系,體現(xiàn)了文獻之間權(quán)重的貢獻值,反映了文獻的經(jīng)典權(quán)威程度;而CiteRank為文獻的貢獻關(guān)系加入了出版時間作為衰減因子,出版時間越久遠的文獻獲得的貢獻值越少,反之則會獲得更大的貢獻值,從而反映了文獻的流行度。
表1中文獻按照CiteRank值從高到低進行排序,文獻1 和文獻2 的發(fā)布年份大于2019,被引數(shù)分別為360 和556,文獻3 的年份為2015年,被引數(shù)為4 832,雖然文獻3 的被引次數(shù)遠遠大于文獻1 和文獻2,但是根據(jù)CiteRank算法特性,年份相對久遠的文獻獲得的貢獻會根據(jù)年份進行相應的衰減,所以文獻3 的CiteRank值會低于文獻1 和文獻2。對于文獻的PageRank值,文獻3、文獻9、文獻10 被引數(shù)最高,PageRank值也是最高,僅僅反映了的文獻的被引關(guān)系。從表1得出,PageRank可以用于經(jīng)典文獻優(yōu)先排序,優(yōu)先列出權(quán)威的文獻(不考慮出版年份),CiteRank則可以用于新文獻優(yōu)先排序(默認排序),優(yōu)先列出新的文獻(考慮出版年份)。
本文統(tǒng)計了各出版年的文獻在2020年被訪問次數(shù)。數(shù)據(jù)顯示,用戶更傾向于選擇訪問新的文獻,這與萬方數(shù)據(jù)選擇使用CiteRank作為默認的排序指標相符合,使用CiteRank可以為用戶提供偏向新文獻的排序結(jié)果,如圖2所示。
本文使用單一指標排序和混合指標排序兩種場景下10 天內(nèi)用戶對搜索結(jié)果的點擊行為數(shù)據(jù)進行分析。分別統(tǒng)計出兩種排序場景下用戶點擊搜索結(jié)果的總點擊數(shù),以及點擊前三條結(jié)果的點擊數(shù)(top 3 點擊數(shù)),從而計算出點擊率(top 3點擊數(shù)/總點擊數(shù))。表2顯示了這兩種排序場景下的數(shù)據(jù)對比,可以得出混合排序算法能顯著提升用戶點擊排序結(jié)果top 3 文獻的幾率,該算法在搜索引擎中更加契合用戶默認的文獻搜索需求。
表1 PageRank值和CiteRank值對比
圖2 歷年文獻在2020年被下載次數(shù)統(tǒng)計
表2 各排序場景下用戶點擊率對比
萬方數(shù)據(jù)搜索引擎中收錄有近3 億篇的文獻,單純地使用PageRank或CiteRank對文獻進行排序,會導致權(quán)重傾向于單一的指標,不能精準地契合大數(shù)據(jù)環(huán)境下用戶對新文獻和熱門文獻的搜索需求。本文研究了基于CiteRank的混合排序算法,引入出版時間、下載次數(shù)等歸一化指標進行加權(quán)平均。實驗結(jié)果表明,混合排序算法能夠提升新文獻和熱門文獻在排序上的優(yōu)勢。最后通過分析用戶的搜索行為數(shù)據(jù),進一步驗證了在搜索引擎中應用基于CiteRank的混合排序算法更能契合用戶搜索文獻的需求。