沈雅婷 徐志豪
(南京理工大學(xué)紫金學(xué)院,江蘇 南京 210023)
在諸多圖書管理工作中,圖書分類是最為重要的、最為復(fù)雜的。信息時代的到來使得圖書的數(shù)量爆發(fā)式增長。涉及面愈來愈廣和種類愈來愈繁多的圖書使得傳統(tǒng)模式的人工分類法無法高效快速完成圖書分類的工作。
高性能高準(zhǔn)確率的圖書分類算法已成為人們研究的熱門[1]。針對中文圖書分類問題,研究方法已從早期的知識工程分類方法發(fā)展到近年來的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)分類方法[2]。
知識工程分類方法需要專家制定新規(guī)則并且實(shí)時完善知識庫以用于圖書分類;當(dāng)增加圖書類別時,傳統(tǒng)的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)分類方法具有局限性,需要不斷更新特征集然后重新訓(xùn)練分類模型,這樣無疑給中文圖書分類的效率和實(shí)施帶來了一定困難。
為了能夠更加高效、準(zhǔn)確地處理中文文本分類問題,對包含多決策樹的隨機(jī)森林模型(RandomForest)進(jìn)行研究,為了保證整體預(yù)測的穩(wěn)定,模型中不同決策樹的泛化能力保存了適當(dāng)?shù)牟顒e,這些不相同的決策樹在投票比重上相同。對數(shù)據(jù)集預(yù)處理后,本文基于隨機(jī)森林算法,嘗試提出有實(shí)際應(yīng)用價值的中文圖書分類方法。希望提高使用機(jī)器學(xué)習(xí)、深度學(xué)習(xí)對自然文本分類的準(zhǔn)確率。
圖書分類應(yīng)用,實(shí)則是文本分類,文本分類一直是一項(xiàng)基礎(chǔ)而重要的任務(wù)。一般來說,使用機(jī)器學(xué)習(xí)/深度學(xué)習(xí)進(jìn)行文本分類的流程如圖1所示。
圖1 文本分類流程
主要的文本分類算法的發(fā)展里程如圖2所示。自20世紀(jì)60年代到2010年代,基于淺層學(xué)習(xí)的文本分類模型占據(jù)核心地位,例如樸素貝葉斯(NB),K近鄰(KNN)和支持向量機(jī)(SVM),淺層學(xué)習(xí)意味著基于統(tǒng)計(jì)的模型,相比于傳統(tǒng)基于規(guī)則的方法這種方法提高了準(zhǔn)確性和穩(wěn)定性,同時也有耗時和昂貴的缺點(diǎn)。自2010年代往后,由淺層學(xué)習(xí)逐步轉(zhuǎn)為機(jī)器學(xué)習(xí)/深度學(xué)習(xí),使得文本分類效果實(shí)現(xiàn)逐漸突破[3]。
圖2展示了文本分類算法發(fā)展,其中很多算法是使用文本特征對文本進(jìn)行描述,讓文本轉(zhuǎn)變成一種能夠讓計(jì)算機(jī)更易處理的形式,同時減少信息的損失。在早期,計(jì)算機(jī)處理器的性能不佳,淺層模型學(xué)習(xí)中人工智能是難點(diǎn)問題。不過總體來講,淺層模型在小規(guī)模數(shù)據(jù)上表現(xiàn)要優(yōu)于深度學(xué)習(xí)模型[4]。這些算法經(jīng)過數(shù)十年的發(fā)展已經(jīng)十分成熟,對于處理非大規(guī)模中文圖書分類而言比較適用。但是淺層模型因?yàn)榛趥鹘y(tǒng)的規(guī)則分類,仍然需要人工進(jìn)行明確的功能設(shè)計(jì),這樣既耗時又昂貴。由于文本的多樣性,傳統(tǒng)規(guī)則分類存在局限性,因此具有改進(jìn)空間。
圖2 主要的文本分類算法的發(fā)展歷程
Bagging是一種并行式集成算法,算法中多個模型之間互不干擾、無依賴關(guān)系[5]。其核心在于對訓(xùn)練集使用自助采樣法采集訓(xùn)練子集。在結(jié)合的計(jì)算時,分類任務(wù)中使用投票法,回歸任務(wù)中使用平均法。
機(jī)器學(xué)習(xí)的諸多算法中,隨機(jī)森林有著重要意義。在21世紀(jì)Breiman結(jié)合了Bagging算法和隨機(jī)子空間算法提出了隨機(jī)森林算法。自隨機(jī)森林誕生以來,作為靈活高效的機(jī)器學(xué)習(xí)算法,其被普遍應(yīng)用在各個領(lǐng)域。
隨機(jī)森林在處理文本分類時主要步驟分為文本預(yù)處理、訓(xùn)練模型和分類[6]。計(jì)算機(jī)科學(xué)界在關(guān)于訓(xùn)練過程發(fā)展出諸多的改進(jìn)措施。在2014年由曹正鳳、謝邦昌提出了“混合隨機(jī)森林算法”,其中總結(jié)出了CART算法與C4.5算法在計(jì)算過程中的相似點(diǎn),利用二者的這種特點(diǎn)提出構(gòu)建二叉樹的加權(quán)節(jié)點(diǎn)分裂算法并將此應(yīng)用到隨機(jī)森林中。
在分類的過程中,計(jì)算機(jī)科學(xué)界也提出了很多的改進(jìn)方式。Croux等人提出在進(jìn)入隨機(jī)森林的文本分類過程之前,先根據(jù)決策樹的性能排序并對每一棵決策樹評估。接下來將分類性能差的決策樹淘汰,使用沒有被淘汰的分類性能相對優(yōu)秀的決策樹來組成完整的隨機(jī)森林,從而對測試對象進(jìn)行分類處理。
在后來的發(fā)展過程中,計(jì)算機(jī)科學(xué)界對隨機(jī)森林不斷地優(yōu)化,其中包括對分類選項(xiàng)的加權(quán)、選取文本特征進(jìn)行針對性的優(yōu)化、利用向量空間模型與基于潛在主題的文本表示方法兩者相結(jié)合建立決策樹等,本文在此不再贅述。
決策樹是在既定或然率的情況之下通過組成樹狀的決策鏈來求取期望值,評判是否符合條件,最后得到判斷結(jié)果。決策樹的理論模型如圖3所示。多個決策樹組成的隨機(jī)森林其再對不同決策樹進(jìn)行整合最后得到最優(yōu)分類結(jié)果[7]。圖3展示了隨機(jī)森林的理論模型。
圖3 功能為判斷是否為好瓜的決策樹
圖4 隨機(jī)森林理論模型圖
在隨機(jī)森林構(gòu)建決策樹的任務(wù)時,投票法是使用頻率最高的結(jié)合策略。假設(shè)類別的集合為{c1,c2……,cN},將ci在樣本x上的預(yù)測輸出為一個N維向量(h1i(x),h2i(x),……,hiN(x))T,其中hij(x)表示hj類別cj上的輸出。絕對多數(shù)投票法:
上式中,T表示分類器數(shù)目,N表示類別數(shù),即在T個分類器中對x進(jìn)行類別判斷如果超過一半的分類器都預(yù)測類別為j,則輸出類別為j,否則reject(拒絕),重新進(jìn)行分類預(yù)測。
文本預(yù)處理是文本分類的基礎(chǔ),目的有:(1)去除文本中與分類目標(biāo)任務(wù)無關(guān)的部分文字(即去停用詞);(2)將長段的文字內(nèi)容進(jìn)行詞量劃分使得完整的文本轉(zhuǎn)換成適合文本處理的形式(即分詞)。文本分類的速度和精度基于有效的內(nèi)容處理和合適的詞量劃分。
文本實(shí)驗(yàn)的文本預(yù)處理統(tǒng)共分成下列步驟:提取文本信息、去除格式標(biāo)記、文本分詞。
(1)提取文本信息。圖書分類數(shù)據(jù)集存儲于表格文件(data.xlsx)。使用python中的xlrd庫對data.xlsx文件進(jìn) 行相關(guān)的列讀取,選擇其中的書名(sheet[0])、關(guān)鍵詞(sheet[3])、摘要(sheet[4])、中國圖書分類號(sheet[5])為文本分類的訓(xùn)練項(xiàng)。
(2)去除格式標(biāo)記。在存儲的數(shù)據(jù)集中,有很大一部分的格式信息符號和無關(guān)字符,不能作為訓(xùn)練依據(jù)的有效信息,因此在分類前要對提取的信息進(jìn)行去除格式標(biāo)記。
(3)文本分詞。作為中文文本處理中的基本環(huán)節(jié),文本分詞也是中文人機(jī)自然語言交互的一個關(guān)鍵步驟?!霸~語”是自然語言處理中的基本單位,在進(jìn)行文本分類時也是以“詞語”作為基本單位的,即以詞為單位的最小數(shù)據(jù)塊[8]。在對英文等用字母構(gòu)成詞語的語言進(jìn)行文本分詞可以以空格作為分詞的分隔符,而在中文等這種以“字”作為最小單位的語言中,由字組成的句子中間不存在明顯分隔標(biāo)志。因此,在對中文進(jìn)行文本分類時,將完整的文本劃分為一個個詞塊是必不可少的步驟。這樣可以提高訓(xùn)練效率和準(zhǔn)確率。
文本分詞樣例圖如圖5所示。
圖5 文本分詞樣例圖
使用第三方庫對“南京理工大學(xué)紫金學(xué)院歡迎您?。?!”進(jìn)行文本分詞的示例。
圖中對其進(jìn)行三種分詞。第一種為全模式,將句子中所有可能成為詞語部分劃分出來。第二種為精確模式,jieba庫試圖將句子精確地劃分開。第三種為搜索引擎模式,在第二種分詞模式的基礎(chǔ)上,對于分詞后較長的詞語再次切分。本文選擇第三種模式。
使用隨機(jī)森林進(jìn)行文本分類時,需將文本中提取的大量的分詞轉(zhuǎn)換為統(tǒng)一的、簡潔的、方便存儲的、能夠被機(jī)器快速高效準(zhǔn)確識別的向量化數(shù)據(jù)結(jié)構(gòu)。使用向量在空間中的方向和大小關(guān)系來描述文本文檔中的文字之間的邏輯關(guān)系[9]。
在1975年,Salton等人提出了向量空間模型(Vector Space Model,VSM),在自然語言處理任務(wù)的多種模型中,其使用最為廣泛。其小組通過研究發(fā)現(xiàn)將多種文本表示模型結(jié)合,能夠更好地表示文本。在傳統(tǒng)的文本向量空間模型中存在一些問題,其中包括維度高和文本表示向量稀疏[10]。在大量的文本向量化的過程中,這些問題不僅僅會消耗計(jì)算機(jī)許多的存儲資源,而且容易導(dǎo)致過擬合,降低分類精確度。因此研究如何在不降低精度的前提下降低文本向量化的維度一直是研究的重點(diǎn)[11]。特征選擇和特征提取是為了降低向量維度的兩種主要方法。用特征選擇方法得到的特征是原始集中的一個子集,而利用特征提取所得到的特征集與原始特征集不一定相同的,是原始特征集中的特征經(jīng)過組合或者變換而成[12]。特征提取主要利用一種特定的方法將特征詞進(jìn)行處理或?qū)⒕哂邢嗨苹蛘呦嘟植夹再|(zhì)的特征空間組合在一起從而構(gòu)成一個新的特征[13]。因此原始特征集的大小被縮減以達(dá)到降低文本向量化的維度降低目的,比如隱形語義索引(LSI)。本文使用的是特征選擇方法,目前最為常見的特征選擇算法主要包括:卡方檢驗(yàn)、信息增益、互信息等,這些方法主要是在原始特征集中選擇出最有利于表達(dá)文本的特征詞,從而很大程度縮小特征集的大小以降低文本表示的維度。
中文圖書分類流程如圖6所示。
圖6 中文圖書分類流程示意圖
在自助采樣法中,給定包含m個樣本數(shù)據(jù)的數(shù)據(jù)集D,經(jīng)過m次的隨機(jī)采樣操作則得到一個包含m個樣本的采樣集D"。原始集中會有一部分在D"中多次出現(xiàn),而另一部分不會出現(xiàn)。每個樣本被采樣的概率為,那么不被采樣的概率就是(1-),那么其中一個樣本在m次采樣中一次也沒有被采樣的概率為(1-)m,當(dāng)數(shù)據(jù)集足夠大,m趨向于無窮取極限可得:
則在樣本集D中任意一個樣本從未出現(xiàn)在采樣集D"中的概率約為36.8%。即可以看作原始樣本集中約有36.8%的樣本可能不會被抽取到采樣集D"中[14]。
本文采用隨機(jī)森林進(jìn)行圖書文本分類。隨機(jī)森林分為訓(xùn)練過程和分類過程兩部分[7]。
3.1.1 訓(xùn)練過程
訓(xùn)練過程分為文本清洗(去停用詞)、文本分詞、詞向量模型計(jì)算、文檔向量計(jì)算、分類模型計(jì)算。
(1)加權(quán)取樣。原始數(shù)據(jù)文件data.xlsx作為樣本集,從中抽取樣本構(gòu)成采樣集,對于原始樣本集中的樣本構(gòu)造一個權(quán)值。樣本每次被選中則加重該樣本的權(quán)值,在下一次隨機(jī)抽取的同時加入權(quán)值,降低該樣本再一次被選中的概率,從而在原始樣本集中抽選樣本構(gòu)造采樣集時盡可能地使采樣集保持多樣性,從而提高訓(xùn)練器的準(zhǔn)確率。
(2)文本清洗。從原始數(shù)據(jù)文件data.xlsx中提取的文本中包含了大量的干擾數(shù)據(jù),這些噪音數(shù)據(jù)能夠在文本分詞向量化之前去除。為了方便類別統(tǒng)計(jì),將中國圖書分類號取首字母進(jìn)行訓(xùn)練和分類(將2萬余類別化簡為22個數(shù)據(jù)類別)。
(3)文本分詞。中文圖書分類中的數(shù)據(jù)大多以中文形式表示,其中中文以“字”作為最小單位構(gòu)成了句子,字符之間缺乏能夠劃分的分隔符。為了便于將雜亂的自然語言文本轉(zhuǎn)換為有序的、便于存儲和計(jì)算機(jī)識別的數(shù)據(jù),本文在訓(xùn)練預(yù)處理工作中將文本劃分為以“詞”為單位的詞串。本文采用jieba等庫來對中文文本進(jìn)行分詞處理[15]。
(4)詞向量模型計(jì)算。本文采用word2vec等庫將所得分詞進(jìn)行向量化處理,通過詞向量之間的空間維度聯(lián)系表示詞串之間的邏輯關(guān)系。將這些得到關(guān)系的向量進(jìn)行存儲以用于訓(xùn)練模型。
(5)文檔向量計(jì)算。將原數(shù)據(jù)集中的所有相關(guān)類別作為一個文檔,對于這個文檔進(jìn)行向量化。將這些得到關(guān)系的文檔向量存儲用于訓(xùn)練。
(6)分類模型計(jì)算。通過這些已得的向量模型構(gòu)造決策樹,采取原始數(shù)據(jù)中的一部分作為訓(xùn)練數(shù)據(jù)訓(xùn)練該決策樹。使用得到的決策樹構(gòu)造隨機(jī)森林。
3.1.2 分類過程
原始數(shù)據(jù)集(data.xlxs)共有120845條書本數(shù)據(jù),進(jìn)行圖書粗分類,將圖書劃分22個類別,即取圖書類別號的首字母。例如:《道家文化與中醫(yī)學(xué)》的圖書分類號為“R-092”,其分類在“中國圖書館圖書分類法”含義為“R:醫(yī)藥、衛(wèi)生”,“R-0:一般理論”,“R-09:藥學(xué)”,“R-092:藥典、藥方集、藥物鑒定”。為了方便實(shí)驗(yàn)取其首字母作為算法的分類類別為“R”。
使用選擇好的決策樹構(gòu)造隨機(jī)森林模型,將原始數(shù)據(jù)集選取在訓(xùn)練過程中使用相同的列的數(shù)據(jù)加載進(jìn)入該模型中對所有數(shù)據(jù)進(jìn)行分類。通過本文算法預(yù)測類別與原始數(shù)據(jù)集中的標(biāo)注類別進(jìn)行比對得到分類的準(zhǔn)確率。
隨機(jī)森林由Bagging和決策樹構(gòu)成。其中根據(jù)自主采樣法的Bagging,從原始數(shù)據(jù)集中,可放回的隨機(jī)抽取樣本m次,得到含m個樣本的采樣集。原始數(shù)據(jù)集中的樣本部分多次表現(xiàn)在采樣集中,部分則未曾表現(xiàn)。然后基于采樣集訓(xùn)練基學(xué)習(xí)器,再將基學(xué)習(xí)器結(jié)合[16]。在隨機(jī)森林的訓(xùn)練過程中,樣本的差異性越大,由多種決策樹構(gòu)成的隨機(jī)森林在分類時表現(xiàn)出的降噪能力越強(qiáng)[17]。在隨機(jī)抽取樣本時,對每個樣本建立權(quán)值wi,表示對原始數(shù)據(jù)集中每個樣本的關(guān)注度[18]。當(dāng)每個樣本被選中的時候,則加大該樣本的wi,并引入?yún)?shù)ti作為表示每個樣本被選中的次數(shù),其默認(rèn)值設(shè)置為0,第i個樣本被選中時,其ti值加1。使原本均勻取樣的Bagging算法根據(jù)選取的次數(shù)調(diào)整不同樣本權(quán)值大小,降低抽取同樣樣本的概率,提高采樣集的多樣性。加權(quán)平均法:
其中T為分類器的數(shù)量,hi(x)為x樣本在第hi向量上的概率,ti為其被選中的次數(shù),wi為其權(quán)值[19]。
數(shù)據(jù)集來源網(wǎng)絡(luò),共133425條數(shù)據(jù)。數(shù)據(jù)集的有效字段包含書名、作者、出版社、關(guān)鍵詞、摘要、中文圖書分類號等,如圖7所示。除去中文圖書分類號的5個字段內(nèi)容可用作分類。
圖7 圖書樣本數(shù)據(jù)(部分)
實(shí)驗(yàn)所使用的第三方庫的版本信息如表1所示。
表1 實(shí)驗(yàn)所用第三方庫的版本信息
程序中各個文件的功能如表2所示。
表2 文件功能說明表
參數(shù)如圖8所展示。
圖8 word2vec的參數(shù)
其中sg=1為skip-gram算法;size代表詞向量的維數(shù);window為句子中當(dāng)前詞與目標(biāo)詞的最大距離;min_count對詞進(jìn)行過濾,小于min_count被過濾;negative用于設(shè)置nose words;sample用于設(shè)置高頻詞匯的隨機(jī)降采樣的配置閾值;hs=1采用hierarchica技巧;workers表示訓(xùn)練的并行數(shù)[20]。
參照“中國圖書館分類法”對樣本進(jìn)行主題剖析,并依照文獻(xiàn)內(nèi)容的科目屬性和特點(diǎn)進(jìn)行分揀、組織。中文圖書分類號即為所獲取的分類代號。原樣本中存在29521種細(xì)類別,為了使每一種類別存在盡量多的訓(xùn)練數(shù),本文只對圖書進(jìn)行粗分類,即22種類別。例如“R-092”表示“R:醫(yī)藥、衛(wèi)生”,“R-0:一般理論”,“R-09:藥學(xué)”,“R-092:藥典、藥方集、藥物鑒定”,只考慮“R”為一種類別。數(shù)據(jù)集中的類別字段(部分)如圖9所示。
圖9 中國圖書分類號(部分)
對數(shù)據(jù)集進(jìn)行多次實(shí)驗(yàn)并得到實(shí)驗(yàn)結(jié)果,如圖10所示。
圖10 訓(xùn)練結(jié)果截圖
圖10展示了使用Pre_RandomForest對數(shù)據(jù)集進(jìn)行模型分析訓(xùn)練。經(jīng)過預(yù)處理得到樣本集120845,采樣集為120845,標(biāo)簽種類為22個。
部分分類結(jié)果(準(zhǔn)確率)截圖如圖11所示。
圖11 分類結(jié)果(準(zhǔn)確率)截圖
圖11所示的部分實(shí)驗(yàn)結(jié)果,類別有‘E’,‘P’,‘T’,‘A’,‘I’,‘J’,‘F’,‘Q’,‘S’,‘R’,‘C’,‘N’,‘G’,‘K’,‘B’,‘H’,‘O’。根據(jù)分類后所得的標(biāo)簽和原本數(shù)據(jù)集中首字母進(jìn)行匹配得到準(zhǔn)確率約為90.17%。
Pre_RandomForest與Bert、TextCNN、FastText的準(zhǔn)確率對比如圖12所示。
圖12 算法模型分類準(zhǔn)確率對比圖
在相同的數(shù)據(jù)集上,Pre_RandomForest與Bert、TextCNN、FastText的分類準(zhǔn)確率進(jìn)行比較,Pre_RandomForest的準(zhǔn)確率更高且更穩(wěn)定,Pre_RandomForest與Bert、TextCNN、FastText相比較具有一定的競爭優(yōu)勢。
本文選取基于Bagging模型的隨機(jī)森林對中文圖書進(jìn)行分類,通過對文本數(shù)據(jù)進(jìn)行預(yù)處理(去停用詞、分詞)、詞向量化以外,還對樣本加權(quán),使得原始數(shù)據(jù)集中每個樣本的關(guān)注度有所區(qū)別,從而提高分類的效率和準(zhǔn)確率。Pre_Random-Forest與Bert、TextCNN等相比分類的準(zhǔn)確率更高。
圖書分類是圖書管理發(fā)展的重要方向之一,Pre_RandomForest在一定程度上提高了圖書分類的準(zhǔn)確率,今后可以結(jié)合此方法探索出更高精度的算法,解決更復(fù)雜的圖書管理任務(wù)。