范 縝,都云程,施水才
(北京信息科技大學 計算機學院,北京 100101)
目前,Twitter、雅虎、新浪微博、騰訊新聞、學習強國等互聯網應用廣泛普及,文本數量激增,發掘文本中有價值的信息對研究用戶喜好具有重要意義。處理文本常用的技術包括自動化文本分類和聚類。其中,文本分類屬于有監督學習方法,需要對文本進行標記,同時要對語料庫模型進行訓練;文本聚類(Text Clustering,TC)則屬于無監督學習方法,無需標記文本,只需將距離相近的文本聚類到同一個簇中[1],因此被廣泛應用于新聞信息聚合、垃圾郵件過濾、客戶問題分析、假新聞識別等領域。
為了進一步分析文本聚類技術,本文將分別對文本聚類的流程、聚類評價標準、文本聚類數據集、文本聚類算法等方面進行詳細介紹。
圖1 為文本聚類流程,具體包括待聚類文本、數據預處理、文本表示、選擇合適的文本聚類算法4 個步驟。其中,數據預處理步驟中通常使用分詞及去停用詞操作;文本表示步驟中包含特征提取、權值計算等操作。

Fig.1 Text clustering flow圖1 文本聚類流程
數據預處理步驟中通常使用分詞及去停用詞操作。由于文本是一種非結構化數據,需要先將其轉化為數字量化的結構化數據。
在分詞過程中,中、英文文本存在明顯差異,英文文本可使用空格切分各單詞,但中文文本只能依靠分詞器[2]。現階段常用的分詞器包括jieba、httpcws、盤古分詞、IKAnalyzer、Ansj、Paoding、清 華 大 學 的SEGTAG、中 科 院NLPIR 等[3]。
分詞后會進行去停用詞操作,該操作也是數據預處理的重要環節,可提升待聚類文本特征的質量,降低文本維度,提升文本聚類準確率。目前較為常見的停用詞通常為冠詞、介詞、代詞、連詞等,在中文文本中表現為“這”“你”“我”“的”“就”“什么”等,在英文文本中表現為“the”“a”“an”“so”“what”等。
特征提取目的是對數據集進行降維,即從數據集中提取出代表性子集。常用的特征提取算法包括TF-IDF、Word2Vec、Doc2Vec[4]等。其中,TF-IDF[5]為一種加權計算,表示某個詞在文本中的重要性,TF 表示詞在文本中出現的頻率,TF 值越大,表示該詞越代表性越強。例如,在以“手機”為主題的文本中,“手機”為高頻詞,具有很強的代表性,但“的”“你”“我”等常用詞出現的頻率也較高。因此,僅通過TF 值無法準確衡量某個詞在文本中的重要程度。為此,本文引入IDF 對詞進行衡量,當某個詞在當前文本使用次數多,而在其它文本中使用較少時,IDF 的值偏大,說明該詞對當前文本更為重要,具體數學表達式為:

其中,Wi代表第i個特征詞的重要性,Wi較大說明該特征詞為當前文本的高頻詞,對當前文本較為重要,但并非通用詞。此外,在使用TF-IDF 算法進行文本特征提取時,可設置閾值W獲取所需特征詞。
然而,在實際特征提取過程中,TF-IDF 未考慮詞語語義與語境等因素造成的影響,具有一定的局限性。為了解決該問題,Church 等[6]提出利用Word2Vec、Doc2Vec 算法基于語義與語境關系來提取文本特征。
文本聚類評價指標包括純度(Purity)、蘭德指數(Rand Index,RI)、調整蘭德指數(Adjusted Rand Index,ARI)、準確率(Precision)、召回率(Recall)、F 值(F-Score)、聚類精確度(Accuracy,AC)[7]等。
其中,準確率、召回率和F 值常用于評價文本分類結果,也適用于對文本聚類結果進行評價,具體計算公式如式(2)-式(4)。
準確率P計算公式如下:

其中,Sa表示待聚類文本集合中包含文本a的集合,Sb表示聚類結果中包含文本a的集合,準確率P表示聚類結果正確的百分比。
召回率R取值范圍在[0,1]區間,當R趨近1 則說明同類數據聚到同一個簇中。計算公式如下:

F值是綜合P、R的評估指標,當準確率P與召回率R矛盾時,可利用F值對結果進行評價,計算公式如下:

純度是一種易于理解的評價指標,具體計算公式如下:

其中,N為樣本總數,π={w1,w2,w3…,wk},wi表示第i個聚類簇,C={c1,c2,c3…,ck}表示文本集合,Purity的值位于[-1,1]區間,當該值越趨近1,代表聚類越準確。
調整蘭德指數ARI 取值范圍在[-1,1]區間,當ARI 的值趨近1,則說明同類數據聚到同一個簇中,具體計算公式如下:

其中,E[RI]為RI的期望。
蘭德指數RI將聚類定義為一系列的決策,具體計算公式如下:

其中,TP為將兩個相似文本歸入同一簇的正確決策,TN為將兩個不相似的文本歸入不同簇的正確決策,N表示文本數。
數據集是驅動文本聚類快速發展的重要因素,但目前尚未形成統一標準的數據集,通常使用文本分類數據集進行測評。常見的文本聚類數據集如表1 所示。其中,最具代表性且被廣泛使用的數據集為20 Newsgroup、Sougou、THUCNews[8]等。

Table 1 Common text clustering data sets表1 常見文本聚類數據集
20Newsgroup 數據集由18 828 篇文章組成,包括20 種話題,包含訓練集與測試集,被廣泛應用于文本分類與文本聚類;Sougou 數據集來源于Sougou Labs,包括搜狐新聞數據和全網新聞數據(SogouCA),涵蓋2012 年6-7 月國內國際的體育、社會、娛樂等18 個頻道的新聞數據,其中新聞文章數量共計1 245 835 個,能夠基本滿足中文文本聚類測評;THUCNews 是清華大學開源的文本數據集,由微博RSS 頻道2005-2011 年歷史數據篩選而成,包含金融、地產、科學、家裝、社會新聞等14 個類別共74 萬篇新聞文本,相較于20Newsgroup 數據集和Sougou 數據集,THUCNews不僅能夠實現文本聚類測評,還能提供demo 程序、運行參數、程序接口等,受到了研究人員的廣泛使用。
傳統文本聚類算法包括層次聚類算法、劃分聚類算法、密度聚類算法、網格聚類算法、模型聚類算法、圖聚類算法、模糊聚類算法[9-10]等。
層次聚類分為凝聚型層次聚類與分裂型層次聚類,此類算法的目的是將數據聚類成一顆以簇為節點的樹,分別從下向上,自上而下實現層次聚類[11]。常見的層次聚類算法包括BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)算法、CURE(Clustering Using Representative)算法等。其中,BIRCH 算法基于聚類特征樹(Clustering Feature Tree,CF-Tree)進行聚類,聚類過程中首先將樣本依次讀入建立樹結構,然后去除異常點(例如稀疏數據)得到較優的樹,最后根據質心進行聚類;CURE 算法屬于凝聚型聚類,可對大規模、多種形狀的文本數據進行聚類,并能夠檢測離群點。
劃分聚類的常用文本聚類算法包括K-Means、K-Medoids等,此類算法的思想是經過數次迭代重定位將待聚類數據劃分為指定數目的簇。
K-Means 算法簡單易懂、聚類速度快、操作便捷,但也存在以下不足:①需要用戶自行指定簇的數目;②無法處理非球形等不規則數據;③對離群點(噪聲)敏感;④結果不穩定,不同輸入順序或初始質心的選取都會造成聚類結果不穩定。
為了解決以上問題,Krishnapuram 等[12]提出K-Medoids 算法,相較于傳統K-Means 算法對噪聲的魯棒性更強,但運行速度較慢,時間復雜度高,因此只適用于數據量較小的文本聚類任務。
密度聚類算法包括DBSCAN 算法、OPTICS 算法、DENCLUE 算法[13]等,此類算法認為能夠通過待聚類數據整體分布的緊密程度來確定聚類結構。
DBSCAN 算法聚類速度快,可用于大規模數據聚類,無需手動設定簇的個數,但該算法對參數距離閾值和鄰域樣本數閾值較為敏感,當數據規模過大時,內存占用大,處理時間較長;OPTICS 算法通過對數據集合中的對象進行排序以得到有序的列表提取信息,生成數據聚類;DENCLUE 算法的思想是利用數學函數形式模擬每個數據對象,該算法在面對噪聲數據時仍具有良好的聚類效果,但對參數非常敏感。
網格聚類算法包括STING 算法、CLIQUE 算法、Wave-Cluster 算法[14]等,此類算法的思想是將數據空間劃分為網格單元,將對象映射到各單元中,并根據單元中對象的密度劃分不同的簇。
STING 算法將數據對象空間劃分為矩形單元,形成一個層次結構,使用自頂向下方法刪除每層中不相關的網格單元,以此實現數據聚類,具有運算效率高,時間復雜度低的優點,但聚類效果常受網格最底層數據粒度的影響,并且容易忽略網絡單元間的聯系;CLIQUE 算法適用于高維數據聚類,通過設置網格步長和密度閾值劃分空間和密集網格;WaveCluster 算法以處理多維信號的方式聚類數據對象,首先將數據空間劃分為網格結構,然后通過小波變換數據空間,最后在變換空間中對密集區進行簇劃分。
模型聚類算法包括高斯混合模型(Gaussian Mixture Model,GMM)、自組織映射算法(Self Organized Maps,SOM)[15]等,此類算法的思想是為每個簇構建一個模型,通過數據對象的分布情況計算模型參數,使用合適的模型完成聚類。
GMM 根據樣本數據概率密度函數將其劃分為獨立的簇,各個簇均根據特征混合高斯概率密度分布,基于相應的模型實現數據聚類。該算法以樣本分屬于不同類別的概率來展示聚類結果,但不同初始值會導致聚類簇數目不一致。
SOM 算法屬于一種無監督的神經網絡算法,通過自動尋找文本的內在規律與屬性,自適應地調整網絡結構參數,可獲得較高質量的聚類結果,但計算復雜度較高。
圖聚類算法包括AP(Affinity Propagation)算法、譜聚類(Spectral Clustering,SC)算法[16]等,此類算法的思想是將聚類問題通過鄰近度矩陣轉換為圖,以此劃分問題并實現聚類。
AP 算法將數據對象看作為各節點來構建樣本網絡,通過網絡中的各個邊傳遞節點間的“消息”,即吸引度(Responsibility)和歸屬度(Availability),以此計算聚類中心完成聚類任務;譜聚類算法將數據看作空間中的點,點與點之間用邊相連接,距離遠的點權重低,距離近的點權重高,通過切分數據點組成的圖完成聚類任務。
模糊聚類算法包括FCM(Fuzzy C-means)算法[17]等,此類算法的核心是利用“模糊集合理論”克服分類中的缺點,以模糊集合論為數學基礎實現聚類分析。
FCM 通過數據點的隸屬度來確定歸屬聚類簇,通過建立模糊矩陣及目標函數迭代,構建隸屬矩陣來確定數據所屬的類。該算法理論簡單、應用廣泛,但對噪聲敏感,容易陷入局部最優。
綜上所述,傳統的文本聚類算法各有優缺點,表2 為常見算法間的性能比較。

Table 2 Comparison of common text clustering algorithms表2 常見文本聚類算法比較
為了優化聚類效果,不少學者提出融合聚類算法。例如,Fredana 等[18]提出將K-Means 融合投票機制,以解決K-Means 無法確定簇個數的問題,有效提升聚類準確率。Hu 等[19]提出一種融合維基百科增強文本語義的文本聚類算法,在Reuters 數據集中的測評表明,該算法的聚類性能相較于傳統方法平均提升16.2%,但聚合型層次聚類算法在文本聚類時的合并操作是不可逆的。呂琳等[20]提出融合蟻群優化算法,使聚合型層次聚類算法能夠更好地選擇合并點,在UCI 的3 個不同的數據集中的測評表明,該算法的聚類準確率相較于傳統K-means 算法均存在不同程度的提升。Ai 等[21]利用粗粒度聚類融合Spark,建立兩層余弦相似性聚類模型,相較于HTD-LDA 模型在準確率方面提升19.5%。李玥等[22]提出融合改進量子粒子群優化算法和K-Means 算法,相較于傳統K-Means 算法在準確率、召回率及F 值方面均具有較大的提升。潘成勝等[23]為解決K-Means 局部最優解問題,融合改進的灰狼優化算法提高聚類的收斂速度、尋找能力和文本聚類準確率。Bezdam等[24]提出一種融合果蠅優化的K-means 算法,解決了初始質心隨機化的問題,在20Newsgroups 等數據集中的測試結果表示,該算法純度、準確率等指標相較于傳統K-means算法均存在不同程度的提升。表3 為部分融合聚類算法與傳統聚類算法的效果比較。
基于深度學習的文本聚類主要包括分詞、去除停用詞、利用模型得到原始詞向量、利用神經網絡等模型提取特征、文本聚類等步驟,如圖2所示。
現階段,深度學習已廣泛適用于圖像處理、語音處理、自然語言處理、計算機視覺等領域。常見的深度學習模型包括卷積神經網絡(Convolutional Neural Networks,CNN)、循環神經網絡(Recurrent Neural Network,RNN)、長短期記憶網絡(Long Short Term Memory,LSTM)、雙向長短時記憶網絡(BiLSTM)、Transformer 等。
5.2.1 卷積神經網絡
卷積神經網絡是一種具有卷積操作的前饋神經網絡,由卷積層、池化層和全連接層構成。其中,卷積層負責特征提取,利用權重矩陣與卷積核矩陣相乘得到各區域的特征,通常設置多組卷積核以獲得不同角度的特征;池化層也稱為下采樣層,主要對數據進行降維;全連接層則輸出最后結果。卷積神經網絡特征提取示意圖如圖3所示。
劉鼎立[25]提出一種基于改進卷積神經網絡的文本聚類方法。首先,通過Word2Vec 模型訓練得到原始特征詞向量,將該向量作為CNN 的輸入;然后,將卷積核寬度設置為詞向量的維數值以確保掃描范圍的完整性,并在卷積層中增加多個空洞率不同的卷積核,對文本特征進行精確提取;接下來,采用最大池化思想將卷積層中的最大向量作為關鍵特征;最后,通過全連接層輸出提取的文本特征。通過在Stack Overflow 英文新聞數據集中的測試結果表明,該方法相較于TF-IDF 提取特征的K-Means 算法,在準確率方面提升22.9%;相較于TF-IDF 算法僅將詞頻作為唯一的衡量標準,Word2Vec 模型能夠從語義角度提取準確代表原始文本的特征向量。

Table 3 Comparison between fusion clustering algorithm and traditional clustering algorithm表3 融合聚類算法與傳統聚類算法的效果比較

Fig.2 Flow of text clustering based on deep learning圖2 基于深度學習文本聚類流程

Fig.3 Convolutional neural network feature extraction圖3 卷積神經網絡特征提取
孫昭穎等[26]提出一種用于短文本聚類的改進卷積神經網絡框架。首先,利用Word2Vec 模型學習詞與詞之間的語義關聯,通過多維向量表示單個詞,將短文本轉化為多維向量,以此改進CNN 的輸入;然后,構建高度可滑動的卷積核以提高每個詞向量的準確性;最后,將其合理組合成一個完整的特征向量作為短文本的全部特征。該框架改善了短文本因數據稀疏性及高維度特性導致文本聚類準確率低、計算復雜度高等問題。通過由搜狐新聞標題組成的數據集上的測試結果表明,該框架的F 值高于70%,而傳統K-Means 算法F值僅為50%左右。
賈君霞等[27]提出一種基于Doc2Vec 和卷積神經網絡的特征提取方法。首先,通過Doc2Vec 的DM 模型訓練得到句向量,并將該向量作為CNN 的輸入;然后,計算卷積核寬度以獲取完整的句向量特征;接下來,采用最大池化思想將卷積層中最大向量作為關鍵特征;最后,通過全連接層輸出提取出的文本特征。通過搜狗新聞數據集上的測試結果表明,Doc2Vec+CNN 模型的準確率為77.6%,而Doc2Vec模型的準確率僅為69.4%。
5.2.2 循環神經網絡
循環神經網絡是一種用于處理序列數據的人工神經網絡,作為特征提取工具,RNN 通過模擬神經元的生理模式提取特征,實現模型層與層的相互連接。
由于在長語句應用中RNN 會“遺忘”初始內容信息,因此利用長短期記憶確保信息的完整性。具體的,LSTM在RNN 的基礎上增加了一個“門”裝置,通過控制“記憶門”與“遺忘門”實現上下文信息的有效存儲與更新;BiLSTM 則將前向的LSTM 與后向的LSTM 相互結合,在對詞向量進行特征提取時效果更好,能夠獲得更多的上下文語義關系特征。
萬昊雯[28]提出一種短文本聚類模型ST-CNN。首先,利用BiLSTM 挖掘短文本前后文信息,獲得深層語義關系依賴和向量化的文本特征;然后,結合改進CNN 模型提取更具代表性的文本低維特征。通過在微博和頭條的數據集上的測試結果表明,該模型相較于K-Means 聚類,在ARI與NMI指數方面均存在不同程度的提升。
表4 為部分基于深度學習文本聚類與傳統文本聚類算法的效果比較。綜上所述,基于深度學習的文本聚類方法可充分利用文本的前后文信息對詞向量進行語義擴展,并通過神經網絡提取低維且客觀的文本特征,以提高聚類效果。

Table 4 Comparison between text clustering based on partial depth learning and traditional text clustering表4 部分基于深度學習的文本聚類與傳統文本聚類效果比較
本文對文本聚類的研究背景、聚類流程、評價指標、常用數據集和文本聚類算法進行闡述與歸納,將文本聚類技術的發展分為以下3 個階段:①以傳統聚類算法K-Means為代表的文本聚類技術;②采用融合聚類算法的文本聚類技術;③基于深度學習的文本聚類技術。
在經過這3 個階段的發展后,文本聚類技術在理論研究方面取得了顯著成效,在應用實踐中獲得良好效果。但文本聚類技術的研究仍存在以下不足之處,有待進一步提高和完善:尚未形成標準化數據集和評價指標,不同研究項目所采用的數據集各不相同,難以橫向比較不同的研究成果;現有文本聚類算法的準確率仍未超過90%,無法適用于對聚類效果要求較高的應用場景。
目前,基于深度學習的方法在挖掘語義關系、提取文本特征、降低文本維度等方面具有明顯優勢,但如何在此基礎上深入挖掘深度學習在文本聚類相關技術領域的潛力,將是后期首要的研究方向。