殷小科,王威,王婕,張沛然,樂漢,林基偉,張海婷
(1.上海市公安局科技處,上海200042;2.上海德拓信息技術(shù)股份有限公司,上海200030)
現(xiàn)今,文本分類在自然語言處理中被廣泛應(yīng)用,文本數(shù)據(jù)自動(dòng)歸類可以方便用戶檢索、查詢,并在此基礎(chǔ)上對(duì)數(shù)據(jù)進(jìn)行深度加工,尤其在數(shù)據(jù)越來越多的情況下,人工歸類已無法滿足要求。很多研究人員和機(jī)構(gòu)對(duì)此做了大量工作,文本分類任務(wù)一般來說是一個(gè)有監(jiān)督任務(wù),首先模型需要在有標(biāo)注的數(shù)據(jù)上進(jìn)行訓(xùn)練,然后在此基礎(chǔ)上對(duì)未標(biāo)注數(shù)據(jù)進(jìn)行分類[1]。文本分類通常有兩個(gè)或多個(gè)類別,例如郵件分類、垃圾郵件分類、情感分析等。文本分類的類別如果特別多,作為文本分類的一種特殊情況,需要區(qū)別對(duì)待。很多實(shí)際應(yīng)用中的分類問題,類別之間有關(guān)系,相似的類別可以作為一大類,由此形成相應(yīng)的層次結(jié)構(gòu),這是一種特殊的文本分類問題,分層文本分類(Hier?archical Text Classification,HTC),分類算法的結(jié)果對(duì)應(yīng)分類層次結(jié)構(gòu)中的一個(gè)或多個(gè)節(jié)點(diǎn)。其中的分類層次結(jié)構(gòu)通常用一個(gè)樹結(jié)構(gòu)或有向無環(huán)圖表示。
對(duì)于海量的警情信息,如果能進(jìn)行充分利用挖掘,不但能夠更好地檢索、查詢,更能夠提高辦案效率,預(yù)測(cè)規(guī)律,預(yù)防犯罪事件的發(fā)生。警情分類是對(duì)警情信息進(jìn)行充分利用的基礎(chǔ),實(shí)際警情分類是一個(gè)典型的分層文本分類問題,如圖1,警情信息下有兩層分類,分類11下面包括分類21、22等。每天都會(huì)接到大量報(bào)警信息,人工分類效率不高,不同人員錄入存在主觀差異,多層次分類比較繁瑣,可能出現(xiàn)層級(jí)遺漏、相似類別出現(xiàn)失誤等情況,因此自動(dòng)文本分類是非常重要的。
圖1 警情分類結(jié)構(gòu)
本文針對(duì)警情信息的分層文本分類,提出了一種基于BERT的分層遷移模型?;诰樾畔㈩悇e之間數(shù)據(jù)嚴(yán)重不均衡,有的小類只有幾個(gè)數(shù)據(jù),模型很難得到其中的特征,相對(duì)而言,大類的數(shù)據(jù)足夠模型學(xué)到有用信息用于分類。本文提出的模型除了利用了數(shù)據(jù)本身的分類信息,還充分利用了BERT在警情數(shù)據(jù)上學(xué)習(xí)到的警情領(lǐng)域相關(guān)信息。為了利用分層結(jié)構(gòu)信息,本方法對(duì)每一個(gè)父類節(jié)點(diǎn)訓(xùn)練一個(gè)BERT分類器;為了利用警情領(lǐng)域信息,加入了模型參數(shù)遷移的方法。
如果文本分類有特別多的類別,通常會(huì)將類別分層處理,在學(xué)習(xí)和預(yù)測(cè)過程中利用分層結(jié)構(gòu)的信息[2]。實(shí)際任務(wù)需要根據(jù)分層分類的特點(diǎn)用不同的方法解決問題,一般考慮3點(diǎn):分層結(jié)構(gòu)類型、任務(wù)目標(biāo)、如何利用分層信息[3]。一般來說分層結(jié)構(gòu)類型分為樹結(jié)構(gòu)和有向無環(huán)圖兩種,樹結(jié)構(gòu)的每一個(gè)節(jié)點(diǎn)只有一個(gè)父節(jié)點(diǎn),有向無環(huán)圖中有的節(jié)點(diǎn)有多于一個(gè)父節(jié)點(diǎn)。任務(wù)目標(biāo)也分為兩種:必須選擇一個(gè)葉子節(jié)點(diǎn),可以選擇任意節(jié)點(diǎn)。具體指分類是否必須分到最小類,在警情分類中以分類11為例,分類11下面還有分類21、22等小類,根據(jù)是否可以分為分類11這一非葉子節(jié)點(diǎn),其任務(wù)目標(biāo)不同,解決方法也不同。不過此任務(wù)目標(biāo)是可以根據(jù)情況轉(zhuǎn)化的,在分類11中如果必須選擇一個(gè)葉子節(jié)點(diǎn),那么分類11下需要加入一個(gè)其他詐騙的葉子節(jié)點(diǎn)以此保證必須選擇一個(gè)葉子節(jié)點(diǎn)。
如何利用分層信息分為很多種情況,為了在分類過程中用到分層結(jié)構(gòu)信息,很多研究人員提出了不同的方法,文獻(xiàn)[3]中將各種方法分為三類:扁平、全局、局部三類。扁平方法指忽略分層信息,有的數(shù)據(jù)沒有定義好的分層結(jié)構(gòu)信息,需要根據(jù)訓(xùn)練數(shù)據(jù)或者類別描述挖掘類別之間的關(guān)系構(gòu)建分層結(jié)構(gòu)信息,一般是無監(jiān)督方法,準(zhǔn)確率無法保證,有傳導(dǎo)誤差,這種情況下扁平方法用的較多。全局方法指考慮分層信息訓(xùn)練一個(gè)全局分類器,在測(cè)試階段用自上而下的策略。文獻(xiàn)[4]將分層結(jié)構(gòu)看作一個(gè)有向圖,利用類別之間的先驗(yàn)概率聚合節(jié)點(diǎn)信息,文本信息加入分類結(jié)構(gòu)特征用于全局模型。局部方法利用分層結(jié)構(gòu)的局部信息訓(xùn)練局部的分類器,可以每個(gè)節(jié)點(diǎn)訓(xùn)練一個(gè)二分類分類器,可以每個(gè)父節(jié)點(diǎn)訓(xùn)練一個(gè)多分類分類器,也可以每一層訓(xùn)練一個(gè)多分類分類器。文獻(xiàn)[5-7]為了克服父節(jié)點(diǎn)到子節(jié)點(diǎn)數(shù)據(jù)不均衡的問題,針對(duì)局部方法做了很多研究。警情數(shù)據(jù)中已經(jīng)事先定義好了分層結(jié)構(gòu)信息,并且小類別數(shù)據(jù)嚴(yán)重不均衡,在這種情況下充分利用分層結(jié)構(gòu)信息對(duì)準(zhǔn)確率的提高是非常重要的。
本文采用的是以上介紹的局部方法,每個(gè)父節(jié)點(diǎn)訓(xùn)練一個(gè)BERT多分類分類器。BERT預(yù)訓(xùn)練模型在不同的NLP任務(wù)中已經(jīng)證明效果非常好,利用BERT預(yù)訓(xùn)練模型本身就算一種遷移學(xué)習(xí)。在微調(diào)根節(jié)點(diǎn)BERT分類器的過程中,對(duì)所有警情數(shù)據(jù)進(jìn)行了學(xué)習(xí),因此根節(jié)點(diǎn)的BERT分類器學(xué)到了更多警情領(lǐng)域知識(shí)。為了利用警情領(lǐng)域知識(shí)對(duì)不平衡的小類別進(jìn)行分類,將微調(diào)好的根節(jié)點(diǎn)BERT分類器遷移到小類別BERT分類器上,在此基礎(chǔ)上再對(duì)小類別進(jìn)行微調(diào),由此得到最終小類別的BERT分類器。
假設(shè)模型分三層R、C1、C11,首先用全部的數(shù)據(jù)對(duì)跟節(jié)點(diǎn)R訓(xùn)練BERT分類器,分為子類別{C1,C2,C3,…},然后再訓(xùn)練C1模型時(shí),將模型參數(shù)初始化為R模型參數(shù),C1模型分為子類別{C11,C12,C13,...},以此得到最后分類結(jié)果。
BERT模型[8]是Google于2018年提出的預(yù)訓(xùn)練模型,在NLP多個(gè)任務(wù)中刷新了記錄,被認(rèn)為是NLP領(lǐng)域很大的一個(gè)突破。BERT是一種預(yù)訓(xùn)練模型,在大量文本語料上得到了一個(gè)通用的“語言理解”模型,BERT的主要框架是Transformers。
BERT應(yīng)用分預(yù)訓(xùn)練和微調(diào)兩個(gè)階段,除了輸出層,預(yù)訓(xùn)練和微調(diào)階段BERT模型的結(jié)構(gòu)是一樣的,預(yù)訓(xùn)練模型的參數(shù)用于初始化不同的下游任務(wù)。
很多NLP分類都會(huì)存在數(shù)據(jù)不均衡的問題,在現(xiàn)實(shí)數(shù)據(jù)中這種問題尤其嚴(yán)重。數(shù)據(jù)不均衡是一個(gè)普遍的問題,很多研究人員對(duì)此進(jìn)行了研究[9-10]。解決數(shù)據(jù)不均衡的問題,一般分為兩種方法:一種改變數(shù)據(jù),另一種是改變模型。
數(shù)據(jù)層面解決數(shù)據(jù)不均衡的主要方法有降采樣、過采樣和數(shù)據(jù)增強(qiáng)。降采樣是丟棄訓(xùn)練集中數(shù)據(jù)多的類別的一些數(shù)據(jù),經(jīng)過調(diào)整后的數(shù)據(jù)集小于原數(shù)據(jù)集,在丟棄時(shí)應(yīng)該盡量丟棄不太重要的數(shù)據(jù)。不過通常比較難判斷,這種情況下會(huì)損失數(shù)據(jù),一般比較少用降采樣。過采樣就是對(duì)數(shù)據(jù)少的類別數(shù)據(jù)進(jìn)行多次選取,經(jīng)過調(diào)整后的數(shù)據(jù)集大于原數(shù)據(jù)集。這種方法增加了時(shí)間開銷,容易過擬合。數(shù)據(jù)增強(qiáng)是過采樣的延伸方法,區(qū)別于單純的重復(fù)數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行一些處理來增加數(shù)據(jù)量,有多種方法:隨機(jī)加入一些噪聲,例如隨機(jī)刪掉某些詞,隨機(jī)打亂詞語順序;對(duì)句子通過編碼解碼過程復(fù)述生成;同義詞替換;回譯,例如將中文文本翻譯為英文再回譯為中文等方法。復(fù)述生成、回譯通常認(rèn)為是比較好的方法,因?yàn)樵谧鰯?shù)據(jù)增強(qiáng)的時(shí)候,對(duì)原始數(shù)據(jù)的處理使得語義發(fā)生了變化,但同時(shí)又保證了整個(gè)語義的完整性。
模型層面解決數(shù)據(jù)不均衡的主要方法有修改損失函數(shù)和難例挖掘。修改損失函數(shù)最簡(jiǎn)單的方法就是為數(shù)據(jù)少的類別增加損失函數(shù)的權(quán)值,增加權(quán)值可以簡(jiǎn)單理解為一個(gè)數(shù)據(jù)作用增大,類似于過采樣的操作。難例挖掘指的是挖掘出預(yù)測(cè)效果差的數(shù)據(jù),對(duì)這些數(shù)據(jù)再進(jìn)行重新訓(xùn)練。對(duì)于數(shù)據(jù)少的類別,模型的預(yù)測(cè)效果不好,就會(huì)被當(dāng)作難例,模型對(duì)這些數(shù)據(jù)再次處理,以此提高模型效果。
在選取方法時(shí)需要根據(jù)具體情況來選擇,算力、數(shù)據(jù)分布和誤判的代價(jià)都是需要考慮的問題。警情數(shù)據(jù)出于安全考慮,算力限制,數(shù)據(jù)過采樣或者數(shù)據(jù)增強(qiáng)不適合大范圍使用;預(yù)測(cè)數(shù)據(jù)與訓(xùn)練數(shù)據(jù)分布一樣,應(yīng)該盡量保留訓(xùn)練數(shù)據(jù)的數(shù)據(jù)分布;不同類別誤判的代價(jià)不存在明顯差別。因此本文對(duì)不均衡數(shù)據(jù)的處理,在節(jié)省算力、充分利用數(shù)據(jù)的基礎(chǔ)上,盡量保留了訓(xùn)練數(shù)據(jù)的占比,對(duì)特別多的數(shù)據(jù)進(jìn)行了降采樣,對(duì)特別少的進(jìn)行了數(shù)據(jù)增強(qiáng)。
分層遷移模型在訓(xùn)練父節(jié)點(diǎn)分類器和子節(jié)點(diǎn)分類器時(shí)進(jìn)行遞歸策略。例如,P是最上層的類別,C1是P的一個(gè)子類,C11是C1的一個(gè)子類。首先,我們針對(duì)P訓(xùn)練一個(gè)BERT分類器BERT-P,如果P是根目錄,那么所有訓(xùn)練數(shù)據(jù)都會(huì)經(jīng)過BERT-P。然后,在C1類別訓(xùn)練時(shí),用BERT-P訓(xùn)練好的模型參數(shù)初始化另外的BERT分類器BERT-C1。訓(xùn)練完BERTC1后,用BERT-C1初始化C11的BERT分類 器BERT-C11,以此類推。根據(jù)Hoo-Chang等人[11]的研究,最后輸出層的參數(shù)是隨機(jī)初始化的,利用的是除輸出層之外的參數(shù)。
根據(jù)Howard等人[12]對(duì)遷移學(xué)習(xí)的研究,模型不同層的參數(shù)需要用不同的學(xué)習(xí)率。本文中模型,遷移參數(shù)(從父節(jié)點(diǎn)分類器得到的)用較低的學(xué)習(xí)率,最后的全連接輸出分類層參數(shù)(隨機(jī)初始化的)用較高的學(xué)習(xí)率。另外,在訓(xùn)練完BERT-P模型后,保持詞向量層的參數(shù)不變,后續(xù)子節(jié)點(diǎn)的模型訓(xùn)練詞向量層學(xué)習(xí)率為0。保持詞向量層參數(shù)不變可以防止子節(jié)點(diǎn)分類器訓(xùn)練過程中出現(xiàn)過擬合。
本文采用的警情數(shù)據(jù),分類體系分三層,一層分18類,二層分151類,需要訓(xùn)練19個(gè)BERT分類器。對(duì)于需要訓(xùn)練19個(gè)BERT分類器,缺點(diǎn)是所需時(shí)間比較長(zhǎng),優(yōu)點(diǎn)是可以分別優(yōu)化不同的分類器,對(duì)于一些數(shù)據(jù)比較完整的父節(jié)點(diǎn),訓(xùn)練好的模型已經(jīng)達(dá)到所需精度,可以直接應(yīng)用。而某些類別現(xiàn)有數(shù)據(jù)太少,可以結(jié)合關(guān)鍵詞或其他方法暫時(shí)應(yīng)用,后續(xù)數(shù)據(jù)增多可以很方便迭代。
警情數(shù)據(jù)嚴(yán)重不均衡,對(duì)其中類別數(shù)量過多的降采樣,過小的進(jìn)行數(shù)據(jù)增強(qiáng)。
模型在不均衡的數(shù)據(jù)上進(jìn)行訓(xùn)練,更容易預(yù)測(cè)為數(shù)據(jù)多的類別,這種情況下雖然可以得到比較高的準(zhǔn)確率,但是無法代表數(shù)據(jù)少的類別。因此本文用Micro-P(微觀準(zhǔn)確率)、Macro-P(宏觀準(zhǔn)確率)兩個(gè)指標(biāo)來評(píng)價(jià)最后的實(shí)驗(yàn)結(jié)果。
Micro-P將所有數(shù)據(jù)看作一個(gè)整體,統(tǒng)一計(jì)算其準(zhǔn)確率,公式如下:
Macro-P是統(tǒng)計(jì)每個(gè)類別的準(zhǔn)確率,然后取平均得到最后的準(zhǔn)確率,公式如下:
本文實(shí)驗(yàn)結(jié)果如表1所示,為了驗(yàn)證本文模型的有效性,本文選取了兩個(gè)對(duì)比模型,扁平BERT是忽略警情數(shù)據(jù)的結(jié)構(gòu)信息,直接對(duì)151個(gè)小的類別進(jìn)行識(shí)別,可以看到其識(shí)別結(jié)果是最低的,尤其Macro-P準(zhǔn)確率,其中數(shù)據(jù)少的類別結(jié)果對(duì)比其他兩個(gè)模型是最差的,因?yàn)閿?shù)據(jù)中關(guān)于類別的信息較少。局部BERT模型是未考慮遷移學(xué)習(xí),對(duì)跟節(jié)點(diǎn)和18個(gè)大類都初始化一個(gè)BERT模型分別進(jìn)行識(shí)別,測(cè)試時(shí)由上到下得到結(jié)果。局部BERT利用了數(shù)據(jù)的結(jié)構(gòu)信息,一定程度上能夠緩解數(shù)據(jù)不平衡問題,結(jié)果較扁平BERT有所提升。結(jié)果最好的是BERT模型與遷移學(xué)習(xí)相結(jié)合的模型,Micro-P準(zhǔn)確率能到95.8%,Macro-P準(zhǔn)確率較另兩個(gè)模型也有比較大的提高。
表1 實(shí)驗(yàn)結(jié)果
本文根據(jù)警情數(shù)據(jù)的特殊性,提出了一個(gè)BERT結(jié)合遷移學(xué)習(xí)的方法來提高分層文本分類的準(zhǔn)確率。實(shí)驗(yàn)表明Micro-P準(zhǔn)確率已經(jīng)能達(dá)到比較高的結(jié)果,但是Macro-P準(zhǔn)確率由于有的類別數(shù)據(jù)太少導(dǎo)致結(jié)果不理想,在實(shí)際應(yīng)用中這種類別出現(xiàn)的也特別少,還需要繼續(xù)積累數(shù)據(jù)對(duì)模型進(jìn)行迭代優(yōu)化。