王昱
(西北民族大學(xué)數(shù)學(xué)與計算機科學(xué)學(xué)院,蘭州 730030)
唐卡(Tang ka)又叫唐喀,是藏語音譯過來的詞。在《藏漢大辭典》中對唐卡的解釋是:“卷軸畫,畫有圖像的布或紙,可用軸卷成一束者?!保?],而在《西藏歷史文化詞典》中的解釋是:“唐卡是指流行于藏區(qū)的一種宗教卷軸畫,通常繪于布帛與絲絹上,是西藏地方繪畫的主要形式之一。”[2]唐卡從起源至今千百年以來,隨著歷史、宗教的發(fā)展而五光十色,其題材內(nèi)容包含歷史、文化、政治等領(lǐng)域,具有龐大的內(nèi)容體系、獨特的藝術(shù)價值,不僅是藏民族的百科全書,也是中華民族的驕傲。在唐卡的發(fā)展歷史中,許多人研究唐卡、描述唐卡,留下大量的唐卡語料。文本分類是自然語言處理的研究熱點之一,針對唐卡文本的分類,可以高效地對這些文本進行管理和配置,對后續(xù)唐卡知識圖譜的構(gòu)建、唐卡信息檢索有積極的意義,因此具有一定的研究價值。
目前中文文本分類技術(shù)已經(jīng)成熟,國內(nèi)外專家針對文本分類任務(wù)的研究主要體現(xiàn)在文本的特征表示方法與分類算法的改進。針對文本的特征表示,文獻[3]提出使用TF-IDF算法與Word2vec結(jié)合生成詞向量,用于短文本的分類,但這一方法存在詞與詞之間的順序和位置關(guān)系不清晰的問題。文獻[4]提出一種統(tǒng)計共現(xiàn)矩陣,這一向量表示方法進行詞的向量化表示,能使詞的語義和語法信息蘊含在向量之中,這一特征方法被應(yīng)用到多種自然語言處理任務(wù)上。文獻[5]運用詞向量表示方法ELMo,該模型在訓(xùn)練過程中使用了雙向的LSTM考慮了上下文關(guān)系,較好地解決了多義詞的問題,預(yù)訓(xùn)練+微調(diào)成為一種新的范式被大量應(yīng)用在文本分類及其他自然語言處理任務(wù)上。文獻[6]中提出Transformer結(jié)構(gòu)作為特征提取器,使用Self-Attention,具有強大的特征提取能力。文獻[7]基于Transformer的Encoder部分提出了BERT模型,采用了雙向編碼的方式,利用了每個詞的上下文信息,使模型能更好地表達語義信息,問世后便刷新了自然語言處理領(lǐng)域的多項任務(wù)指標。文獻[8]對于BERT模型進行改進,提出了輕量版本的預(yù)訓(xùn)練語言模型ALBERT,這一模型不僅參數(shù)量少而且一問世就刷新了自然語言處理的多項任務(wù)指標。
另一方面針對分類器的構(gòu)建上,文獻[9]使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network)對文本進行句子級別的分類任務(wù),但TextCNN忽略了文本的上下文信息。文獻[10]提出使用循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network)處理文本分類任務(wù),但循環(huán)神經(jīng)網(wǎng)絡(luò)對于處理長文本會產(chǎn)生梯度消失或梯度爆炸的問題。文獻[11]提出使用雙向長短期記憶網(wǎng)絡(luò)結(jié)合Attention機制進行電網(wǎng)領(lǐng)域設(shè)備各種文本分類任務(wù),實驗結(jié)果表明BiLSTM提升了分類效果。文獻[12]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)來改進核函數(shù)的方法,在法律文本的關(guān)系分類有較好的效果。文獻[13]提出一種深層金字塔卷積網(wǎng)絡(luò)(DPCNN),通過加深網(wǎng)絡(luò)來捕捉文本的長距離依賴關(guān)系,相比于傳統(tǒng)的TextCNN方法提升了將近2%。
針對唐卡領(lǐng)域文本,本文提出了一種基于BERT(bidirectional encoder from transformers)的唐卡領(lǐng)域文本分類算法。該算法首先用BERT預(yù)訓(xùn)練語言模型對唐卡文本進行了特征表示,隨后將句子級別的特征表示輸入卷積神經(jīng)網(wǎng)絡(luò)中再次提取局部語義信息,最后輸入分類器中進行分類,在唐卡語料測試集上驗證的F1值達到了92.87%,實驗結(jié)果證明該方法的有效性。
對于唐卡語料文本分類算法,有唐卡文本的預(yù)處理、唐卡文本的特征表示、唐卡文本分類三個步驟。唐卡文本的預(yù)處理是指將唐卡文本進行數(shù)據(jù)清洗,再劃分類別。唐卡文本的特征表示是指將唐卡文本轉(zhuǎn)換為模型可以接收的形式,形成特征向量。唐卡文本分類是將特征向量輸入到分類器中進行分類。
1.1.1 數(shù)據(jù)的收集
本文搜集了三部分的唐卡語料,一部分是從網(wǎng)絡(luò)上爬取的唐卡人物解釋語料,另一部分是在《圖解唐卡系列》書籍上收集的有關(guān)唐卡的描述語料描述。最后一部分是在《佛教大辭典》收集的有關(guān)唐卡人物語料。最終收集到的數(shù)據(jù)有8917條數(shù)據(jù),根據(jù)沒句話的特征定義了11種關(guān)系。
1.1.2 數(shù)據(jù)清洗
在唐卡文本中包含大量的特殊字符、空白格、英文字符、繁體字。首先這一步中將特殊字符與空白格刪掉。這些特殊字符與空白格會對特征提取產(chǎn)生影響,為了讓模型更多地關(guān)注文本的語義信息,將這些特殊字符在文本中去掉。再分別將英文字符與繁體字轉(zhuǎn)換為漢文字符與簡體字符。英文字符與繁體字符會增加特征表示的復(fù)雜程度,轉(zhuǎn)化為漢文字符和簡體字符在不會增加特征復(fù)雜程度的同時還能表達相同的語義特征。
1.1.3 類別配備
文本采用的是有監(jiān)督的深度學(xué)習的方法,需要對唐卡文本進行類別標注。這一步中先使用規(guī)則的方法,將原始文本進行類別配對,減少了一部分的標注量,隨后再進行人工類別校對,確保文本與類別能夠一一配對。在某些類別中,樣本數(shù)過于稀少,研究價值不大,所以將樣本數(shù)稀少的類別刪除。
BERT(bidiectional encoder representations from transforms)模型,是由谷歌在2018年所提出,BERT是由堆疊的Transformer Encoder層組成的網(wǎng)絡(luò)模型,再輔以詞編碼和位置編碼而成的,其模型結(jié)構(gòu)如圖1所示,圖中E1,E2,…,Em表示的是字符級的文本輸入,其經(jīng)過雙向Transformer Enconder編碼得到文本的向量化表示T1,T2,…,Tm。BERT模型主要使用了Transformer模型的Encoder部分。
圖1 BERT模型結(jié)構(gòu)
1.2.1 Transformer模型的Encoder部分
Transformer是谷歌在2017年提出的結(jié)構(gòu),用于機器翻譯的編碼和解碼。由于其具有強大的編碼能力和并行性被廣泛地使用。其編碼器部分模型結(jié)構(gòu)如圖2所示,Transformer Encoder由兩個子層(sub-layers)構(gòu)成,第一個子層是一個多頭的自注意力機制(multi-head self-attention mechanism),第二個子層是一個前饋神經(jīng)網(wǎng)絡(luò)(feed forward network),并且在每個子層后面都會加上殘差連接(residual connection)和歸一化層(layer normalisation)。Transform Encoder的輸出會作為下一個Transform Encoder層的輸入,多個Transform Encoder不斷堆疊最終得出結(jié)合上下文的語義表示。而BERT模型便使用了這一結(jié)構(gòu)作為特征提取器。
圖2 Transformer Encoder模型結(jié)構(gòu)
如圖2所示,模型輸入經(jīng)過詞嵌入再輔以位置編碼,再經(jīng)過子層一多頭的自注意力機制層進行計算,再通過子層二前饋神經(jīng)網(wǎng)絡(luò),最后經(jīng)過每個子層時都要進行殘差連接和歸一化層后輸出。
1.2.2 輸入向量
BERT使用Transformer作為編碼器,為了保留文本的位置信息,需要額外地加入位置編碼(positional embedding),在同一句話里含有相同的字,字的順序不一樣,整句話的意思就會不大一樣,例如:“我去你家”與“你去我家”,這兩句話字符一樣,但表達的意思完全不同。而分辨這倆句話就需要進行位置編碼,在文獻[4]中提出了一種基于正弦、余弦的位置編碼,在BERT中計算位置向量的公式如下:
公式(1)、(2)中PE表示進行位置編碼后得到的向量,pos代表了詞的序號,公式(1)中的2i代表了特征向量的奇數(shù)位,公式(2)中的2i+1代表了特征向量的偶數(shù)位,dmodel表示特征向量的維數(shù),由此特征向量經(jīng)過公式(1)、(2)進行位置向量編碼得到位置向量,特征向量與位置向量相加作為BERT模型的輸入,隨后進入下一層Multihead Attention。
BERT模型會接收單個句子或者句子對作為模型的輸入,通過切詞,對于每一個最小詞單位token,會計算其對應(yīng)的token embedding、segment embedding和position embedding。token embedding代表了由One-Hot詞表映射的編碼。segment embedding代表了分割編碼,用來區(qū)分每個字或詞所屬的句子。BERT中的Positional embedding是直接對不同的位置隨機初始化一個position embedding加到token embedding上。最后三種不同的向量相加作為該token的表示向量輸入模型中。BERT模型中使用的segment embedding和position embedding均在預(yù)訓(xùn)練的過程中得到。BERT模型輸出也為一個向量。設(shè)一句話的長度為n,其輸入的詞向量可以表示為X=(x1,…,xn),經(jīng)過transformer的編碼后輸出為向量Z=(z1,…,zn),每個分量zi,都是xi結(jié)合了上下文的表示。
BERT的訓(xùn)練分兩次進行,在使用巨量的文本訓(xùn)練基礎(chǔ)模型后,只需要在下游任務(wù)中選擇特定數(shù)據(jù)集上微調(diào),就能獲得極佳的性能。卷積神經(jīng)網(wǎng)絡(luò)一開始用于處理圖片數(shù)據(jù),即H×W形式的數(shù)據(jù),在文本中使用的CNN模型可以提取語義的深層信息,所以本文把CNN模型用于文本分類的下游任務(wù)上,進一步提取語義特征,在BERT模型下游接上CNN模型,其結(jié)構(gòu)如圖3所示。
圖3 BERT-CNN模型結(jié)構(gòu)
BERT提取并整合了單句語義信息的能力和使用分類標簽[CLS]捕獲句對關(guān)系,在文本分類任務(wù)中使用句子首標簽[CLS]的輸出特征作為分類標簽,計算分類標簽與真實標簽的交叉熵,并將其作為優(yōu)化目標。隨后再通過卷積神經(jīng)網(wǎng)絡(luò)進行更深層次的特征提取,最后通過Softmax進行歸一化處理,輸出每句唐卡文本的類別。
本文實驗使用的數(shù)據(jù)集是收集來的唐卡數(shù)據(jù)集,共包含8937條有標簽的數(shù)據(jù),標簽的類別有11種,類型分別為別稱、合稱、藏文拉丁轉(zhuǎn)寫、梵文拉丁轉(zhuǎn)寫、化身、身相、頭戴、坐騎、坐具、持物、手印。各個文本的數(shù)據(jù)樣例如表1所示。
表1 唐卡數(shù)據(jù)樣例
唐卡將唐卡數(shù)據(jù)按照8∶1∶1的比例劃分為訓(xùn)練集、驗證集、測試集。使用THUCNews短文本開源數(shù)據(jù)集作為對比數(shù)據(jù)集。
分類問題常用的評價指標包括:準確率(precision)、召回率(recall)、F1值(H-mean值)分類結(jié)果的混淆矩陣[11]如表1所示。
表2 分類結(jié)果的混淆矩陣
(1)P指標是指在模型預(yù)測是Positive的所有結(jié)果中,模型預(yù)測對的比重即分類器模型預(yù)測為正且預(yù)測正確的樣本占所有預(yù)測為正的樣本比例,計算公式如下:
(2)R指標是指模型預(yù)測對的比重即分類器預(yù)測為正且預(yù)測正確的樣本占所有真實為正的樣本的比例,計算公式如下:
(3)F1值是為了評價模型輸出的優(yōu)劣,綜合了Precision和Recall指標,進行加權(quán)調(diào)和平均,計算公式如下:
F1值的取值范圍[0,1]。從公式中可以看出當P=R=1時,F(xiàn)1值達到最大值1,然而在實際情況中很難實現(xiàn),在使用F1值作為評價指標時其值越接近1,說明分類器性能越好。
本文使用TextCNN、BiLSTM、BERT、BERTBiLSTM模型作為對照實驗,其中TextCNN模型與BiLSTM模型中利用中文分詞工具Jieba進行分詞,詞嵌入采用了Word2vec,訓(xùn)練時參數(shù)設(shè)置如表3所示。
表3 TextCNN模型訓(xùn)練參數(shù)設(shè)置
BERT-CNN的模型參數(shù)設(shè)置如表4所示:
表4 BERT-CNN模型訓(xùn)練參數(shù)設(shè)置
本文在唐卡數(shù)據(jù)集上進行實驗,分別使用了TextCNN、BERT、BERT-CNN,BERT-BiLSTM作為對照實驗,最終實驗結(jié)果如表5所示。
表5 模型實驗結(jié)果
表5為各個模型在唐卡數(shù)據(jù)集數(shù)據(jù)集上面的評價指標對比,可以看出在不使用預(yù)訓(xùn)練語言模型,僅僅使用文本卷積模型的分類效果F1值達到了87.32%,使用了預(yù)訓(xùn)練語言模型不進一步提取語義特征,BERT的分類效果F1值達到88.55%相比于卷積神經(jīng)網(wǎng)絡(luò)提升1.23%,而將這倆個模型優(yōu)點結(jié)合的BERT-CNN模型F1值效果最好,達到了90.54%,相比于TextCNN和BERT模型F1值分別提升了3.22%和1.99%,證明了BERT-CNN模型的有效性。
本文在解決唐卡文本分類問題時,使用BERT預(yù)訓(xùn)練模型代替?zhèn)鹘y(tǒng)的Word2vec模型進行唐卡文本特征表示,并在BERT模型后加入CNN再次提取語句的局部特征,進行唐卡文本分類,最終在測試集上的整體F1值達到90.54%。證明了該算法的有效性。由于在某些唐卡語料中一句話過長和存在多種類別,后續(xù)將進一步研究長句子分類與多標簽問題。