朱良奇,黃 勃,黃季濤,馬莉媛,史志才,2
1.上海工程技術大學 電子電氣工程學院,上海 201620
2.上海信息安全綜合管理技術重點實驗室,上海 200240
隨著互聯網和移動終端的快速發(fā)展,網絡深入人心,越來越多的人在線上完成交易,如網絡購物、在線觀影以及外賣等,所以產生了大量的行為數據,比如,購物評價、外賣評價以及影評等等,且以短文本居多。通過挖掘這些文本數據中潛在的信息,有助于企業(yè)發(fā)現新的商機,對于政府可以及時發(fā)現輿情事件并做出正確疏導有重要意義。其次,網絡的發(fā)展,導致數據爆炸式增長,每天充斥著各種各樣的新聞報道,對于準確地將各種新聞進行分類展示,便于人們快速獲取熱點信息。正是上述的問題以及需求,對大量的短文本數據做出快速、準確的聚類迫在眉睫。
短文本相比于長文本包含的字符數更少,文本描述更加隨意,各個實體間的關系會更加模糊,完整的語義信息更加難以準確提取。傳統(tǒng)的空間向量模型基于詞出現的頻率等方法進行文本向量化[1],應用于短文本的表示,容易出現高維稀疏,造成語義鴻溝,對于下游的文本聚類或者分類等任務會直接導致準確率下降。并且傳統(tǒng)的聚類方法將特征表示和聚類分為兩個步驟分別處理,這樣容易造成聚類模型和特征不匹配,以上的兩個原因導致最終聚類效果不盡人意。
針對以上短文本聚類過程出現的向量表征和模型匹配問題,本文提出一種BERT-AK模型,具體如下:
(1)首先利用預訓練模型BERT(bidirectional encoder representations from transformers)[2]的多頭注意力機制和動態(tài)詞向量等特性獲取具體語境的短文本向量表示,實現從數據空間到特征空間轉換。
(2)構建一個降維自編碼網絡AutoEncoder,利用自監(jiān)督學習方法,訓練一個特征提取器Encoder,把輸入的768維的高維向量進一步轉換為低維稠密向量,用于下游聚類任務。
(3)聯合訓練聚類網絡。利用Maaten和Hinton[3]提出的學生分布Q擬合文獻[4]提出的樣本點的輔助目標分布P,最后以這兩個分布的KL散度為損失函數,迭代聯合訓練編碼器Encoder和聚類模型K-Means。
有學者利用詞袋模型BoW(bag of words)和詞頻-逆文檔頻率TF-IDF(term frequency-inverse document frequency)[1]對短文本進行向量化表示,由于短文本本身字符數少的特性,導致利用上述的方法得到的文本向量高維且稀疏,利用這些文本向量進行相似度計算的時候,往往不能準確地反映樣本間真正的距離[5],會產生較大的誤差。Hu等[6]和Banerjee等[7]提出通過利用維基百科的相應數據擴充短文本數據,彌補短文本信息不足問題,增強短文本的表達能力。同樣利用引入外部知識,增強文本表達的還有Hotho等[8]和Wei等[9]提出利用本體方法論來擴充短文本的信息表示,提高短文本的表示能力,以及Kozlowski等[10]和Zheng等[11]分別提出利用語料的主題和語義信息對短文本信息增強,但是這些方法都需要很強的自然語言處理相關知識儲備,不同的數據源,需要不同的外部知識,不具一般性,導致成本過高。
近年,隨著深度學習的快速發(fā)展,詞嵌入方法[12],對于解決文本表示有很大的提升,通過在大量的語料中利用無監(jiān)督的方法訓練詞之間的語義關系,得到的詞向量更加稠密,更能表示該詞的語義信息。本質上也是利用外部知識增強當前的文本表示方法,但是更具一般性和高效性。文獻[4]提出深度嵌入聚類方法,利用神經網絡學習文本的特征表示和聚類目標,該方法實現了從數據空間到低維特征空間的映射,然后迭代優(yōu)化聚類目標。詞向量是文本表示的基礎,傳統(tǒng)的詞向量化的方式有詞袋模型BoW以及靜態(tài)詞向量模型Word2Vec[13]等,由于前兩種詞表征方式都是從詞頻角度出發(fā)對詞進行向量化,對于詞匯相對少的短文本,得到的詞向量是高維稀疏的,而且難以捕捉詞之間的語義和語法聯系,不利于下游任務的使用。而Word2Vec雖然是在大規(guī)模語料上訓練得到的詞向量,但是由于模型結構的原因,得到的是靜態(tài)的詞向量,對于包含多義詞的文本向量表征不準確。BERT[2]預訓練模型,該模型在億級別規(guī)模的語料上無監(jiān)督訓練,并且利用掩碼方式,同時利用上下文信息提取語義關系,實現根據環(huán)境動態(tài)提取詞向量,和獲取詞之間的潛在語義關系,模型表現出很強的魯棒性,在很多自然語言處理任務中取得了最好的結果[14-16]。本文提出采用BERT初始化文本向量表示,并在下游聚類任務中設計自編碼網絡進一步降維和抽取稠密特征,最后將編碼器和聚類算法聯合微調模型,以提高準確度。
BERT預訓練模型是谷歌2018年提出的大型多任務語言模型[2],模型的結構如圖1所示。為了同時捕獲詞和句子兩個目標的特征信息表示,提出了MLM(masked language model)和NSP(next sentence prediction)任務,其中,MLM通過將輸入句子中15%的詞采用以下三種策略掩蓋,具體的,該詞有10%的可能被替換為隨機詞,80%的可能被MASK字符串替換和10%的可能被保留的方式來實現掩碼效果,以提高模型的預測能力。NSP任務是因為在一些問答任務上需要兩個句子的關系,所以BERT模型通過訓練下一個句子預測任務,提高模型對于連續(xù)句子識別能力,提升在問答和推理等任務上的性能。
輸入包括三部分,如圖1所示,分別為詞條的詞嵌入(token embedding)、片段嵌入(segment embedding)和位置編碼嵌入(position embedding)。其中詞條的嵌入包括每個詞的向量嵌入和不在詞表中的詞的字符嵌入,片段嵌入是為了當輸入為兩個句子時,用于后期訓練該模型的NSP任務。位置編碼嵌入是由于BERT利用Self-Attention機制,實現了輸入句子中詞之間相對距離都是1,解決了文本長距離依賴問題,但是丟失了原本的語序信息,對每個詞加入位置信息作為位置編碼,給模型提供詞之間的相對位置,提高了文本表征中信息的完整性。
如圖1所示,BERT的核心模塊便是Transformer塊,通過堆疊12個或24個該模塊,形成深度神經網絡提取文本之間的語義信息。Transformer[17]是2017年谷歌提出的一種新的語言模型,通過引入自注意力機制Self-Attention解決了傳統(tǒng)自然語言處理問題的長程依賴問題,并且為了提高模型對于不同位置的識別能力,計算公式如式(1)所示:
圖1 BERT結構圖Fig.1 BERT infrastructure diagram
其中,Q∈Rn×dk是查詢向量,可表示為Q=[q1,q2,…,qn],T,K∈Rm×dk和V∈Rm×dv分別表示為K=[k1,k2,…,kn]T和V=[v1,v2,…,vn]T。Attention將一個n×dk的序列編碼為一個n×dv的序列,為了防止計算過程中內積很大時梯度小的問題,加入dk作為調節(jié)因子。
為了進一步提高模型對于不同特征的關注,從而引入多頭注意力機制,使模型可以專注于不同特征,不同注意力頭head按照公式(2)進行拼接。相比于其他的語言模型,BERT通過引入大量的外部知識信息和從輸入的上下文同時提取詞的表示信息,最后獲得詞更加完整的表征信息。
其中,headi的計算公式如式(3)所示,對每個headi拼接得到最終的多頭注意力輸出,作為文本向量的表征,然后輸入到前饋網絡進行下一步的計算。
神經網絡的初始化對于模型結果至關重要,因此本文利用自編碼網絡實現對于特征提取器的參數初始化操作。自編碼網絡分為兩部分,由編碼器(Encoder)和解碼器(Decoder)組成,并且兩個網絡呈對稱結構。編碼器和解碼器通常都是三層神經網絡,由輸入層、隱藏層和輸出層組成,如圖2所示。其中,編碼器的輸出是解碼器的輸入,編碼器和解碼器的輸出可以分別表示為公式(4)和(5)所示,自編碼網絡通過編碼器提取高維特征并降維處理輸出文本特征Zi,解碼器通過對稱的網絡結構,對編碼器的輸入X進行重構,得到X′,目的是利用神經網絡擬合一個恒等函數,提高編碼器的特征提取能力。其中重構過程采用均方誤差作為損失函數,為了防止模型過擬合,本文采用L2范數進行正則化,提高模型在測試集的表現。計算公式如式(6)所示。
圖2 自編碼網絡Fig.2 Self coding network
其中,We和Wh是權重矩陣,be和bh是偏置向量,f1和f2是映射函數。
其中,λ為懲罰因子,控制模型的復雜度。n為批量樣本個數,Xi為輸入向量,Xi′為解碼器的擬合分布。W為模型的參數。
利用自編碼網絡初始化特征提取器Encoder,相比于隨機初始化,對于下游任務表現出更好的結果。本文所提出的BERT_AE_K-Means模型如圖3,利用上述訓練好的編碼器Encoder對文本數據表示Embedding進一步做特征降維處理,然后通過將該部分和聚類網絡Kmeans相結合,根據聚類結果反向調整網絡參數。該過程可以抽象為以下過程。
圖3 BERT-AK模型框架結構圖Fig.3 Frame structure of BERT-AK model
(1)初始化K-Means聚類算法的簇心uj。由于基于劃分的K-Means聚類算法對于初始簇心的選取十分敏感,因此本文在不同的簇心下,利用K-Means進行100次實驗預估,計算劃分誤差最小的簇心作為初始的聚類簇心,然后計算每個樣本點i屬于簇j的概率qij,計算公式如式(7),得到樣本點的概率分布Q。
其中,zi表示樣本點的特征向量,uj表示簇心向量,v是t分布的自由度,本文為取值為1。
(2)本文中的自監(jiān)督學習的目標分布采用Xie等[4]所提出的輔助目標分布P,該分布相對于步驟(1)得到的樣本點的軟分布Q,P更近似于原數據分布[4],所以作為自訓練階段的輔助目標具有合理性。輔助目標分布的計算公式如式(8)所示:
其中,qij表示樣本i屬于簇心j的估計概率。
(3)聯合訓練編碼器Encoder和聚類網絡K-Means。由于需要度量兩個分布Q和P之間的差異,本文采用KL散度(KL-divergence)作為損失函數訓練模型,計算公式如式(9)所示:
其中,P是估計分布,Q是輔助目標分布,pij是樣本屬于簇心j的近似概率,qij是樣本i屬于簇心j的估計概率值。
本文在4個短文本數據集上進行實驗:(1)Search-Snippets,該數據集來自谷歌搜索引擎,一共有12 295個短文本,包含8個不同類別[18]。(2)StackOverflow,該數據集是一些問答案例的標題數據,發(fā)布于Kaggle平臺,一共有16 407個短文本,分別來自20個不同類別[19]。(3)BioMedical,該數據集發(fā)布于BioASQ官方網站,來自生物醫(yī)學相關領域,一共包含20個類別和19 448個樣本[20]。(4)Tweet,該數據集由2 472個短文本組成,包含89個類別[20]。關于數據集的詳細信息如表1所示,其中N表示每個數據集包含的類別個數,T表示每個數據集包含的文本數量,L表示每一個數據集的樣本平均長度。
表1 短文本數據集Table 1 Short text dataset
本文實驗中,利用BERT預訓練模型獲取詞的上下文動態(tài)詞向量表征,將模型[CLS]標簽輸出的768維向量作為短文本的向量表示,該標簽是BERT模型輸出的用于文本分類的包含全局信息的文本表示。由于當前得到的文本向量表示維度高,直接利用聚類算法聚類,不但準確率低,而且會導致模型的時間復雜度過高,因此本文提出利用AutoEncoder模型對上述的文本向量做特征提取和降維,自編碼網絡的內部分為Encoder和Decoder部分,Encoder模塊包含輸入層,隱藏層和輸出層,神經元個數分別是768、1 000和128,特別的,編碼器的輸出作為解碼器的輸入,Decoder模塊同樣包含三層網絡,神經元的個數分別是128、1 000和768,實現對輸入數據的向量表征V進行重構。訓練過程中,設置批處理大小為64,學習率為0.001,優(yōu)化算法為隨機梯度下降算法(stochastic gradient descent,SGD)。經過30次迭代優(yōu)化,得到特征提取器Encoder,然后利用該編碼器對輸入的文本向量V進行降維和特征提取,然后輸入到聚類網絡,利用聚類結果反向優(yōu)化編碼器和聚類模型的參數,進行聯合訓練優(yōu)化。該階段模型的損失函數設置為KL散度,通過不斷優(yōu)化模型輸出的樣本估計分布Q和輔助目標分布P之間的距離,提高編碼器對于當前數據的特征提取能力和聚類的準確度。
3.2.1 對比實驗
本文一共設置了6組對比實驗,分別在四個短文本數據集上進行實驗,對比模型詳細介紹如下:
前兩組對比模型是基線模型,分別利用TF-IDF和Word2Vec獲取詞向量,然后基于詞向量對文本進行特征表示,然后直接利用K-Means聚類算法進行聚類。
STC2[19]是一種基于詞嵌入和卷積神經網絡的短文本聚類算法,在聚類的過程中利用卷積神經網絡學習文本表示。
GSDPMM[20]是一種用于短文本聚類的基于狄利克雷過程的多項式混合模型,該模型不需要提前指定簇的個數,由于模型的設計原因,通常趨向于產生更多的簇。
SIF-Auto[21]是一種利用SIF詞向量表示方法進行文本表示,然后利用自編碼網絡進行特征提取,最后進行聚類的算法。
BERT_K-Means和BERT_AE_K-Means兩個模型是本文提出的文本表示方法,均采用預訓練模型BERT提取文本的語義表示,第一個模型相比第二個沒有經過自編碼網絡進行特征提取和降維,用來驗證提取到的高階特征對下游文本聚類的重要性。
3.2.2 評價指標
本文在四個數據集上進行了多次實驗,選用聚類準確率(accuracy,ACC)和標準互信息(normalized mutual information,NMI)作為模型評價指標。聚類準確率ACC的計算公式如下:
其中,N是樣本個數,Ci是模型對樣本點xi分配到的簇標,yi是樣本點xi的真實標簽,map(Ci)用于將模型得到的簇標映射為與yi相同的形式。δ(x,y)是判別函數,定義如式(11)所示,用于判斷聚類得到的類別和真實標簽是否相同。
標準互信息NMI計算公式如下:
其中,H(·)為信息熵,H(C),H(D)用于將互信息值歸一化到[0,1]范圍內。I(C,D)定義為C和D之間的互信息值,計算公式如式(13)所示:
當聚類模型把數據C和D完美劃分為兩部分的時候,標準互信息值取到最大值為1。
本文為了實驗結果的可靠性,每個模型的結果都是取10次實驗的平均值作為模型最終的結果,同時,在相同的數據集上做了6組對比實驗,實驗的結果分別如表2和表3所示。通過K-Means、Word2Vec_K-Means和BERT_K-Means三個實驗,驗證文本的不同向量表示對于文本聚類的重要性,從表2中可以看到3個實驗中BERT_K-Means效果最好,相比于Word2Vec_KMeans模型在SearchSnippet數據集上準確率提高了24個百分點,而Word2Vec_K-Means模型相比于K-Means也提高了20個百分點,從實驗結果可以看到,在短文本上,直接利用基于詞頻的文本表示效果最差,利用大量語料進行預訓練可以有效地提高文本表示的能力,從而提高下游的文本聚類的效果。
實驗GSDPMM和STC2以及SIF-Auto是近年提出的在這4個數據集上取得不錯結果的方法,本文將其作為部分對比實驗,驗證本文提出的特征提取和聚類方法的有效性,從表2和表3中可以看到GSDPMM在Tweet數據集上均表現出了最好的結果,因為Tweet數據集包含89個類別,相比其他數據集樣本數多出4倍,而GSDPMM模型趨向于產生更多的簇,因此在該數據上取得了最好的結果,其中ACC和NMI值均比本文提出的模型高不到1個百分點。本文提出的方法在其他3個數據集上均取得了最好的結果,其中ACC在StackOver-Flow數據集上比最好的對比模型SIF-Auto的結果提升3個百分點,NMI值在BioMedical數據集上相比對比模型SIF_Auto提升2.8個百分點。
表2 模型在數據集上的準確率對比Table 2 Accuracy comparison of models on datasets %
表3 模型在數據集上的標準互信息對比Table 3 Standard mutual information comparison of models on datasets %
最后兩組實驗BERT_K-Means和BERT_AE_KMeans進行對比驗證本文提出的自編碼網絡對于文本特征提取和降維的有效性,通過該模塊進行特征提取和降維之后,文本的表示向量更適合下游的應用。從表2和表3均可以看到,聚類準確率在各個數據集上均有提升,并且在除了Tweet數據集外,其他3個數據集上取得了對比實驗中最好的效果,其中NMI值在StackOverflow數據集上比BERT_K-Means提升超過4個百分點,ACC提升6個百分點。說明了本文提出的對文本表示進行特征提取和降維方法可以有效地提高文本表示能力,從而提高了聚類算法的性能。
上述實驗驗證了本文所提出的文本表示和高階特征提取方法對于提高聚類準確度方面的有效性,同時為了驗證模型的計算效率,本文選取近年提出的對比實驗STC2、SIF_Auto與本文所 提出的BERT_K-Means和BERT_AE_K-Means模型在四個數據集各一萬條樣本上進行運行時間測試,對比結果如圖4所示。
圖4 各個模型運行時間Fig.4 Running time of each model
從圖4中可以看到,本文所提出的BERT_AE_KMeans模型在四個數據集上的運行時間均低于BERT_K-Means,略高于STC2和SIF_Auto兩個對比實驗,這是由于BERT預訓練模型輸出的是768維的高維特征向量,需要更多的計算時間,而相比BERT_K-Means,本文通過AutoEncoder模塊提取高階特征后,不但減少了計算量,而且聚類模型更容易收斂,所以運行時間低于BERT_K-Means模型。因此可以看出本文所提出的模型在提高聚類準確度的同時,時間復雜度并沒有大幅提高。
為了更加直觀地看到聚類結果的變化,本文在SearchSnippet數據集上將對比實驗下的聚類結果進行降維處理,利用python的Sklearn庫中的集成模型t-SNE將樣本數據特征降維到2維空間,可視化如圖5所示,可以直觀地看到基于詞頻統(tǒng)計的TF-IDF模型所得到的聚類效果最糟糕,沒有有效地將各個類別的數據劃分開,這是因為對于短文本數據集,樣本數據所包含的詞匯數量少,能夠體現文本意思的核心詞匯不足,通過詞頻統(tǒng)計的文本向量化表征方法導致核心語義詞匯并不能體現出高的權重,因此這種基于統(tǒng)計的文本表示方式所得到的聚類效果不好。STC2模型利用卷積網絡提取文本信息的特征,相比于圖5(b),聚類算法直接作用于數據空間,前者提取特征之后得到的聚類效果更加明顯,各個簇的邊界曲線更加清楚。圖5(d)采用SIF進行文本表示之后利用自編碼網絡提取文本的高階特征表示,有效地提高了聚類的效果。圖5(e)是本文采用預訓練模型BERT進行文本表示之后,直接利用K-Means進行聚類,和圖5(b)相對比,可以明顯看出預訓練模型BERT利用上下文環(huán)境信息動態(tài)獲取文本表示比利用Word2Vec得到的文本表示更有利于下游的聚類,各個簇的邊界更加清晰。圖5(f)是本文提出的模型BERT_AE_K-Means聚類得到的結果,通過和圖5(e)相比,進一步驗證本文提出采用自編碼網絡對于BERT得到的文本向量提取高階特征之后,可以再次提升聚類模型的有效性,在SearchSnippet數據集上表現出最好的聚類效果,得到的簇的邊界更加清晰。
圖5 在SearchSnippets數據集上聚類結果的對比圖Fig.5 Comparison of clustering results on SearchSnippets dataset
通過以上實驗可以發(fā)現文本聚類任務中,對于文本的向量化表征十分重要,本文相比于傳統(tǒng)的基于詞頻統(tǒng)計的向量表征方法和基于Word2Vec的靜態(tài)詞向量方法,充分利用大型預訓練模型BERT提取詞之間高維空間的語義和語法等信息,對于下游的文本聚類任務效果的提升尤為重要,以及配合本文提出的特征抽取、降維和聚類微調方法,在文本聚類任務上準確度有了較大的提升。本文將聚類準確率和標準互信息值在各個模型的縱向對比結果可視化如圖6和圖7所示,從圖中可以直觀地發(fā)現,本文所提出模型獲得更高的準確率。
圖6 模型的聚類準確率縱向對比圖Fig.6 Accuracy comparison chart of model on dataset
圖7 模型的聚類標準互信息縱向對比圖Fig.7 Standard mutual information comparison chart of model on dataset
本文提出了一種組合模型用來解決短文本聚類問題,通過利用預訓練模型BERT初始化文本向量表征,將文本數據空間轉換到特征空間,提取詞之間的高維語義關系,然后將得到的文本特征向量輸入到自編碼網絡訓練特征映射編碼器,通過自編碼網絡的自監(jiān)督學習完成編碼器Encoder的訓練,最后將編碼器和聚類模型相結合。利用聚類網絡K-Means計算每個樣本點的估計概率分布Q和輔助目標分布P,利用KL散度作為損失函數聯合訓練編碼器Encoder和聚類模型。本文的模型在4個公開的數據集上,聚類準確率ACC和標準互信息NMI基本都高于對比實驗結果,在數據集SearchSnippet上,通過t-SNE方法對文本數據進行特征降維到2維空間,進行可視化,可以看到本文提出的模型的聚類效果更好,類之間的分割更加明確,本文的研究和提出的模型具有一定的意義。