高 珊,李世杰,蔡志平
(國防科技大學計算機學院,湖南 長沙 410073)
文本分類是指為文本指定預定義標簽的過程,是許多自然語言處理NLP(Natural Language Processing)應用程序中的一項重要任務,具有眾多的應用場景,例如情感分析[1]如圖1所示;問答系統(tǒng)[2,3]的基本流程如圖2所示;對話行為分類[4]、話題分類[5]等。

Figure 1 Sentiment analysis

Figure 2 Basic process of question and answer system
近年來,國內(nèi)外的文本分類研究者在傳統(tǒng)機器學習和深度學習2個方向?qū)ξ谋痉诸悊栴}做了許多探索和研究。本文將簡要介紹傳統(tǒng)機器學習的文本分類方法,詳細闡述使用深度學習的文本分類方法。
文本特征表示是對原始文本進行預處理,以便訓練分類模型。文本特征表示通常包括分詞、數(shù)據(jù)清理和統(tǒng)計,是文本分類的基礎。
和英文文本處理分類相比,中文文本的預處理是關鍵技術。中文文本預處理通常要進行分詞、去除停用詞、過濾低頻詞等。其中,最重要的是分詞部分。在中文表達中,詞是表達完整含義的最小單位。由于漢字的粒度較小,在大部分情況下,無法表達完整的含義,如圖3所示,“鼠”可以是“老鼠”,也可能定義為“鼠標”,而句子的粒度又較大,承載的信息量過多,難以復用。

Figure 3 Example of Chinese word segmentation
中文語句需要通過分詞,構成詞的集合,為后續(xù)文本分類奠定基礎。在分詞上,中文文本與英文文本有很大的不同。中文分詞難點主要體現(xiàn)在3個方面:分詞的規(guī)范、歧義詞的切分和未登錄詞識別。英文文本使用空格作為分隔符,中文文本沒有該特點,切分時需要根據(jù)語義,因此如何切分中文文本成為一個難點,例如“兵乓球拍賣完了”,不同的分詞方式可表達出不同的涵義:
乒乓球 拍賣 完了
乒乓 球拍 賣 完了
隨著網(wǎng)絡社交的不斷發(fā)展,人類處于信息爆炸的時代,在網(wǎng)絡上新出現(xiàn)了一些網(wǎng)絡流行語,如“藍瘦香菇”“房姐”“奧特”“累覺不愛”等,這些網(wǎng)絡流行語也給中文的分詞技術加大了難度。此外,中文詞在文本中的前后關系復雜,不同詞在不同的語境中具有不同的含義,中文里也常見一詞多義的情況,導致分詞易出現(xiàn)歧義。
中文分詞方法常見為3大類:基于詞典匹配的方法、基于統(tǒng)計的方法和基于深度學習的方法?;谠~典匹配的分詞方法,基本思想是基于詞典匹配,將待分詞的中文文本根據(jù)一定規(guī)則切分和調(diào)整,根據(jù)詞典中的詞語進行匹配,如果該詞語在詞典中,則分詞成功;否則繼續(xù)拆分匹配直到成功,然后進行反復循環(huán)。代表性的方法有:基于正向最大匹配方法、基于逆向最大匹配方法和雙向匹配方法?;诮y(tǒng)計的方法統(tǒng)計由相鄰單詞組成的單詞出現(xiàn)的概率。相鄰單詞的出現(xiàn)次數(shù)和出現(xiàn)概率都很大。根據(jù)概率值進行分割,主要有隱馬爾科夫模型HMM(Hidden Markov Model)[6]和條件隨機場模型 CRF(Conditional Random Field)[7]。比如Stanford和HanLP[8]分詞工具都是基于CRF算法的。
近年來,隨著基于深度學習算法的中文分詞方法的提出,其分詞效果在一定程度上優(yōu)于傳統(tǒng)的分詞方法,使用深度學習算法進行中文分詞的基本思想是同步進行分詞、語句、語義以及語法的分析。Peng 等人[9]采用長短時記憶網(wǎng)絡LSTM(Long Short-Term Memory)提取中文分詞特征,使用 CRF對標簽進行聯(lián)合解碼,其本質(zhì)上為序列標注。此外,還有常用的Python中文分詞工具jieba等方法。
中文文本相對于英文文本,通常存在大量的“的”“和”等副詞,以及量詞、感嘆詞和數(shù)詞等與理解語義無關的詞組且出現(xiàn)頻率較高,容易帶來噪聲。去停用詞可以減少特征詞的數(shù)量,提高文本分類的準確性??赏ㄟ^建立中文的停用詞表,掃描分詞詞典進行字符匹配。
對于分詞后的中文文本,還可以根據(jù)不同的任務進行詞性標注,比如情感分析、輿情挖掘等任務。
文本表示旨在以一種對計算機來說更容易且最小化信息損失的形式來表達預處理的文本,例如BOW(Bag Of Words)[10]、N-gram、詞頻逆文檔頻率TF-IDF(Term Frequency-Inverse Document Frequency)、word2vec[11]以及單詞表示的全局向量GloVe(Global Vectors)[12]。
BOW的思想是創(chuàng)建一個含有來自于訓練語料庫全部詞語的字典,每個詞語都與其獨特的識別編號一一對應。其中,One-Hot可對中文文本進行字符級編碼,即存在的詞語用1表示,不存在的用0表示。BOW只關注了詞語出現(xiàn)的次數(shù),無視句子或者文檔中的語法、語序關系和順序。
與BOW相比,N-gram考慮了相鄰的中文文本信息,并通過考慮相鄰中文文本來構建詞典。N-gram常用于計算句子的概率模型。句子的概率表示為句子中每個文本的聯(lián)合概率。
TF-IDF使用單詞頻率并反轉(zhuǎn)文檔頻率來建模文本。統(tǒng)計文本詞頻,生成文本的詞向量空間。TF是特定文章中某個詞的詞頻,IDF是包含該詞的文章占語料庫中文章總數(shù)的比例的倒數(shù),TF-IDF是兩者的乘積。TF-IDF用于評估一個單詞對一組文件或語料庫中一個文檔的重要性。一個單詞隨著它在文檔中出現(xiàn)的次數(shù)成比例地增加。然而,它在語料庫中的頻率總體上呈反比下降。TF-IDF沒有考慮詞的上下文和重要性,單純以“詞頻”衡量一個詞的重要性,不夠全面。
word2vec使用2個基本模型CBOW(Continuous Bag Of Words)和Skip gram,如圖4和圖5所示。前者是在已知當前單詞的上下文的前提下來預測該詞,FastText[13]是基于CBOW模型提出的快速文本分類方法。后者是在已知當前單詞時預測上下文。word2vec在對大量的語料進行訓練之后,使用給定維度的向量來對每個單詞進行表示,單詞之間的語義和語法相似度均可用向量的相似度表示。由于詞和向量是一對一的關系,所以多義詞的問題無法解決。此外,word2vec是一種靜態(tài)的方式,如圖6展示了使用word2vec進行中文文本表示的示例,其具有較強的通用性,但是無法根據(jù)指定任務進行動態(tài)處理和優(yōu)化。

Figure 4 CBOW model

Figure 5 Skip gram model

Figure 6 Example of word2vec Chinese representation
GloVe通過局部上下文和全局統(tǒng)計特征來訓練單詞,單詞屬于共現(xiàn)矩陣中的非零元素。它使詞向量能夠包含盡可能多的語義和語法信息,以語料庫為基礎,建立詞匯的共現(xiàn)矩陣并結(jié)合 GloVe模型進行詞向量學習。最后,根據(jù)所選特征將所表示的文本反饋到分類器中。
使用傳統(tǒng)的機器學習對文本進行分類,主要是進行文本特征表示(包含文本預處理、特征提取、文本表示3個部分)、構造分類器、分類結(jié)果的評估與反饋等過程。文本表示主要以布爾模型 (Boolean Model)、概率模型(Probabilistic Model) 和向量空間模型(Vector Space Model) 3種模型為代表。構造分類器是傳統(tǒng)機器學習進行文本分類的核心之一,通過使用提取詞頻或者詞袋特征的方法,將提取出的特征放入模型中進行訓練。
對于傳統(tǒng)模型,樸素貝葉斯NB(Naive Bayesian)[14]是用于文本分類任務的第一個模型,如圖7及式(1)所示,其中文本T=[T1,T2,…,Tn]獨立。
y∈{T1,T2,…,Tn}
(1)

Figure 7 Naive Bayes
隨后,研究者提出了通用分類模型,K值鄰近算法KNN(K-Nearest Neighbor)[15]如圖8所示、支持向量機SVM(Support Vector Machine)[16]、隨機森林RF(Random Forest)[17]、決策樹DT(Decision Tree)、中心向量法以及Ada Boost技術[18]等,廣泛地用于文本分類。最近的研究發(fā)現(xiàn),極限梯度增強XGBoost(eXtreme Gradient Boosting)[19]和光梯度增強機LightGBM(Light Gradient Boosting Machine)[20]具有優(yōu)異的性能。

Figure 8 K-value proximity algorithm (K=3)
傳統(tǒng)機器學習方法都具有一定的優(yōu)缺點,比如樸素貝葉斯算法,對小規(guī)模的數(shù)據(jù)表現(xiàn)很好但對缺失數(shù)據(jù)不敏感,算法思想較為簡單,通過先驗和數(shù)據(jù)來決定后驗的概率從而決定文本分類。樸素貝葉斯算法需要數(shù)據(jù)集屬性之間的關系相對獨立,對輸入數(shù)據(jù)的表達形式較為敏感。因此,在屬性數(shù)量較多或者屬性之間相關性較大時,其分類效果較差;基于KNN文本分類算法具有穩(wěn)定、準確率較高的優(yōu)點,但其預測的結(jié)果容易受到含噪聲數(shù)據(jù)的影響,并且對樣本均衡的要求較高。
目前,傳統(tǒng)機器學習表現(xiàn)出的分類效果相對較低,這是因為傳統(tǒng)機器學習是淺層次的特征提取,忽略了詞與詞之間以及句子和句子間的關系,對于文本背后的語義、結(jié)構、序列和上下文理解不夠,對高維數(shù)據(jù)的處理和泛化能力較差,模型的表征能力有限。
隨著研究者的不斷探索,2006年Hinton等[21]提出了深度學習(Deep Learning)的概念。自此,文本分類問題的重心逐漸從傳統(tǒng)機器學習轉(zhuǎn)向基于深度學習的研究,并成為了文本分類領域的主流研究內(nèi)容。
相較于傳統(tǒng)的機器學習,深度學習可利用其自身的網(wǎng)絡結(jié)構進行學習,從而獲得數(shù)據(jù)特征。例如,卷積神經(jīng)網(wǎng)絡CNN(Convolutional Neural Network)[22]、循環(huán)神經(jīng)網(wǎng)絡RNN(Recurrent Neural Network)[23]等。
圖9展示了利用傳統(tǒng)機器學習和深度學習進行文本分類過程的流程圖。文本數(shù)據(jù)不同于數(shù)字、圖像或信號數(shù)據(jù)。第一個重要步驟是為模型預訓練文本數(shù)據(jù)。傳統(tǒng)模型通常需要通過人工方法獲得良好的樣本特征,然后用經(jīng)典的機器學習算法對其進行分類。因此,特征提取在很大程度上限制了該方法的有效性。然而,與傳統(tǒng)機器學習模型不同,深度學習通過學習一組用于將特征直接映射到輸出的非線性變換,將特征工程集成到模型擬合過程中[24]。

Figure 9 Traditional machine learning and deep learning text classification processes
CNN因其卷積濾波器可以提取圖像的特征,最初被提出用于圖像分類。CNN能對多個序列塊進行多核的卷積運算。因此,神經(jīng)網(wǎng)絡在很多 NLP問題中得到了應用。
首先,將輸入文本的單詞向量拼接成矩陣。然后,矩陣被送入卷積層,卷積層包含幾個不同維度的濾波器。最后,卷積層的結(jié)果經(jīng)過池化層并連接池化結(jié)果,以獲得文本的最終矢量表示。類別由最終向量進行預測,如圖10所示。

Figure 10 CNN text classification
在CNN網(wǎng)絡的基礎上,Kim[25]提出了一種卷積神經(jīng)網(wǎng)絡的無偏模型TextCNN。它可以通過一層卷積更好地確定最大池化層中的區(qū)分短語,并通過保持單詞向量靜態(tài)來學習除單詞向量之外的超參數(shù)。僅對標記數(shù)據(jù)進行訓練對于數(shù)據(jù)驅(qū)動的深度模型是不夠的。因此,一些研究人員考慮利用未標記的數(shù),與傳統(tǒng)圖像的 CNN 網(wǎng)絡相比,TextCNN保持原有網(wǎng)絡結(jié)構,簡化了卷積層,使其具有網(wǎng)絡結(jié)構簡單、參數(shù)量少、計算量少和訓練速度快的優(yōu)點。
CNN以及TextCNN都為淺層網(wǎng)絡,Alexis等人[26]在此基礎上,對深度網(wǎng)絡在文本分類任務上的問題進行了研究,提出了字符級的深層卷積神經(jīng)網(wǎng)絡VDCNN(Very Deep Convolutional Neural Network for Text Classification);Johnson 等人[27]在2015年提出了一種基于兩視圖半監(jiān)督學習進行文本分類任務的模型;在此基礎上,Johnson等人[28]又提出了一種深度金字塔卷積神經(jīng)網(wǎng)絡DPCNN(Deep Pyramid Convolutional Neural Networks for Text Categorization),通過提高網(wǎng)絡深度來提高計算精度,DPCNN比殘差網(wǎng)絡ResNet[29]結(jié)構更為簡單;2015年Zhang等人[30]提出的CharCNN,通過卷積的方式共享參數(shù),可以有效地減少嵌入層需要訓練的參數(shù)量,從而提高計算效率;Adams 等人[31]提出了一種字符級CNN模型,稱為MGTC(Multilingual Geographic Text Classification),可以實現(xiàn)對多語言文本的分類;Kipf等人[32]在圖卷積神經(jīng)網(wǎng)絡的基礎上提出了GCN(Graph Convolutional Network)模型,后續(xù)的研究者對GCN模型進行了研究和變體,尤其是在文本分類任務上,又提出了TextGCN[33]、FastGCN[34]、TensorGCN[35]、Text-level GCN[36]、D-GCN(Dynamic-Graph Convolutional Network)[37]和GCNII[38]等模型。
循環(huán)神經(jīng)網(wǎng)絡RNN常用于通過遞歸計算來獲取序列的演進方向。其中在深度學習中,門控循環(huán)單元GRU(Gate Recurrent Unit)[39]和LSTM較為常見。
RNN的核心為有向圖,以循環(huán)單元為元素進行鏈式項鏈,易捕獲文本分類任務的所有單詞中的位置信息。圖11展示了RNN文本分類模型。首先,使用詞嵌入技術,將每一個詞匯用特定的向量表示。然后,嵌入的詞匯向量將連續(xù)反饋給循環(huán)單元(RNN Cell)。最后,可以通過隱藏層的輸出來預測文本的分類標簽。

Figure 11 RNN text classification
Koutnik等人[40]為了克服RNN梯度爆炸或消失等問題,提出了CW-RNN(Clock Work RNN),通過時鐘頻率使RNN獲得最佳效果;為了對具有長輸入序列的主題標記任務進行建模,Dieng等人[41]提出了TopicRNN用于主題分類,其模型將RNN和文本的潛在主題結(jié)合起來,以此獲得句法和語義之間的依賴關系;Schuster等人[42]在單向RNN的基礎上,提出雙向循環(huán)神經(jīng)網(wǎng)絡,模型可獲取過去和未來2個方向上的信息,提高了文本分類任務的準確性;Wang等人[43]提出的膠囊結(jié)構的RNN模型,在情感分類任務上起到了很好的效果。
LSTM可以有效緩解因RNN在連續(xù)乘法中的梯度消失問題,為文本分類模型提供了基礎,如Tai等人[44]提出的Tree-LSTM,即從樹結(jié)構來改進語義表示;袁婷婷等人[45]基于微博上的性格情感分析提出了PLSTM(Personality-based LSTM)。
GRU作為LSTM的變體,在一定程度上對LSTM的結(jié)構進行了精簡改進。2019年孫明敏[46]提出的基于GRU和Attention聯(lián)合的中文文本分類,利用注意力機制,找出中文文本中的關鍵詞。
CNN和RNN均在文本分類相關任務上展示出了優(yōu)異的結(jié)果。然而,由于隱藏數(shù)據(jù)的不可讀性,導致這些模型在分類錯誤的情況下難以解釋。
在Bahdanau等人[47]提出的基于機器翻譯注意力機制的基礎上,Yang等人[48]提出了分層注意力網(wǎng)絡HAN(Hierarchical Attention Network),可以對每個句子使用注意力機制提取出關鍵信息,進而對關鍵信息使用注意力機制并用其進行文本分類。
預訓練語言模型[49]可以高效地學習全局語義,并顯著提高NLP任務的效率和結(jié)果的準確率。預訓練語言模型通常使用無監(jiān)督方法自動挖掘語義知識以及并行化計算,從而提高文本分類的效率。
2019年,Devlin等人[50]提出了BERT(Bidirectional Encoder Representations from Transformers)模型,BERT應用雙向編碼器,通過聯(lián)合調(diào)整所有層中的上下文來預訓練深度的雙向表示。在處理自然語言處理的下游任務時,只需要對其進行微調(diào)。
在BERT的基礎上,RoBERTa[51]進行了改進,它采用動態(tài)掩蔽方法,每次生成掩蔽模式,并將序列送入模型;ALBERT(A Lite BERT)[52]通過減少了碎片向量的長度和與所有編碼器共享參數(shù)的方式減少了BERT的參數(shù),實現(xiàn)了跨層參數(shù)共享。GANBERT(Generative Adversarial Nets BERT)[53]使用生成對抗的半監(jiān)督學習網(wǎng)絡來增強BERT的訓練;RoCBert(Robust Chinese Bert)[54]是一種經(jīng)過訓練的中文BERT,為了解決中文字形易受對抗攻擊性的問題而提出的。Dai等人[55]分別使用標準字符級掩碼、全詞掩蔽以及兩者的組合來訓練3個中文BERT模型。Dict-BERT[56]通過利用字典中稀有單詞的定義來增強語言模型的預訓練。
對于將BERT進行精簡上,DistilBERT[57]在減少了40%的參數(shù)基礎上仍保留了97%的語言理解能力;TinyBERT[58]和LightMobileBERT[59]也通過不同的方法對BERT進行了精簡;bert2BERT[60]通過遞進式訓練大模型的方法,提高了效率,也加快了收斂速度。
受到圖像學習的啟發(fā),文本分類任務中也涌現(xiàn)出一大批語言模型,如:Glove[12]、ELMO(Embedding from Language MOdels)[61]、ULMFiT(Universal Language Model Fine-Tuning)[62]、XLNet(eXtreme multiLingunal pretraiNEd Transformer)[63]、TG-Transformer(Text Graph-Transformer)[64]、X-Transformer(eXtreme-Transformer)[65]、LightXML(Light eXtreme Multi-Label)[66]以及近期的研究熱點OpenAI GPT(Generative Pre-trained Transformer)模型。
數(shù)據(jù)集的選擇對文本分類實驗結(jié)果有著重要的影響,目前文本分類常用的開源數(shù)據(jù)集如下:
Sogou數(shù)據(jù)集:Sogou 新聞數(shù)據(jù)集是Sogou CA和 Sogou CS新聞語料的混合。新聞的分類標簽由統(tǒng)一資源定位符URL(Uniform Resource Locator)中的域名決定,常用于新聞分類??蓮腟ogou官網(wǎng)https://www.sogou/labs/resource/ca.php獲取。
THUCNews數(shù)據(jù)集:THUCNews是根據(jù)新浪新聞RSS訂閱頻道2005~2011年間的歷史數(shù)據(jù)篩選過濾生成,包含74萬篇新聞文檔(2.19 GB),均為UTF-8純文本格式。在原始新浪新聞分類體系的基礎上,重新整合劃分出14個候選分類類別:財經(jīng)、彩票、房產(chǎn)、股票、家居、教育、科技、社會、時尚、時政、體育、星座、游戲和娛樂??蓮腡HUCNews官網(wǎng)http://thuctc.thunlp/中獲取。
Datahub數(shù)據(jù)中心:包含文本分類、情感分析以及知識圖譜的數(shù)據(jù)集,可從Datahub官網(wǎng)http://www.datahub.ileadall42中獲取。
今日頭條新聞文本分類數(shù)據(jù)集:數(shù)據(jù)來源于今日頭條客戶端,共382 688條數(shù)據(jù),分布于15個分類中。 可從toutiao-text-classfication-dataset中獲取。
復旦中文文本分類語料庫:共20類,18 655條數(shù)據(jù)集。
本文主要介紹了現(xiàn)有的文本分類任務方法,包括傳統(tǒng)的機器學習方法和深度學習方法。傳統(tǒng)方法主要通過改進特征提取方案和分類器的設計來提高文本分類性能。相比之下,深度學習方法通過改進演示學習方法、模型結(jié)構以及其他數(shù)據(jù)和知識來提高性能。本文著重介紹了中文文本分類任務中的文本表示部分以及常用的中文文本分類數(shù)據(jù)。
對于中文文本分類方法的集成,RNN需要逐步遞歸以獲得全局信息。CNN可以獲得局部信息,并且可以通過多層堆棧增加感測場,以捕獲更全面的上下文信息。注意力機制學習句子中單詞之間的全局依賴性。Transformer模型依賴于注意力機制,以建立輸入和輸出之間的全局依賴關系的深度。因此,設計一個集成方法可能是未來發(fā)展的方向。
對于方法的效率,盡管基于深度學習的文本分類方法是非常有效的,例如CNN、RNN和LSTM,但是,這些方法仍存在許多技術限制,如網(wǎng)絡層的深度、正則化問題、網(wǎng)絡學習率等。因此,優(yōu)化文本分類方法和提高模型訓練速度仍有更廣闊的發(fā)展空間。