張 震 湯 鯤 邱秀連
(1.武漢郵電科學研究院 武漢 430000)
(2.南京烽火天地通信科技有限公司 南京 210000)
移動互聯網的發展與智能手機的普及極大地促進了社交軟件的發展,根據第48 次《中國互聯網絡發展狀況統計報告》[1],截至2021 年6 月,我國網民規模達10.11億,手機網民規模達10.07億。網絡中每天都在產生海量的數據,其中存在大量的短文本數據,如微博、評論以及視頻彈幕等。這些短文本數據中蘊藏著巨大的商業價值,對這些數據進行主題挖掘,從海量的數據中挖掘潛在的主題,使得用戶無需瀏覽全部的數據,通過生成的主題描述即可快速掌握文本的大致內容。
在對這些互聯網數據進行主題挖掘時,由于其數據增長快,涉及主題復雜多樣,使用有監督學習模型難以發現新的主題,且需要大量的人工參與。因此,對此類數據的主題挖掘多數采用無監督學習模型其中,其中,應用最多的就是LDA[2]主題模型,LDA 模型通過建立文檔、主題、詞的三層概率分布來挖掘主題,但是LDA 在短文本建模上存在詞匯稀疏問題,導致模型效果很差。為了解決這個問題,國內外學者對LDA 模型作了大量的改進,文獻[3]提出了Twitter-LDA模型,其認為每一個用戶存在一個用戶-主題矩陣,生成主題時從該矩陣生成,從而表現出不同用戶的關注主題。黃波[4]等提出了基于向量空間模型和LDA 模型相結合的微博客話題發現,其主要思想是將LDA 模型提取的文檔間語義信息和基于VSM 的Tf-idf 權重詞向量融合在一起,計算文本間相似度。張景[5]等使用CBOW-LDA 模型,來降低LDA 模型建模輸入的文本數據緯度。石磊[6]等提出一種基于RNN 和主題模型的突發話題發現方法(RTM-SBTD),使用RNN和IDF 來學習詞的關系,同時通過構建詞對解決短文本稀疏性問題。高鑫[7]等提出了一種使用Word2Vec 提取詞向量特征,再通過基于KNN 改進的密度聚類算法來進行主題聚類。
本文針對短文本數據集特征,提出了一種結合BERT 和 LDA 的 主 題 特 征 提 取 方 法(BERT-LDA)。BERT是近年來在NLP領域內取得卓著成效的技術,通過雙向深層的Transformer模型有效提取文本的語義特征。本文使用BERT 對短文本進行語義特征提取,將提取出的詞向量輸入K-means進行相似文本聚類,最后將聚類結果作為語料使用LDA模型進行主題建模。
BERT(Bidirectional Encoder Representation from Transformers)[8]是GOOGLE 在2018 年提出的深度學習模型,傳統的Word2Vec[9]模型是基于靜態詞嵌入,無法學習到詞在不同語境的文本特征,為了解決這個問題,ELMO,BERT 等預訓練模型相繼被提出。BERT 使用如圖1 所示的雙向多層Transformer作為編碼器來捕捉詞的上下文信息,通過對大規模語料進行訓練從而得到一個通用的語言模型,之后對預訓練BERT 模型進行微調,即可滿足下游的各種任務。

圖1 BERT模型結構
Transformer[10]模型接收的輸入是一個詞向量序列x=(x1,x2,…,xn),其中xi表示單個詞的向量,因此在使用Transformer訓練前,需要將原始語料轉換成模型能夠識別的向量序列,為了使BERT 能夠處理多種NLP 任務,并且更好地提取語義特征,BERT 在提取特征向量前使用三層Embedding 層對語料進行不同維度的編碼,最終的輸入表示由三層Embedding求和得到。
此外,BERT 還會在原始語料中插入一些特殊字符,其中,[CLS]和[SEP]為特殊符號,[CLS]用以標識語料的開頭,用于學習整條語料的語義特征,可以用于分類任務,對于其他類型任務可以忽略,[SEP]用以區分語料中的不同句子。Token Embeddings 表示的是字向量或詞向量,可通過查表獲得,用以表征詞本身,本文使用字向量;Segment Embeddings 用于區分字所屬的句子,E0表示字來自于句0;Position Embedding表示字的位置信息。
2.2.1 預訓練(Pre Training)
在得到語料的輸入表示后,BERT 使用掩碼語言模型(Masked Language Model,MLM)和下一句預測(Next Sentence Prediction,NSP)兩個無監督任務進行訓練。
傳統語言模型如N-gram 是根據上文預測當前詞,為方便計算概率,其假設第n個詞只與前n-1個詞有關,而BERT 是雙向的Transformer 模型,為了能夠同時學習到上下文的雙向語義特征,BERT 提出了MLM 模型,在訓練時,模型會隨機掩蓋掉15%的字,即將真實的字以[mask]替代,之后用其對應的上下文來預測真實的字。
此外,BERT作為預訓練模型,需要適用于下游的多種NLP任務,除了文本分類,閱讀理解,序列標注等任務外,還需要滿足問答等任務,這就需要BERT 不僅能夠學習到字詞間的關系,還需要學習到句子之間的關系,因此,BERT 提出了NSP 任務,將每條句子的語義特征作為分類特征,從而判斷兩句話是否存在問答關系。
2.2.2 微調(Fine Tuning)
BERT通過在超大規模語料進行訓練得到了上游的預訓練模型,谷歌官方提供了不同版本的BERT模型,主要分為Base版和Large版,使用者可以根據自身情況選擇對應的預訓練模型,之后在微調階段,針對不同類型的下游任務,只需要在預訓練模型基礎上增加相應的處理,如分類任務,可以使用句首[CLS]的語義特征作為句向量,后接Softmax或者LSTM等作為分類器。
LDA 主題模型是由Blei,David M.等于2003 年提出的,本質上是一個包含文檔-主題-詞匯的三層貝葉斯模型,可用來分析文檔的隱含主題,從而得到文檔的主題分布以及主題的詞匯分布,LDA模型的概率圖如圖2所示。

圖2 LDA模型概率圖
其中,M代表語料中文檔的個數,K代表語料中主題的個數,實際訓練中K值可作為超參數進行調整,θm是第m篇文檔的主題分布,為多項式分布,α是文檔-主題分布的Dirichlet 先驗分布,φk是第k個主題的詞匯分布,也為多項式分布,β是主題-詞匯分布的Dirichlet 先驗分布,Zm,n代表第m篇文檔的第n個詞匯所屬的主題,wm,n代表第m篇文檔的第n個詞匯,此外,文檔與文檔之間,主題與主題之間相互獨立。
從圖2 可知,LDA 模型的生成過程主要由兩個子過程組成,具體生成過程如下所示。
LDA模型:
1)首先生成主題-詞匯分布,根據第k個主題的Dirichlet 先驗分布生成第k個主題的詞匯分布φk。
2)生成文檔-主題分布,根據第m篇文檔的Dirichlet先驗分布生成第m篇文檔的主題分布θm。
3)根據2)中得到的主題分布θm得到一個主題編號k,再根據主題k的詞匯分布φk生成詞wm,n。
在對短文本進行主題分析時,由于短文本中詞匯稀疏,包含的語義特征不明顯,使得LDA 模型在生成主題分布時效果很差。本文提出了適用于短文本主題挖掘的BERT-LDA 模型,BERT-LDA 模型由語義特征提取、特征聚類和主題挖掘三個部分組成。
2.4.1 語義特征提取
BERT 模型第一步會對原始數據進行三層Embedding,插入[CLS]和[SEP]標識,Token Embedding 層為字向量,Segment Embedding標識所屬句子,其值為當前字所在句子在語料中的序號,取{0,1,2,…},Position Embedding 為位置向量Si=i,將三層Embedding 值累加即可得到編碼層輸出,之后輸入BERT 模型進行詞向量提取,得到最終的特征向量,根據BERT原理,使用作為整條文本的語義特征進行聚類。
2.4.2 特征聚類
使用K-means[11]算法進行文本聚類,先隨機選擇K條樣本作為初始聚類中心,計算每條樣本xj到每個聚類中心的距離,該距離使用余弦相似度來衡量,計算公式如下:
計算完距離后,對每個聚類簇重新計算聚類中心,重復上面操作,直到達到最小誤差或者最大迭代次數。
最后,將每個聚類簇中的文本合并成一條長文本,對每條文本作分詞處理,形成語料,使用LDA模型對語料進行主題建模,求解LDA 模型,就是求解聯合分布,由于詞分布是已知數據,因此我們需要求出的是條件概率分布。
2.4.3 主題挖掘
本文采用Gibbs 采樣算法[12]進行采樣求解,獲取最終的主題分布。將語料中任意一個詞的位置記為i,i代表坐標(m,n),對應第m篇文檔的第n個詞,代表去除位置為i的詞,根據貝葉斯理論,我們可以得到對應的Dirchlet 后驗分布為
其中為文檔-主題和主題-詞匯的多項式分布,根據Gibbs采樣算法,我們有
根據Dirchlet分布的數學期望公式可得到
困惑度[13]是評價語言模型好壞的一個重要指標,它的基本思想是給測試集句子賦予更高概率值的語言模型更好,即當語言模型訓練好后,對測試集進行測試,句子出現概率越大,則證明模型效果越好,困惑度越低,其具體計算公式如式(7)所示。
其中,Dt為測試集數據,p(wmt)為模型在第m篇文檔中產生詞wmt的概率,Nm為第m篇文檔中詞匯的個數。
本文采用的數據集為真實微博數據,使用Python爬取體育、游戲、時政、科技、財經、娛樂等多個類別話題的微博博文,同時,為了驗證BERT-LDA模型在短文本主題挖掘上的效果,從爬取的博文中篩選長度在200 字符以下的博文,構成最終實驗所用的數據集,共155724條博文。
由于LDA 模型進行主題建模時使用的是詞袋模型,停用詞沒有意義,無法將其歸屬到任何主題中,因此將文本進行分詞[14]并將停用詞去除,所用停用詞[15]為哈工大、川大、百度等開源的停用詞表。
訓練BERT_LDA 模型時,設置BERT 識別句子最大長度為200,聚類簇數K為5000,隨機劃分15%數據作為測試集,以LDA 模型,BTM 模型作為對比,同時,為了觀測主題數對模型效果的影響,設置主題數分別為10、20、30、40、50 進行實驗,實驗結果如圖3所示。

圖3 主題數對困惑度的影響
由圖3 可知,LDA、BTM 和BERT-LDA 這三種模型在不同主題數下困惑度均不同,總體來看,LDA 模型的困惑度高于BTM 和BERT-LDA 模型,這證明LDA 模型在短文本建模上的效果確實不好,BTM 模型的困惑度雖然低于LDA,但是總體仍是高于BERT-LDA 模型,證明BERT-LDA 模型能夠取得更低的困惑度,效果要好于LDA 和BTM 模型。
本文提出了一種基于BERT 和LDA 的短文本主題挖掘模型,針對LDA 模型在短文本建模上存在的詞匯稀疏問題,提出采用BERT 預訓練模型對短文本進行語義特征提取,通過聚類的方法將短文本聚合成長文本,最后輸入到LDA 模型中進行主題建模。通過對短文本數據的實驗分析,驗證了本文所提算法的有效性,相比傳統的主題模型具有更低的困惑度。
同時本文方法仍存在不足,例如,Bert 提取特征向量和K-means聚類這個過程耗時較長,如何優化算法,降低算法運行時間這是本文后續的研究方向。