沈雅婷 徐志豪
(南京理工大學紫金學院,江蘇 南京 210023)
在諸多圖書管理工作中,圖書分類是最為重要的、最為復雜的。信息時代的到來使得圖書的數(shù)量爆發(fā)式增長。涉及面愈來愈廣和種類愈來愈繁多的圖書使得傳統(tǒng)模式的人工分類法無法高效快速完成圖書分類的工作。
高性能高準確率的圖書分類算法已成為人們研究的熱門[1]。針對中文圖書分類問題,研究方法已從早期的知識工程分類方法發(fā)展到近年來的機器學習/深度學習分類方法[2]。
知識工程分類方法需要專家制定新規(guī)則并且實時完善知識庫以用于圖書分類;當增加圖書類別時,傳統(tǒng)的機器學習/深度學習分類方法具有局限性,需要不斷更新特征集然后重新訓練分類模型,這樣無疑給中文圖書分類的效率和實施帶來了一定困難。
為了能夠更加高效、準確地處理中文文本分類問題,對包含多決策樹的隨機森林模型(RandomForest)進行研究,為了保證整體預測的穩(wěn)定,模型中不同決策樹的泛化能力保存了適當?shù)牟顒e,這些不相同的決策樹在投票比重上相同。對數(shù)據(jù)集預處理后,本文基于隨機森林算法,嘗試提出有實際應用價值的中文圖書分類方法。希望提高使用機器學習、深度學習對自然文本分類的準確率。
圖書分類應用,實則是文本分類,文本分類一直是一項基礎而重要的任務。一般來說,使用機器學習/深度學習進行文本分類的流程如圖1所示。

圖1 文本分類流程
主要的文本分類算法的發(fā)展里程如圖2所示。自20世紀60年代到2010年代,基于淺層學習的文本分類模型占據(jù)核心地位,例如樸素貝葉斯(NB),K近鄰(KNN)和支持向量機(SVM),淺層學習意味著基于統(tǒng)計的模型,相比于傳統(tǒng)基于規(guī)則的方法這種方法提高了準確性和穩(wěn)定性,同時也有耗時和昂貴的缺點。自2010年代往后,由淺層學習逐步轉為機器學習/深度學習,使得文本分類效果實現(xiàn)逐漸突破[3]。
圖2展示了文本分類算法發(fā)展,其中很多算法是使用文本特征對文本進行描述,讓文本轉變成一種能夠讓計算機更易處理的形式,同時減少信息的損失。在早期,計算機處理器的性能不佳,淺層模型學習中人工智能是難點問題。不過總體來講,淺層模型在小規(guī)模數(shù)據(jù)上表現(xiàn)要優(yōu)于深度學習模型[4]。這些算法經(jīng)過數(shù)十年的發(fā)展已經(jīng)十分成熟,對于處理非大規(guī)模中文圖書分類而言比較適用。但是淺層模型因為基于傳統(tǒng)的規(guī)則分類,仍然需要人工進行明確的功能設計,這樣既耗時又昂貴。由于文本的多樣性,傳統(tǒng)規(guī)則分類存在局限性,因此具有改進空間。

圖2 主要的文本分類算法的發(fā)展歷程
Bagging是一種并行式集成算法,算法中多個模型之間互不干擾、無依賴關系[5]。其核心在于對訓練集使用自助采樣法采集訓練子集。在結合的計算時,分類任務中使用投票法,回歸任務中使用平均法。
機器學習的諸多算法中,隨機森林有著重要意義。在21世紀Breiman結合了Bagging算法和隨機子空間算法提出了隨機森林算法。自隨機森林誕生以來,作為靈活高效的機器學習算法,其被普遍應用在各個領域。
隨機森林在處理文本分類時主要步驟分為文本預處理、訓練模型和分類[6]。計算機科學界在關于訓練過程發(fā)展出諸多的改進措施。在2014年由曹正鳳、謝邦昌提出了“混合隨機森林算法”,其中總結出了CART算法與C4.5算法在計算過程中的相似點,利用二者的這種特點提出構建二叉樹的加權節(jié)點分裂算法并將此應用到隨機森林中。
在分類的過程中,計算機科學界也提出了很多的改進方式。Croux等人提出在進入隨機森林的文本分類過程之前,先根據(jù)決策樹的性能排序并對每一棵決策樹評估。接下來將分類性能差的決策樹淘汰,使用沒有被淘汰的分類性能相對優(yōu)秀的決策樹來組成完整的隨機森林,從而對測試對象進行分類處理。
在后來的發(fā)展過程中,計算機科學界對隨機森林不斷地優(yōu)化,其中包括對分類選項的加權、選取文本特征進行針對性的優(yōu)化、利用向量空間模型與基于潛在主題的文本表示方法兩者相結合建立決策樹等,本文在此不再贅述。
決策樹是在既定或然率的情況之下通過組成樹狀的決策鏈來求取期望值,評判是否符合條件,最后得到判斷結果。決策樹的理論模型如圖3所示。多個決策樹組成的隨機森林其再對不同決策樹進行整合最后得到最優(yōu)分類結果[7]。圖3展示了隨機森林的理論模型。

圖3 功能為判斷是否為好瓜的決策樹

圖4 隨機森林理論模型圖
在隨機森林構建決策樹的任務時,投票法是使用頻率最高的結合策略。假設類別的集合為{c1,c2……,cN},將ci在樣本x上的預測輸出為一個N維向量(h1i(x),h2i(x),……,hiN(x))T,其中hij(x)表示hj類別cj上的輸出。絕對多數(shù)投票法:

上式中,T表示分類器數(shù)目,N表示類別數(shù),即在T個分類器中對x進行類別判斷如果超過一半的分類器都預測類別為j,則輸出類別為j,否則reject(拒絕),重新進行分類預測。
文本預處理是文本分類的基礎,目的有:(1)去除文本中與分類目標任務無關的部分文字(即去停用詞);(2)將長段的文字內容進行詞量劃分使得完整的文本轉換成適合文本處理的形式(即分詞)。文本分類的速度和精度基于有效的內容處理和合適的詞量劃分。
文本實驗的文本預處理統(tǒng)共分成下列步驟:提取文本信息、去除格式標記、文本分詞。
(1)提取文本信息。圖書分類數(shù)據(jù)集存儲于表格文件(data.xlsx)。使用python中的xlrd庫對data.xlsx文件進 行相關的列讀取,選擇其中的書名(sheet[0])、關鍵詞(sheet[3])、摘要(sheet[4])、中國圖書分類號(sheet[5])為文本分類的訓練項。
(2)去除格式標記。在存儲的數(shù)據(jù)集中,有很大一部分的格式信息符號和無關字符,不能作為訓練依據(jù)的有效信息,因此在分類前要對提取的信息進行去除格式標記。
(3)文本分詞。作為中文文本處理中的基本環(huán)節(jié),文本分詞也是中文人機自然語言交互的一個關鍵步驟。“詞語”是自然語言處理中的基本單位,在進行文本分類時也是以“詞語”作為基本單位的,即以詞為單位的最小數(shù)據(jù)塊[8]。在對英文等用字母構成詞語的語言進行文本分詞可以以空格作為分詞的分隔符,而在中文等這種以“字”作為最小單位的語言中,由字組成的句子中間不存在明顯分隔標志。因此,在對中文進行文本分類時,將完整的文本劃分為一個個詞塊是必不可少的步驟。這樣可以提高訓練效率和準確率。
文本分詞樣例圖如圖5所示。

圖5 文本分詞樣例圖
使用第三方庫對“南京理工大學紫金學院歡迎您!!!”進行文本分詞的示例。
圖中對其進行三種分詞。第一種為全模式,將句子中所有可能成為詞語部分劃分出來。第二種為精確模式,jieba庫試圖將句子精確地劃分開。第三種為搜索引擎模式,在第二種分詞模式的基礎上,對于分詞后較長的詞語再次切分。本文選擇第三種模式。
使用隨機森林進行文本分類時,需將文本中提取的大量的分詞轉換為統(tǒng)一的、簡潔的、方便存儲的、能夠被機器快速高效準確識別的向量化數(shù)據(jù)結構。使用向量在空間中的方向和大小關系來描述文本文檔中的文字之間的邏輯關系[9]。
在1975年,Salton等人提出了向量空間模型(Vector Space Model,VSM),在自然語言處理任務的多種模型中,其使用最為廣泛。其小組通過研究發(fā)現(xiàn)將多種文本表示模型結合,能夠更好地表示文本。在傳統(tǒng)的文本向量空間模型中存在一些問題,其中包括維度高和文本表示向量稀疏[10]。在大量的文本向量化的過程中,這些問題不僅僅會消耗計算機許多的存儲資源,而且容易導致過擬合,降低分類精確度。因此研究如何在不降低精度的前提下降低文本向量化的維度一直是研究的重點[11]。特征選擇和特征提取是為了降低向量維度的兩種主要方法。用特征選擇方法得到的特征是原始集中的一個子集,而利用特征提取所得到的特征集與原始特征集不一定相同的,是原始特征集中的特征經(jīng)過組合或者變換而成[12]。特征提取主要利用一種特定的方法將特征詞進行處理或將具有相似或者相近分布性質的特征空間組合在一起從而構成一個新的特征[13]。因此原始特征集的大小被縮減以達到降低文本向量化的維度降低目的,比如隱形語義索引(LSI)。本文使用的是特征選擇方法,目前最為常見的特征選擇算法主要包括:卡方檢驗、信息增益、互信息等,這些方法主要是在原始特征集中選擇出最有利于表達文本的特征詞,從而很大程度縮小特征集的大小以降低文本表示的維度。
中文圖書分類流程如圖6所示。

圖6 中文圖書分類流程示意圖
在自助采樣法中,給定包含m個樣本數(shù)據(jù)的數(shù)據(jù)集D,經(jīng)過m次的隨機采樣操作則得到一個包含m個樣本的采樣集D"。原始集中會有一部分在D"中多次出現(xiàn),而另一部分不會出現(xiàn)。每個樣本被采樣的概率為,那么不被采樣的概率就是(1-),那么其中一個樣本在m次采樣中一次也沒有被采樣的概率為(1-)m,當數(shù)據(jù)集足夠大,m趨向于無窮取極限可得:

則在樣本集D中任意一個樣本從未出現(xiàn)在采樣集D"中的概率約為36.8%。即可以看作原始樣本集中約有36.8%的樣本可能不會被抽取到采樣集D"中[14]。
本文采用隨機森林進行圖書文本分類。隨機森林分為訓練過程和分類過程兩部分[7]。
3.1.1 訓練過程
訓練過程分為文本清洗(去停用詞)、文本分詞、詞向量模型計算、文檔向量計算、分類模型計算。
(1)加權取樣。原始數(shù)據(jù)文件data.xlsx作為樣本集,從中抽取樣本構成采樣集,對于原始樣本集中的樣本構造一個權值。樣本每次被選中則加重該樣本的權值,在下一次隨機抽取的同時加入權值,降低該樣本再一次被選中的概率,從而在原始樣本集中抽選樣本構造采樣集時盡可能地使采樣集保持多樣性,從而提高訓練器的準確率。
(2)文本清洗。從原始數(shù)據(jù)文件data.xlsx中提取的文本中包含了大量的干擾數(shù)據(jù),這些噪音數(shù)據(jù)能夠在文本分詞向量化之前去除。為了方便類別統(tǒng)計,將中國圖書分類號取首字母進行訓練和分類(將2萬余類別化簡為22個數(shù)據(jù)類別)。
(3)文本分詞。中文圖書分類中的數(shù)據(jù)大多以中文形式表示,其中中文以“字”作為最小單位構成了句子,字符之間缺乏能夠劃分的分隔符。為了便于將雜亂的自然語言文本轉換為有序的、便于存儲和計算機識別的數(shù)據(jù),本文在訓練預處理工作中將文本劃分為以“詞”為單位的詞串。本文采用jieba等庫來對中文文本進行分詞處理[15]。
(4)詞向量模型計算。本文采用word2vec等庫將所得分詞進行向量化處理,通過詞向量之間的空間維度聯(lián)系表示詞串之間的邏輯關系。將這些得到關系的向量進行存儲以用于訓練模型。
(5)文檔向量計算。將原數(shù)據(jù)集中的所有相關類別作為一個文檔,對于這個文檔進行向量化。將這些得到關系的文檔向量存儲用于訓練。
(6)分類模型計算。通過這些已得的向量模型構造決策樹,采取原始數(shù)據(jù)中的一部分作為訓練數(shù)據(jù)訓練該決策樹。使用得到的決策樹構造隨機森林。
3.1.2 分類過程
原始數(shù)據(jù)集(data.xlxs)共有120845條書本數(shù)據(jù),進行圖書粗分類,將圖書劃分22個類別,即取圖書類別號的首字母。例如:《道家文化與中醫(yī)學》的圖書分類號為“R-092”,其分類在“中國圖書館圖書分類法”含義為“R:醫(yī)藥、衛(wèi)生”,“R-0:一般理論”,“R-09:藥學”,“R-092:藥典、藥方集、藥物鑒定”。為了方便實驗取其首字母作為算法的分類類別為“R”。
使用選擇好的決策樹構造隨機森林模型,將原始數(shù)據(jù)集選取在訓練過程中使用相同的列的數(shù)據(jù)加載進入該模型中對所有數(shù)據(jù)進行分類。通過本文算法預測類別與原始數(shù)據(jù)集中的標注類別進行比對得到分類的準確率。
隨機森林由Bagging和決策樹構成。其中根據(jù)自主采樣法的Bagging,從原始數(shù)據(jù)集中,可放回的隨機抽取樣本m次,得到含m個樣本的采樣集。原始數(shù)據(jù)集中的樣本部分多次表現(xiàn)在采樣集中,部分則未曾表現(xiàn)。然后基于采樣集訓練基學習器,再將基學習器結合[16]。在隨機森林的訓練過程中,樣本的差異性越大,由多種決策樹構成的隨機森林在分類時表現(xiàn)出的降噪能力越強[17]。在隨機抽取樣本時,對每個樣本建立權值wi,表示對原始數(shù)據(jù)集中每個樣本的關注度[18]。當每個樣本被選中的時候,則加大該樣本的wi,并引入?yún)?shù)ti作為表示每個樣本被選中的次數(shù),其默認值設置為0,第i個樣本被選中時,其ti值加1。使原本均勻取樣的Bagging算法根據(jù)選取的次數(shù)調整不同樣本權值大小,降低抽取同樣樣本的概率,提高采樣集的多樣性。加權平均法:

其中T為分類器的數(shù)量,hi(x)為x樣本在第hi向量上的概率,ti為其被選中的次數(shù),wi為其權值[19]。
數(shù)據(jù)集來源網(wǎng)絡,共133425條數(shù)據(jù)。數(shù)據(jù)集的有效字段包含書名、作者、出版社、關鍵詞、摘要、中文圖書分類號等,如圖7所示。除去中文圖書分類號的5個字段內容可用作分類。

圖7 圖書樣本數(shù)據(jù)(部分)
實驗所使用的第三方庫的版本信息如表1所示。

表1 實驗所用第三方庫的版本信息
程序中各個文件的功能如表2所示。

表2 文件功能說明表
參數(shù)如圖8所展示。

圖8 word2vec的參數(shù)
其中sg=1為skip-gram算法;size代表詞向量的維數(shù);window為句子中當前詞與目標詞的最大距離;min_count對詞進行過濾,小于min_count被過濾;negative用于設置nose words;sample用于設置高頻詞匯的隨機降采樣的配置閾值;hs=1采用hierarchica技巧;workers表示訓練的并行數(shù)[20]。
參照“中國圖書館分類法”對樣本進行主題剖析,并依照文獻內容的科目屬性和特點進行分揀、組織。中文圖書分類號即為所獲取的分類代號。原樣本中存在29521種細類別,為了使每一種類別存在盡量多的訓練數(shù),本文只對圖書進行粗分類,即22種類別。例如“R-092”表示“R:醫(yī)藥、衛(wèi)生”,“R-0:一般理論”,“R-09:藥學”,“R-092:藥典、藥方集、藥物鑒定”,只考慮“R”為一種類別。數(shù)據(jù)集中的類別字段(部分)如圖9所示。

圖9 中國圖書分類號(部分)
對數(shù)據(jù)集進行多次實驗并得到實驗結果,如圖10所示。

圖10 訓練結果截圖
圖10展示了使用Pre_RandomForest對數(shù)據(jù)集進行模型分析訓練。經(jīng)過預處理得到樣本集120845,采樣集為120845,標簽種類為22個。
部分分類結果(準確率)截圖如圖11所示。

圖11 分類結果(準確率)截圖
圖11所示的部分實驗結果,類別有‘E’,‘P’,‘T’,‘A’,‘I’,‘J’,‘F’,‘Q’,‘S’,‘R’,‘C’,‘N’,‘G’,‘K’,‘B’,‘H’,‘O’。根據(jù)分類后所得的標簽和原本數(shù)據(jù)集中首字母進行匹配得到準確率約為90.17%。
Pre_RandomForest與Bert、TextCNN、FastText的準確率對比如圖12所示。

圖12 算法模型分類準確率對比圖
在相同的數(shù)據(jù)集上,Pre_RandomForest與Bert、TextCNN、FastText的分類準確率進行比較,Pre_RandomForest的準確率更高且更穩(wěn)定,Pre_RandomForest與Bert、TextCNN、FastText相比較具有一定的競爭優(yōu)勢。
本文選取基于Bagging模型的隨機森林對中文圖書進行分類,通過對文本數(shù)據(jù)進行預處理(去停用詞、分詞)、詞向量化以外,還對樣本加權,使得原始數(shù)據(jù)集中每個樣本的關注度有所區(qū)別,從而提高分類的效率和準確率。Pre_Random-Forest與Bert、TextCNN等相比分類的準確率更高。
圖書分類是圖書管理發(fā)展的重要方向之一,Pre_RandomForest在一定程度上提高了圖書分類的準確率,今后可以結合此方法探索出更高精度的算法,解決更復雜的圖書管理任務。