李鐵飛,生 龍,吳 迪
1.河北工程大學(xué) 信息與電氣工程學(xué)院,河北 邯鄲056107
2.河北工程大學(xué) 河北省安防信息感知與處理重點(diǎn)實(shí)驗(yàn)室,河北 邯鄲056107
文本分類是根據(jù)文本所蘊(yùn)含的信息將其映射到預(yù)先定義帶主題標(biāo)簽的兩個(gè)或幾個(gè)類的過程[1]。文本分類是自然語言處理領(lǐng)域一項(xiàng)重要的任務(wù)類型,文本分類可對包含巨大數(shù)據(jù)量的信息進(jìn)行組織、管理,降低搜索信息成本[2]。文本分類被廣泛應(yīng)用到內(nèi)容審核、輿情分類、廣告標(biāo)注、情感分析、郵件過濾、新聞主題劃分、問題甄別、意圖識(shí)別、指代消解等場景[3]。
文本分類最初通過專家規(guī)則進(jìn)行分類,它利用知識(shí)工程定義數(shù)量巨大的推理規(guī)則來判斷文本屬于哪個(gè)類別,人力成本巨大,且主觀因素對結(jié)果影響較大,不同領(lǐng)域有不同的推理規(guī)則,不具備擴(kuò)展性[4]。隨著機(jī)器學(xué)習(xí)算法的興起,特征工程&淺層分類器的模型被廣泛使用。機(jī)器學(xué)習(xí)方法具有完備的理論做基礎(chǔ),不需要專業(yè)人員總結(jié)推理規(guī)則,具有一定擴(kuò)展性,相比知識(shí)工程大大減小了總結(jié)規(guī)則的成本[5-8],性能優(yōu)于專家規(guī)則方法。
隨著自然語言處理技術(shù)的發(fā)展,深度學(xué)習(xí)網(wǎng)絡(luò)模型越來越多地應(yīng)用到文本分類問題上,深度學(xué)習(xí)網(wǎng)絡(luò)模型之所以在圖像和聲音處理領(lǐng)域非常成功,是因?yàn)閳D像數(shù)據(jù)和聲音數(shù)據(jù)是連續(xù)的、稠密的。所以把深度學(xué)習(xí)模型用于解決文本分類問題,首先要把文本數(shù)據(jù)映射成連續(xù)的、稠密的詞向量。這種“文本表示”方法稱為文本的分布式表示。文本的分布式表示模型即詞向量模型。把文本數(shù)據(jù)映射成詞向量成為深度學(xué)習(xí)網(wǎng)絡(luò)分類模型中首先要解決的上游任務(wù),在下游任務(wù)中利用RNN、CNN、LSTM、Transformer等網(wǎng)絡(luò)模型再次提取特征信息,捕捉文本中詞序列、詞關(guān)聯(lián),語法、語義等信息,提升了分類效果,同時(shí)過程中不需要人工特征工程,很大程度降低了人工成本[9-10]。
自然語言處理中常用的詞向量模型從時(shí)間發(fā)展上包括:離散模型(One-hot、TF-IDF)、SVD模型、固定向量模型(NNLM、Word2Vec、Glove)動(dòng)態(tài)詞向量模型(Elmo、Gpt、Bert)。One-hot模型、TF-IDF模型和SVD模型生成的詞向量存在高緯度高稀疏性問題,且不能很好表征文本的特征信息。Word2Vec[11]模型屬于典型的固定向量模型,屬于神經(jīng)網(wǎng)絡(luò)語言模型,該模型考慮了上下文的關(guān)系,維度更小,通用性更好,運(yùn)行更快,效果明顯優(yōu)于之前模型。但是生成的詞向量是固定的,每個(gè)詞對應(yīng)唯一一個(gè)詞向量,無法解決一詞多義問題。Elmo[12]模型是一個(gè)深度雙向的LSTM語言模型,模型考慮到了整個(gè)句子的信息,同一詞匯在不同句子中得到不同的詞向量,解決了一詞多義問題,且ELMO模型包含了多層的BiLSTM,因此生成的詞向量也包含了語境和語法信息。但是Elmo模型中每個(gè)句子中的詞被預(yù)測時(shí)前向語言模型和后向語言模型只看到了一部分句子的信息,所以Elmo模型并不是完全意義上的雙向語言模型,同時(shí)Elmo模型是時(shí)間序列模型,不能并行執(zhí)行,訓(xùn)練速度慢,不能堆疊多層的LSTM。
Bert[13]模型是完全意義上的雙向語言模型,能捕捉整個(gè)句子中字序列信息、上下文關(guān)系信息、語法語境信息等,解決了一詞多義問題,且Bert模型使用Transformer[14]的Encoder來代替Bi-LSTM,可并行執(zhí)行運(yùn)算,可疊加多層,對文本信息有很強(qiáng)的表征能力。Bert語言預(yù)訓(xùn)練模型將NLP大量的下游任務(wù)轉(zhuǎn)移到了詞向量預(yù)訓(xùn)練中。下游任務(wù)只需要對模型進(jìn)行Fine-tuning即可。Bert-Base,Chinese中文模型包含110×106個(gè)參數(shù),參數(shù)量巨大,做分類任務(wù)Fine-tuning時(shí),Bert內(nèi)部參數(shù)值變化很小,易產(chǎn)生嚴(yán)重的過擬合現(xiàn)象,對與訓(xùn)練集不同源的數(shù)據(jù)泛化能力弱,分類效果不理想。且模型是以字為單位進(jìn)行的預(yù)訓(xùn)練,所包含詞信息量較少。針對這些問題,提出了一種Transformer Encoder和CNN相結(jié)合的模型處理NLP下游任務(wù)。
該模型以Bert-base,Chinese作為字向量模型,輸出的特征向量包含了上下文信息、序列信息、語義語法信息等,后連接Transformer的Encoder層,Encoder層對Bert層輸出的整句字嵌入向量再次進(jìn)行編碼,Encoder層中的參數(shù)量相較于Bert模型要小得多,參數(shù)對數(shù)據(jù)的變化敏感,優(yōu)化了模型的過擬合問題,增強(qiáng)了模型的泛化能力。后接CNN層,利用不同大小的卷積核捕捉句子中不同長度詞的信息,中文詞語蘊(yùn)含的信息往往比字更豐富,所以把詞語信息從整句數(shù)據(jù)中提取出來后再進(jìn)行分類,分類結(jié)果更理想,最后通過softmax進(jìn)行分類。該模型在三種不同數(shù)據(jù)集上與深度學(xué)習(xí)網(wǎng)絡(luò)模型Word2Vec+CNN、Word2Vec+BiLSTM、Elmo+CNN、BERT+CNN、BERT+BiLSTM、BERT+Transformer做分類對比實(shí)驗(yàn),得到的結(jié)果表明該模型泛化能力、分類效果均優(yōu)于對比模型。
隨著深度學(xué)習(xí)網(wǎng)絡(luò)技術(shù)的發(fā)展,深度學(xué)習(xí)網(wǎng)絡(luò)模型被用于各種場景的文本分類任務(wù)中,文獻(xiàn)[15]使用Word2Vec作為詞向量模型,構(gòu)建CNN卷積神經(jīng)網(wǎng)絡(luò),對新聞文章進(jìn)行分類,與傳統(tǒng)算法相比,提高了分類模型的準(zhǔn)確率;文獻(xiàn)[16]采用Word2Vec的CBOW模型作為詞向量模型,使用LSTM進(jìn)一步提取文本特征,最后使用SVM對文本進(jìn)行情感分類提高了準(zhǔn)確率和F1值。文獻(xiàn)[17]使用Elmo作為詞向量模型,下游任務(wù)采用CNN模型對文本特征再次提取,最后通過softmax對文本進(jìn)行情感分類,使得正確率大幅度提高。文獻(xiàn)[18]利用Bert作為詞向量模型,獲取文本的動(dòng)態(tài)上下文信息,下游任務(wù)采用CNN模型提取多種特征,提高了分類性能。文獻(xiàn)[19]應(yīng)用Bert和BiLSTM相結(jié)合的模型對網(wǎng)絡(luò)文本情緒趨向進(jìn)行分類,與Bert-LSTM模型做比較實(shí)驗(yàn),提高了分類效果。文獻(xiàn)[20]利用Bert與Transformer相結(jié)合的模型處理名詞隱喻識(shí)別分類問題,在各評(píng)級(jí)指標(biāo)上,均提高了分類效果。
BERT-TECNN模型以Bert-base,Chinese模型作為字向量模型,把中文句子中的字映射成字向量,字向量包含了上下文關(guān)系、字序列信息、語法語義信息及深層結(jié)構(gòu)信息,然后把輸出作為Transformer Encoder層的輸入,Encoder層再次對整條數(shù)據(jù)的字向量進(jìn)行編碼,增加模型泛化性,然后接CNN層,CNN層利用不同大小卷積核捕捉句子中不同長度詞的信息,同時(shí)CNN層增加數(shù)據(jù)Batch Normalization操作,加快訓(xùn)練速度,優(yōu)化梯度消失問題,最后通過softmax對文本進(jìn)行分類。
BERT-TECNN模型流程圖如圖1所示。
圖1 BERT-TECNN模型流程圖Fig.1 Model flowchart of BERT-TECNN
Bert模型是基于Transformer網(wǎng)絡(luò)架構(gòu)中Encoder搭建的整個(gè)模型框架,Bert網(wǎng)絡(luò)模型中包含多層Encoder結(jié)構(gòu),Bert模型如圖2所示。
圖2 Bert網(wǎng)絡(luò)結(jié)構(gòu)模型Fig.2 Bert network structure model
由圖2所示,初始字向量E1~Em通過多層由Encoder組成的網(wǎng)絡(luò)結(jié)構(gòu)后輸出帶特征信息的字向量T1~Tm。
2.2.1 Transformer Encoder模型結(jié)構(gòu)
Transformer Encoder是構(gòu)成Bert模型的基本單位,Encoder結(jié)構(gòu)圖如圖3所示。
圖3所示,輸入在輸入嵌入層加上了位置編碼信息,然后經(jīng)過多頭自注意力機(jī)制層進(jìn)行多頭自注意力計(jì)算,然后通過前饋網(wǎng)絡(luò)層和兩層殘差連接和歸一化層后輸出。
圖3 Encoder網(wǎng)絡(luò)模型結(jié)構(gòu)圖Fig.3 Encoder structure diagram
2.2.2 位置編碼原理
含有相同的字,字的順序不一樣,整句話意思就會(huì)不一樣,例如:“我正在幫助他”,“他正在幫助我”,兩句話雖然含有相同的字,但是字的循序不一樣,意思完全相反。為解決這類問題,模型中加入了位置編碼向量,維度和字嵌入向量維度一致,把字嵌入向量跟位置編碼向量加到一起,這樣相加后的向量就帶有了字的位置信息。位置向量通過式(1)、(2)計(jì)算得出,式(1)、(2)如下所示:
式(1)、(2)中共有2個(gè)輸入?yún)?shù),pos是指字在句子中所處位置,如“我正在幫助他?!薄拔摇钡膒os為0,“正”的pos為1,“在”的pos為2…;i為位置參數(shù),向量的奇數(shù)位置上的值用式(2)計(jì)算,偶數(shù)位置上的值用式(1)計(jì)算,dm odel指位置向量的維度。位置編碼的每一維對應(yīng)一正弦波或余弦波,不同位置信息以不同波長周期性變化,波長從2π到10 000?2π,通過這個(gè)函數(shù)得到的位置向量編碼可以讓模型很容易學(xué)到相對位置信息。
2.2.3 self-attention機(jī)制和Multi-Headed Attention機(jī)制
self-attention機(jī)制要求一個(gè)句子中每個(gè)字與句子中所有字計(jì)算attention,不用考慮方向和距離,最大路徑長度都是1,可以提取長距離字與字的關(guān)系,這樣讓模型能捕捉到字的上下文關(guān)系,如以下兩個(gè)例子:“我請你吃飯”“你請我吃飯”,兩句話同一個(gè)字“我”根據(jù)上下文得到的字嵌入向量不同;“這只猴子無法跳到那棵樹上,因?yàn)樗h(yuǎn)了”,“這只猴子無法跳到那棵樹上,因?yàn)樗哿恕?,第一句話的“它”代表樹,第二句話的“它”代表猴子,模型通過自注意力機(jī)制(self-attention)可以得出第一句話的“它”跟句子中“樹”關(guān)系更密切,第二句話的“它”跟句子中“猴子”更密切。
self-attention采用矩陣形式進(jìn)行運(yùn)算,可并行運(yùn)算提高運(yùn)行速度。常用公式如下:
首先隨機(jī)初始化三個(gè)矩陣WQ、WK、WV,根據(jù)式(3)、(4)、(5)生成三個(gè)向量Q、K、V,這樣把每個(gè)字嵌入向量生成了帶不同信息的三個(gè)向量:查詢向量Query、被查詢向量Key、實(shí)際特征向量Value。然后根據(jù)式(6)計(jì)算出帶上下文信息特征的向量Z,式(6)中Q與KT做點(diǎn)乘,計(jì)算結(jié)果是某個(gè)位置上的字與其他位置上的字的關(guān)注程度值,越大表示越匹配,除以dk以防止分子內(nèi)積過大,dk為向量維度。然后通過softmax函數(shù)計(jì)算出該位置上的字與其他位置上的字相關(guān)程度的概率值,得到整個(gè)加權(quán)效果,最后乘以實(shí)際特征向量V,這樣得到每個(gè)字的特征向量Z都包含了整句話的信息。
多頭注意力機(jī)制(Multi-Headed Attention)在初始化矩陣時(shí),不僅僅初始一組WQ、WK、WV和Q、K、V,而是初始化多組WQ、WK、WV和Q、K、V,通過不同的head得到多組特征表達(dá),生成多組向量Z,然后將所有特征拼接在一起,最后通過一全連接層降維,多頭機(jī)制類似卷積神經(jīng)網(wǎng)絡(luò)CNN中的多個(gè)filter,可提取句子中多種特征。
2.2.4 Add&Normalize機(jī)制
在模型網(wǎng)絡(luò)比較深的時(shí)候,通過梯度下降法把誤差往后傳時(shí),會(huì)變得越來越弱,訓(xùn)練模型時(shí)速度會(huì)變得很慢,甚至梯度消失,通過向量X跳躍連接到向量Z稱為殘差連接,誤差可以從不同的路徑到達(dá)初始網(wǎng)絡(luò)層,可優(yōu)化模型在訓(xùn)練過程中梯度消失問題。
初始數(shù)據(jù)經(jīng)過模型網(wǎng)絡(luò)各層時(shí),數(shù)據(jù)偏差會(huì)變得越來越大,這些大的偏差會(huì)引起梯度爆炸或者梯度消失。殘差連接通過LayerNorm(X+Z)進(jìn)行歸一化。歸一化操作把數(shù)據(jù)限制在方差為1均值為0的范圍,這樣可以優(yōu)化模型在訓(xùn)練過程中梯度爆炸或消失的問題。
2.2.5 Bert預(yù)訓(xùn)練任務(wù)Mask language Model&Next Sentence Prediction
Mask language Models任務(wù)在進(jìn)行訓(xùn)練時(shí),隨機(jī)遮蓋一部分字,讓模型對遮蓋的字進(jìn)行預(yù)測,做誤差損失時(shí)只需要計(jì)算被遮蓋部分,訓(xùn)練數(shù)據(jù)不需要標(biāo)簽,有語料即可,具體步驟如下:(1)句子中被隨機(jī)遮蓋的token有15%,其中有80%被mask替代,10%被其他token替代,剩下10%不變。(2)訓(xùn)練過程中,語料被遮住的部分作為Label,做損失并反傳梯度。
Next Sentence Prediction任務(wù)從語料中拿出兩個(gè)句子,在兩個(gè)句子之間加上特殊token,[cls]和[sep],第一句話開頭加上[cls],兩句中間用[sep]隔開,句子的末尾加上[sep],這兩句話有一半概率是具有上下文關(guān)系的,一半概率是不屬于上下文關(guān)系的。然后初始化一個(gè)segment embeddings,作用是區(qū)分句子的前后,前句的segment embeddings全部為0,后句的全部為1,訓(xùn)練時(shí)[cls]token里包含了整個(gè)句子的信息,把[cls]向量做邏輯回歸,兩句相鄰則label為1,不相鄰時(shí)label為0,然后做損失,反傳梯度。
Bert模型的輸出作為Encoder層的輸入,再次加上位置編碼信息,根據(jù)自注意力機(jī)制計(jì)算出每個(gè)字與所有字的加權(quán)值,最后得到每個(gè)字的特征向量,該向量包含了整句話的信息。然后根據(jù)多頭機(jī)制通過不同的head得到多組特征表達(dá),生成多組特征向量,將所有特征向量拼接在一起,通過一全連接層降維。最后通過前饋網(wǎng)絡(luò)層和兩層殘差連接和歸一化層后輸出。Encoder層包含一個(gè)Encoder模塊,Multi-Headed Attention使用8個(gè)head,每個(gè)head的維度為768/8=96,輸入字的個(gè)數(shù)為128。
Bert-base,Chinese模型中參數(shù)量巨大,訓(xùn)練后Bert模型中參數(shù)變化量很小,易發(fā)生過擬合現(xiàn)象,導(dǎo)致與訓(xùn)練集相似的測試集分類效果良好,與訓(xùn)練集差異大的測試集分類效果不理想。Encoder層中的參數(shù)量相較于Bert模型要小的多,在訓(xùn)練過程中參數(shù)變化較大,對數(shù)據(jù)變化敏感,優(yōu)化了模型的過擬合問題,增強(qiáng)了泛化能力。
文本分類的核心是提取句子中上下文關(guān)系信息和句子蘊(yùn)含的核心含義信息,Bert模型中每個(gè)字包含了整句話中所有字的信息,捕捉了句子中上下文關(guān)系信息、各字的序列信息及結(jié)構(gòu)信息。同時(shí)CNN的卷積操作可以再次提取句子中的關(guān)鍵詞信息及深層結(jié)構(gòu)信息,且CNN可以并行運(yùn)算,訓(xùn)練速度快,所以把CNN模型用在文本分類的下游任務(wù)上提高了模型的分類性能[21]。CNN模型結(jié)構(gòu)如圖4所示。2.4.1 數(shù)據(jù)歸一化(Batch Normalization)
圖4 CNN模型設(shè)計(jì)結(jié)構(gòu)Fig.4 Structural design of CNN model
取值范圍大的數(shù)據(jù)影響力大于取值范圍小的數(shù)據(jù),不利于反應(yīng)相異度,且模型在訓(xùn)練時(shí)參數(shù)不斷變化,導(dǎo)致每層數(shù)據(jù)分布情況也在不斷變化,訓(xùn)練過程中又需要在模型的每一層去適應(yīng)數(shù)據(jù)分布的變化,易導(dǎo)致梯度彌散。Batch Normalization使批處理數(shù)據(jù)均值為0,方差為1,可以加快收斂速度,緩解梯度消失問題。
相關(guān)公式如下:
其中,m為batch size的大小,xi為批處理數(shù)據(jù)(minibatch)的第i個(gè)值,μg為批處理數(shù)據(jù)的均值,σ2g為批處理數(shù)據(jù)的方差,x?i為xi歸一化后得到的值,yi是x?i經(jīng)尺度變換和偏移后得到的值,β和γ為學(xué)習(xí)參數(shù)。
首先由式(7)、(8)算出批處理數(shù)據(jù)的均值和方差,通過式(9)對批處理數(shù)據(jù)做歸一化。數(shù)據(jù)歸一化后相比原數(shù)據(jù),表達(dá)能力有所下降,因此引入兩個(gè)學(xué)習(xí)參數(shù)β和γ,通過學(xué)習(xí)得到β和γ的值,通過式(10)還原部分表達(dá)能力。
訓(xùn)練階段方差與均值基于batch數(shù)據(jù)。在測試階段,每次輸入只有一條數(shù)據(jù),所以對訓(xùn)練樣本每個(gè)batch的均值和方差求整體的平均值,作為測試時(shí)的均值和方差。
由于CNN中卷積得到的特征圖數(shù)量和神經(jīng)元的數(shù)量很大,所以CNN中把每個(gè)特征圖作為一個(gè)處理單元,每個(gè)特征圖對應(yīng)一個(gè)β和一個(gè)γ。
2.4.2 卷積操作過程
Encoder層輸出的向量通過CNN層提取不同長度詞語的信息和結(jié)構(gòu)信息。
相關(guān)公式如式(11)~(15)所示:
其中,i為卷積的第i步,n為句子的長度,h為卷積核的高度。b是偏置參數(shù),W為卷積核矩陣向量,k為卷積核個(gè)數(shù),Xi為一句話中第i個(gè)字向量,ti為第i步卷積操作提取的特征值,ti作為輸入經(jīng)過激活函數(shù)relu后得到的特征值mi,m為卷積操作結(jié)束后得到的特征值集合,m經(jīng)最大池化操作后得到特征值m?,最后句子的向量表示為z。
首先構(gòu)建句子向量,設(shè)每個(gè)句子的長度(包括特殊字符)為n,對于比較短的句子,進(jìn)行補(bǔ)零操作,對于比較長的句子進(jìn)行截?cái)嗖僮?。設(shè)A1~An為1到n個(gè)字,X1~Xn為A1~An的字向量,向量維度為d,將X1~Xn向量進(jìn)行拼接Concat(X1,X2,…,Xn),得到n×d的二維矩陣X,如圖5所示。
圖5 句子向量Fig.5 Sentence vector
文本經(jīng)過Bert-Encoder模型生成的字向量通過拼接構(gòu)建成的句子向量是二維向量,但每一行的向量代表一個(gè)字,進(jìn)行二維卷積操作會(huì)把每個(gè)字的字向量拆分,無法提取到整個(gè)字的特征,所以在進(jìn)行卷積操作時(shí)采用一維卷積的方法。
由式(11)得到第i步卷積后的特征值ti,ti通過式(12)激活函數(shù)relu得到特征值mi,經(jīng)過j步卷積后在經(jīng)過激活函數(shù)relu得到長度為(n-h+1)的特征向量m,特征向量m如式(13)所示,特征向量m經(jīng)式(14)池化操作得到特征值m?,模型中設(shè)置了多種高度不同,寬度相同的卷積核對句子進(jìn)行特征提取,由于卷積核高度不同,卷積后得到的向量維度不一致,所以在池化過程中采用MaxPooling,把每個(gè)特征向量池化成一個(gè)值,這樣每個(gè)卷積核就對應(yīng)一個(gè)特征值m?,然后把所有卷積核得到的特征值進(jìn)行拼接,得到一個(gè)k維度的句子向量z,z的表達(dá)式如式(15)所示。
句子向量z后接一全連接層,全連接層引入dropout機(jī)制防止模型過擬合,最后將全連接層計(jì)算得到的值通過softmax層得到句子在各個(gè)類別中的概率值,概率值最高的類別即為該句子所屬的類別。
2.4.3 參數(shù)設(shè)置
句子長度n設(shè)置為128,Batch size設(shè)置為8,dropout為0.2,中文詞語常見的長度為2、3、4、5,所以設(shè)置卷積核的高度h分別為2、3、4、5,由于是一維卷積,所以設(shè)置卷積核的寬度跟維度d一致全部為768,每種高度都設(shè)置96個(gè)卷積核,那么四種卷積結(jié)果經(jīng)過激活函數(shù)、池化后都生成了維度為96的向量,把所有值拼接到一起,最終得到一個(gè)96×4=384維的句子向量。
實(shí)驗(yàn)硬件:CPU為i7-10700k,內(nèi)存容量16 GB,顯卡為RTX2080,顯存容量8 GB,操作系統(tǒng)為Windows10 64位,Python版本3.90,TensorFlow深度學(xué)習(xí)框架。
實(shí)驗(yàn)采用了網(wǎng)絡(luò)上公開的用于文本分類任務(wù)的三個(gè)中文數(shù)據(jù)集toutiao_cat_data(簡稱tcd)、simplifyweibo_4_moods(簡稱s4m)、online_shopping_10_cats(簡稱os10c)用于測試模型處理文本分類任務(wù)的性能。
其中tcd數(shù)據(jù)集來源于今日頭條15種新聞分類數(shù)據(jù),包含382 688條帶標(biāo)簽數(shù)據(jù)。s4m數(shù)據(jù)集來源于新浪微博帶四種情感標(biāo)簽的評(píng)論,包含喜悅、憤怒、厭惡、低落4種情感,共361 744條數(shù)據(jù)。os10c數(shù)據(jù)集包含6萬條網(wǎng)上購物的正負(fù)評(píng)論,其中包含3萬條正向評(píng)論、3萬條負(fù)向評(píng)論。隨機(jī)選取90%的數(shù)據(jù)作為訓(xùn)練集,剩余10%的數(shù)據(jù)作為測試集。
數(shù)據(jù)集概況如表1所示。
表1 數(shù)據(jù)集統(tǒng)計(jì)表Table 1 Statistical table units of data set
采用目前主流的深度學(xué)習(xí)文本分類模型作為對比模型,對比的模型有:
(1)Word2Vec+CNN深度學(xué)習(xí)網(wǎng)絡(luò)文本分類模型:模型以Word2Vec模型作為詞向量模型,然后把詞向量輸入到CNN層,CNN層利用不同大小的卷積核提取每條數(shù)據(jù)中詞語的信息,多層CNN可以提取每條數(shù)據(jù)中的深層信息,如語法、語義、局部結(jié)構(gòu)等信息,然后通過softmax進(jìn)行分類。通過訓(xùn)練集對模型進(jìn)行訓(xùn)練,訓(xùn)練好的模型可以對文本數(shù)據(jù)做分類任務(wù)[15]。
(2)Word2Vec+BiLSTM深度學(xué)習(xí)網(wǎng)絡(luò)文本分類模型:模型以Word2Vec模型作為詞向量模型,以雙向BiLSTM模型對文本數(shù)據(jù)再次提取特征信息,最后通過softmax進(jìn)行分類。BiLSTM模型是深度循環(huán)雙向的語言模型,能再次捕捉文本的特征信息,提高了文本分類的效果[16]。
(3)Elmo+CNN深度學(xué)習(xí)網(wǎng)絡(luò)文本分類模型:模型以Elmo作為詞向量模型,能動(dòng)態(tài)提取每條數(shù)據(jù)中上下文信息、序列信息、語法語境信息等,下游的CNN模型再次捕捉不同長度詞的信息和更為完整的上下文關(guān)系信息,然后把提取到的向量通過softmax進(jìn)行分類[17]。
(4)Bert+CNN深度學(xué)習(xí)網(wǎng)絡(luò)文本分類模型:模型以Bert模型作為字向量模型,CNN層再次提取特征信息進(jìn)行分類[18]。Bert模型中以Transformer的Encoder來代替Bi-LSTM,可并行執(zhí)行運(yùn)算,可以疊加多層,運(yùn)算速度快,性能優(yōu)于Elmo模型。
(5)Bert+Bi-LSTM深度學(xué)習(xí)網(wǎng)絡(luò)文本分類模型:模型以Bert作為詞向量模型,以Bi-LSTM模型作為下游任務(wù)的分類模型[19],提升了文本分類的性能。
(6)Bert+Transformer深度學(xué)習(xí)網(wǎng)絡(luò)文本分類模型:模型以Bert作為詞向量模型,以Transformer的Encoder模型作為下游任務(wù)模型,Encoder對數(shù)據(jù)進(jìn)行再次編碼,提高了模型的泛化能力[20]。
BERT-TECNN模型與對比模型通過4個(gè)實(shí)驗(yàn)評(píng)價(jià)指標(biāo):準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1測度值對分類結(jié)果進(jìn)行分析。
評(píng)價(jià)指標(biāo)計(jì)算公式如式(16)~(19)所示:
其中,TP表示正樣本預(yù)測為正,F(xiàn)P表示負(fù)樣本預(yù)測為正,F(xiàn)P表示正樣本預(yù)測為負(fù),TN表示負(fù)樣本預(yù)測為負(fù)。
Batch=8,學(xué)習(xí)率=1E-5,Dropout=0.2,Epoch=10,字向量維度=768,句子長度=128。
為防止單次實(shí)驗(yàn)出現(xiàn)偶然性結(jié)果,所以運(yùn)行各種模型10次求均值,在準(zhǔn)確率評(píng)價(jià)指標(biāo)上得出的分類結(jié)果如表2所示。在精確率評(píng)價(jià)指標(biāo)上得出的分類結(jié)果如表3所示。在召回率評(píng)價(jià)指標(biāo)上得出的分類結(jié)果如表4所示。在F1測度值評(píng)價(jià)指標(biāo)上得出的分類結(jié)果如表5所示。
表2 分類準(zhǔn)確率Table 2 Classification accuracy
表3 分類精確率Table 3 Classification precision
表4 分類召回率Table 4 Classification recall
表5 分類F1測度值Table 5 Classification F1 measure values
以準(zhǔn)確率為評(píng)價(jià)指標(biāo)時(shí),Word2Vec+CNN模型在各個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果準(zhǔn)確率最低,Word2Vec+BiLSTM次之,這是因?yàn)閃ord2Vec詞向量模型是固定向量模型,對于一詞多義、上下文信息、序列信息等,模型不能表征出來,下游任務(wù)雖通過CNN或BiLST捕捉到一些結(jié)構(gòu)信息,但提取能力有限。BERT-TECNN模型的準(zhǔn)確率在所有數(shù)據(jù)集上是最高的,在tcd數(shù)據(jù)集上與BERT+CNN、BERT+BiLSTM、BERT+Transformer模型相比得到的準(zhǔn)確率持平,在s4m數(shù)據(jù)集上準(zhǔn)確率達(dá)到0.92,高于對比實(shí)驗(yàn)?zāi)P椭凶詈玫腂ERT+Transformer模型(0.87),在os10c數(shù)據(jù)集上準(zhǔn)確率大于對比模型中最好的BERT+BiLSTM模型(0.87),說明模型能很好地對文本進(jìn)行預(yù)測。
以精確率作為評(píng)價(jià)指標(biāo)時(shí),在tcd數(shù)據(jù)集上BERTTECNN模型與BERT+Transformer模型得到的精確率持平,略高于BERT+CNN、BERT+BiLSTM模型,高于Word2Vec+CNN模型、Word2Vec+BiLSTM模型、Elmo+CNN模型。在數(shù)據(jù)集s4m和os10c數(shù)據(jù)集上得到的精確率都為最高,分別高于對比模型中最好的0.86和0.83,體現(xiàn)了BERT-TECNN模型對文本分類問題上的有效性。
在以召回率作為評(píng)價(jià)指標(biāo)時(shí),BERT-TECNN模型在所有訓(xùn)練集上均達(dá)到最優(yōu),在tcd數(shù)據(jù)集上與BERT+BiLSTM模型持平,但運(yùn)行速度遠(yuǎn)大于BERT+BiLSTM模型,在s4m數(shù)據(jù)集上BERT-TECNN模型與BERT+Transformer模型得到的召回率較為出色分別達(dá)到0.91和0.87,較優(yōu)于對比實(shí)驗(yàn)?zāi)P?,在os10c數(shù)據(jù)集上BERTTECNN模型召回率為0.89高于對比模型中最好的BERT+CNN模型(0.85),說明在模型中加入encoder層后,分類性能得到了有效的提升。
在以F1測度值作為評(píng)價(jià)指標(biāo)時(shí),BERT-TECNN模型在tcd數(shù)據(jù)集上與BERT+BiLSTM模型得到的值持平,在s4m數(shù)據(jù)集上F1值最高,達(dá)到了0.92,而BERT+CNN模型與BERT+Transformer模型分別為0.87與0.86,Word2Vec+CNN模型和Word2Vec+BiLSTM模型最低,在os10c數(shù)據(jù)集上BERT-TECNN模型F1測度值達(dá)到了0.90,高于對比模型中效果最好的BERT+Transformer模型(0.85)。
從實(shí)驗(yàn)數(shù)據(jù)中可得出BERT-TECNN模型在各個(gè)評(píng)價(jià)指標(biāo)和不同數(shù)據(jù)集上都有良好的分類效果,與對比實(shí)驗(yàn)?zāi)P拖啾?,分類性能都有不同程度的提高,但在tcd數(shù)據(jù)集上,BERT-TECNN模型表現(xiàn)并不突出,根據(jù)對數(shù)據(jù)集的分析得出:(1)tcd數(shù)據(jù)集很不均衡,不同分類數(shù)據(jù)量差異較大;(2)數(shù)據(jù)集類別之間有部分內(nèi)容含義模棱兩可,既可以分到A類也可分到B類。
從實(shí)驗(yàn)結(jié)果上看,Bert模型能有效地捕捉句子中的序列、上下文、語法語義以及更深層次的信息,效果優(yōu)于Elmo模型和Word2vec模型,使文本分類任務(wù)的綜合性能有很大提升。BERT-TECNN模型的下游任務(wù)能有效地對句子中字、詞、結(jié)構(gòu)的信息再次提取,增強(qiáng)了模型在文本分類任務(wù)中的識(shí)別能力、泛化能力。BERT-TECNN模型與對比實(shí)驗(yàn)?zāi)P拖啾染哂幸欢ǖ膬?yōu)勢。
本文在處理文本分類任務(wù)時(shí),提出了BERT-TECNN模型,模型以Bert-base,Chinese預(yù)訓(xùn)練模型作為動(dòng)態(tài)字向量模型,在下游任務(wù)上構(gòu)建Encoder層和CNN層。Encoder層優(yōu)化了過擬合問題,增強(qiáng)了模型的泛化性。CNN層捕捉了句子中包含不同長度詞語的信息和結(jié)構(gòu)信息,從而能更好地處理文本分類問題。應(yīng)用該模型在數(shù)據(jù)集tcd、s4m、os10c上與深度學(xué)習(xí)網(wǎng)絡(luò)模型Word2Vec+CNN、Word2Vec+BiLSTM、Elmo+CNN、BERT+CNN、BERT+BiLSTM、BERT+Transformer進(jìn)行了分類對比實(shí)驗(yàn)。在準(zhǔn)確率、精確率、召回率、F1測度值等評(píng)價(jià)指標(biāo)上,該模型文本分類性能均優(yōu)于其他模型,在一定程度上提升了文本分類效果,對文本分類任務(wù)有一定參考價(jià)值。
但BERT-TECNN模型也存在一定局限性,比如在tcd數(shù)據(jù)集上表現(xiàn)并不突出,對數(shù)據(jù)集要求比較高,對于分類比較精細(xì)的數(shù)據(jù)集,往往表現(xiàn)不是太理想;針對這些局限,可以增加訓(xùn)練集的數(shù)量來增大模型的表征能力,解決數(shù)據(jù)分類精細(xì)問題、探索其他模型與Bert預(yù)訓(xùn)練模型相結(jié)合的模型,來增強(qiáng)分類效果。