秦澤浩
摘要:本文針對知乎網(wǎng)上問答文章的特點和信息處理方式,分析了使用連續(xù)詞包模型對這種文本進(jìn)行主題聚類的一般方式和步驟。包括文本預(yù)處理、文本處理的模型選擇和聚類分析算法的設(shè)計。在本文預(yù)處理階段,討論了對于中文的分詞和去噪等;在文本處理的模型選擇階段,本文著重討論了N-gram語言模型;在文本聚類階段,分析并描述了一種文本聚類算法。通過上述討論分析確定了本文最終應(yīng)用的方法。
關(guān)鍵詞:連續(xù)詞包(Continuous Bag of Words);文本主題聚類算法;改進(jìn) K-means
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)17-0226-03
計算機(jī)網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展為數(shù)據(jù)存儲、管理和挖掘帶來了巨大挑戰(zhàn)。云計算的出現(xiàn)更是形成了錯綜復(fù)雜、形式各異的數(shù)據(jù)源,將計算機(jī)應(yīng)用技術(shù)帶進(jìn)了大數(shù)據(jù)處理時代。借助分布式計算技術(shù)來實現(xiàn)大規(guī)模并行計算來提高數(shù)據(jù)處理技術(shù)和能是當(dāng)前計算機(jī)網(wǎng)絡(luò)發(fā)展的主流趨勢。
針對新興媒體的輿情云計算監(jiān)測系統(tǒng)的研發(fā)項目著眼于對新興媒體進(jìn)行數(shù)據(jù)挖掘分析,即時對社會熱點進(jìn)行抓取,對群體意見進(jìn)行分析總結(jié)。研究采用云計算技術(shù),通過按需開發(fā)個性化爬蟲的手段捕捉輿情信息,及時發(fā)現(xiàn)危害社會穩(wěn)定的言論和群體負(fù)面情緒并上報,對備受群眾關(guān)注的熱點話題 進(jìn)行時事追蹤反饋,而對無價值的小眾討論則將其忽視,以期為政府和企業(yè)管理者的決策提供準(zhǔn)確且及時的綜合信息和技術(shù)服務(wù),為提升政府的管理、服務(wù)水平提供有效策略支持。
本研究對基于連續(xù)詞包(Continuous Bag of Words)模型的文本主題聚類算法與K-means聚類方法進(jìn)行結(jié)合。研究建立的“詞包模型”將語言中的語法關(guān)系做了簡化,也就是將中文詞語看成一系列獨立詞,只關(guān)注文本中詞匯的統(tǒng)計性特征,在此基礎(chǔ)上運用深度神經(jīng)網(wǎng)絡(luò)算法將其轉(zhuǎn)化為N維向量,結(jié)合傳統(tǒng)三層神經(jīng)網(wǎng)絡(luò)算法做進(jìn)一步的處理,將網(wǎng)絡(luò)從三層分化為多層,在對向量的聚類分析中,使用改進(jìn)的K-means算法進(jìn)行了計算。本文運用改進(jìn)的計算方法對爬蟲子項目的語料庫進(jìn)行了聚類分析,得到了較好的驗證效果,并建立了穩(wěn)定的聚類模型。
1 理論基礎(chǔ)與算法設(shè)計
1.1 詞包模型的基本概念
詞包模型是一種在信息檢索領(lǐng)域中對于文檔的表示方法。它使用“詞包”的概念來表示文檔,文件中出現(xiàn)的詞匯被想象成是放在“詞包”里零散而獨立的對象。詞包模型的重點在于其對詞包中各個詞匯的看法。在詞包模型中,每個詞匯都是獨立的單位,不考慮其相依性。所謂“詞包”,事實上就是將一篇文檔的詞匯單列出來形成一個集合,但是這個集合無法表達(dá)關(guān)于一個詞在文檔中的詞頻的信息,這是因為這個集合不考慮任何語法以及單詞的順序。
1.2 對詞包模型的改進(jìn)——連續(xù)詞包模型
連續(xù)詞包模型是利用詞包模型訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一種訓(xùn)練方法,它將一篇文檔的上下文看成是由詞包中的詞構(gòu)成的一個有序的高維輸入,亦即將詞包模型進(jìn)行疊加,每一個輸入層代表一個單詞,達(dá)成輸入更多上下文信息的目的。連續(xù)詞包模型的訓(xùn)練輸入是某一個特征詞的上下文相關(guān)的詞對應(yīng)的詞向量,而輸出就是這特定的一個詞的詞向量。比如下面這句話:
“這樣 詞 與 詞 之間 就 可以 定量 的 去 度量 他們 之間 的 關(guān)系”
對于這句話來說,想要輸出“度量”這個詞,我們可以將上下文大小取值為4,即將上下文定義為:
“可以 定量 的 去 度量 他們 之間 的 關(guān)系”
特定的這個詞是"度量",也就是我們需要的輸出詞向量,上下文對應(yīng)的詞有8個,前后各4個,這8個詞是我們模型的輸入。由于我們使用的是詞包模型,因此這8個詞都是平等的,也就是不考慮他們和我們關(guān)注的詞之間的距離大小,只要在我們上下文之內(nèi)即可。
在本例中,我們的輸入是8個詞向量,輸出是所有詞的softmax概率(訓(xùn)練的目標(biāo)是期望訓(xùn)練樣本特定詞對應(yīng)的softmax概率最大),對應(yīng)的CBOW神經(jīng)網(wǎng)絡(luò)模型輸入層有8個神經(jīng)元,輸出層有詞匯表大小個神經(jīng)元。隱藏層的神經(jīng)元個數(shù)我們可以自己指定。通過DNN的反向傳播算法,我們可以求出DNN模型的參數(shù),同時得到所有的詞對應(yīng)的詞向量。這樣當(dāng)我們有新的需求,要求出某8個詞對應(yīng)的最可能的輸出中心詞時,我們可以通過一次DNN前向傳播算法并通過softmax激活函數(shù)找到概率最大的詞對應(yīng)的神經(jīng)元即可。
1.3 設(shè)計中的要素
本研究對于在連續(xù)詞包(Continuous Bag of Words)模型基礎(chǔ)上對文本主題進(jìn)行聚類提出了一整套分析流程。這套流程在中文分詞設(shè)計、文本去噪、語言模型、神經(jīng)網(wǎng)絡(luò)算法、.K-means聚類等分析的運用上做了創(chuàng)新性的改進(jìn),對于測試數(shù)據(jù)得到了一個穩(wěn)定的模型。
1.3.1 中文分詞設(shè)計
中文的特征是詞語之間沒有明顯的間隔,因此,針對中文文檔的分析,采用詞語級別拆分的方法進(jìn)行智能識別。這種算法對前綴詞典進(jìn)行高效掃描,根據(jù)句子中漢字所有可能成詞情況生成有向無環(huán)圖 (DAG),采用動態(tài)規(guī)劃查找最大概率路徑, 找出基于詞頻的最大切分組合。進(jìn)而在詞典中進(jìn)行比對,對于詞典中不存在的詞,再采用基于漢字成詞能力的HMM模型和Viterbi算法進(jìn)行智能識別。通過這樣的分詞處理,原始文本輝被處理成一系列由空格隔開的單個詞。接下來再使用神經(jīng)網(wǎng)絡(luò)算法來構(gòu)建語言模型,在構(gòu)建語言模型的過程中得到詞向量。
1.3.2 文本的去噪
在完成文本分詞之后,分詞得出的結(jié)果包含大量重復(fù)的虛詞及標(biāo)點符號。對于文本主題來講,這些信息與文章的主題無關(guān),在主題聚類中是不必要的,應(yīng)當(dāng)予以去除。
我們設(shè)計了一種對漢語中虛詞的處理方式。對于每次聚類中出現(xiàn)的大頻率詞,統(tǒng)計它在文章每句話當(dāng)中的分布,若分布得非常均勻,就當(dāng)作虛詞去掉。另外,標(biāo)點符號直接予以去除。
1.3.3 語言模型
其中[wn]代表語言模型中的某個詞。語言模型在自然語言處理的各種應(yīng)用中都很常見,如詞性標(biāo)注,信息檢索,語音識別,句法分析和機(jī)器翻譯。由于字詞與句子的各種組合的長度是任意的,因此在訓(xùn)練過的語言模型中容易出現(xiàn)以前沒有出現(xiàn)過的字符串(數(shù)據(jù)稀疏的問題),因此,在語料庫中常常會出現(xiàn)零概率問題,即語言模型中有的字符串不存在于字典中?;诖耍狙芯坎捎肗-gram來避免零概率問題,這個方法是近似平滑的,可以構(gòu)建為基礎(chǔ)的模型。在模型中,每個詞的概率與它前邊的N個詞有關(guān):
1.3.4 神經(jīng)網(wǎng)絡(luò)算法
本文采用的神經(jīng)網(wǎng)絡(luò)算法由Bengio在2003年提出。Bengio用了一個三層的神經(jīng)網(wǎng)絡(luò)來構(gòu)建語言模型。另外,他還假設(shè)這種語言遵循N-gram語言模型。
在這個模型中,設(shè)[M]表示詞向量的維度,整個模型中使用的詞向量全部存儲與矩陣C,矩陣C中的每一行都是一個詞的詞向量,用[C(w)]表示。
網(wǎng)絡(luò)的輸入層接受[N]個[C(w)]的輸入,這些輸入首尾相接,形成一個[(N-1)×M]維的向量,這個向量記為[x]。和普通的神經(jīng)網(wǎng)絡(luò)一樣,隱藏層直接使用[d+Hx]計算得出。其中[d]為一個偏置項,每次計算的時候隨機(jī)生成。使用[tanh]作為激活函數(shù)。輸出層節(jié)點[yi]表示下一個詞為[i]的未歸一化[log]概率。最后使用softmax激活函數(shù)將[y]歸一化為概率,最終[y]的計算公式為:
1.3.5 K-means聚類
對于K-means聚類,算法設(shè)計為將n個對象聚為k類,以便令獲得的聚類結(jié)果中同一類的對象相似度盡可能高,而不同類的對象相似度盡可能低,聚類相似度將利用各類中的對象的均值所獲得的虛擬的“平均對象”來進(jìn)行計算。
算法輸入:聚類組數(shù)k,數(shù)據(jù)對象n個
算法基本步驟:
1)隨機(jī)選擇k個組中的初始聚類中心;
2)遍歷各個類中的對象,計算他們與“平均對象”的距離,并根據(jù)最小距離原則重新分類;
3)重新計算“平均對象”;
4)計算標(biāo)準(zhǔn)測度函數(shù),如果標(biāo)準(zhǔn)測度函數(shù)滿足收斂條件則算法終止,否則就回到步驟2。
算法改進(jìn):
本研究中不為K-means算法規(guī)定聚類個數(shù)k,但是會在初始時傳入一個建議值,并且引入兩個新的參數(shù)δ與ε。若發(fā)現(xiàn)兩個聚類的“平均對象”距離近于δ,則將這兩個類合并成一個類。每次完成聚類后會測試每個類的內(nèi)聚描述量,若內(nèi)聚描述量大于ε,則將組內(nèi)對象隨機(jī)分成兩類。
2 實驗過程及結(jié)果分析
遵循以上過程,本文對改進(jìn)算法的效果進(jìn)行了驗證。語料庫使用了項目前述的爬蟲子項目所得的知乎語料庫,這個語料庫中主要是知乎網(wǎng)中的問答內(nèi)容,使用JSON的方式進(jìn)行存儲??倲?shù)據(jù)量為35GB,本文使用了其中的50%數(shù)據(jù)作為訓(xùn)練集,50%的數(shù)據(jù)作為測試集,將數(shù)據(jù)格式化之后進(jìn)行清洗,只保留答案和問題描述中的文字內(nèi)容,再應(yīng)用上文中提到的分詞方法作分詞。
之后應(yīng)用gensim包中的word2vec工具包進(jìn)行文本的向量化并寫入文件。gensim包中的word2vec工具包來源于Google在2013年的一項研究。它完成了上文中提到的連續(xù)詞包模型,能夠?qū)⑤斎胛谋局械脑~轉(zhuǎn)化為一組詞向量。最后使用K-means對詞向量進(jìn)行聚類,即可得到文檔的中心詞匯,也就是文檔的主題。并且最后生成相同主題的文檔列表。最終,在已獲得的知乎數(shù)據(jù)中,關(guān)注度最多的是表1所示這10個主題:
由于是非監(jiān)督學(xué)習(xí),無法使用正確率或是F檢驗等方式檢查模型的優(yōu)劣程度。但我們依然可以通過計算樣本空間中各個樣本與聚類中心的平均距離來描述這個模型的內(nèi)聚程度。在本研究中,樣本空間中樣本和聚類中心的距離取值范圍為(0, 1),0代表完全相關(guān),1代表完全無關(guān)。本次測試的δ=0.1,ε=0.05。
由此可見,模型較為穩(wěn)定,內(nèi)聚程度較高。
3 結(jié)論
在語料庫很大的時候,必須要從語料庫中提煉出多個中心主題,才能針對不同主題對數(shù)據(jù)進(jìn)行處理。基于統(tǒng)計的語料庫主題分類對本研究后續(xù)的數(shù)據(jù)處理有著重要的意義。機(jī)器自動生成的主題可以取代文檔中標(biāo)記的主題;在分類基礎(chǔ)上建立的主題云可以應(yīng)用于更精確的情感分析。本文使用gensim的word2vec工具包,在自制的語料庫中實現(xiàn)了主題聚類,并且取得了一個較為穩(wěn)定并且內(nèi)聚程度較高的模型。
參考文獻(xiàn):
[1] Wikipedia. Bag-of-words model [OL]. [2018.02.18].https://en.wikipedia.org/wiki/Bag-of-words_model.
[2] 維基百科. 語言模型[OL]. [2015.03.27].https://zh.wikipedia.org/wiki/%E8%AA%9E%E8%A8%80%E6%A8%A1%E5% 9E%8B.
[3] 張小歡.中文分詞系統(tǒng)的設(shè)計和實現(xiàn)[D].電子科技大學(xué),2010.
[4] Yoshua B, Rejean D, Pascal Christian J. A Neural Probabilistic Language Model[J]. Journal of Machine Learning Research, 2003, 3(0): 1137-1155.