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