柴源
(西安航空學院 圖書館,陜西西安 710077)
高校圖書館圖書推薦是利用現代信息技術,分析讀者閱讀行為,挖掘讀者閱讀需求,通過多元化渠道將館藏圖書推薦給師生的一種服務[1]。目前,圖書推薦系統主要包括基于內容的推薦系統,它側重于圖書的屬性,例如文獻內容[2]、學科分類[3]等;以及基于用戶的協同過濾系統,它側重于依據讀者借閱數據來推薦其他相似讀者曾經借閱過的圖書,例如用戶畫像[4]、讀者興趣[5]等,但是這些系統都存在一定的局限性。
目前,高校圖書館的藏書數量普遍在百萬冊以上,例如清華大學圖書館,書刊資料已達510 多萬冊。讀者數量卻相對較少,并且大多數讀者只對極少量的圖書有過借閱行為,使得形成的“讀者-圖書”借閱矩陣不僅非常大,而且絕大多數數值為空缺值,整個矩陣非常稀疏[6],稀疏性問題直接造成訓練過程中的計算浪費。
傳統的推薦系統是基于詞袋模型構造向量空間的,定義一個窗口作為某個詞的語境,統計整個語料中這個詞在窗口內出現的特征,例如詞的頻度、tf-idf等,再把這些特征用詞袋模型表示成一個向量,然后計算向量的余弦距離[7]。這種做法忽略了詞的位置信息,而一個詞的含義是可以從它的上下文語境中推斷出來的。
傳統的圖書推薦算法分析所有讀者的借閱偏好,對“讀者-圖書”矩陣應用協同過濾方法,得到不同圖書組別的關聯信息。如果一個讀者群體擁有很多共同喜歡的圖書,就可以推斷這些讀者借閱興趣很相似,并且他們所借閱的圖書之間也很相似。但是,這種多讀者共現現象只能反映出圖書之間是如何聯系的,并不能反映出圖書在時間上是如何局部共存的,即他們在同一時間段前后還借閱了什么圖書[8]。
Word2vec 是一種詞嵌入(Word Embedding)方法,它根據語料中詞匯共現信息,將詞匯編碼成一個向量,可以計算每個詞語在給定語料庫環境下的分布式詞向量[9],它包含兩種訓練模型:跳字模型(Skip-Gram)和連續詞袋模型(Continuous Bag of Words,CBOW),如圖1 所示。

圖1 Word2vec模型
CBOW 模型是一個三層神經網絡,它利用上下文或周圍的詞語來預測當前位置詞語w(t)的概率,即P(w(t)|w(t-k),…,w(t-1),w(t+1),w(t+2),…,w(t+k))[10];Skip-Gram 模型的計算方法逆轉了CBOW 的因果關系,它利用當前位置詞語w(t)來預測上下文中詞的概率,即P(w(i)|w(t)),其中t-k≤i≤t+k且i≠k[11]。
Word2vec 模型本質上是基于上下文語境構建詞共現矩陣而建立起來的,因此,可以采用Word2vec算法改進基于共現矩陣的算法模型。
在推薦系統中,常用算法首先是建立“用戶-商品”矩陣,然后計算行和列的相似性,并根據相似性進行推薦[12]。如果將某一個用戶選擇的所有商品看作一條商品序列,商品與商品之間就出現類似文檔中的上下文關系,通過構建“商品-語境”矩陣,利用Word2vec 獲得每個商品的向量表示,然后將各個商品向量求和,計算商品之間的相似度,將與求和的值最接近的一個或多個商品作為推薦商品[13]。
在圖書推薦系統中,可以將每本圖書看作一個商品,將讀者借閱的所有圖書看作一條具有上下文關系的圖書序列,建立“圖書-語境”矩陣,并利用Word2vec 進行訓練。首先,得到每本圖書的向量表示;其次,將這些圖書的向量進行求和;最后,通過余弦距離計算圖書向量空間上的相似度,并與求和的值進行比較,選擇比較接近的值的圖書,形成推薦列表。
例如,甲的借閱圖書序列為A1、A2、A3、A4、A5、A6,利用Word2vec 進行深度學習,選擇Skip-Gram 模型,預測上下文的詞的個數、輸出結果的個數都為2,預測結果如表1 所示。

表1 Skip-Gram模型結果
表1 中,A4 的向量受A2、A3、A4、A5、A6 向量影響,A5 受A3、A4、A5、A6 向量的影響。Word2vec 通過上下文語境識別出A4 和A5 之間存在相似性。
Word2vec 將稠密向量作為輸入層,解決了圖書推薦中數據的稀疏性問題;構建基于時間和上下文關系的圖書序列,建立“圖書-語境”矩陣,解決了圖書在時間上的局部共存和語義化缺失問題。所以,Word2vec 在圖書推薦中具有極強的優勢。
2.3.1 系統設計
系統設計主要包括借閱日志數據預處理,構建具有上下文語境的共現矩陣;利用Word2vec 工具對共現矩陣進行深度學習,提取每本圖書的向量,并求和;通過Word2vec 計算相似度,推薦相似度較高的圖書。系統流程如圖2 所示。

圖2 系統流程
2.3.2 詳細設計
1)建立讀者借閱圖書的共現矩陣。從借閱日志中獲取讀者的借閱數據,經過數據預處理,建立基于時間序列的讀者借閱圖書的共現矩陣。
2)Word2vec深度學習。設定數據窗口大小,運用Word2vec工具,對借閱圖書的共現矩陣進行深度學習,獲得每本書的向量表示,然后將各個向量進行求和。
3)相似性結果推薦。計算圖書之間的相似度,將其與2)中的值進行比較,選擇比較接近的值的圖書,同時過濾掉讀者重復借閱的圖書,形成推薦列表。
3.1.1 數據來源
該文抽取西安航空學院圖書館2019 年的借閱記錄,共9 萬余條,借閱記錄包含圖書條碼、索書號、讀者姓名、讀者條碼、題名、典藏部門等條目,如圖3所示。數據分析匯總,如表2 所示。

圖3 借閱記錄數據(部分)
表2 中,11 229 個讀者有借閱記錄,表示可以構成11 229 個借閱圖書序列。

表2 2019年的借閱記錄匯總
3.1.2 數據預處理
數據預處理中,剔除掉沒有研究意義的字段,例如館藏地點、索書號等,選擇題名、圖書條碼、讀者條碼、借閱日期等條目。題名是每冊圖書的書名,描述了圖書的主要內容。圖書條碼是每冊圖書的唯一識別碼,讀者條碼表示每位讀者的身份ID,借閱日期表示圖書的借閱時間。具體的預處理流程如下:
1)通過讀者條碼、借閱日期、圖書條碼確定讀者的每一次借閱記錄。
2)按照借閱日期將每位讀者全年的借閱記錄歸并為一條借閱序列,形成讀者借閱圖書的共現矩陣,為了減少計算量,選擇圖書條碼作為其值,如圖4所示。

圖4 讀者借閱圖書的共現矩陣(部分)
圖4 中第一列數字表示讀者的借閱證號,第二列以及后面的所有列表示讀者按時間序列的借閱記錄,每一行表示一位讀者的圖書借閱序列。
3.2.1 實驗設置
Gensim 是一款開源的第三方Python 工具包,用于從原始的非結構化文本中,無監督地學習到文本隱層的主題向量表達[14]。主要用于主題建模和文檔相似性處理,支持包括TF-IDF、LSA、LDA 和Word2vec在內的多種主題模型算法[15]。文中利用Gensim 中的Word2vec 類進行模型訓練,參數設置如下:
size:詞向量的維度,文中是指圖書條碼的向量維度,設置為300。
window:詞向量上下文最大距離,window 越大,則和其他詞產生上下文關系的可能性就越大。該文的實驗數據中,讀者的年均借閱量約為5 冊,因此,window 值設置為5。
sg:模型選擇,該文選擇CBOW 算法,即sg=0。
min_count:需要計算詞向量的最小詞頻,可以去掉一些很低頻詞。文中實驗數據僅包含2019 年的圖書借閱記錄,數據的稀疏性較強,因此,min_count設置為2。
3.2.2 實驗結果
該文通過Word2vec 對數據進行訓練,利用tsne對Word2vec 模型進行降維可視化展示[16],如圖5 所示。圖中展示了部分數據,每個點表示一本圖書,數字表示圖書條碼。圖5 中,點之間距離的大小表示圖書的相似程度,距離越小相似性越高。

圖5 相似性圖書可視化
實驗中,假設讀者借閱圖書的條碼為1824272(題名為《電氣工程概論》),去掉重復借閱的圖書,提取排名前5 的結果形成推薦列表,如表3 所示。

表3 Word2vec推薦結果
由表3 可知,推薦結果的相似性比較高,與輸入圖書匹配得較好,說明Word2vec 在圖書推薦方面適用性較強。
Word2vec 是一個簡單的三層神經網絡,能夠考慮上下文的關聯關系。所以,該文將這一技術引入圖書推薦系統,以提高圖書推薦的精準性。從數據稀疏、語義缺乏等方面分析了傳統圖書推薦系統存在的問題。討論并設計了基于Word2vec 的高校圖書館圖書推薦系統。設計中,將讀者借閱數據按照時間序列形成借閱行為共現矩陣,并將共現矩陣看作具有上下文關系的語境,利用Word2vec 技術發現讀者的閱讀偏好,形成圖書推薦列表。選取西安航空學院圖書館11 229條借閱數據進行實驗,結果表明推薦圖書的相似性為77%,相似度較高,驗證了Word2vec 在改進傳統圖書推薦系統方面具有較好的效果。