王澤賢
圖書借閱排行算法研究*
王澤賢
目前圖書借閱排行的傳統(tǒng)算法是僅按借閱次數(shù)排序,該算法存在某些熱門圖書可能會(huì)長(zhǎng)期占據(jù)排行榜前列之不足。論文提出了新的圖書借閱排行算法,該算法綜合考慮了借閱次數(shù)、復(fù)本數(shù)、入藏日期和最近外借日期等影響因素,在保證了較好推薦效果的情況下,實(shí)現(xiàn)了自動(dòng)淘汰的機(jī)制,解決了傳統(tǒng)算法的不足。
推薦書目導(dǎo)讀借閱排行算法
圖書館藏書數(shù)量巨大,少則幾十萬,多則幾百萬,且呈不斷增長(zhǎng)之勢(shì),在海量文獻(xiàn)中快速、有效地查獲所需圖書,對(duì)多數(shù)讀者而言絕非易事。開展閱讀引導(dǎo),向讀者推薦好書新書,是圖書館做好讀者服務(wù)、提高館藏利用率的有效手段。《普通高等學(xué)校圖書館規(guī)程(修訂)》第17條中規(guī)定:高等學(xué)校圖書館應(yīng)“通過編制推薦書目、導(dǎo)讀書目,舉辦書刊展評(píng)等多種方式進(jìn)行閱讀輔導(dǎo)”[1]。圖書館開展導(dǎo)讀的方式和方法有很多種,其中書目推薦就是一種重要的導(dǎo)讀手段。書目推薦的途徑包括:編制專題目錄、館藏新書通報(bào)、館藏借閱排行等[2]。專家推薦書目向來被公認(rèn)為引導(dǎo)閱讀的最佳方式,但其往往是權(quán)威性有余而實(shí)效性、靈活性不足。圖書館的圖書借閱排行榜能夠較為真實(shí)地反映該館讀者的閱讀取向和偏好[3]。借閱量大的圖書,一般是比較受讀者歡迎的書,將這些書按月度、半年度、年度等方式進(jìn)行排行并公之于眾,對(duì)揭示館藏利用情況、幫助讀者進(jìn)行閱讀選擇,具有相當(dāng)重要的意義。
目前各館的圖書借閱排行只是簡(jiǎn)單地按借閱次數(shù)進(jìn)行。該方法實(shí)現(xiàn)簡(jiǎn)單,但因其未充分考慮入藏時(shí)間、最近外借時(shí)間和復(fù)本數(shù)等相關(guān)因素,故該評(píng)價(jià)方法的可信度不高,未能真實(shí)反映圖書的價(jià)值。本文設(shè)計(jì)了一個(gè)綜合考慮各種影響因素的圖書借閱排行算法,使圖書借閱排行更加科學(xué)、合理。
圖書借閱排行最直覺、最簡(jiǎn)單的算法,就是依據(jù)指定時(shí)間內(nèi)借閱次數(shù)的多少進(jìn)行排名,借閱次數(shù)最多的圖書自然就排在第一位。這就是傳統(tǒng)的圖書借閱排行算法,該算法的優(yōu)點(diǎn)是簡(jiǎn)單、容易實(shí)現(xiàn)、排序算法計(jì)算速度快。但由于這種算法僅考慮了借閱次數(shù),所以存在一個(gè)很大的缺點(diǎn):缺乏自動(dòng)淘汰的機(jī)制,某些熱門的圖書可能會(huì)長(zhǎng)期占據(jù)排行榜前列,從而失去推薦意義。所以,需要綜合考慮影響圖書借閱排行的各種因素,設(shè)計(jì)一種新的借閱排行。
1.1 影響因素
(1)借閱次數(shù)Counto:一種圖書被借閱(包括借出和續(xù)借)的總次數(shù),借閱次數(shù)較高的圖書,表示擁有效高的借閱頻率,較受讀者歡迎,應(yīng)該排列在前。
(2)復(fù)本數(shù)Countb:同等條件下,復(fù)本數(shù)多的圖書被借閱的機(jī)率也可能會(huì)相應(yīng)較多,其被借閱的總次數(shù)相應(yīng)地也會(huì)較大;反之,復(fù)本數(shù)較少的圖書被借閱的總次數(shù)自然會(huì)較少。例如,圖書A復(fù)本數(shù)是20,其借閱次數(shù)是50次;而圖書B復(fù)本數(shù)是3,其借閱次數(shù)是20次,如果只是按借閱次數(shù)排列,A排在B前,顯然是不合理的。因此,基于公平性,圖書借閱排行計(jì)算過程中要排除復(fù)本數(shù)的影響。
(3)入藏日期Datei:圖書到館加工完成后,上架可以外借的日期。同等條件下,入藏日期較早的圖書相應(yīng)被借閱的可能性也較高,總借閱次數(shù)相應(yīng)較多;入藏日期較后的圖書,被借閱的次數(shù)自然會(huì)較少,但這并不代表這本書的表現(xiàn)就比較差。例如,圖書A已入藏300天,其借閱次數(shù)是10次;而另圖書B才入藏50天,其借閱次數(shù)是5次,如果只是按借閱次排數(shù)列,A排在B前,明顯是不合理的。因此,基于公平性,圖書借閱排行計(jì)算過程中要考慮入藏日期的影響。
(4)外借日期Datel:圖書受到歡迎有一定的周期性,圖書的最后外借日期越接近當(dāng)前日期,表示該書最近才被借出,也體現(xiàn)該書最有可能再度被借閱[4]。就算某圖書的借閱總次數(shù)較高,但其最后外借日期距當(dāng)前日期較遠(yuǎn),該書很久沒有被借閱,表示該書以前受讀者歡迎,但近期已經(jīng)不再受讀者歡迎了。
1.2 排行算法
綜合考慮以上因素,本文設(shè)計(jì)了一種新的圖書借閱排行算法:在指定的時(shí)間范圍內(nèi)(開始日期Dateb、結(jié)束日期Datee),圖書i的借閱排行得分Score(i)可由公式1得出,然后按借閱排行得分由大到小排序,即可得到圖書i在借閱排行榜的位置。

公式1中:
(2)圖書i的入藏及最近外借日期指標(biāo)D(i)=log10Dayei(i)+log10Dayel(i)。入藏天數(shù)Dayei=Datee-Datei,表示結(jié)束日期Datee與圖書入藏日期Datei間的天數(shù),即圖書可被借閱使用時(shí)間。最近外借天數(shù)Dayel=Datee-Datel,表示結(jié)束日期Datee與在統(tǒng)計(jì)時(shí)段內(nèi)圖書最后被外借日期Datel間的天數(shù)。在上面的公式中,兩日期相減表示兩日期間的天數(shù),不足一天當(dāng)一天計(jì)算。越新的圖書或越是最近被借閱的圖書,其入藏及最后外借日期因數(shù)越少,在其他條件不變的情況下,借閱排行得分越大,借閱排名越高。這意味著隨著時(shí)間的推移,及無人借閱的時(shí)間越長(zhǎng),其借閱排行得分越小,借閱排名越低,隨著時(shí)間增長(zhǎng)會(huì)逐漸跌到排行榜的末尾,保證了排名前列的都將是較新的和最近受歡迎的圖書。公式1的分母加1是為了防止D(i)=0時(shí)分母為0。

(3)α是重力因子。表示將圖書排名往下拉的力量,也即圖書排名隨時(shí)間增長(zhǎng)而下降的速度,根據(jù)實(shí)際需要調(diào)整。如圖2所示,三根曲線的其他參數(shù)都一樣,α的值分別為1.5、1和0.5。值越大,曲線越陡峭,隨著入藏及最后外借日期指標(biāo)D(i)的增大,排名下降得越快。

2.1 算法實(shí)現(xiàn)流程
按照公式1計(jì)算圖書借閱排行得分,需要綜合圖書的入藏日期、復(fù)本數(shù),及在指定日期范圍的借閱次數(shù)、最后外借日期等參數(shù)計(jì)算得出,而這些參數(shù)都需從館藏表及操作日志表中獲取,涉及的數(shù)據(jù)量比較龐大,難以在需要時(shí)即時(shí)完成計(jì)算并返回結(jié)果。例如,廣州大學(xué)圖書館(以下簡(jiǎn)稱“我館”)的館藏記錄就有270多萬條,2005至2013年的借閱日志記錄就有454多萬條。所以一般在空閑時(shí)段,預(yù)先對(duì)圖書借閱排行計(jì)算,需要時(shí)直接調(diào)用排行榜結(jié)果。圖書借閱排行計(jì)算流程如下:
(1)從日志表中取得在指定日期范圍被借閱圖書的書目記錄號(hào)。
(2)根據(jù)書目記錄號(hào)從館藏表中獲取入藏日期、復(fù)本數(shù),并從操作日志表中取得在指定日期范圍的借閱次數(shù)、最后外借日期。然后將這些參數(shù)代入公式1計(jì)算,得到圖書借閱排行得分。
(3)計(jì)算出所有被借閱圖書的借閱排行得分后,按借閱排行由高到低排序,得到圖書借閱排行榜,并將排行結(jié)果保存,供需要時(shí)使用。
2.2 性能優(yōu)化
在算法具體實(shí)現(xiàn)時(shí),還要注意性能的優(yōu)化,將計(jì)算時(shí)間控制在可接受的時(shí)間范圍內(nèi)。本文在最初實(shí)現(xiàn)算法時(shí),入藏日期、復(fù)本數(shù)、借閱次數(shù)和最后外借日期等參數(shù),都是分開單個(gè)從數(shù)據(jù)庫獲取。我館在2011年上半年度,中文圖書借閱日志記錄總數(shù)為285 692條,完成圖書借閱排行計(jì)算超過16小時(shí),這明顯是不能接受的,必須進(jìn)行優(yōu)化。經(jīng)分析,由于館藏表和日志表數(shù)據(jù)量龐大,分別單個(gè)從數(shù)據(jù)庫獲取入藏日期、復(fù)本數(shù)、借閱次數(shù)和最后外借日期等參數(shù)耗費(fèi)了大量時(shí)間。后經(jīng)改進(jìn),使用單一SQL查詢語句,實(shí)現(xiàn)一次從數(shù)據(jù)庫獲取所有計(jì)算所需的參數(shù),從而大大減少了所需時(shí)間,上面需16小時(shí)以上才能完成的計(jì)算任務(wù),現(xiàn)只需15分鐘就能完成。改進(jìn)后的SQL查詢語句如下所示:
select l.logh,count(*)as countO,
(select count(*)from holding where hldb=l.logh)
as countB,
(select min(hldc)from holding where hldb=l.logh)
as dateI,
max(loga1)as dateL
from ilog l
where loga1>=${begin}and loga1<=${end}and(logc=3031 or logc=3035)
group by logh
本文使用了我館的中文圖書館藏及其借閱日志數(shù)據(jù),對(duì)借閱排行算法進(jìn)行了驗(yàn)證分析,公式1中的重力因子取值1.5。參與實(shí)驗(yàn)的借閱日志數(shù)據(jù)記錄時(shí)間自2011年1月1日至2013年6月30日,共兩年半時(shí)間,借閱日志記錄總數(shù)為1281 301條。在本文中,將實(shí)驗(yàn)數(shù)據(jù)每半年一段:2011年1月1日至2011年6月30日為時(shí)段1,2011年7月1日至2011年12月31日為時(shí)段2,依此類推,共分成了5個(gè)時(shí)間段。
3.1 排序效果
根據(jù)各時(shí)段的借閱日志數(shù)據(jù),分別進(jìn)行借閱排行計(jì)算。表1是按本文算法計(jì)算得出,在時(shí)段5的圖書借閱排行榜前10名的相關(guān)參數(shù)及排行情況:借閱排行得分按公式1計(jì)算得出,排名按借閱排行得分由高到低排行得到,按借閱排名是僅按借閱次數(shù)由高到低的排名。
由該表可以看出,排名受圖書的復(fù)本數(shù)、借閱次數(shù)、入藏天數(shù)和最后外借日期影響,在其他條件相同的情況下,復(fù)本數(shù)越少,排名越前,借閱次數(shù)越多,排名越前,入藏天數(shù)或最后外借天數(shù)越少,排名越前。排名雖然受借閱次數(shù)影響,但與僅按借閱次數(shù)排名關(guān)系不大,并且按兩種算法得出的借閱排名相差較大。

表1 時(shí)段5圖書借閱排行榜的前10名
3.2 推薦效果
本階段實(shí)驗(yàn)中,分別將參與實(shí)驗(yàn)的兩個(gè)相鄰時(shí)段組成一組:第1組時(shí)段1作訓(xùn)練期,時(shí)段2作驗(yàn)證期;第2組時(shí)段2作訓(xùn)練期,時(shí)段3作驗(yàn)證期;以此類推,5個(gè)時(shí)段共組成4組。將訓(xùn)練期的數(shù)據(jù)分別進(jìn)行借閱排行計(jì)算,然后檢測(cè)其在驗(yàn)證期是否有借閱,從而驗(yàn)證該圖書的推薦成功性。在驗(yàn)證期有借閱,表示推薦成功;在驗(yàn)證期沒有借閱,則表示推薦失敗。
據(jù)調(diào)查顯示,用戶每次檢索后,只瀏覽少數(shù)結(jié)果頁面的比例在逐步提高,而用戶實(shí)際所訪問的結(jié)果范圍非常小。例如,從1997—2001年,用戶每次檢索后只瀏覽一個(gè)頁面的比例,從28.6%提高到50.5%,而2001年之后更是提高到70%,這意味著檢索結(jié)果空間都集中到了結(jié)果頁面的第一頁和第二頁,有時(shí)包括第三頁[5]。同樣,讀者也只會(huì)對(duì)圖書借閱排行的前幾十名最感興趣,只有排名前列的圖書才能夠吸引讀者的注意,起到引導(dǎo)、推薦的作用。所以,本實(shí)驗(yàn)中,只取驗(yàn)證期的圖書借閱排行榜前100名的圖書來進(jìn)行推薦效果驗(yàn)證,統(tǒng)計(jì)結(jié)果如表2所示。從該表可以看出按借閱次數(shù)和按本文算法得出的圖書借閱排行榜都有較高的推薦成功率,排行榜前100名的圖書,在驗(yàn)證期起碼有96種以上會(huì)被借閱,并且兩種排行算法的推薦成功率相差不大,相比較按本文算法稍微占優(yōu),推薦成功率幾乎100%。

表2 推薦成功統(tǒng)計(jì)
3.3 自動(dòng)淘汰效果
首先,分別將5個(gè)時(shí)段的數(shù)據(jù)進(jìn)行借閱排行計(jì)算,然后統(tǒng)計(jì)時(shí)段1的圖書借閱排行榜前100名的圖書在后面4個(gè)時(shí)段的圖書借閱排行榜前100名中重復(fù)出現(xiàn)的次數(shù)。表3是統(tǒng)計(jì)結(jié)果,從表3可以看出:僅按借閱次數(shù)排行的圖書借閱排行榜,最少的時(shí)候也有40種圖書重復(fù)占據(jù)前100名,即存在著某些熱門圖書長(zhǎng)期占據(jù)排行榜前列的情況,并且該情況不會(huì)隨時(shí)間的增長(zhǎng)而減少;而按本文算法的圖書借閱排行榜中,時(shí)段1的前100名的圖書在后面時(shí)段里重復(fù)出現(xiàn)在排行榜前列的情況校相對(duì)少,最多的時(shí)候也僅有16種,并且重復(fù)情況會(huì)隨著時(shí)間的增長(zhǎng)而減少。也就是說,按本文的圖書借閱排行算法有自動(dòng)淘汰的功能,避免了某些熱門圖書長(zhǎng)期占據(jù)排行榜前列的情況。增大重力因子的值可以增快自動(dòng)淘汰的速度。

表3 重復(fù)出現(xiàn)統(tǒng)計(jì)
本文提供的圖書借閱排行算法綜合考慮了借閱次數(shù)、復(fù)本數(shù)、入藏日期和最近外借日期等影響因數(shù),在保證了較好推薦效果的情況下,實(shí)現(xiàn)了自動(dòng)淘汰機(jī)制,糾正了傳統(tǒng)圖書借閱排行算法存在的某些熱門圖書長(zhǎng)期占據(jù)排行榜前列之不足。借助該算法,生成圖書借閱排行榜,可以為讀者提供較好的圖書推薦、導(dǎo)讀服務(wù),幫助讀者快捷地篩選圖書,提升服務(wù)質(zhì)量、提高館藏利用率。本文研究的圖書排行算法只能針對(duì)被借閱過的圖書,對(duì)于未被借閱過的新書該如何排行、推薦,則是下一步的研究方向。
[1]教育部關(guān)于印發(fā)《普通高等學(xué)校圖書館規(guī)程(修訂)》的通知[EB/OL].[2013-11-05].http://www.edu.cn/2002 0610/3058180.shtml.
[2]李正祥,陸書紅.書目推薦:公共圖書館參與社會(huì)閱讀的重要途徑[J].高校圖書館工作,2012(6):84-87.
[3]王喜明,祁莉.打造“推薦圖書排行榜”:高校圖書館導(dǎo)讀的新思路[J].圖書館建設(shè),2010(7):78-81.
[4]張海營(yíng).基于RFM模型的圖書館圖書評(píng)價(jià)系統(tǒng)研究[J].圖書館,2012(3):60-61.
[5]Spink A,Jansen B J,Wolfram D,et al.From e-sex to e-commerce:Web search changes[J].IEEE Computer,2002,35(3):107-109.
王澤賢廣州大學(xué)圖書館副研究館員。廣東廣州,510006。
Study on the Book-loaning Ranking Algorithm
Wang Zexian
The current traditional algorithm of book-lending ranking is only ranked by the frequency of lending,which results in the problem that some pop books may continue to rank top.This paper puts forward a new book-lending ranking algorithm,which comprehensively considered the influencing factors of the lending-frequency,duplicate-mode,collection date and the recent lending date.This new algorithm can ensure the better recommendatory effect,realize the automatically selective system and solve the deficiencies of the traditional algorithm.
Recommended bibliography.Reading guidance.Book-lending ranking.Algorithm.
G252
2014-01-10編校:鄒婉芬)
*本文系廣州市教育科學(xué)“十二五”規(guī)劃課題項(xiàng)目“關(guān)于用開源軟件實(shí)現(xiàn)OPAC 2.0的研究”(項(xiàng)目編號(hào):11A147)研究成果之一。