劉 昕,席永軻,何 杰,錢茛南,顧麗紅
(1.中國石油大學(xué)(華東) 計算機與科學(xué)技術(shù)學(xué)院,山東 青島 266580;2.中電科大數(shù)據(jù)研究院有限公司,貴州 貴陽 550022;3.中國電子科技集團公司信息科學(xué)研究院 提升政府治理能力大數(shù)據(jù)應(yīng)用技術(shù)國家工程實驗室,貴州 貴陽 550022;4.中國電子科技集團公司信息科學(xué)研究院,北京 100081)
隨著各行各業(yè)數(shù)字化進程的發(fā)展,各類文本信息不斷積聚,如何在大量的文本中提取用戶感興趣的、潛在有用的信息并且能夠針對不同層次、不同類別的信息進行分類處理對于用戶決策有重要的參考價值[1]。
文本挖掘[2](text mining,TM),又稱為文本知識發(fā)現(xiàn)(knowledge discovery in texts,KDT),是指從大數(shù)據(jù)文本中挖掘出隱含位置的潛在有用模式的過程,文本知識挖掘是涉及多個學(xué)科的研究領(lǐng)域,其中包括數(shù)據(jù)挖掘、機器學(xué)習(xí)、數(shù)據(jù)統(tǒng)計、自然語言理解、信息檢索、信息提取、可視化和數(shù)據(jù)庫技術(shù)等。隨著文本知識挖掘技術(shù)的不斷進步,相關(guān)算法已經(jīng)不僅僅局限于分類、文本特征提取等簡單模式的文本知識挖掘,也可以探索更豐富的文本知識挖掘,如主題發(fā)現(xiàn)、情感分析、語義規(guī)則發(fā)現(xiàn)、趨勢分析等。
但目前大多數(shù)機器學(xué)習(xí)與數(shù)據(jù)分析方法,都無法從多層次對同一語料數(shù)據(jù)進行不同粒度的快速高效知識挖掘,隨著網(wǎng)絡(luò)的不斷發(fā)展,互聯(lián)網(wǎng)上的信息越來越豐富,更多的文本數(shù)據(jù)已經(jīng)不單單僅限于一個層次,對單個層次的文本數(shù)據(jù)進行知識挖掘已不能滿足人們對知識的需要。因此,為了更加精確發(fā)現(xiàn)不同層次語料數(shù)據(jù)所表征的不同層次的文本知識,我們提出了一種基于多層次聚類的文本知識挖掘方法。
文本知識挖掘處理的并非是少量文本,而是大規(guī)模文本集合,可以發(fā)現(xiàn)隱藏在大量文本中的隱藏知識,通常是以前未知的模式或關(guān)系。這些模式和關(guān)系對于解答某個特定問題很有價值,或者是某用戶特別感興趣的知識。同時由于文本數(shù)據(jù)噪聲大及結(jié)構(gòu)不規(guī)則,要求文本知識挖掘算法具有較強的算法魯棒性[3]。聚類算法是數(shù)據(jù)分析與挖掘中的一個比較常見的手段,將其用于文本知識挖掘,進行文本知識聚類,可以將文檔數(shù)據(jù)集聚為不同簇,并且需要同一簇中的文本特征盡可能相似,不同簇中的文本特征盡可能差異大。因為中文文本數(shù)據(jù)大部分為非結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù),這使得基于結(jié)構(gòu)化數(shù)據(jù)的聚類算法不適用于文本聚類。
從1995年Feldman正式引入文本挖掘的概念之后,盡管只有20年左右,但國內(nèi)外有關(guān)文本知識挖掘的相關(guān)研究已經(jīng)得到了迅速發(fā)展。國內(nèi)外的各相關(guān)研究主要圍繞文本挖掘模型、文本特征抽取與文本中間表示、文本挖掘算法[4]等,目前在文本知識挖掘領(lǐng)域國內(nèi)外已經(jīng)形成了較為成熟的理論體系與技術(shù)手段,并已應(yīng)用于多個應(yīng)用領(lǐng)域。如在微博文本知識挖掘中,張茜等[5]提出一種用于評論集褒貶態(tài)度和方面觀點挖掘的新模型,該模型加入了表情符號層與文本情感層,實現(xiàn)評論集方面和褒貶態(tài)度的同步檢測。黃賢英等[6]根據(jù)詞形相同與詞義相近尋找微博短文本中的公共塊,提出一種基于多視角的微博短文本相似度算法。鐘文良[7]提出了一個基于Pitman-Yor過程模型的文本聚類算法用于文本知識挖掘。秦永彬等[8]結(jié)合用戶興趣與微博信息的特點,提出了一種文本聚類與興趣衰減的微博用戶興趣挖掘(TCID-MUIM)方法,具有更好的主題區(qū)分度,且更貼合用戶的真實興趣偏好。
隨著相關(guān)研究的不斷深入,文本聚類成為文本知識挖掘的一項關(guān)鍵技術(shù)。Hang等[9]提出了一種局部同步聚類算法(G-Sync算法),該方法基于重力學(xué)中的中心力優(yōu)化方法,將其用于文本知識挖掘并取得了良好效果。Zheng等[10]提出了一種基于語料庫的短文本聚類方法,主要在短文本文檔中給可能未出現(xiàn)的新單詞添加虛擬詞頻,該虛擬頻率是從給定該文檔中所有單詞的新單詞的后驗概率中獲得。Mohammad等[11]提出了一種目標函數(shù)和混合KH算法(稱為MHKHA)相結(jié)合的方法來解決文本文檔聚類問題。Ghai等[12]提出了一種有效的方法,即使在復(fù)雜背景下,也可以使用DWT和k-means聚類以及投票決策過程來提取文本區(qū)域。Soares等[13]提出了頻率Google Tri-gram測度,以根據(jù)比較文檔中術(shù)語的頻率以及作為附加語義相似性來源的Google n-gram語料庫來評估文檔之間的相似性,以此來改善文檔聚類的質(zhì)量。Mozhgan等[14]采用基于最小生成樹的聚類算法來發(fā)現(xiàn)文檔的各種子主題。Song等[15]提出了一種模糊控制遺傳算法(GA),并結(jié)合一種新穎的混合語義相似度度量進行文檔聚類用于知識挖掘。Alguliyev等[16]提出了一種基于聚類和優(yōu)化技術(shù)的兩階段句子選擇模型COSUM用于文本知識挖掘,取得良好效果。Xu等[17]提出了一種用于短文本聚類的靈活的自學(xué)卷積神經(jīng)網(wǎng)絡(luò)框架(稱為STC2),成功地合并更多有用的語義特征。Sangaiah等[18]提出了3種方法:在無監(jiān)督、半監(jiān)督技術(shù)和降維半監(jiān)督下,為阿拉伯文本文檔構(gòu)建基于聚類的分類器。Qiang等[19]提出了一種基于Pitman-Yor過程的新型模型來捕獲集群分布的冪律現(xiàn)象。Alanko等[20]設(shè)計并實現(xiàn)了一種節(jié)省空間的聚類算法框架解決無監(jiān)督元基因組聚類中的許多核心原語。Kushwaha等[21]提出了一種無監(jiān)督文本聚類的特征選擇方法,稱為基于鏈接的粒子群優(yōu)化算法(LBPSO)。
目前的中文文本知識挖掘只是在某些方面(如特征抽取)和某些應(yīng)用領(lǐng)域(如分類與聚類)展開,是零散的、孤立的。沒有同時從微觀和宏觀層次進行知識挖掘,不能多層次展示特定領(lǐng)域語料的特征。
數(shù)據(jù)分詞是把連續(xù)的漢字序列劃分成一系列單獨的詞語,之后將詞語作為文本數(shù)據(jù)的基本單位。例如“中印洞朗的對峙事件持續(xù)了兩個月”被分割為“中印/洞朗/的/對峙/事件/持續(xù)/了/兩個/月”的形式。本文使用的分詞原理是基于前綴字典實現(xiàn)高效的詞圖掃描,獲得所有可能的詞,由這些詞生成有向無環(huán)圖(DAG),然后再使用動態(tài)規(guī)劃算法以尋找最大概率路徑,最終找到基于詞頻的最大拆分組合。本文使用Jieba分詞,并將分詞結(jié)果用于后續(xù)分析。
分詞之后仍然存在大量的停用詞諸如“的”、“了”、“呢”等,和無意義詞、錯誤用法詞匯等,本文使用自定義詞表,包含超過4000個不同的停用詞、無意義詞、錯誤用法詞、特殊符號,基于詞表對分詞結(jié)果進行匹配,去除詞表中存在的詞匯,從而進一步得到文本具有實際意義的詞集。將文本進行預(yù)處理后得到高質(zhì)量的詞集,有助于提高后續(xù)文本知識挖掘效率和準確率。
本文所采用的詞向量訓(xùn)練模型建立在分布假說的基礎(chǔ)上,假設(shè)詞的語義由其上下文決定,上下文相似的詞,其語義也相似。本文中利用人工神經(jīng)網(wǎng)絡(luò)對詞向量進行訓(xùn)練與二維空間映射。
本文的詞向量訓(xùn)練過程為:首先將某一層次所有文本數(shù)據(jù)作為一個文檔集合,并對文檔集進行數(shù)據(jù)預(yù)處理操作;然后使用word2vec詞向量訓(xùn)練方法,為每個詞語構(gòu)建詞嵌入矩陣并將其所有詞語轉(zhuǎn)換成one_hot獨熱碼編碼;將詞嵌入矩陣送進word2vec中的CBOW神經(jīng)網(wǎng)絡(luò)模型中進行訓(xùn)練,同時將輸出的預(yù)測值與標簽計算loss值,并計算預(yù)測值與標簽之間的損失偏差用以優(yōu)化網(wǎng)絡(luò)[22];最終將訓(xùn)練后的詞嵌入矩陣采用TSNE算法進行降維,將其映射到二維空間。
為滿足多層次文本知識挖掘的任務(wù)需要,本文采用基于局部密度的快速聚類算法對數(shù)據(jù)文件進行聚類,將語義相近的文本數(shù)據(jù)聚為一類作為一個分類主題。
本文所采用的基于局部密度的快速聚類算法,通過計算數(shù)據(jù)節(jié)點的局部密度與相對距離來確定聚類中心與孤立點,然后對剩余數(shù)據(jù)節(jié)點進行聚類,其具體過程如下:
(1)針對基于word2vec詞向量訓(xùn)練后的文本數(shù)據(jù)集合Dc,將原始文檔集Ds中每條文本數(shù)據(jù)的關(guān)鍵詞抽取結(jié)果與Dc中的詞向量結(jié)合,將Ds中每條文本數(shù)據(jù)的關(guān)鍵詞對應(yīng)的Dc中詞向量坐標累加求和,得到每一條文本數(shù)據(jù)的二維坐標作為一個數(shù)據(jù)節(jié)點的坐標,將所有的數(shù)據(jù)節(jié)點作為數(shù)據(jù)節(jié)點集Dd;
(2)計算Dd中每個數(shù)據(jù)節(jié)點的局部密度,式(1)如下
ρi=∑jx(dij-dc)
(1)
其中,ρi為第i個數(shù)據(jù)節(jié)點的局部密度,dij為第i個數(shù)據(jù)節(jié)點與第j個數(shù)據(jù)節(jié)點間的歐氏距離,dc為截斷距離。
局部密度描述了一個數(shù)據(jù)節(jié)點周圍數(shù)據(jù)的聚集程度,局部密度越大說明該節(jié)點周圍的其它數(shù)據(jù)節(jié)點數(shù)量越多,分布越密集;反之則分布越稀疏。
(3)計算每個節(jié)點的相對距離,式(2)如下
(2)
其中,ρi是第i個數(shù)據(jù)節(jié)點的局部密度,ρj是第j個數(shù)據(jù)節(jié)點的局部密度,dij為第i個數(shù)據(jù)節(jié)點與第j個數(shù)據(jù)節(jié)點間的歐氏距離。
相對距離描述了一個數(shù)據(jù)節(jié)點與其它具有較大局部密度的數(shù)據(jù)節(jié)點的距離,當一個節(jié)點是局部密度最大的節(jié)點時,它的相對距離就是與該點距離最遠的節(jié)點的距離;當一個節(jié)點不是局部密度最大的節(jié)點時,相對距離便是大于該點局部密度的數(shù)據(jù)節(jié)點與該節(jié)點的距離。
(4)設(shè)定中心局部密度閾值Ld與中心相對距離閾值Rd, 統(tǒng)計Dd數(shù)據(jù)節(jié)點中局部密度大于Ld且相對距離大于Rd的數(shù)據(jù)節(jié)點作為聚類中心;若一個節(jié)點的局部密度值較小,但相對距離較大,則認為其是一個遠離群體的孤立點,在聚類過程中不對孤立點進行聚類操作。
(5)根據(jù)步驟(4)確定的聚類中心,將數(shù)據(jù)節(jié)點集合Dd中剩余點進行分配,分配原則為按照節(jié)點間距離將其分配給與其具有較高密度的最近節(jié)點相同的類簇。
針對不同規(guī)模的數(shù)據(jù),根據(jù)其數(shù)據(jù)分布,使用不同的方式對數(shù)據(jù)進行劃分,進行不同粒度的聚類,實現(xiàn)各個層次知識的挖掘。共有以下幾種形式:
(1)將所有數(shù)據(jù)歸為一個層次,即將所有數(shù)據(jù)進行最廣義文本知識挖掘。
(2)根據(jù)規(guī)范化后數(shù)據(jù)所屬的不同類別,可以根據(jù)不同類別層次將數(shù)據(jù)劃分為不同類別,并根據(jù)不同類別進行文本知識挖掘。
(3)若想獲取自定義類別數(shù)據(jù),首先自定義類別標簽關(guān)鍵詞,然后對所獲取規(guī)范化數(shù)據(jù)進行遍歷,并通過類別關(guān)鍵詞對每一條數(shù)據(jù)進行類別相似度賦值權(quán)重,最終通過權(quán)重大小獲取到自定義類別數(shù)據(jù)。
算法流程如圖1所示。
圖1 算法流程
(1)基于所獲取的原始文本數(shù)據(jù)進行數(shù)據(jù)預(yù)處理操作,主要包括基于前綴詞典的數(shù)據(jù)分詞、去停用詞及無意義詞、清除空值數(shù)據(jù)、數(shù)據(jù)規(guī)范化等操作。
(2)根據(jù)規(guī)范化數(shù)據(jù)的不同特征以及在數(shù)據(jù)表中所屬的不同類別,將所有規(guī)范化數(shù)據(jù)作為最廣義層次,根據(jù)規(guī)范化數(shù)據(jù)所屬類別將數(shù)據(jù)分為多類,每一類作為子級分類層次,根據(jù)規(guī)范數(shù)據(jù)的關(guān)鍵詞標簽將其歸為自定義分類層次。
(3)基于不同層次的文本數(shù)據(jù),采用word2vec算法進行文本詞向量訓(xùn)練,將文本數(shù)據(jù)處理為二維并在空間標識。
(4)基于詞向量訓(xùn)練結(jié)果,將每條文本數(shù)據(jù)的關(guān)鍵詞抽取結(jié)果與詞向量結(jié)合,將關(guān)鍵詞對應(yīng)的詞向量坐標求和,作為一個數(shù)據(jù)節(jié)點的坐標。
(5)計算所有數(shù)據(jù)節(jié)點的相對距離,并不斷動態(tài)更新截斷距離。通過計算每個數(shù)據(jù)節(jié)點的局部密度與相對距離確定各個聚類中心,并根據(jù)各個聚類中心,將不同數(shù)據(jù)聚為一類,保存聚類結(jié)果。
(6)針對不同層次的文本聚類結(jié)果進行各層次文本知識挖掘。針對最廣義層次的文本知識挖掘可在已獲取全體數(shù)據(jù)的基礎(chǔ)上對其劃分為多個主題,實現(xiàn)其各主題事務(wù)的劃分;針對子級分類數(shù)據(jù)的文本知識挖掘可發(fā)現(xiàn)下一層次主題分類;針對自定義層次的文本知識挖掘,可針對某一個具體事件進行知識分類,發(fā)現(xiàn)該事件中存在的具體細節(jié)。
本文采用訴求數(shù)據(jù)進行測試,其中涉及一級到五級分類,共約30萬訴求工單數(shù)據(jù)。首先將文本數(shù)據(jù)進行預(yù)處理,然后采用word2vec進行文本詞向量的訓(xùn)練,將所得數(shù)據(jù)分詞結(jié)果簡化為K維向量空間中的向量運算,并最終映射到二維空間;通過所得文本詞向量,使用多層次文本聚類方法,針對各不同層次數(shù)據(jù),通過局部密度與相對距離的計算,自動挑選聚類中心,基于聚類中心將剩余數(shù)據(jù)按照空間距離進行聚類,實現(xiàn)不同層次的文本知識挖掘。
本文對基于局部密度的快速聚類算法中的截斷距離閾值進行設(shè)置,通過計算全部數(shù)據(jù)節(jié)點間的歐式距離,取其平均距離作為截斷距離。若截斷距離閾值設(shè)置較大,則所有數(shù)據(jù)就會聚為一類。若截斷距離閾值設(shè)置較小,則聚出類別過多,無參考價值。
3.3.1 最廣義層次知識挖掘
對全部實驗數(shù)據(jù)分詞并進行詞向量訓(xùn)練之后,使用基于局部密度的快速聚類算法對表達上下文關(guān)系的詞向量進行聚類,通過計算數(shù)據(jù)節(jié)點的局部密度與相對距離來確定聚類中心與孤立點,并對剩余數(shù)據(jù)節(jié)點進行基于局部密度的快速聚類,將語義相近的數(shù)據(jù)聚在一起,可以將包含全部數(shù)據(jù)的語料基于語義分為多類,從而實現(xiàn)多主題文本知識挖掘。
采用多層次聚類知識挖掘方法,在已知所有數(shù)據(jù)的基礎(chǔ)上對其一步劃分為多個主題,實現(xiàn)其各業(yè)務(wù)科室管理事物的劃分。針對文本聚類結(jié)果,通過分析不同類別間的核心特征詞從而確定不同類別所代表的不同問題及其問題所屬部門,并將分析結(jié)果經(jīng)由專業(yè)業(yè)務(wù)人員進行測評準確性。
最廣義層次所采用的數(shù)據(jù)為所獲取全部語料數(shù)據(jù),約24萬條,對其進行數(shù)據(jù)聚類分析,得到數(shù)據(jù)聚類結(jié)果如圖2 所示。每一類別包括多條訴求數(shù)據(jù)。
圖2 最廣義層次聚類
聚類結(jié)果見表1,這些分類可以為每個部門辦理哪些類型的訴求提供建議。
表1 最廣義層次聚類結(jié)果分析
3.3.2 子級分類層次知識挖掘
子級分類層次所采用的數(shù)據(jù)為所獲取數(shù)據(jù)中拆遷安置類訴求數(shù)據(jù),約10萬條,對其進行數(shù)據(jù)聚類分析,得到數(shù)據(jù)聚類結(jié)果如圖3所示。每一類別包括多條訴求數(shù)據(jù)。
圖3 拆遷安置聚類
聚類結(jié)果見表2,通過所得各不同類別可對訴求數(shù)據(jù)進一步發(fā)現(xiàn)下一層次主題分類。
表2 拆遷安置類聚類結(jié)果分析
子級分類層次所采用的數(shù)據(jù)為所獲取數(shù)據(jù)中農(nóng)村工作類訴求數(shù)據(jù),約10萬條,對其進行數(shù)據(jù)聚類分析,得到數(shù)據(jù)聚類結(jié)果如圖4所示。每一類別包括多條訴求數(shù)據(jù)。
圖4 農(nóng)村工作聚類
聚類結(jié)果見表3,通過所得各不同類別可對訴求數(shù)據(jù)進一步發(fā)現(xiàn)下一層次主題分類。
表3 農(nóng)村工作類聚類結(jié)果分析
3.3.3 自定義分類知識挖掘
自定義層次知識挖掘主要以當前實驗數(shù)據(jù)的各末級分類數(shù)據(jù)進行聚類,其目的在于挖掘當前類別之下更加細致的問題分類,針對某一個事件相關(guān)數(shù)據(jù)聚類,可發(fā)現(xiàn)該事件中存在的具體細節(jié)問題。
自定義層次所采用數(shù)據(jù)為所獲取數(shù)據(jù)中末級分類農(nóng)村低保類訴求數(shù)據(jù),約5萬條,對其進行數(shù)據(jù)聚類分析,得到數(shù)據(jù)聚類結(jié)果如圖5所示。每一類別包括多條訴求數(shù)據(jù)。
圖5 農(nóng)村低保數(shù)據(jù)聚類
聚類結(jié)果見表4,可發(fā)現(xiàn)該末級分類中存在的具體細節(jié)問題,將挖掘出來的細致分類提供給相關(guān)人員便于發(fā)現(xiàn)社會中存在的微問題。
表4 農(nóng)村低保類聚類結(jié)果分析
自定義層次所采用數(shù)據(jù)為所獲取數(shù)據(jù)中末級分類商業(yè)噪音類訴求數(shù)據(jù),約5萬條,對其進行數(shù)據(jù)聚類分析,得到數(shù)據(jù)聚類結(jié)果如圖6所示。每一類別包括多條訴求數(shù)據(jù)。
圖6 商業(yè)噪音數(shù)據(jù)聚類
聚類結(jié)果見表5,可發(fā)現(xiàn)該末級分類中存在的具體細節(jié)問題,將挖掘出來的細致分類提供給相關(guān)人員便于發(fā)現(xiàn)社會中存在的微問題。
表5 商業(yè)噪音類聚類結(jié)果分析
本文提出了一種基于多層次聚類的文本知識挖掘。該方法主要包含5個模塊,即數(shù)據(jù)預(yù)處理模塊、層次劃分模塊、詞向量訓(xùn)練模塊、多層次聚類知識模塊、結(jié)果知識分析。這5個模塊構(gòu)建了該文本知識挖掘方法的整體架構(gòu)。其中,在層次劃分模塊將數(shù)據(jù)分為多個不同層次,根據(jù)規(guī)范化數(shù)據(jù)的不同特征以及在數(shù)據(jù)表中所屬的不同類別,使用不同的類別判別方式對數(shù)據(jù)進行劃分層次,使數(shù)據(jù)的類型更加明確。對不同層次的數(shù)據(jù)分別進行詞向量訓(xùn)練,根據(jù)訓(xùn)練結(jié)果進行距離計算、聚類,從而挖掘多個層次的知識,實現(xiàn)對事物的多個不同層次的多角度的刻畫。
實驗以訴求數(shù)據(jù)進行多層次文本知識挖掘?qū)嶒?,獲得了有價值的理論和實驗效果。在最廣義層次訴求數(shù)據(jù)中本文方法將已知所有數(shù)據(jù)劃分為多個主題,通過文本結(jié)果分析實現(xiàn)其各業(yè)務(wù)科室管理事務(wù)的劃分;在子級分類層次訴求數(shù)據(jù)中本文方法發(fā)現(xiàn)下一層次訴求的主題分類;在自定義層次的文本知識挖掘中本文方法針對某一個具體訴求事件進行知識分類,發(fā)現(xiàn)了該訴求事件下社會中所存在的具體細節(jié)問題,并經(jīng)由專業(yè)業(yè)務(wù)人員對本文方法所挖掘出來的結(jié)果進行測評。通過本文方法所挖掘出的訴求數(shù)據(jù)辦理部門分布、各子級分類及末級分類下的社會微問題與實際情況下業(yè)務(wù)進行對比評測發(fā)現(xiàn),基于多層次聚類的文本知識挖掘可準確對訴求工單數(shù)據(jù)進行多層次知識挖掘,并為政府及相關(guān)部門提供精準的分析和決策支持。