傅承濤,謝佳璇,牛永潔
(延安大學(xué)繼續(xù)教育學(xué)院,陜西延安716000)
隨著信息技術(shù)的發(fā)展和自媒體的迅速普及,各領(lǐng)域迅速積累了大量的文本資源,對(duì)這些文本資源的處理、挖掘進(jìn)而得到感興趣的知識(shí)顯得日益重要。文本聚類是根據(jù)文本內(nèi)容對(duì)文本進(jìn)行歸類處理,屬于非監(jiān)督學(xué)習(xí)的一種,文本聚類可以為信息檢索[1]、知識(shí)圖譜[2,3]、自動(dòng)摘要[4]、人機(jī)對(duì)話、知識(shí)問答等領(lǐng)域提供支持,因此文本聚類已經(jīng)逐漸成為自然語(yǔ)言處理和文本數(shù)據(jù)挖掘的研究熱點(diǎn)[5]。
對(duì)新聞?lì)愇谋揪垲惪梢詫?duì)相同類別的新聞?wù)归_研究,比如研究同一事件在不同時(shí)間、不同地點(diǎn)的處理方式不同,對(duì)研究不同國(guó)家、不同地區(qū)、不同政黨、不同時(shí)期政策的變化具有重要的參考價(jià)值。而且新聞?lì)愇谋揪垲惪梢猿霈F(xiàn)某些新聞之間內(nèi)在的關(guān)聯(lián),為社交網(wǎng)絡(luò)、知識(shí)國(guó)譜、知識(shí)問答等提供一定的數(shù)據(jù)支持。文本聚類首先要解決的問題是文本表示,目前對(duì)文本表示的方法有基于詞頻的TF-IDF模型[6],基于詞語(yǔ)關(guān)聯(lián)度的TextRank模型[7],這些模型詞語(yǔ)出現(xiàn)的頻率和詞語(yǔ)之間關(guān)聯(lián)度的大小對(duì)詞語(yǔ)進(jìn)行編碼,盡管解決了文本的表示問題,也一定程度上反映了文本的內(nèi)容,但是它們都基本沒有考慮文本的語(yǔ)義信息,而且由于采用詞袋的思想,往往會(huì)造成數(shù)據(jù)維度高的問題。
Mikolov等在2013年提出Word2vec模型,利用神經(jīng)網(wǎng)絡(luò)模型將詞語(yǔ)轉(zhuǎn)換到帶有一定語(yǔ)義特性的高維空間,Word2vec模型的詞語(yǔ)向量具有一定的語(yǔ)義信息,一定程度上可以進(jìn)行語(yǔ)義運(yùn)算,比如:國(guó)王+女人=女王,但Word2vec對(duì)文本編碼的過程中僅限于微觀,失去了詞序在語(yǔ)義表達(dá)方面的作用[8]。2014年Quoc Le等人提出了Doc2vec模型,該模型能從句子、段落或者文本中學(xué)習(xí)到固定長(zhǎng)度的特征表示[9],然后使用基于密度的聚類算法CFDF對(duì)數(shù)據(jù)進(jìn)行聚類[10-12]。為了得到最優(yōu)的參數(shù)組合,采用S_Dbw作為評(píng)估聚類的指標(biāo)[13],對(duì)CFDF算法中的兩個(gè)參數(shù)進(jìn)行了交叉試驗(yàn),最后使用t-SNE算法對(duì)數(shù)據(jù)進(jìn)行降維,在二維空間進(jìn)行可視化,對(duì)數(shù)據(jù)的原始類別與聚類后的類別做了比較。
為了對(duì)文本進(jìn)行處理,第一步需要對(duì)文本進(jìn)行矢量化,傳統(tǒng)的編碼方式為one-hot編碼。由于新聞?lì)愇谋緛碜圆煌念I(lǐng)域,并且文本篇幅一般比較短,這就造成詞語(yǔ)索引大,對(duì)每篇新聞采用one-hot編碼勢(shì)必造成文本矢量維數(shù)大,但矢量比較稀疏的問題,對(duì)后續(xù)算法的處理帶來困難,造成后續(xù)算法不容易學(xué)習(xí)文本模式的困難。因此,新聞?lì)惗涛谋静荒懿捎胦ne-hot編碼,需要采用詞嵌入的方法。為了有效的保留語(yǔ)義和詞序關(guān)系,詞袋模型和詞頻模型是無法完成的。Doc2vec是Mikolov和Quoc Le在2014年基于Word2vec模型提出的可以保留次序語(yǔ)義的語(yǔ)義模型,該模型在Word2vec模型的基礎(chǔ)上增加了一個(gè)段落標(biāo)識(shí)[14,15]。其中Word2vec模型有兩種類型,它們分別是連續(xù)詞袋模型(CBOW)和Skip-Gram模型,CBOW模型是以一個(gè)詞語(yǔ)上下文中的詞語(yǔ)作為模型的輸入來預(yù)測(cè)一個(gè)詞作為輸出,而Skip-Gram模型與CBOW模型相反,它以一個(gè)詞語(yǔ)作為輸入,來預(yù)測(cè)該詞上下文的詞。
CBOW模型在目標(biāo)詞的周圍使用滑動(dòng)窗口,將滑動(dòng)窗口內(nèi)的單詞作為模型的輸入,將該詞作為模型的輸出,CBOW模型如圖1所示。
Skip-Gram模型如圖2所示。
在不同的Word2vec模型上加入段落矢量(Paragraph Vectors)形成兩種不同的Doc2vec模型PV-DM和PV-DBOW,CBOW模型訓(xùn)練過程中加入段落向量就是PV-DM模型,段落矢量是詞語(yǔ)矢量的擴(kuò)展,對(duì)文本中段落像詞語(yǔ)一樣用矢量化表示,其長(zhǎng)度與詞向量相同,同一句中不同的單詞在訓(xùn)練過程中,段落矢量是共享的。
本文采用Doc2vec進(jìn)行詞嵌入以后,每個(gè)文本被表示成為一個(gè)多維的向量,文本樣本集就被轉(zhuǎn)換為一個(gè)矢量集,可用采用各種聚類算法對(duì)其進(jìn)行聚類。
傳統(tǒng)的K均值聚類算法因?yàn)樾枰孪戎付ň垲悅€(gè)數(shù)而且初始中心點(diǎn)的選擇直接決定聚類效果,并且類別歸屬使用距離決定,造成該類別的聚類算法只能對(duì)球形數(shù)據(jù)聚類,對(duì)其他形狀的數(shù)據(jù)聚類效果很差。針對(duì)傳統(tǒng)聚類算法的缺點(diǎn),對(duì)文本聚類采用基于密謀的聚類方法。
2014年Alex Rodriguez和Alessandro Laio在Science上發(fā)表了文獻(xiàn)[16],文中提出了一個(gè)基于數(shù)據(jù)密度的新算法,簡(jiǎn)稱為CFDF,該算法因?yàn)槠溆^點(diǎn)的新穎性和簡(jiǎn)單性,理解引起研究者的關(guān)注[17,18]。CFDF算法建立在兩個(gè)基本的假設(shè)上:
a)聚類中心周圍都是密度比其低的點(diǎn)
b)聚類中心周圍的點(diǎn)距離該聚類中心的距離相比于其他聚類中心來說是最近的。
對(duì)于需要聚類的每一個(gè)數(shù)據(jù)點(diǎn),要計(jì)算兩個(gè)量:點(diǎn)的局部密度和該點(diǎn)到具有更高局部密度的點(diǎn)的距離,而這兩個(gè)值都取決于數(shù)據(jù)點(diǎn)間的距離。
現(xiàn)有需要聚類的數(shù)據(jù)集合X={x1,x2,x3,…,xN},Is={1,2,3,…,N},其中共有N個(gè)數(shù)據(jù)點(diǎn),假設(shè)該數(shù)據(jù)集合有K個(gè)類別,分別為{c1,c2,…,ck},其中K≤N,算法的步驟如下:
1)計(jì)算數(shù)據(jù)集合中任意兩個(gè)數(shù)據(jù)點(diǎn)之間的距離。將距離數(shù)據(jù)存儲(chǔ)到矩陣dist中,矩陣dist是一個(gè)對(duì)稱矩陣,其中dist[i][J]=dist[J][i],dist[i][i]=∞。
2)計(jì)算每一個(gè)數(shù)據(jù)點(diǎn)的局部密度ρi,局部密度的計(jì)算有兩種方法,分別是截距局部密度和高斯局部密度。截距局部密度的計(jì)算公式如公式(1)所示。
(1)
其中函數(shù)x(z)如公式2所示
(2)
由公式(1)可知,一個(gè)數(shù)據(jù)點(diǎn)的局部密度就是距離小于dc的所有點(diǎn)的個(gè)數(shù),dc稱為截?cái)嗑嚯x,由用戶設(shè)定。很明顯截距局部密度是個(gè)離散值。因此可能會(huì)出現(xiàn)若干個(gè)數(shù)據(jù)點(diǎn)的截距局部密度相同的情況。
高斯局部密度由公式(3)計(jì)算。
(3)
高斯局部密度是一個(gè)連續(xù)值,同時(shí)滿足距離數(shù)據(jù)點(diǎn)xi小于dc的點(diǎn)越多,ρi值越大。
3)按照局部密度的大小降序排列,得到數(shù)據(jù)點(diǎn)的下標(biāo)序列qi。其中ρq1≥ρq2≥ρq3≥…≥ρqN,每個(gè)數(shù)據(jù)點(diǎn)的距離局部密度比它大的最小距離由公式(4)計(jì)算。
(4)
公式(4)沒有采用原來的計(jì)算公式是因?yàn)樵瓉淼挠?jì)算公式有將一個(gè)大的聚類分裂為兩個(gè)小的聚類的缺陷,這是對(duì)原算法的一個(gè)改進(jìn)和創(chuàng)新?,F(xiàn)假設(shè)有28個(gè)數(shù)據(jù)點(diǎn),根據(jù)上面的步驟計(jì)算得到每個(gè)數(shù)據(jù)點(diǎn)的(ρi,δi),那么數(shù)據(jù)中心就應(yīng)該是都比較大的點(diǎn),如果ρi比較大,而δi比較小,說明該點(diǎn)周圍的點(diǎn)比較多,但是距離比它局部密度大的點(diǎn)的距離比較小,說明這兩個(gè)數(shù)據(jù)點(diǎn)邊界不明顯,有可能屬于同一個(gè)類別。如果ρi比較小,而δi比較大,說明該點(diǎn)周圍的點(diǎn)比較稀疏,而且距離另一個(gè)聚類中心的距離比較近。該點(diǎn)可能是一個(gè)孤立點(diǎn),最好的點(diǎn)是ρi和δi都比較大,這樣的點(diǎn)應(yīng)該就是聚類中心。ρi和δi的意義如圖3所示。圖3中有28個(gè)數(shù)據(jù)點(diǎn),橫坐標(biāo)是每個(gè)點(diǎn)的局部密度,縱坐標(biāo)是每個(gè)點(diǎn)距離局部密度比它大的其他點(diǎn)的最小值。從圖中可以看出,數(shù)據(jù)點(diǎn)1和數(shù)據(jù)點(diǎn)10應(yīng)該是數(shù)據(jù)中心。數(shù)據(jù)點(diǎn)28應(yīng)該是孤立點(diǎn)。
4)聚類中心的選擇[19]。聚類中心的選擇應(yīng)該由ρi和δi共同決定,不同的文獻(xiàn)資料采用的方法不同,本文采用對(duì)ρi和δi加權(quán)的形式進(jìn)行調(diào)整,為了消除ρi和δi數(shù)量上的影響,首先對(duì)ρi和δi采用公式(5)歸一化,然后使用公式6進(jìn)行綜合參數(shù)的計(jì)算。對(duì)數(shù)據(jù)集中的每個(gè)數(shù)據(jù)點(diǎn)都采用公式(6)進(jìn)行計(jì)算,當(dāng)Y值大于一定的閾值的時(shí)候,才能被認(rèn)定為聚類中心。
(5)
Y=a*ρ+b*δ,其中a,b∈[0,1]
(6)
該算法采用a,b對(duì)局部密度和最小距離進(jìn)行平衡,摒棄原算法使用硬閾值的做法,使得算法可以動(dòng)態(tài)調(diào)整二者之間的關(guān)系,是算法的另一個(gè)創(chuàng)新點(diǎn)。
5)確定聚類中心后,其余數(shù)據(jù)點(diǎn)類別的指定。剩余數(shù)據(jù)點(diǎn)的類別標(biāo)簽的指定遵循當(dāng)前點(diǎn)的類別標(biāo)簽和高于當(dāng)前點(diǎn)局部密度的最近點(diǎn)的標(biāo)簽一致。所以剩余數(shù)據(jù)點(diǎn)類標(biāo)簽的指定按照局部密度值的降序順序指定,如果當(dāng)前點(diǎn)xi是聚類中心,跳過,否則尋找比xi局部密度大的離它最近的數(shù)據(jù)點(diǎn)的類別標(biāo)簽,如果找到的點(diǎn)的類別標(biāo)簽已經(jīng)指定,那么xi的類別就與找到的點(diǎn)類別標(biāo)簽一致,如果找到的數(shù)據(jù)點(diǎn)的類別標(biāo)簽還沒有指定,那么遞歸尋找該點(diǎn)的類別標(biāo)簽。直到所有的數(shù)據(jù)點(diǎn)的類別標(biāo)簽都被指定。
6)類別間邊界確定。首先為每個(gè)類簇定義一個(gè)邊界區(qū)域,即分配到該類簇但與其它類簇的點(diǎn)的距離小于dc(截?cái)嗑嚯x)的點(diǎn)的集合。然后為每個(gè)類簇找到其邊界區(qū)域中局部密度最高的點(diǎn),并以該點(diǎn)的密度作為閥值來篩選類簇。將邊界中小于閾值的點(diǎn)排除該類別作為孤立點(diǎn)對(duì)待。
為了評(píng)估聚類效果的好壞,需要尋找一個(gè)評(píng)價(jià)指標(biāo),文獻(xiàn)[20]對(duì)聚類常用的11種評(píng)價(jià)指標(biāo)進(jìn)行了測(cè)試,發(fā)現(xiàn)聚類評(píng)價(jià)指標(biāo)S_Dbw在不同類型的數(shù)據(jù)集(例如有噪聲,密度不均,聚類邊界模糊等問題)上都有比較好的魯棒性,能夠比較全面的對(duì)聚類算法進(jìn)行評(píng)價(jià)。
S_Dbw由公式(7)計(jì)算。
S_Dbw=Scat(NC)+Dens_bw(NC)
(7)
Scat(NC)由公式(8)計(jì)算。
(8)
Dens_bw(NC)由公式(9)計(jì)算。
(9)
其中D表示數(shù)據(jù)集,n表示類中數(shù)據(jù)集中數(shù)據(jù)點(diǎn)的個(gè)數(shù),NC表示數(shù)據(jù)集中簇的個(gè)數(shù),ci表示數(shù)據(jù)集中的第i個(gè)簇,ci表示簇Ci的中心,σ(ci)表示方差,‖σ(D)‖表示L2范數(shù)。f(x,ci)表示簇Ci聚類中心的局部密度,階段距離使用該簇的平均標(biāo)準(zhǔn)偏差。
從公式(7)可以看出S_Dbw使用Scat(NC)衡量簇內(nèi)的緊湊度,用Dens_bw(NC)衡量簇間的離散度。
實(shí)驗(yàn)的整個(gè)流程如圖4所示。
采用的數(shù)據(jù)來自搜狗新聞數(shù)據(jù)集,數(shù)據(jù)集的名稱是corpus_6_4000[21],在該數(shù)據(jù)集中共包含6大類新聞,每類新聞4000篇,每篇新聞長(zhǎng)度在幾百到幾千字不等,平均長(zhǎng)度為961。6類新聞分別是‘汽車’,‘文化’,‘經(jīng)濟(jì)’,‘醫(yī)療’,‘軍事’,‘體育’,分詞工具采用NLPIR漢語(yǔ)分詞系統(tǒng),Doc2vec由gensim工具包提供,參數(shù)min_count=5,epochs=15,window=8,dm=0,workers=4,sample=1e-5,seed=100,negative=5,文本矢量的維度分別采用了200和300以及平均長(zhǎng)度960,點(diǎn)與點(diǎn)的距離采用余弦距離,截?cái)嗑嚯xdc采用平均每個(gè)點(diǎn)的鄰居局部密度為數(shù)據(jù)總數(shù)的2%,從實(shí)驗(yàn)結(jié)果看,文本矢量的維度對(duì)聚類的效果有一定的影響,呈現(xiàn)當(dāng)文本矢量長(zhǎng)度在平均長(zhǎng)度以下時(shí),隨著矢量維度越大,聚類效果越好,但是計(jì)算量也越大,綜合運(yùn)算時(shí)間和聚類效果,本實(shí)驗(yàn)的文本矢量長(zhǎng)度取200。
實(shí)驗(yàn)過程中,對(duì)公式(6)中的參數(shù)a,b采用先粗調(diào)后微調(diào)的交叉驗(yàn)證方法。讓參數(shù)a,b從0開始以步長(zhǎng)0.1步進(jìn)到1,記錄每一對(duì)參數(shù)組合的S_Dbw值,對(duì)S_Dbw排序,選取其中最小的10個(gè)S_Dbw時(shí)的參數(shù)a,b的范圍,在此范圍內(nèi)再以步長(zhǎng)0.01對(duì)參數(shù)進(jìn)行交叉驗(yàn)證。選取第二輪交叉驗(yàn)證的S_Dbw的最小值時(shí)a,b的組合為最終參數(shù)。
在實(shí)驗(yàn)過程中,發(fā)現(xiàn)公式(6)中的參數(shù)a,b及閾值的指定非常關(guān)鍵,圖5是文本矢量維數(shù)為200,參數(shù)a為0.52,參數(shù)b為0.27時(shí)的局部密度和最小距離圖。圖中的平行于坐標(biāo)軸的虛線是參數(shù)a,b物理意義的直觀表示。
表1列出了文本不同維數(shù)一些參數(shù)及結(jié)果。
表1不同維數(shù)的參數(shù)及結(jié)果
雖然S_Dbw描述了聚類算法對(duì)數(shù)據(jù)點(diǎn)的聚類效果良好,但是聚類后的數(shù)據(jù)與真實(shí)數(shù)據(jù)的類別之間的差距如何?算法最后采用準(zhǔn)確率P、召回率R以及宏平均F值作為該聚類算法正確性的評(píng)判標(biāo)準(zhǔn),令KA表示數(shù)據(jù)集中文章本身所提供的真實(shí)類別,KB表示算法聚類后數(shù)據(jù)指定的類別,則P、R和F值的計(jì)算方法如公式(10)所示
(10)
當(dāng)文本維數(shù)為200,a=5.20,b=0.27,F(xiàn)值達(dá)到最大值89.24。
經(jīng)過大量的試驗(yàn),可以得出結(jié)論:對(duì)短文本聚類,影響因素比較多,首先是文本的矢量化,不同的矢量化方法對(duì)文本內(nèi)容進(jìn)行了不同的表達(dá),本文采用Doc2vec的方法,但該算法的參數(shù)眾多,不同的參數(shù)對(duì)聚類結(jié)果的影響還是比較大,CFDP算法聚類思想新穎,簡(jiǎn)單,但是算法中截?cái)嗑嚯x,參數(shù)a,b對(duì)該算法來說選取十分關(guān)鍵,目前為止還沒有自動(dòng)確定這些參數(shù)的良好辦法,需要通過大量的交叉實(shí)驗(yàn)來選取,這也是將來的一個(gè)研究方向。
聚類效果評(píng)價(jià)指標(biāo)S_Dbw的大小并不能絕對(duì)衡量聚類效果的好壞,通過表1可以看出,在數(shù)據(jù)維數(shù)發(fā)生變化的情況下,200維的S_Dbw就比900維的S_Dbw數(shù)值要大,因此只有在其他參數(shù)固定的情況下,S_Dbw越小才能說明聚類效果越好,聚類效果好與聚類結(jié)果是否正確基本呈現(xiàn)正比例相關(guān)。
從實(shí)驗(yàn)過程可以看出,文本聚類的核心問題是文本矢量化。文本矢量化要求能夠從語(yǔ)義上體現(xiàn)文本的定義,目前Doc2vec方法能體現(xiàn)一定的文本語(yǔ)義,但文本中的其他屬性(性別屬性、地域?qū)傩缘?還不能全面覆蓋,而且一個(gè)良好的聚類算法也是必需的,但距離度量、閾值設(shè)定等對(duì)算法都有一定的影響,這些問題將是以后研究的重點(diǎn)。
延安大學(xué)學(xué)報(bào)(自然科學(xué)版)2020年4期