汪 晴
(南京航空航天大學(xué) 圖書(shū)館,江蘇 南京 211106)
一校多址給高校圖書(shū)館的典藏管理帶來(lái)巨大挑戰(zhàn)。隨著多校區(qū)圖書(shū)館分館的產(chǎn)生,圖書(shū)買(mǎi)幾本,放哪里,怎么分配成了典藏的重要問(wèn)題。本文以南航圖書(shū)館委托數(shù)據(jù)(即各分館互借數(shù)據(jù))為基礎(chǔ),對(duì)比采用神經(jīng)網(wǎng)絡(luò)算法建模,研究分館典藏的智能預(yù)測(cè)和動(dòng)態(tài)調(diào)整。
館際互借不僅僅是一校之內(nèi)的研究課題。CCD(協(xié)同館藏開(kāi)發(fā))活動(dòng)為國(guó)外高校圖書(shū)館整體帶來(lái)了巨大的經(jīng)濟(jì)效益,但服務(wù)質(zhì)量和成本待進(jìn)一步提升。
在跨館典藏研究方面,楊靜[1]提出校區(qū)互借服務(wù)應(yīng)從以圖書(shū)館為導(dǎo)向朝以讀者為導(dǎo)向轉(zhuǎn)變。Walters[2]調(diào)研曼哈頓學(xué)院師生對(duì)圖書(shū)的選擇,指出學(xué)生群體的選擇不可預(yù)測(cè),與其個(gè)人特征相關(guān)性更為隱蔽。因此,人工方式預(yù)測(cè)有局限性,無(wú)法挖掘深層需求和感知需求變化,必須建立與時(shí)序相關(guān)的可靠模型來(lái)預(yù)測(cè)委托量趨勢(shì)變化。田梅[3]采用支持向量機(jī)作為建模工具,但沒(méi)有考慮除時(shí)間之外的因素對(duì)借閱的影響;尹志強(qiáng)[4]基于數(shù)據(jù)挖掘預(yù)測(cè)模型,引入混沌理論提升性能;王紅等[5]采用聚類(lèi)等技術(shù)探索讀者與流通之間隱含規(guī)律;陳添源[6]基于學(xué)科細(xì)分讀者群體和圖書(shū)分類(lèi)兩個(gè)方面,通過(guò)APRIORI關(guān)聯(lián)算法分析建模;張囡等[7]采用灰色神經(jīng)網(wǎng)絡(luò)算法,但對(duì)較長(zhǎng)時(shí)間借閱量季節(jié)性變化預(yù)測(cè)的缺陷很明顯。因此,本文從長(zhǎng)時(shí)間、高精度預(yù)測(cè)要求出發(fā),考慮委托書(shū)名、時(shí)間等有效信息對(duì)預(yù)測(cè)合理性和準(zhǔn)確度的影響,選擇LSTM神經(jīng)網(wǎng)絡(luò)算法來(lái)建模分析。
長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short Term Memory,LSTM)是一種時(shí)間遞歸神經(jīng)網(wǎng)絡(luò),在學(xué)科主題熱度預(yù)測(cè)[8]和中文專(zhuān)利關(guān)鍵詞抽取[9]等圖情領(lǐng)域應(yīng)用,取得了很好的預(yù)測(cè)效果和準(zhǔn)確率。通過(guò)在單元結(jié)構(gòu)中引入門(mén)函數(shù),LSTM可以很好地處理長(zhǎng)期依賴(lài)性問(wèn)題。
輸入門(mén)it:計(jì)算當(dāng)前計(jì)算的新?tīng)顟B(tài)已多大的程度更新到記憶單元,結(jié)果是向量,取值0~1,控制各維度流過(guò)閥門(mén)的信息量:
it=σ(Wixt+Uiht-1+bi)
(1)
遺忘門(mén)ft:控制前一步記憶單元的信息有多大程度被遺忘:
ft=σ(Wfxt+Ufht-1+bf)
(2)
輸出門(mén)ot:控制當(dāng)前的輸出有多大程度取決于當(dāng)前的記憶單元:
ot=σ(Woxt+Uoht-1+bo)
(3)
一個(gè)內(nèi)部記憶單元ct:
(4)
(5)
最終,輸出ht的計(jì)算公式是:
ht=ot⊙tanh(ct)
(6)
以遺忘門(mén)為例,根據(jù)上一輪的輸入熱度hi-1和本輪的輸入xt,來(lái)計(jì)算當(dāng)前的單元狀態(tài),Wf為遺忘門(mén)權(quán)重矩陣,bf為遺忘門(mén)偏差向量。輸入門(mén)、輸出門(mén)和遺忘門(mén)的計(jì)算方式類(lèi)似。通過(guò)這3個(gè)門(mén),LSTM不僅體現(xiàn)了單元之間外部循環(huán)的關(guān)系,而且體現(xiàn)了單元內(nèi)部的自循環(huán)過(guò)程,所以更容易學(xué)習(xí)到圖書(shū)、圖書(shū)分類(lèi)、圖書(shū)委托量在時(shí)間序列上的變化關(guān)系。
根據(jù)南航圖書(shū)館委托大數(shù)據(jù)的分析,設(shè)計(jì)模型如下。
輸入數(shù)據(jù):圖書(shū)索書(shū)號(hào)、圖書(shū)名稱(chēng)分詞、圖書(shū)分類(lèi)、來(lái)源館藏、目標(biāo)館藏、時(shí)間(學(xué)年或?qū)W期);
輸出數(shù)據(jù):委托量。
該模型訓(xùn)練完成后即可用于對(duì)下個(gè)周期(學(xué)年或?qū)W期等)的圖書(shū)資源進(jìn)行預(yù)測(cè),用于指導(dǎo)全局館藏調(diào)度的執(zhí)行方案。首先對(duì)歷史委托數(shù)據(jù)進(jìn)行預(yù)處理,然后使用Tensorflow/Keras框架建立LSTM神經(jīng)網(wǎng)絡(luò)。下面簡(jiǎn)單示意構(gòu)建LSTM神經(jīng)網(wǎng)絡(luò)的代碼:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, 64, input_length = maxword),
tf.keras.layers.LSTM(128, return_sequences=True),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.LSTM(64, return_sequences=True),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.LSTM(32),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(1, activation='sigmoid'),
])
tf.keras.utils.plot_model(model, to_file='lstm_model.png', show_dtype=True, show_shapes=True)
基于以上模型,首先對(duì)歷史數(shù)據(jù)進(jìn)行預(yù)處理,從數(shù)據(jù)庫(kù)中獲取的原始數(shù)據(jù)示例如表1所示。
表1 委托借閱原始數(shù)據(jù)示例
2.3.1 書(shū)名分詞
書(shū)名往往包含所屬領(lǐng)域等特征,可能會(huì)體現(xiàn)出這些書(shū)籍和委托量、委托周期的關(guān)系,例如每年下半學(xué)期在將軍路校區(qū)開(kāi)馬克思主義哲學(xué)選修課,就會(huì)產(chǎn)生一定的委托量。因此,本文對(duì)書(shū)名進(jìn)行分詞,如《時(shí)代精神的精華:馬克思主義哲學(xué)原著導(dǎo)讀》分詞為[馬克思主義,哲學(xué)…],轉(zhuǎn)化為特征向量,和委托量、委托周期相關(guān)聯(lián),進(jìn)行訓(xùn)練。采用結(jié)巴分詞的代碼示例如下:
import jieba
title = "時(shí)代精神的精華:馬克思主義哲學(xué)原著導(dǎo)讀"
seg = jieba.cut(title)
print(",".join(seg))
# 時(shí)代精神,的,精華,:,馬克思主義,哲學(xué),原著,導(dǎo)讀
2.3.2 編碼
上述數(shù)據(jù)中有些字段例如委托地、被委托地等,并非連續(xù)值,而是分類(lèi)值,因此需要用數(shù)字來(lái)表示這些非連續(xù)的分類(lèi)信息。本文采用ONE-HOT編碼,即:使用1位有效編碼來(lái)表達(dá)特征中的一個(gè)維度。ONE-HOT編碼示例:
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
# 館藏委托地特征,第一項(xiàng)是委托地,第二項(xiàng)是被委托地
feature = [['明故宮二樓夾層庫(kù)', '將軍路'], ['將軍路密集書(shū)庫(kù)(一樓)', '明故宮社會(huì)科學(xué)閱覽室(外借圖書(shū))'], ['將軍路密集書(shū)庫(kù)(一樓)', '明故宮二樓夾層庫(kù)']]
enc.fit(feature)
transform = enc.transform([['將軍路密集書(shū)庫(kù)(一樓)', '將軍路']]).toarray()
print(transform) # [[1. 0. 1. 0. 0.]]
2.3.3 歸一化
編碼對(duì)于分類(lèi)有限的字段,例如委托地,能夠使用數(shù)字表達(dá);但是對(duì)于書(shū)名分詞,特征維度較多,數(shù)據(jù)量較大,因此采用如下特征歸一化的方法進(jìn)行處理:
x′=-1+(x-MIN)×2/(MAX-MIN)
(7)
即把[MIN, MAX]區(qū)間的數(shù)據(jù)線性映射到[-1, 1]。
綜上所述,對(duì)原始數(shù)據(jù)需要進(jìn)行如下預(yù)處理:圖書(shū)ID、(來(lái)源館藏、目標(biāo)館藏):采用OneHot編碼并歸一化;圖書(shū)名稱(chēng)、圖書(shū)分類(lèi):先使用jieba分詞,然后采用LabelEncoder編碼并歸一化;委托時(shí)間:采用增量值表達(dá),例如如果按學(xué)期劃分,2017年上半學(xué)年為0,2017年下半學(xué)年為1,2018年上半學(xué)年為2,以此類(lèi)推。
有了算法模型后,就需構(gòu)建一個(gè)自動(dòng)化訓(xùn)練系統(tǒng),降低人工干預(yù),提升自動(dòng)化率。如圖1所示,本文通過(guò)crontab定時(shí)任務(wù)設(shè)定館藏優(yōu)化的分析周期,定期觸發(fā)分析任務(wù),采集上個(gè)周期的委托數(shù)據(jù)并預(yù)處理,然后和歷史數(shù)據(jù)一起組成訓(xùn)練數(shù)據(jù)集;分析任務(wù)觸發(fā)模型訓(xùn)練任務(wù),輸出新的算法模型,并給出測(cè)試集上預(yù)測(cè)數(shù)據(jù),輸出給人工審核,對(duì)模型參數(shù)進(jìn)行調(diào)整。
圖1 館藏自動(dòng)調(diào)整服務(wù)流程
2.5.1 評(píng)價(jià)指標(biāo)
綜合應(yīng)用場(chǎng)景和評(píng)價(jià)指標(biāo)的含義,本文使用RMSE的方式來(lái)評(píng)價(jià)預(yù)測(cè)的好壞。RMSE就是MSE的平方根,作用是統(tǒng)一數(shù)量級(jí)單位。RMSE均方根誤差(Root Mean Square Error):
(8)
范圍[0,+∞),值越大表示誤差越大。等于0表示預(yù)測(cè)值與真實(shí)值完全吻合,即完美模型。
2.5.2 實(shí)驗(yàn)結(jié)果
本文選取2017—2020年的圖書(shū)館委托記錄數(shù)據(jù)進(jìn)行實(shí)驗(yàn),共計(jì)95 024條,每周作為一個(gè)時(shí)間段,根據(jù)75%,25%的比例隨機(jī)分配訓(xùn)練集和測(cè)試集,使用TensorFlow框架構(gòu)建LSTM模型,通過(guò)預(yù)訓(xùn)練效果設(shè)定如下參數(shù):
epochs = 100
batch_size = 300
loss = tf.keras.metrics.mean_squared_error
metrics = [tf.keras.metrics.RootMeanSquaredError(name='rmse')]
optimizer = 'rmsprop'
選取線性支持向量機(jī)(Linear-SVN)、K近鄰算法(KNN)對(duì)比,各模型預(yù)測(cè)效果如圖2所示。
圖2 各預(yù)測(cè)模型的根均方誤差
從RMSE誤差來(lái)看,Linear-SVM,KNN和LSTM都具有較好的準(zhǔn)確度,但是隨著時(shí)間序列的變化,LSTM的誤差出現(xiàn)上下波動(dòng),甚至增加。由此可見(jiàn),相對(duì)于其他模型無(wú)序擬合每一個(gè)變量達(dá)到最優(yōu),LSTM對(duì)時(shí)間序列更加敏感。因?yàn)闀r(shí)間序列的長(zhǎng)度不同,所以準(zhǔn)確度會(huì)發(fā)生變化。當(dāng)時(shí)間序列長(zhǎng)度為4時(shí),RMSE達(dá)到最小值,LSTM模型效果最好。綜上可見(jiàn),基于LSTM的圖書(shū)館委托量預(yù)測(cè)模型,誤差最小,預(yù)測(cè)效果最佳。
本文通過(guò)對(duì)比使用LSTM神經(jīng)網(wǎng)絡(luò)算法,在原有委托量大數(shù)據(jù)的基礎(chǔ)上,自動(dòng)學(xué)習(xí)分析委托量需要調(diào)整的地方,并提示動(dòng)態(tài)調(diào)整需求。實(shí)施效果顯示大大減少了委托量,減少了館員的工作量,提升了讀者滿意度。本研究可以進(jìn)一步對(duì)模型進(jìn)行優(yōu)化,提升預(yù)測(cè)準(zhǔn)確度,擴(kuò)大到借閱量預(yù)測(cè),對(duì)新書(shū)典藏分布提供有效建議。