鄒鼎杰
(中國人民解放軍國防大學 政治學院, 上海 200433)
圖書分類問題屬于文本分類問題,解決圖書分類問題的基本思路是將文本分類算法應用到圖書分類中[1-3]。文獻[4]將LDA(latent dirichlet allocation)模型應用到圖書分類中,采取復合加權策略將書目體例體信息和所在類目信息融合到模型之中,圖書分類性能得到了有效提升。文獻[5]將長短時間記憶神經網絡(long short term memory neural network,LSTM)模型應用到圖書分類中,將圖書的各描述字段組合成一個描述字符串,利用詞嵌入模型將描述字符串轉換成作為LSTM模型輸入的二維矩陣,通過構建多個二元分類器解決多標簽分類問題。文獻[6]將門控循環單元網絡(gated recurrent unit neural networks,GRU)模型應用到文本分類中,GRU在繼承LSTM門控制原理基礎上簡化了神經元結構,模型復雜度更低,實際應用效果更好。不同于文獻[5]直接將LSTM模型用于文本分類,文獻[6]只利用GRU能夠充分考慮上下文信息的優勢提取文本重要特征,采用結構更簡單、執行更高效的樸素貝葉斯分類器完成文本分類,兩者結合更加提高了文本分類的效率和準確率。上述研究主要通過優化模型提升圖書分類器性能,忽視了紙質圖書的描述元數據較少這一現實問題。在輸入信息有限的情況下,再好的模型和算法也難以發揮出優良性能。因此,本文提出從現有知識圖譜zhishi.me中提取關于圖書、作者和出版社3類實體的詳細信息,通過增加圖書的描述信息提升圖書分類準確率的解決方案。
知識圖譜(knowledge graph)最早由Google于2012年5月正式發布,主要用于提升google的搜索服務質量,目前已經成為Google語義搜索的關鍵支撐工具[7]。在基于知識圖譜的語義搜索中,人們輸入的檢索對象不再只被視作一段普通文本,而是與現實世界中對應的實體[8-10]。比如輸入“姚明”,搜索引擎將識別出籃球運動員姚明,并在結果頁面的右側框中呈現姚明的簡要介紹信息,年齡、身高等屬性信息以及家長、妻子等關系信息。知識圖譜可以被視作Tim Berners-Lee年提出的鏈接數據(linked data)的一種應用。實體是知識圖譜中最關鍵的概念,它既包括存在于物理世界中的具體事物,也包括僅存在于抽象世界的概念。實體包含兩類屬性[11],一類屬性是普通文本類型,比如姚明的身高、年齡等屬性;另一類屬性本身也是一種實體,比如姚明的家長、妻子等,這類屬性通常也被稱作關系。目前,互聯網上已經發布了大量知識圖譜供人們使用,比較著名的知識圖譜有Knowledge Vault、Wolfram Alpha、Watson KB、DBpedia、YAGO KB、Facebook KB、Zhishi.me等[12]。其中Zhishi.me是目前在互聯網上發布的規模最大的中文知識圖譜之一[13],本文將從Zhishi.me中提取圖書、作者和出版社3類實體的詳細知識,以解決紙質圖書描述性信息不足的問題。
Zhishi.me包含有從百度百科、互動百科和維基百科中抽取出的大約兩千萬個實體的詳細信息以及實體之間的關系,絕大多數圖書、作者和出版社的信息均可在Zhishi.me中查到。該知識庫由深圳狗尾草科技有限公司開發,并發布在“中文開放知識圖譜”平臺上供公眾免費使用[14]。Zhishi.me中的實體主要包含9種屬性,各屬性的類型和功能見表1。

表1 Zhishi.me中實體的9種屬性

(1)
(2)
在樸素貝葉斯分類器中,模型的訓練過程就是通過訓練集統計先驗概率Pci和特征dj在類別ci中出現概率的過程。完成模型訓練后,對圖書的分類過程就是尋找圖書出現概率最大類別的過程,計算方法如式(3)所示
(3)
通常情況下,特征出現在類別中的條件概率Pdj|ci是一個較小的小數,這些小數經過連續乘操作以后得到的將是一個極小的小數。為了避免小數過小導致浮點數下界溢出,通常將式(3)兩邊同時取對數,將乘法操作轉變為加法操作[17],尋找最大概率類的式(3)變換為式(4)的形式
(4)
與傳統的文本分類類似,圖書分類過程包括訓練和分類兩個過程,如圖1所示。特征融合處理步驟中,分別從數據集中提取圖書的書名、作者和出版社信息,然后從知識圖譜中抽取關于圖書、作者和出版社的詳細描述信息,利用分詞技術從這些信息中提取表示圖書內容特征的關鍵詞。特征融合步驟中產生的關鍵詞規模龐大,不僅會占用過多的存儲空間,而且不利于提升分類器性能,因此需要采取某種策略選擇最能夠代表文檔內容特征的關鍵詞,即特征選擇。明確每本圖書的特征詞和圖書的類號以后,即可訓練樸素貝葉斯分類器的關鍵參數,主要是先驗概率和條件概率;訓練后的分類器模型可用于對新購圖書分類,分類過程中的特征融合和特征選擇過程與訓練過程中的處理方法完全一樣。

圖1 圖書分類過程
圖書館中紙質圖書的描述元數據較為稀缺,與圖書內容特征相關的元數據只有書名、作者和出版社。嚴格意義上講,只有書名能夠直接揭示內容特征,作者和出版社只能間接揭示圖書內容特征。單憑簡短的書名難以對圖書有效分類。因此,需要添加額外的內容特征。Zhishi.me的9種屬性中,abstracts、infobox和category最能揭示實體的內容特征,因此選擇這3種屬性內容作為圖書、作者和出版社的詳細描述信息。labels字段雖然也能揭示內容特征,但通常與原有實體標簽重復,不采用該字段中信息;其余5種屬性在內容上與實體的描述沒有必然的相關性,所以也不作為補充信息。
在圖書分類中,關鍵詞是表示圖書內容特征的最小語義單元,因此需要利用分詞技術從長文本中提取關鍵詞。分詞過程一般采用專門的分詞軟件包完成,本文使用Python語言版jieba分詞工具完成分詞。3個固有字段中,作者姓名和出版社直接作為特征詞,不必分詞。圖書名稱則需要通過分詞,提取細粒度的特征詞。實體的3種屬性中,abstracts是長文本,需要分詞。infobox是描述實體的基本屬性特征,本身就是短文本,所以不必分詞,直接作為特征詞。category屬性是對實體主題特征的揭示,既可以直接作為特征詞,也可以對其分詞后提取細粒度的特征詞。為確保category屬性完整形式能夠作為特征,需要將訓練集中所有的category屬性添加到jieba分詞的字典中。在使用jieba分詞時,選擇“全模式”,既可以生成比較完整的長詞,又能夠得到細粒度的特征詞。
特征融合后形成的特征詞規模較大,如果將所有特征詞用于表示圖書內容特征,會導致訓練后的模型占用過多內存空間,影響分類器的應用效果;低質量的特征詞還有可能降低分類器性能,因此需要選擇高質量的特征詞代表圖書內容特征,刪除質量較低的特征詞。在選擇特征值之前,需要刪除停用詞,這不僅有利于提高計算性能,也有助于提高分類器性能。選用TF-IDF權重作為選擇特征詞的標準。TF(term frequency)即特征詞頻率。通常情況下一個詞在書中出現頻率越高,越能夠代表這本書的內容特征。由于不同圖書的特征詞數量差別較大,因此選擇相對頻率表示特征詞,特征詞w在圖書b中的頻率計算方法如式(5)所示,其中nw為特征詞在圖書b中出現的次數,nb為圖書b中所有關鍵詞出現的總次數(不是關鍵詞數)
(5)
IDF(inverse document frequency)即逆文本頻率指數,表征特征詞在所有圖書中出現的普遍程度。如果特征詞w僅在少量圖書中出現過,那么w的IDF就比較高,在分類中起到的作用就越明顯;反之在分類中的重要性就比較低。IDF的計算方法如式(6)所示,其中N是訓練集中所有圖書的種數,Nw是包含有特征詞w的圖書種數
(6)
特征詞w的TF-IDF值由該詞的TF值和IDF值相乘得到,如式(7)所示。計算圖書b中每個特征詞的TF-IDF值,然后將特征詞根據TF-IDF值由高到低排序,選取排名前k的特征詞作為圖書b的最終特征詞。最終選取的特征詞數量k的具體數值與分類器的效果密切相關,需要根據實驗效果設定
(7)
樸素貝葉斯分類器的訓練過程就是通過訓練集的數據來估計圖書隨機出現在類別c中的先驗概率Pc,以及特征詞w出現在類別c中的條件概率Pd|c。先驗概率的估計方法如式(8)所示,其中N是訓練集所有圖書的種數,Nc是訓練集中類別為c的圖書種數
(8)
條件概率Pw|c的估算方法如式(9)所示,其中Nd,c是類別為c的圖書中包含有特征詞d的圖書種數
(9)
訓練集中總會出現某特征詞w沒有出現在類別c中情況,這將導致條件概率為0。樸素貝葉斯公式的條件概率是通過先驗概率與各個特征的條件概率持續相乘得到,如果有一個特征的條件概率為0,那么這本書出現在這個類號中的概率將為0;這與真實情況不符。因此需要進行平滑處理,避免這種情況發生。引入拉普拉斯修正(Laplacian correction)做平滑處理,修正后的先驗概率和條件概率的計算方法分別如式(10)和式(11)所示,式中L為類別總數
(10)
(11)
訓練后得到的先驗概率是一個L維向量,條件概率是一個L×S的矩陣,其中S是從訓練集中提取的特征總數。將上述訓練參數存儲在哈希表中,在需要預測新書分類號時可通過查表獲取。假設先驗概率存儲在哈希表H1中,一本書應當分配到類號c的先驗概率為H1c。假設條件概率存儲在哈希表H2中,特征詞w出現在類別c中的條件概率為H2cw。
分類預測過程就是根據圖書的特征詞集合估計圖書屬于某一分類的條件概率,并找出條件概率最大的類號的過程。樸素貝葉斯分類器不僅假設特征詞出現的概率相互獨立,而且假設特征詞的位置對分類沒有影響,因此可以使用集合(而非向量)表示圖書的特征詞以節省存儲空間。假設待預測新書的特征集為D,預測這本書所屬分類的方法如式(12)所示。新書中仍然可能出現訓練集中沒有出現的特征詞,該詞的條件概率仍然可以使用式(11)估算
(12)
實驗數據包括兩部分,一部分是已經被圖書館著錄的圖書元數據,包括圖書的標題、作者、出版社和中圖法分類號,另一部分是從Zhishi.me知識圖譜中獲取的關于圖書、作者和出版社的詳細描述信息。圖書著錄數據源于上海某高校在2013年至2017年間的圖書外借數據集,由首屆“慧源共享”上海高校開放數據創新研究大賽主辦方提供。以ISBN作為圖書唯一標識符,清洗掉格式不規范、內容明顯殘缺的數據后,得到約42萬種圖書的著錄數據,包含圖書名稱、圖書作者、圖書出版社以及圖書的正確分類號4個字段,總計有22余萬名作者和1萬余家出版社。Zhishi.me知識圖譜提供離線下載和在線訪問兩種知識獲取方式,離線數據比較陳舊,因此選擇在線訪問方式獲取詳細信息。通過在線獲取方式提取到約35萬種圖書、143萬名讀者和5000余家出版社的詳細信息。
選取3個常用的分類器評估指標,分別是準確率P(Precision)、召回率R(Recall)和綜合考慮P和R的F1值。對于類別c,其分類準確率計算方法如式(13)所示,其中Nc為被分類為c類的圖書總數,TPc為Nc中被正確分類的圖書總數
(13)
類別c的召回率計算方法如式(14)所示,其中Mc是屬于類別c的所有圖書種數
(14)
類別c的F1值是對P值和R值同等重視條件下的綜合考量,計算方法如式(15)所示
(15)
圖書分類的類目體系龐大,難以逐個分析每個類目的準確率、召回率和F1值,選用這些指標的平均值作為綜合考量指標[18],即“宏查準率”(macro_P)、“宏召回率”(macro_R)和“宏F1值”(macro_F1),計算方法分別如式(16)、式(17)和式(18),式中CLS是所有分類號的集合,L是集合CLS包含的元素數量
(16)
(17)
(18)
《中圖法》類目體系龐大,通常采取層級分類法,典型的層級設計是按照《中圖法》原有體系逐層分類。層級分類法的典型特點是上一層級的錯誤將積累到下一層級,第一層級的分類準確率成為決定層級分類法最終分類準確率的關鍵因素。因此,本文以《中圖法》第一層級共22個大類作為分類目標。
特征選擇步驟中確定的選擇特征數k是影響模型性能的關鍵參數,需要根據驗證集進行測試。因此將數據集均勻地劃分成10份,其中6份用作訓練集,2份用作驗證集,2份用作測試集。為確保劃分出的子集合中包含的類別一致,首先根據分類號對數據集按照字母先后順序排序,確保相同類號的圖書處于相鄰位置。然后從0開始對排序的圖書進行編號,取編號尾號為0的所有圖書作為第1份,編號尾號為1的所有圖書作為第2份,依次類推形成10份均勻的圖書數據集。最后隨機選擇相應份數作為訓練集、驗證集和測試集。
樸素貝葉斯分類器的基本原理是計算一本書屬于某一個類別的概率,根據式(12),這個概率的計算過程分為兩步。第一步假設對這本書的內容一無所知,這時一本書屬于某一類的概率僅由先驗概率決定。由于對圖書本書一無所知,僅靠先驗知識進行分類的效果通常不會很好,因此需要引入關于圖書的信息。第二步就是通過不斷引入圖書內容特征修正概率的過程。理論上講,似乎引入的內容特征越多,修正的效果就越好,最終的分類質量就越高。實踐中,由于特征關鍵詞的質量差別較大,引入低質量的關鍵詞可能會降低分類器質量。因此,本文設計了特征選擇策略,根據特征詞的TF-IDF的排序后由高到低選擇特征詞,通常假設選擇排名前k的特征詞。k的具體數值與具體的數據集密切相關,需要根據訓練集和驗證集測試得到。
利用訓練集和驗證集在k值為1至20范圍內分別測試分類器的性能,以macro_F1作為分類器的度量標準。最終測試結果如圖2所示。從圖中可以看出,隨著選擇特征數的增加,分類器的性能隨之增加,但是該新增趨勢并不持續,在達到特定閾值以后性能開始下降;其原因是最初新增的特征詞質量較高,對于修正條件概率起到正向作用,后期增加的特征詞質量較低,對于提升分類器性能起到負向作用。曲線在最后均趨于平穩,其原因是k值已經超過了圖書擁有的特征詞數量,k值的增加并不會導致更多特征詞的引入。對比無知識圖譜和有知識圖譜的情況可以發現,無知識圖譜的曲線在k值為3時即達到峰值,其原因是書名的長度有限,原生圖書元數據能夠貢獻的特征詞較少,含知識圖譜的圖書特征詞更豐富,曲線在k值為8時達到峰值。通過上述分析發現,無知識圖譜條件下k值為3的分類器性能最高,含知識圖譜條件下k值為8的分類器性能最高,因此在測試過程中分別選擇3和8作為模型參數。

圖2 選擇特征數k對分類器性能的影響
使用不包含知識圖譜的數據集訓練模型時將選擇特征數設定為3,使用包含知識圖譜的數據集訓練模型時設定特征數為8,在測試集上測試模型性能。最終結果見表2,“宏查準率”、“宏召回率”和“宏F1值”均有較大幅度的提升,從知識圖譜中提取的關于圖書、作者和出版社的詳細信息能夠有效提升分類器性能。

表2 測試結果
針對圖書館中紙質圖書描述元數據普遍較少,不利于提升圖書自動分類器性能的問題,提出了從Zhishi.me知識圖譜中引入圖書詳細數據的解決思路。分析了Zhishi.me知識圖譜的內部結構和知識抽取策略,提出了利用基于TF-IDF權值的特征選擇方法。在上海市某高校圖書館的真實圖書數據集進行了實驗驗證,分析了特征詞數k值對分類器性能的影響,并根據最優k值對比在無知識圖譜和含知識圖譜兩種情況下的圖書分類性能,發現準確率P、召回率R以及F1值均有較大幅度提升。