陳可嘉, 夏瑞東, 林鴻熙
(1. 福州大學(xué) 經(jīng)濟(jì)與管理學(xué)院, 福州 350108; 2. 莆田學(xué)院 商學(xué)院, 福建 莆田 351100)
隨著互聯(lián)網(wǎng)上電商評論數(shù)量的激增, 已引起商家和企業(yè)的廣泛關(guān)注. 獲取在線電商評論有助于商家和企業(yè)更好地了解消費者真正的需求. 而這些存在于電商平臺的評論文本通常是無標(biāo)注的數(shù)據(jù), 由人工從無標(biāo)注的大量文本數(shù)據(jù)中獲取信息非常困難且耗時[1]. 隨著應(yīng)用場景的多樣化發(fā)展, 越來越多的文本數(shù)據(jù)需要更適用于特定場景的聚類劃分[2]. 電商產(chǎn)品的評論也屬于文本數(shù)據(jù), 因此對于產(chǎn)品評論, 可進(jìn)行無監(jiān)督聚類分析以了解用戶對產(chǎn)品具體信息的關(guān)注分布情況.
目前在關(guān)于文本聚類的研究中, 基于K-means的聚類是一種經(jīng)典的無監(jiān)督聚類算法, 通??捎糜谖谋揪垲惾蝿?wù)中[3], 其對大部分?jǐn)?shù)據(jù)都有較強的適用性, 并且計算簡單高效. 張蕾等[4]利用改進(jìn)的詞頻-逆文檔頻率算法并結(jié)合K-means++算法對科研機構(gòu)發(fā)表論文數(shù)據(jù)進(jìn)行了聚類應(yīng)用分析; 朱楓怡等[5]利用K-means算法對故事等類型的文本進(jìn)行了聚類應(yīng)用分析. 但K-means算法也存在明顯的局限性, 如需要預(yù)先給定最優(yōu)聚類數(shù)目K值以及無法有效處理高維數(shù)據(jù)等. 對于如何解決局限性, Bejos等[6]提出了一種改進(jìn)的快速分區(qū)聚類算法緩解無法有效處理高維數(shù)據(jù)問題, 以提高文本聚類效果; 張朝等[7]提出了一種K-means聚類最優(yōu)匹配算法解決傳統(tǒng)K-means算法對聚類初始點的選取和距離度量的計算異常敏感問題.
隨著文本聚類技術(shù)的發(fā)展, 深度聚類的應(yīng)用可提升聚類算法的性能. Hosseini等[1]提出了一種基于疊架構(gòu)的Autoencoder, 可減少數(shù)據(jù)的維度以提供強大的聚類特征. 同時, 深度嵌入聚類已成為無監(jiān)督聚類的主要方法[8], Xie等[9]提出的深度嵌入聚類(deep embedding clustering, DEC)算法, 將訓(xùn)練數(shù)據(jù)從高維空間到低維特征空間映射, 并在其中迭代優(yōu)化聚類目標(biāo); Ren等[10]使用了一種新的半監(jiān)督深度嵌入聚類方法, 其在特征學(xué)習(xí)過程中加入了成對約束, 使得在學(xué)習(xí)到的特征空間中屬于同一簇的數(shù)據(jù)樣本彼此靠近, 而屬于不同簇的數(shù)據(jù)樣本彼此遠(yuǎn)離; Boubekki等[8]提出了在深度嵌入聚類算法上進(jìn)行自動編碼器與聚類的聯(lián)合學(xué)習(xí)和嵌入, 保證前者可從后者獲得的有價值信息中受益; 黃宇翔等[11]提出了基于集成學(xué)習(xí)的改進(jìn)深度嵌入聚類算法以及其對超參數(shù)λ的敏感性.
在文本聚類研究中, 使用預(yù)訓(xùn)練詞向量模型獲取詞向量是必不可少的部分, 對于預(yù)訓(xùn)練詞向量模型, BERT(bidirectional encoder representation from transformer)模型相比于Word2vec和Glove等模型可以得到考慮詞上下文信息且適用性廣泛的詞向量, 同時還能在具體任務(wù)中動態(tài)優(yōu)化詞向量[12]. 在針對主題分布與詞嵌入信息相融合的問題上, Liang等[13]提出了結(jié)合BERT和LDA(latent dirichlet allocation)主題模型以確定主題最佳分類數(shù); 文獻(xiàn)[14]提出了利用LDA模型、 詞嵌入模型Word2vec和Glove綜合獲得文本向量表示. 針對BERT預(yù)訓(xùn)練模型在聚類任務(wù)中的應(yīng)用, Hosseini等[1]提出了先使用改進(jìn)的預(yù)訓(xùn)練BERT模型進(jìn)行文本的向量表示, 然后進(jìn)行聚類分析; Mehta等[15]提出了基于BERT模型派生詞嵌入的聚類方法對大型文本數(shù)據(jù)集進(jìn)行聚類研究; Subakti等[16]使用了多種聚類算法, 包括K-means聚類、 深度嵌入聚類和改進(jìn)的深度嵌入聚類等融合BERT得出的文本數(shù)據(jù)表示進(jìn)行聚類研究.
但在評論的無監(jiān)督聚類工作中, DEC算法的K-means聚類層可能仍存在聚類數(shù)目K需要預(yù)先給定的情況, 以及聚類中心的初始化有很強的隨機性會影響整個DEC算法效果; 同時在預(yù)訓(xùn)練詞向量工作中, 較少考慮到評論中詞上下文信息與評論中主題特征的融合.
針對上述問題, 本文提出一種基于改進(jìn)DEC的評論文本聚類算法, 該算法結(jié)合了BERT和LDA模型作為預(yù)訓(xùn)練詞向量嵌入, 有效融合了句子嵌入向量和評論主題分布向量; 在K-means聚類層中, 通過主題連貫性的變化選擇合適的主題數(shù)作為聚類數(shù)目K, 同時將LDA模型得出的主題特征向量作為自定義聚類中心, 然后進(jìn)行聯(lián)合訓(xùn)練以增強聚類的準(zhǔn)確性.
本文基于改進(jìn)DEC的評論文本聚類算法流程如圖1所示, 其中包括: 數(shù)據(jù)集獲取與預(yù)處理; 基于BERT-LDA的數(shù)據(jù)集向量化表示; 改進(jìn)DEC算法; 評論文本聚類可視化分析.
圖1 基于改進(jìn)DEC的評論文本聚類算法Fig.1 Review text clustering algorithm based on improved DEC
本文使用Python從天貓商城(www.tmall.com)和京東商城(www.jd.com)中進(jìn)行評論數(shù)據(jù)集爬取, 以此進(jìn)行后續(xù)的產(chǎn)品評論聚類分析. 對于獲取的產(chǎn)品評論文本數(shù)據(jù)需要做如下預(yù)處理.
1) 重復(fù)數(shù)據(jù)剔除: 將重復(fù)的無效數(shù)據(jù)進(jìn)行剔除.
2) 去停用詞: 停用詞通常在評論中大量重復(fù)出現(xiàn), 卻沒有實際意義, 例如: “嗯、 了、 即、 不但、 終于”等, 將停用詞進(jìn)行剔除以獲得更有效的評論句.
本文利用獲取的無標(biāo)注評論數(shù)據(jù)集進(jìn)行基于BERT-LDA的數(shù)據(jù)集向量化表示, 主要流程如下: 1) 構(gòu)建BERT句子嵌入向量; 2) 構(gòu)建LDA主題分布向量; 3) 融合生成BERT-LDA數(shù)據(jù)集向量化表示.
1.2.1 構(gòu)建BERT句子嵌入向量
本文通過谷歌開源工具包BERT 模型訓(xùn)練產(chǎn)品評論數(shù)據(jù)集上的句子嵌入向量表示. BERT 模型具有很強的文本特征表示能力[16-17], 如圖2所示.
圖2 BERT模型Fig.2 BERT model
輸入包括3部分, 分別為位置編碼嵌入、 片段嵌入和字符嵌入. BERT的核心模塊是Transformer塊[18], 每個Transformer 共有12個注意力頭, 其隱含層大小為768.
本文使用開源的BERT-as-service工具加載預(yù)訓(xùn)練模型, 將預(yù)處理后數(shù)據(jù)集中的句子進(jìn)行編碼后, 取輸出層字向量的平均值作為句子的句向量. 將BERT句子嵌入向量Di定義為
Di=MEAN(T1,T2,…,Tn),
(1)
其中T1,T2,…,Tn表示輸出層的字向量.
1.2.2 構(gòu)建LDA主題分布向量
LDA主題模型用于推測文檔的主題分布, 它可以將文檔集中每篇文檔的主題以概率分布的形式給出. LDA主題模型認(rèn)為一個文檔由若干主題組成, 主題由數(shù)據(jù)集下相應(yīng)的特征詞構(gòu)成, 則可以描述對應(yīng)為m個文檔中, 具有n個特征詞,z表示為n個特征詞所對應(yīng)的主題. LDA主題模型如圖3所示.
圖3 LDA主題模型Fig.3 LDA topic model
LDA主題模型中各參數(shù)的含義如下:α表示評論-主題分布中的Dirichlet分布超參數(shù);β表示主題-詞分布中的Dirichlet分布超參數(shù);D表示評論總數(shù);N表示評論中總的詞語數(shù)量;K表示主題數(shù);θ表示評論-主題分布;φ表示主題-詞分布;z表示評論中詞語對應(yīng)的主題;w表示評論中的詞語.
LDA主題模型的聯(lián)合分布定義為
(2)
利用Gibbs Sampling算法進(jìn)行參數(shù)估計, 迭代抽樣直到收斂, 用公式表示為
(3)
1.2.3 融合BERT-LDA的數(shù)據(jù)集向量化
根據(jù)構(gòu)建的BERT句子嵌入向量和LDA主題分布向量, 采用向量拼接融合的方式, 將得到新表達(dá)的向量輸入[14]. 這種新的輸入向量, 既包含了評論的句子整體語義特征, 又包含了評論所具有的主題特征. 定義融合BERT句子嵌入向量和LDA主題分布向量的文本向量化表示Di,μ為
Di,μ={Di°μ},
(4)
其中°為向量拼接符號.
根據(jù)得到的基于BERT-LDA的數(shù)據(jù)集向量化表示進(jìn)行評論數(shù)據(jù)集的聚類任務(wù). 考慮到拼接后的向量存在高維稀疏的問題, 同時原始DEC算法的K-means聚類層存在需要預(yù)先給定初始聚類數(shù)目K值以及初始聚類中心具有隨機性等問題. 本文使用改進(jìn)的DEC算法, 主要包括: 1) 自動編碼器降維, 以學(xué)習(xí)無標(biāo)簽數(shù)據(jù)集高維向量降維后的特征表示; 2) 改進(jìn)聚類層, 在編碼器后堆積K-means聚類層, 以分配編碼器輸出到一個聚類組, 基于主題連貫性選擇初始聚類數(shù)目K, 同時使用LDA主題特征向量ω作為初始聚類中心; 3) 訓(xùn)練聚類算法, 以同時改善聚類層和編碼器.
1.3.1 自動編碼器降維
自動編碼器是一種無監(jiān)督式的特征降維方法, 其由兩部分組成, 分別為編碼器(Encoder)和解碼器(Decoder), 編碼器和解碼器均包括輸入層、 輸出層和隱藏層3層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu).
自動編碼器通過編碼器提取高維特征并降維處理輸出文本特征, 解碼器通過對稱的網(wǎng)絡(luò)結(jié)構(gòu), 對編碼器的輸入進(jìn)行重構(gòu). 針對需要不斷進(jìn)行迭代訓(xùn)練調(diào)整自編碼器網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)的過程, 訓(xùn)練過程將均方誤差(mean square error, MSE)[19]作為相應(yīng)的損失函數(shù), 以此獲取精確的低維度特征信息. 自編碼器中編碼器和解碼器過程可用公式表示為
Zi=f1(WeDi,μ+be),
(5)
(6)
其中Zi為編碼器提取的高維特征并降維處理輸出后的文本特征,X′為解碼器通過對稱的網(wǎng)絡(luò)結(jié)構(gòu)對編碼器的輸入進(jìn)行重構(gòu)的結(jié)果,We和Wh是權(quán)重矩陣,be和bh是偏置向量,f1和f2是映射函數(shù).
1.3.2 改進(jìn)的聚類層
原始DEC算法中, 聚類層存在需要人工給定聚類數(shù)目K值和初始聚類中心具有隨機性從而影響聚類效果的問題.
首先, 聚類數(shù)目K等價于一個確定主題建模中主題數(shù)量的參數(shù), 因此從LDA主題模型到K-means有一個自然的聯(lián)系. 基于此, 本文使用主題連貫性的變化確定最合適的主題數(shù), 以此作為K-means聚類層的聚類數(shù)目K. 主題連貫性主要用于衡量一個主題內(nèi)的詞是否是連貫的. 隨著主題數(shù)量的變化, 主題連貫性得分也逐漸變化, 因此利用主題連貫性的變化進(jìn)行主題數(shù)選擇時, 最合適的主題數(shù)目是當(dāng)主題連貫性最大時所對應(yīng)的主題數(shù).
采用的主題連貫性計算方法為: 先基于滑動窗口, 對主題詞進(jìn)行One-Set分割(一個Set內(nèi)的任意兩個詞組成詞對進(jìn)行對比), 再使用歸一化點態(tài)互信息(normalized pointwise mutual information, NPMI)[20]和余弦相似度[21]間接獲得連貫度. 其取值范圍為[0,1], 用于衡量同一主題內(nèi)的特征詞語義是否連貫, 其數(shù)值越高模型效果越好[22]. 歸一化點態(tài)互信息的計算公式為
(7)
其中:γ為設(shè)置的權(quán)重;P(wi,wj)表示包含wi,wj的文本與全部文本的比值;o′表示平滑因子, 是為了在計算中保持?jǐn)?shù)值穩(wěn)定性并避免零概率問題.
其次, 考慮初始聚類中心存在隨機性的問題, 使用LDA模型得出的主題特征向量ω作為初始聚類中心可有效反映其文本主題的劃分信息, 同時可避免K-means聚類層隨機選擇聚類中心而影響聚類效果. 其步驟如下:
1) 使用主題特征向量ω作為初始聚類中心ω=(ω1,ω2,…,ωK), 其中K為聚類數(shù)目;
2) 計算每個樣本數(shù)據(jù)Zi與K個聚類中心的距離, 將其劃分到距離最近中心點所在的簇中;
3) 重新計算每個簇中所有數(shù)據(jù)對象的平均值, 將其作為新的簇中心ω′, 用公式表示為
(8)
其中ci為每個簇中的數(shù)據(jù)對象;
4) 重復(fù)步驟2)和步驟3), 直到簇心不發(fā)生改變或達(dá)到最大迭代次數(shù).
使用基于主題連貫性選擇的聚類數(shù)目K, 并使用主題特征向量ω作為初始聚類中心的聚類層流程如圖4所示.
圖4 聚類層的聚類流程Fig.4 Clustering process of clustering layer
1.3.3 訓(xùn)練聚類算法
經(jīng)過自動編碼器進(jìn)行參數(shù)初始化得到降維后的潛在特征空間的文本特征Zi后, 預(yù)訓(xùn)練編碼器后堆疊聚類層, 從而形成聚類算法.為同時提升聚類和特征表示的效果, 利用聚類結(jié)果優(yōu)化編碼器和聚類算法的參數(shù), 進(jìn)行聚類算法的訓(xùn)練.因此本文將計算輔助目標(biāo)分布, 并根據(jù)算法聚類結(jié)果最小化KL(Kullback-Leibler)散度[9], 其流程為: 1) 每個樣本點屬于簇的概率得到樣本點的概率分布Q; 2) 使用輔助目標(biāo)分布從當(dāng)前高置信度分配中學(xué)習(xí)優(yōu)化聚類質(zhì)心.重復(fù)該過程直到滿足收斂條件.訓(xùn)練聚類算法的步驟如下.
1) 計算每個樣本點i屬于簇j的概率qij, 用公式表示為
(9)
得到樣本點的概率分布Q, 其中:zi表示樣本點的特征向量;μj表示簇心向量;v是t分布的自由度, 由于無法在無監(jiān)督環(huán)境中對驗證集上的v進(jìn)行交叉驗證, 并且學(xué)習(xí)它是多余的[23], 因此本文將其取值為1.
2) 目標(biāo)分布應(yīng)該具有以下屬性: 加強預(yù)測, 提升聚類精度; 更關(guān)注于高置信度的數(shù)據(jù)樣本; 避免大聚類組干擾隱藏特征空間.因此本文使用文獻(xiàn)[9]提出的輔助目標(biāo)分布P=(pij), 計算公式為
(10)
3) 聯(lián)合訓(xùn)練編碼器和聚類層.本文采用KL散度作為損失函數(shù)訓(xùn)練模型度量兩個分布Q和P之間的差異, 計算公式為
(11)
其中qij是樣本點i屬于簇j的估計概率值,pij是樣本點i屬于簇j的近似概率值.
1.4.1 評論文本二維聚類可視化
UMAP(uniform manifold approximation and projection)是一種數(shù)據(jù)降維可視化工具, 具有優(yōu)越的運行性能和可擴展性, 同時在可視化質(zhì)量方面保留了更多的全局結(jié)構(gòu)[24]. 因此, 本文使用UMAP工具對聚類后的數(shù)據(jù)集主題進(jìn)行可視化展示.
1.4.2 聚類結(jié)果可視化
UMAP獲取可視化聚類結(jié)果后, 使用詞云圖可以對文本數(shù)據(jù)中出現(xiàn)頻率較高的關(guān)鍵詞予以視覺上的突出, 形成“關(guān)鍵詞的渲染”, 從而過濾掉大量的文本信息. 因此, 本文同時選取每個主題下高頻的主題詞進(jìn)行詞云圖可視化分析, 以達(dá)到更直觀的聚類結(jié)果展示.
本文基于改進(jìn)DEC的評論文本聚類算法的整體步驟如下.
算法1基于改進(jìn)DEC的評論文本聚類算法.
輸入: 經(jīng)過預(yù)處理后的數(shù)據(jù)集En;
輸出: 聚類可視化結(jié)果;
步驟1) 將En輸入BERT模型, 根據(jù)式(1)得到BERT句子嵌入向量Di;
步驟2) 將En輸入LDA模型, 根據(jù)式(2)和式(3)得到主題分布向量μ和主題特征向量ω;
步驟3) 根據(jù)式(4)獲得融合BERT-LDA的數(shù)據(jù)集向量Di,μ;
步驟4) 配置自動編碼器的優(yōu)化器參數(shù)及迭代參數(shù);
步驟5) 根據(jù)式(5)進(jìn)行自動編碼器訓(xùn)練, 得出降維后的向量特征表示;
步驟6) 配置聚類算法的優(yōu)化器參數(shù)并定義損失函數(shù);
步驟7) 根據(jù)式(7)進(jìn)行主題連貫性選擇初始聚類數(shù)目K;
步驟8) 用主題特征向量ω作為初始聚類中心, 根據(jù)式(8)進(jìn)行K-means初始聚類;
步驟9) 根據(jù)式(9)計算每個樣本點i屬于簇j的概率分布Q;
步驟10) 根據(jù)式(10)計算輔助目標(biāo)分布P;
步驟11) 定義算法訓(xùn)練的初始損失值、 迭代參數(shù)及終止條件;
步驟12) 采用KL散度根據(jù)式(11)進(jìn)行輔助目標(biāo)分布P的更新, 度量兩個分布Q和P之間的差異;
步驟13) 檢驗終止條件;
步驟14) 使用UMAP和詞云圖輸出聚類可視化結(jié)果.
聚類分析是指應(yīng)用數(shù)學(xué)方法按照數(shù)據(jù)間的相似性進(jìn)行劃分的過程[25]. 針對目前電商產(chǎn)品中的在線評論文本多是無標(biāo)注的數(shù)據(jù), 而要從相應(yīng)的評論數(shù)據(jù)集中獲取有用信息, 就需要進(jìn)行相應(yīng)的評論聚類以獲取用戶對產(chǎn)品進(jìn)行評論的情況. 使用本文基于改進(jìn)DEC的評論文本聚類算法對電商產(chǎn)品手機的評論數(shù)據(jù)集進(jìn)行聚類, 并進(jìn)行聚類結(jié)果可視化分析. 本文選取天貓商城(www.tmall.com)和京東商城(www.jd.com)中的華為手機評論數(shù)據(jù)作為實驗研究數(shù)據(jù), 利用Python軟件爬取購買華為手機用戶對相關(guān)手機發(fā)表的在線產(chǎn)品評論. 爬取的手機型號是目前該品牌熱銷的旗艦款手機, 如mate40,mate40pro,p40,p40pro等. 其中包含19 869條初始數(shù)據(jù).
通過對獲取的產(chǎn)品評論數(shù)據(jù)集進(jìn)行重復(fù)剔除, 如出現(xiàn)的多條“此用戶沒有填寫評論!”等, 同時去除出現(xiàn)較多但與評論聚類無關(guān)的停用詞, 得到12 289條進(jìn)行實驗的評論數(shù)據(jù). 數(shù)據(jù)集示例列于表1.
表1 數(shù)據(jù)集示例Table 1 Examples of datasets
2.2.1 實驗環(huán)境
實驗的運行環(huán)境: 基于Windows10操作系統(tǒng), 處理器為i5-10500H, 16 GB內(nèi)存; 算法使用Python3.7編程語言實現(xiàn), 編碼工作通過Pycharm開發(fā)工具完成, 主要使用的庫有Gensim3.8.1,keras2.3.1等.
2.2.2 實驗參數(shù)設(shè)置
在進(jìn)行自動編碼器訓(xùn)練以及改進(jìn)DEC算法訓(xùn)練時, 將epochs分別設(shè)為50,100,150,200,250個進(jìn)行對照, 以評估其參數(shù)對算法結(jié)果以及訓(xùn)練時間的影響, 結(jié)果列于表2.
表2 設(shè)置不同epochs的運行情況Table 2 Operation status of setting different epochs
由表2可見, 當(dāng)設(shè)置epochs為200和250時, 輸出結(jié)果接近, 而運行250個epochs的時間遠(yuǎn)大于設(shè)置200個epochs. 因此自動編碼器訓(xùn)練時, 設(shè)置批量處理大小batch_size=128, 學(xué)習(xí)率為0.001, 訓(xùn)練迭代epochs為200, 優(yōu)化算法為Adam算法[26]. 同時, 在進(jìn)行改進(jìn)DEC算法訓(xùn)練時, 設(shè)置每200個epochs訓(xùn)練迭代更新目標(biāo)分布, 優(yōu)化算法為Adam算法, 損失函數(shù)為KL散度.
根據(jù)是否需要外部信息, 聚類評價指標(biāo)可分為外部聚類評價指標(biāo)[27]和內(nèi)部聚類評價指標(biāo)[28], 外部評價指標(biāo)旨在將聚類結(jié)果與預(yù)先確定的聚類結(jié)果進(jìn)行比較. 而在無監(jiān)督的聚類任務(wù)中, 通常并無預(yù)先確定的聚類結(jié)果, 因此內(nèi)部評價指標(biāo)更適用于無監(jiān)督聚類評價. 聚類的輪廓系數(shù)和CH(Calinski-Harabaz)指標(biāo)是推薦的聚類評價方法[29].
1) 輪廓系數(shù)是測量聚類簇內(nèi)一致性的指標(biāo), 用于評價算法聚類效果的好壞, 其取值范圍為[-1,1], 數(shù)值越高算法效果越好, 計算公式為
(12)
其中:a(i)表示樣本點與同一簇中所有其他點的平均距離, 即樣本點與同一簇中其他點的相似度;b(i)表示樣本點與下一個最近簇中所有點的平均距離, 即樣本點與下一個最近簇中其他點的相似度.
2) CH指標(biāo)通過計算簇內(nèi)各點與簇中心的距離平方和度量簇內(nèi)的緊密度, 同時也通過計算簇間中心點與數(shù)據(jù)集中心點距離平方和度量數(shù)據(jù)集的分離度. CH越大表示簇自身越緊密, 簇與簇之間越分散, 即更優(yōu)的聚類結(jié)果. 計算公式為
(13)
其中: tr(X)表示求矩陣X的跡;N為樣本數(shù);k為簇的數(shù)量;Bk和Wk分別計算組間協(xié)方差和組內(nèi)協(xié)方差, 其計算式為
(14)
(15)
其中xq為簇q中所有數(shù)據(jù)的集合,cq為簇q的中心點,c為樣本集合中心點,nq為簇q包含點的個數(shù).
將如下7種算法與本文算法在相應(yīng)的數(shù)據(jù)集上進(jìn)行對比實驗, 分別進(jìn)行5次實驗, 其輪廓系數(shù)指標(biāo)和CH指標(biāo)結(jié)果列于表3.
表3 不同算法的5次實驗指標(biāo)對比結(jié)果Table 3 Comparison results of 5 experimental indicators of different algorithms
1. TF-IDF+K-means: 是一種基線算法, TF-IDF獲取詞向量, 直接利用K-means聚類算法進(jìn)行聚類.
2. Word2Vec+K-means: 是一種基線算法, Word2Vec獲取詞向量, 直接利用K-means聚類算法進(jìn)行聚類.
3. BERT+K-means[15]: 該算法使用BERT模型得到相應(yīng)的文本特征表示, 再利用K-means聚類算法進(jìn)行聚類.
4. BERT+DEC[16]: 該算法使用BERT模型得到相應(yīng)的文本特征表示, 再利用DEC聚類算法進(jìn)行聚類.
5. BERTopic+AE+K-means[1]: 該算法基于BERT得到文本向量表示, 同時根據(jù)文檔概率分布獲得潛在主題, 再結(jié)合自動編碼器與K-means進(jìn)行數(shù)據(jù)的聚類.
6. BERT-LDA+原始DEC: 在本文基于BERT-LDA得到文本向量表示后, 結(jié)合未改進(jìn)DEC聚類算法進(jìn)行聚類實驗.
7. BERT-LDA+改進(jìn)DEC: 本文提出的聚類算法, 基于BERT-LDA得到文本向量表示, 再結(jié)合改進(jìn)DEC算法對數(shù)據(jù)進(jìn)行聚類.
由表3可見: 在算法1~算法3中, BERT+K-means的效果最好, 說明在評論的聚類中, 直接利用基于詞頻進(jìn)行表示的聚類效果較差, 而通過大量語料進(jìn)行預(yù)訓(xùn)練的BERT模型進(jìn)行向量表示可有效提高后續(xù)聚類的能力; 由算法3分別與算法4和算法5之間的對比可見, 結(jié)合深度嵌入聚類進(jìn)行訓(xùn)練比直接進(jìn)行K-means聚類可以得到更優(yōu)的效果; 同時可見, 在BERT模型的基礎(chǔ)上加上Topic主題的融合訓(xùn)練進(jìn)行聚類的效果更優(yōu); 算法6與算法7相比, BERT-LDA+改進(jìn)DEC算法相對于BERT-LDA+原始DEC算法, 其輪廓系統(tǒng)與CH指標(biāo)波動變化最大約為6%和10%, 而BERT-LDA+原始DEC算法中第2次實驗和第4次實驗的輪廓系統(tǒng)與CH指標(biāo)分別有約14%和19%的變化, 因此BERT-LDA+原始DEC算法的聚類結(jié)果差別波動較大, 且可能存在聚類結(jié)果較差的問題, 而本文基于BERT-LDA+改進(jìn)DEC算法, 輪廓系數(shù)在5次實驗中結(jié)果均大于0.2, 且均優(yōu)于未改進(jìn)的原算法, 因此, 本文算法在指標(biāo)更優(yōu)的基礎(chǔ)上也很好地改善了聚類結(jié)果差別波動較大的問題.
本文算法在指標(biāo)結(jié)果上均優(yōu)于其他對比算法, 說明本文提出的結(jié)合BERT-LDA進(jìn)行向量表示以及結(jié)合改進(jìn)DEC算法的有效性. 在無監(jiān)督聚類中, 該算法的聚類簇內(nèi)一致性更好, 同時該算法有更明顯的簇內(nèi)自身更緊密以及簇與簇之間更分散的效果.
首先采取向量融合的方式, 將得到的BERT句子嵌入向量與LDA主題分布向量進(jìn)行拼接融合, 得到基于BERT-LDA的融合向量輸入. 其中LDA模型得到的主題分布向量部分示例列于表4.
表4 主題分布向量部分示例Table 4 Some examples of topic distribution vector
其次進(jìn)行改進(jìn)DEC算法的構(gòu)建, 利用自動編碼器對上述的文本向量做向量降維, 再將編碼器后堆疊聚類層, 其中使用LDA模型得出的主題特征向量ω作為初始聚類中心, 并且通過主題連貫性的變化選擇最合適的主題數(shù)目K, 以此作為K-means算法的聚類數(shù)目K, 其主題連貫性隨主題數(shù)的變化曲線如圖5所示. 由圖5可見, 當(dāng)主題數(shù)為8時, 模型的主題連貫性最大, 因此可設(shè)置聚類的初始聚類數(shù)為8. 再輸入主題特征向量ω作為初始聚類中心, 進(jìn)行聚類算法的優(yōu)化訓(xùn)練.
圖5 主題數(shù)-主題連貫性變化曲線Fig.5 Change curves of topic coherence with number of topics
最后得到相應(yīng)的聚類結(jié)果, 并利用UMAP工具進(jìn)行聚類可視化效果展示. 產(chǎn)品評論文本聚類后的二維聚類可視化結(jié)果如圖6所示.
圖6 二維聚類可視化Fig.6 Two-dimensional clustering visualization
由圖6可見, 8個聚類的聚類效果可較明顯地從可視化圖中看出其劃分情況. 其中cluster1,cluster3,cluster4,cluster5,cluster6和cluster7聚類簇之間被較明顯的進(jìn)行了劃分; 而cluster0與cluster2之間存在一部分重合. 具體評論數(shù)據(jù)的聚類結(jié)果及其重合的情況可對聚類簇內(nèi)的內(nèi)容分析可得. 因此, 在8個聚類數(shù)目的基礎(chǔ)上, 選擇每個簇中評論高頻詞進(jìn)行詞云圖可視化分析, 從而達(dá)到更直觀的聚類結(jié)果展示. 得出的8個聚類結(jié)果的詞云圖展示如圖7所示. 篩選出每個聚類簇中的關(guān)鍵詞列于表5, 由此可得進(jìn)行聚類后的各簇中所包含的評論具體信息.
圖7 聚類結(jié)果的詞云圖展示Fig.7 Word cloud graph display of clustering results
由表5可見, 對手機評論進(jìn)行聚類后, 得到的8個聚類簇的關(guān)鍵詞結(jié)果可以有效體現(xiàn)用戶對產(chǎn)品評論的聚類結(jié)果. cluster0中主要的關(guān)鍵詞為拍照、 電池、 效果、 速度等, 而cluster2中的主要關(guān)鍵詞也有拍照、 效果、 續(xù)航、 電池等. 其拍照和電池同時出現(xiàn)在一個簇內(nèi), 體現(xiàn)了用戶在評論手機時, 通常將對拍照和電池的體驗同時發(fā)表評論, 也在一定程度上體現(xiàn)了用戶對拍照和電池方面的較高關(guān)注度. 這種情況也體現(xiàn)在二維聚類可視化圖6中cluster0和cluster2之間存在一部分重合的情況. 在cluster1中出現(xiàn)較多的關(guān)鍵詞為外觀、 手感、 顏值等, 體現(xiàn)了該簇中包含的評論主要涉及用戶在購買手機時對外觀的關(guān)注情況; cluster3中出現(xiàn)較多的關(guān)鍵詞為老爸、 家人等, 體現(xiàn)了該簇包含的評論主要涉及手機的使用者或購買對象的情況; cluster4中出現(xiàn)較多的關(guān)鍵詞為京東、 物流等, 體現(xiàn)了該簇中包含的評論主要涉及購買手機的物流運輸情況; cluster5中出現(xiàn)較多的關(guān)鍵詞為屏幕、 使用等, 體現(xiàn)了該簇中包含的評論主要涉及用戶在購買手機時對屏幕的關(guān)注情況; cluster6中出現(xiàn)較多的關(guān)鍵詞為華為、 國貨等, 體現(xiàn)了該簇中包含的評論主要涉及用戶在購買手機時對品牌的考慮情況; cluster7中出現(xiàn)較多的關(guān)鍵詞為系統(tǒng)、 鴻蒙等, 體現(xiàn)了該簇中包含的評論主要涉及用戶在購買手機時對系統(tǒng)的關(guān)注情況.
綜上所述, 本文提出了一種基于改進(jìn)DEC的評論文本聚類算法對評論數(shù)據(jù)進(jìn)行無監(jiān)督聚類, 可以應(yīng)用于在無標(biāo)注的產(chǎn)品評論數(shù)據(jù)集中更好地獲得用戶對于手機進(jìn)行評論的具體內(nèi)容分布情況. 通過利用BERT獲取句子向量表示以及LDA獲得主題分布向量表示進(jìn)而得到融合的數(shù)據(jù)向量表示; 進(jìn)一步將其輸入改進(jìn)DEC算法中, 根據(jù)LDA模型可以得到主題連貫性的效果評價確定聚類的初始數(shù)目, 并使用主題特征向量作為自定義聚類中心; 同時在模型中計算樣本點的概率分布Q, 再結(jié)合輔助目標(biāo)分布P, 利用KL散度作為損失函數(shù)聯(lián)合訓(xùn)練自動編碼器的編碼層和聚類層. 通過與對比算法在產(chǎn)品評論數(shù)據(jù)集上進(jìn)行無監(jiān)督聚類的比較, 結(jié)果表明, 本文算法在輪廓系數(shù)和CH指標(biāo)上均高于對比算法, 同時其聚類結(jié)果穩(wěn)定性也更好.