孫 紅,陳強越
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海 200093)
隨著信息技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)已經(jīng)成為信息傳遞的主要媒介.如今,每天都會產(chǎn)生難以估量的文本信息,對這些信息進行分類,既方便運營商的管理,又使得普通大眾能夠有選擇地閱讀自己感興趣的內(nèi)容.如何對這些文本進行快速高效的分類,是文本分類研究的熱點問題.
由于文本數(shù)量龐大,人工進行文本分類顯然不可取.隨著機器學(xué)習(xí)和深度學(xué)習(xí)的發(fā)展與應(yīng)用,相關(guān)方法被越來越多的應(yīng)用到文本分類中.
Kalchbrenner[1]提出了動態(tài)卷積神經(jīng)網(wǎng)絡(luò)模型(DCNN),使用k-max池化,并與卷積層交替的結(jié)構(gòu).Kim[2]提出了一個基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的文本分類模型,該模型通過word2vec獲得輸入的詞向量,并將此作為卷積神經(jīng)網(wǎng)絡(luò)的輸入.Johnson[3]等提出了一種新型的CNN結(jié)構(gòu)DPCNN,可以有效提取文本中的遠程關(guān)系特征,同時避免了復(fù)雜度的堆砌.Hochreiter[4]等基于循環(huán)神經(jīng)網(wǎng)絡(luò)[5](RNN),提出了長短時記憶網(wǎng)絡(luò)(LSTM),彌補了傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)梯度消失或梯度爆炸的問題.Chung[6]等在此基礎(chǔ)上,提出GRU模型,提高了訓(xùn)練的效率.Joulin[7]等人提出了一種簡單高效的文本分類器FastText,F(xiàn)astText將文本視為詞袋,并使用n-gram作為附加功能來捕獲詞序信息.Devlin[8]等人提出了雙向編碼模型BERT(Bidirectional Encoder Represent-ation from Transformers),在大量語料訓(xùn)練基礎(chǔ)上,同時考慮了詞語在不同上下文的特殊表達,形成動態(tài)詞向量的輸出.楊[9]等人提出多特征融合的模型,從不同層面對文本特征進行提取.
上述方法對文本分類的貢獻大多體現(xiàn)在優(yōu)化詞向量或者優(yōu)化特征表達其中一方面,兼顧兩者的方法大多結(jié)構(gòu)復(fù)雜,分類耗時長.為了對文本進行分類,我們既要考慮合適的文本向量表達,又要精準地提取出文本的主要特征.為此,本文提出了一種用BERT訓(xùn)練詞向量,用雙向GRU網(wǎng)絡(luò)進行高效的特征提取,同時融合注意力機制作為輔助特征嵌入的文本分類模型BBGA(BERT based Bidirectional GRU with Attention).實驗證明,該方法能夠相對快速并且精確地進行較大規(guī)模的文本分類任務(wù).
文本分類是自然語言處理的經(jīng)典問題之一,其主要目的是為目標語句分配標簽.隨著互聯(lián)網(wǎng)的發(fā)展,文本的規(guī)模呈指數(shù)級上漲,自動文本分類逐步成為主流方法.自動文本分類方法可分為3類[10]:基于規(guī)則、基于機器學(xué)習(xí)和深度學(xué)習(xí)以及混合方法.基于規(guī)則的方法使用預(yù)先定義的各種規(guī)則來進行文本分類,例如“體育”這一類別會把所有包含“足球”、“籃球”或“排球”之類詞語的文本納入其中.基于規(guī)則的方法需要對待分類文本所屬的領(lǐng)域有著深入的了解,這就抬高了這種方法的門檻.
近年來,機器學(xué)習(xí),尤其是深度學(xué)習(xí)相關(guān)的方法開始在文本分類中流行起來.深度學(xué)習(xí)模型在學(xué)習(xí)文本特征時,能夠發(fā)現(xiàn)一些難以定義的隱藏規(guī)則或模式.這類方法通常包含兩個主要的步驟:1)構(gòu)造合適的詞向量來表示任務(wù)中輸入的文本;2)選擇合適的模型來訓(xùn)練提取文本特征,并通過這些特征進行文本分類.
詞向量,顧名思義,就是將輸入的單詞或者詞語用向量來表示.One-hot向量是最簡單的詞向量表示方法,這種向量的維度和詞庫的大小相等,通過在不同位置設(shè)定值1,其余位置設(shè)定0來達到唯一表示的目的.這種方法雖然簡單,但是會導(dǎo)致維度災(zāi)難,而且無法表示一詞多義,也無法表示出詞與詞之間的聯(lián)系.
Word2vec通過詞的上下文來得到目標詞的向量表達,主要方法包括CBOW和Skip-gram,前者通過周圍的詞來預(yù)測中間詞,后者則通過中間詞來預(yù)測周圍的詞.
然而word2vec的表達與窗口大小密切相關(guān),因為它只考慮窗口內(nèi)的局部聯(lián)系.為此,glove利用共現(xiàn)矩陣,把局部信息和整體內(nèi)容都加以考慮.
盡管word2vec和glove在某種程度上提升了詞向量的表達效果,但是它們都無法表示一詞多義,這兩個模型的詞在不同語境中得到的向量是相同的.為了優(yōu)化這一點,ElMo采用雙向模型來預(yù)測單詞.在正向模型中,使用前1-k個詞去預(yù)測第k個詞,在反向模型中,使用k后面的單詞來預(yù)測第k個詞.
BERT通過海量語料的訓(xùn)練,得到了一組適用性十分廣泛的詞向量,同時還能在具體任務(wù)中動態(tài)優(yōu)化詞向量,大幅提升了相關(guān)NLP任務(wù)的實驗效果.
使用深度學(xué)習(xí)方法進行文本分類已經(jīng)是現(xiàn)在的主流方法,后來的深度學(xué)習(xí)模型大多是對一些主流模型(例如RNN和CNN)的優(yōu)化,從而使其更適用于某一類的任務(wù).Tai[11]等人發(fā)現(xiàn)傳統(tǒng)的鏈式LSTM在NLP任務(wù)上的效果有限,提出了Tree-LSTM模型,從而學(xué)習(xí)到更加豐富的語義表示.Bieng[12]等人提出了TopicRNN模型,把潛在主題模型與RNN相結(jié)合,使用RNN獲取局部的聯(lián)系,同時使用主題模型獲取全局的聯(lián)系.Prusa[13]為了減少字符級文本學(xué)習(xí)的耗時,使用CNN進行文本的編碼,可以在原始文本中更多的保留信息.Conneau[14]使用深層的CNN(VDCNN)進行文本分類,隨著層數(shù)的不斷增加,分類的效果會更好.與VDCNN類似,現(xiàn)有模型大多通過復(fù)雜度的增加來提高性能.
通過對已有方法的深入學(xué)習(xí),也為了達到快速準確地進行文本分類的目標,本文提出了BBGA模型.該模型綜合考慮了各種詞向量表達的優(yōu)劣,選擇使用BERT模型訓(xùn)練輸入文本的詞向量,得到新的詞向量之后,將其作為新的輸入送到GRU網(wǎng)絡(luò)進行文本特征的提取,同時考慮到文本上下文的聯(lián)系,將GRU擴展為雙向網(wǎng)絡(luò).最后引入注意力機制,使分類過程中各文本的權(quán)重分配更加合理.
BBGA模型結(jié)構(gòu)如圖1所示,該模型的整體運作流程是:首先輸入文本數(shù)據(jù),利用BERT預(yù)訓(xùn)練模型,獲得包含文本總體信息的動態(tài)詞向量,接著將新的詞向量輸入到雙層的GRU網(wǎng)絡(luò)進行特征提取,捕捉文本的特征信息,最后引入注意力機制,得到輸入文本的最終概率表達,從而達到文本分類的目的.
圖1 BBGA模型結(jié)構(gòu)圖Fig.1 Model structure of BBGA
BERT作為一種預(yù)訓(xùn)練語言模型,是在海量語料中訓(xùn)練得到的,既可以直接進行文本分類任務(wù)的訓(xùn)練,也可以將其作為詞向量嵌入層輸入到其他訓(xùn)練模型,本文選擇后者.BERT模型的結(jié)構(gòu)圖如圖2所示.
圖2 BERT結(jié)構(gòu)圖Fig.2 Model of BERT
輸入的向量不僅包含當(dāng)前文本的詞向量,還有表示詞在文本中位置的位置向量,以及詞所在句子的分段向量.3個向量求和之后,分別加上CLS和SEP作為一個文本開頭與結(jié)尾的標志.
為了綜合考慮文本上下文之間的聯(lián)系,開始出現(xiàn)一些嘗試使用RNN處理文本數(shù)據(jù)的方法.基于RNN的模型將文本處理成一個較長的序列,但是,在更新網(wǎng)絡(luò)參數(shù)的反向傳播過程中,容易出現(xiàn)梯度彌散的問題.為了克服RNN存在的缺點,許多基于RNN的變體模型被提出.其中長短時記憶模型(LSTM)是RNN眾多變體中最為流行的一個,它由輸入門、記憶單元、遺忘門和輸出門4個主要部分組成,通過對輸入向量的“記憶”與“遺忘”,保留了文本中的重要特征,剔除了相對無用的內(nèi)容.
但是,隨著文本數(shù)量的增多,由于參數(shù)多、各個門之間的計算相對復(fù)雜,LSTM進行網(wǎng)絡(luò)訓(xùn)練耗時長的問題逐漸暴露.同時,LSTM還會產(chǎn)生過擬合的現(xiàn)象.為了解決LSTM存在的弊端,一種更為簡單的基于RNN的神經(jīng)網(wǎng)絡(luò)模型GRU被提出,其模型結(jié)構(gòu)如圖3所示.
圖3 GRU結(jié)構(gòu)圖Fig.3 Model of GRU
GRU主要由更新門和重置門組成,其中更新門用于決策上一時刻隱層狀態(tài)對當(dāng)前層的影響,更新門中的值越大,說明上一時刻對當(dāng)前層的影響越大.更新門的計算方法如公式(1)所示:
rt=σ(Wrxt+Wrht-1+br)
(1)
重置門用于剔除上一時刻的無效信息,重置門的值越小,剔除的無效信息就越多.重置門的計算方法如公式(2)所示:
zt=σ(Wzxt+Wzht-1+bz)
(2)
當(dāng)前狀態(tài)的計算方法如公式(3)和公式(4)所示:
(3)
(4)
通過GRU,我們既能很好的捕獲文本的總體特征,又能減少計算量,達到高效訓(xùn)練的效果.但是,在單層的GRU網(wǎng)絡(luò)中,狀態(tài)的傳播也是單向的,為了充分利用文本上下文的關(guān)系,我們建立了雙向的GRU網(wǎng)絡(luò),雙向GRU網(wǎng)絡(luò)的結(jié)構(gòu)模型如圖4所示.
圖4 雙向GRU結(jié)構(gòu)圖Fig.4 Model of bidirectional GRU
(5)
注意力機制是深度學(xué)習(xí)中極為重要的核心技術(shù)之一,已經(jīng)被廣泛地應(yīng)用在模式識別和自然語言處理相關(guān)領(lǐng)域.注意力機制模仿了人類視覺的注意力,人類在觀察事物時,總是會把注意力重點放在關(guān)鍵區(qū)域,從而獲得視野內(nèi)的重要信息,同時忽略非重要區(qū)域,提高我們視覺信息處理的效率.
對于本文的文本分類任務(wù)而言,每條文本數(shù)據(jù)的類別,通常由其中的關(guān)鍵詞和關(guān)鍵語句決定,引入注意力機制的目的在于提升分類過程中這些關(guān)鍵詞的權(quán)重,同時降低非關(guān)鍵詞的權(quán)重,從而獲得更好的分類效果.
本文使用的數(shù)據(jù)集是清華NLP組提供的THUCNews新文文本分類的數(shù)據(jù)集,從中抽取了10萬條新聞數(shù)據(jù),包含經(jīng) 濟、房產(chǎn)、股票、教育、科學(xué)、社會、時政、體育、游戲和娛樂,數(shù)據(jù)分布情況如表1所示.同時,將數(shù)據(jù)集按照8∶1∶1劃分訓(xùn)練集、測試集和驗證集.其中,訓(xùn)練集八萬條,測試集和驗證集各1萬條.
表1 THUCNews實驗數(shù)據(jù)集分布情況
Table 1 Distribution of THUCNews data set
數(shù)據(jù)類別訓(xùn)練集測試集驗證集經(jīng)濟800010001000房產(chǎn)800010001000股票800010001000教育800010001000科學(xué)800010001000社會800010001000時政800010001000體育800010001000游戲800010001000娛樂800010001000
本文分別采用準確率(Precision)、召回率(Recall)和F1-Score作為測評指標,對BBGA模型的分類性能進行評價.
準確率是一個統(tǒng)計測量,其計算公式如(6)所示,本實驗中用于對特征提取的效果驗證以及F1-Score的計算.
(6)
召回率Recall用于計算F1-Score,其計算如公式(7)所示:
(7)
F1-Score是衡量分類器分類準確性的指標,其計算如公式(8)所示:
(8)
本文中的實驗基于pytorch框架,用于訓(xùn)練的GPU是Quadro RTX 6000,模型參數(shù)設(shè)置如表2所示.
表2 模型參數(shù)
Table 2 Parameters of the model
參數(shù)數(shù)值詞向量維度768BiGRU維度(768,2)Dropout值0.2學(xué)習(xí)率1e-5優(yōu)化器AdamAttention維度64
實驗中其他對比模型的參數(shù)設(shè)置都參考了經(jīng)典的模型,例如Kim等人對于CNN的實驗工作,Lai等人對于RNN的實驗工作.
為了驗證將BERT作為嵌入層來訓(xùn)練詞向量的有效性,本文首先選擇TextCNN、TextRNN、DPCNN和FastText作為對比實驗的模型,與BERT_CNN和BERT_RNN的實驗結(jié)果相比較,試驗結(jié)果如表3所示.
表3 第1組實驗結(jié)果
Table 3 First group of results
方法精確率召回率F1值TextCNN0.89140.89120.8911TextRNN0.89180.89110.8909FastText0.90520.90540.9052DPCNN0.89180.89130.8912BERT_CNN0.93520.93520.9352BERT_RNN0.93330.93330.9333
可以看出,將BERT作為嵌入層訓(xùn)練詞向量,可以有效的優(yōu)化輸入文本的向量表達,從而獲得更好的訓(xùn)練效果.相比于TextCNN,BERT_CNN的F1值上升了4.41%,相比于TextRNN,BERT_RNN的F1值上升了4.24%.
接著,為了驗證本文提出的BBGA模型在進行文本分類任務(wù)時的有效性,選擇上述實驗中表現(xiàn)相對優(yōu)秀的BERT_CNN和BERT_RNN模型作比較,同時,選擇了純粹的BERT模型來做對比,實驗結(jié)果如表4所示.
表4 第2組實驗結(jié)果
Table 4 Second group of results
方法精確率召回率F1值BERT0.92790.92760.9276BERT_CNN0.93520.93520.9352BERT_RNN0.93330.93330.9333BBGA0.94340.94290.9430
從表4中的結(jié)果可以看出,相比于BERT詞嵌入后只接一層訓(xùn)練網(wǎng)絡(luò),本文提出的BBGA模型,有效的優(yōu)化了分類時的相對權(quán)重,提高了文本分類的精度.同時,可以看出,雖然純粹的BERT在許多任務(wù)中都有不俗的表現(xiàn),但是效果是有限的,將其訓(xùn)練的結(jié)果作為進一步的詞向量,可以達到更好的效果.
接著,為了分析本文的BBGA模型在每個類別分類上的準確率,同時也為后續(xù)的優(yōu)化工作做準備,我們挑選了具有代表性的BERT_CNN模型和FastText模型作為對比實驗,實驗結(jié)果如圖5所示.
圖5 各類別分類精度對比Fig.5 Comparison of classification accuracy of each category
可以看出,BBGA模型不僅在每個具體的分類任務(wù)中的效果優(yōu)于其他模型,同時每個分類任務(wù)的準確率都超過了90%,某些特征明顯的類別,例如體育和教育,精度更是達到了98.14%和96.48%.
最后,為了驗證BBGA模型的分類效率,我們對比了幾個深度學(xué)習(xí)模型達到收斂所需的時間,在學(xué)習(xí)率統(tǒng)一設(shè)置為1e-5的條件下,實驗結(jié)果如表5所示.
表5 收斂速度對比
Table 5 Comparison of convergence rates
模型收斂耗時BERT8min12sBERT_CNN12min37sBERT_RNN15min19sBBGA13min35s
從表5中的結(jié)果可以看出,RNN由于無法進行并行計算,收斂速度相比于RNN較慢,但是BBGA模型采用的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)相對簡單,收斂速度要快于傳統(tǒng)的RNN模型,同時相比于BERT_CNN耗時稍長一點,這是RNN相關(guān)模型特點決定的.盡管如此,BBGA模型還是在保證較高精確度的同時,一定程度上減少了耗時,達到了高效準確地進行大規(guī)模文本分類的效果.
我們正處于信息極速增長的時代,對于文本分類任務(wù)而言,準確率和效率都是極為重要的衡量指標.傳統(tǒng)方法雖然速度快,但是準確率普遍偏低,深度學(xué)習(xí)方法通過對模型的改進提高了準確率,混合方法以耗時為代價進一步提高了準確率.為此,本文提出了BBGA模型,旨在保證較高分類精度的前提下,盡可能減少文本分類的耗時.
首先對比了幾種常用的詞向量表示方法,選擇了以大量語料的訓(xùn)練為基礎(chǔ)得到的動態(tài)詞向量模型BERT.接著,為了保證文本提升特征提取的質(zhì)量和速度,使用GRU網(wǎng)絡(luò),并加入正反兩層網(wǎng)絡(luò),充分捕捉文本的上下文聯(lián)系.最后加入了注意力機制,用于調(diào)整分類時的權(quán)重比例.
實驗表明,在THUCNews數(shù)據(jù)集下,BBGA模型的性能完全優(yōu)于TextCNN、TextRNN、DPCNN和FastText,而相對于BERT、BERT_CNN和BERT_RNN,也有著優(yōu)秀的表現(xiàn).
但是,本文的工作還存在優(yōu)化的空間,例如進一步優(yōu)化詞向量的表示,優(yōu)化神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)等,從而更加快速準確地進行更大規(guī)模的文本分類.