秦 旭,楊文忠,王雪穎,馬國祥,王慶鵬
1.新疆大學 軟件學院,烏魯木齊 830046
2.新疆大學 信息科學與工程學院,烏魯木齊 830046
3.新疆電力有限公司 信息通信公司 信息調控中心,烏魯木齊 830046
隨著互聯網的快速發展,人們對網絡的依賴也越來越強,更多的人愿意在網絡上發表自己的觀點和看法。與傳統的媒體相比較,互聯網新媒體有著卓越的優勢,它的交互性、及時性都更加體現著新聞的價值。如今,很多熱點的社會事件都是在互聯網上被引爆。人們越來越習慣于用手機來接收新消息,也更喜歡用手機來瀏覽新聞并在上面發表自己的見解,簡短的文字、有效的表達成為了一種時尚,這使得微博、知乎、今日頭條、百度貼吧等成為主要的新聞傳播途徑,不僅僅是中國,Twitter 等國外網站也出現了這樣的情況。因而改變人們接收信息的方式,有效、準確地發現大家都在關注的主題,成為了研究熱點。在眾多文本處理算法中,主題發現的方法分為兩類:一類是基于統計概率的主題發現方法;另一類是基于機器學習的主題發現方法。
基于統計概率的主題發現方法的代表為LDA(Latent Dirichlet Allocation)算法,它通過應用貝葉斯概率模型將文本信息轉化為概率分布。LDA算法現在被廣泛應用在圖像分析[1]、書籍分類、文本處理[2]、生物基因分類[3]、人臉識別[4]等場景中。因為LDA 算法可以將連續的數據概率化,同時將數據假設為沒有順序的關系,這樣大大簡化了計算的復雜程度,使得它在眾多方面得到了廣泛的應用,但是也留下了改進的空間。眾多的改進算法都取得了不錯的效果。文獻[5]對LDA 進行了改進,將數據加入了時間性,使詞的出現順序變得重要,在話題發現領域取得不錯的效果;文獻[6-9]也對LDA 進行了不同程度的改進。另一方面,使用基于頻繁項集的主題發現也得到了大家的認可,它們通過生成頻繁項集發現其中的關聯來定義文本的主題。優點是利用Apriori原理加快了速度,因為關聯挖掘的數據集往往是重復性很高的,這就能帶來很高的壓縮比,節省了大量的存儲空間;而缺點是效率比較低,實現比較困難,對于數據要求較高的某些應用中性能下降。
另一種就是基于機器學習的主題發現,基于RNN(Recurrent Neural Network)和主題模型的社交網絡突發話題發現[10],通過神經網絡[11]的高度抽象性發現大量數據中隱藏的關系,取得了一些成果。近些年來,對混合算法的研究逐漸增多,尤其是在聚類方面,很多數據來源不再是單一類型,文獻[12]專門針對不同種類的混合數據提出了混合算法,文獻[13-15]提出了更加高效的混合聚類算法。不同的數據有著其自身的特性[16],不可能適應每一種數據,將不同來源的數據進行分析,準確發現主題有著重要意義。為了解決上述問題,本文提出了一種基于共現的異類源話題發現方法,它可以適應于多種來源的文檔[17-18],能夠有效地發現主題,有效利用每種文檔來源的特性。該方法具有適應多種文本進行主題發現,對于文本類型和主題要求較低的優點,但由于使用了多重算法進行處理,數據運算效率有一定的下降。
近些年來,主題檢測逐漸受到國內外科研工作者的廣泛關注。長文本主題檢測已經取得了較好的效果,但在短文本[19]上的檢測結果始終差強人意。本文采用長文本主題檢測后的結果對短文本聚類[20]結果進行補充來獲得更準確更貼切的主題。對于長文本和短文本分別采用LDA 和K-means 算法進行聚類融合,并對其進行了一些改進。
在LDA 的具體計算中,認為一篇文章生成的模式如下:從迪利克雷分布α中取樣形成文檔i的主題分布θi;從主題的多項式分布θi中抽出生成文檔i第j個詞的主題zi,j;從迪利克雷分布β中抽出詞語形成主題zi,j對應的詞語分布φi,j;從詞語的多項式分布φi,j最終生成詞語wi,j。
對于一篇文章來說,它的形成過程是每次寫一個詞的時候,首先會以一定的幾率選擇一個方向。不同方向被選中的概率是不一樣的,在這個理論中,假設文章和主題之間存在一定的關系,它符合多項式分布。同理,主題和詞之間也被認為存在多項式分布。所謂分布(概率),就是不同情況出現的幾率,它們能被總結成為一個特定的規律。
對應貝葉斯參數估計的過程:先驗分布+數據的知識=后驗分布。根據式子可以知道它們對應觀測到的樣本數據。
舉一個例子:假設對于詞庫來說總共有詞的數量是N,假設人們關注的每個詞出現vi的發生次數ni,那么,可以發現它正好是一個多項式分布:

對應到LDA 模型中,文章和主題分布的關系就變成了分布統計是每個主題的詞的數量。主題和詞對應的是主題中每個詞的數量。
K-means算法[21]是較為經典的聚類算法,它采用相對于中心點的距離作為指標,通過不斷地迭代將數據分為輸入K個類,算法認為的類中心點是本類中所有值的平均值,每個類用聚類中心點的特征來進行描述。對于給定的一個包含n個d維數據點的數據集X以及要分得的類別K,選取歐式距離作為相似度指標[22],聚類目標是使得各類的聚類平方和最小,即最小化:

結合最小二乘法和拉格朗日原理,聚類中心為對應類中每個類中數據的均值,在計算中保證算法能夠收斂,應該盡量使類的中心保持不變[23]。
K-means是一個反復迭代的過程,算法分為4個步驟:
(1)選擇樣本中的K個對象將它們認為中心;
(2)對于樣本中的實際計算對象來說,依據它們與這些選定中心的歐氏距離,按近距離優先的原則,將它們與離它們最近的中心劃分到一起;
(3)更新聚類中心,計算每個類別中對象到中心的距離獲取平均值重新獲得中心,并按照優化函數判斷是否聚類結束;
(4)對上一次計算的結果與本次進行對比,如果沒有發生變化,則輸出結果,若出現變化,判斷是否需要重新計算,若需要,則返回(2)。
下面對本文的核心內容進行敘述。將不同來源的數據進行主題發現,利用不同文本源的特點,對其進行分析。
將同時出現在同一個主題中的詞定義為共有詞,通過共有詞可以比較兩個主題的相識程度,通過比較可以發現,在主題中的共有詞達到一定比例后,就可以認為兩個主題為同一類主題的不同情況。
相對相似度:將通過不同源得出的主題詞進行比較,得出不同源之間相互關系。將不同源主題之間進行相互比較,得出相對相似度。
相對相似度公式:

其中,S1是對應的主題的相對相似度值;a1為主題相同詞數;L1為詞條長度。
Similarity calculation描述:
LDA_Theme_length=getKmeans_keyword.length;
Kmeans_Theme_length=getKmeans_keyword.length;
if LDA_Theme_length>=Kmeans_Theme_length for word in Kmeans_Theme:
if(word in LDA_Theme)
sumNum=sumNum+1;
else
for word in LDA_Theme:
if(word in Kmeans_Theme)
sumNum=sumNum+1;
return sumNum/total
end
通過同義詞和相對相似度,對不同的主題進行計算。對于計算結果設定閾值,當大于該閾值時,認為這兩個主題為相似主題,預備進行融合。在后續的比較過程中發現更相近的則進行替換,否則在算法結束時進行融合。

其中,PS為兩個主題間的平均相似度,a1為LDA主題相同詞數,a2為K-means 主題相同詞數;L1+L2為對應主題詞條長度之和。

圖1 處理總流程圖
將不同的數據源根據數據具體特性采用相應的算法進行處理,對于長文本類型數據源,采用LDA算法進行處理,對于短文本類型數據,采用K-means算法進行處理。多源主題融合模型的總流程圖如圖1所示。
首先,將數據根據文本進行分詞,采用jieba 分詞,去停用詞方法;對長文本使用LDA 計算出主題概率矩陣,同時將短文本類型的詞使用K-means進行處理,在K取值方面采用Calinski-Harabasz準則。

其中,SSB是類方差,z為所有點的中心,mi為某類的中心點;SSW是類內方差,是復雜度;VRC比率越大,數據分離度越大。VRC 其本質是方差分析,將類間方差與類內方差比較,若兩者之比近似1,說明來自同一個正態總體,若遠遠大于1,說明類間方差遠大于類內方差,兩者不來自同一個整體。
本文給出一個LDA算法處理過后文本主題的數量N,使用N作為中心點進行K的取值;分別嘗試對N與N+1 兩個數值進行計算,然后得出ΔVRC值,確認K值,完成K-means 算法分類。對分類完畢的數據采用式(4)進行計算。
算法流程:
(1)將不同源的數據依據數據特性使用對應的方法進行主題發現;
(2)對發現的主題詞進行整理;
(3)對主題詞進行比較,發現共有主題詞;
(4)計算相對相似度和平均相似度。
對相似度進行比較、融合。該算法具體過程如圖2所示。

圖2 融合演示圖
該算法偽代碼如下。
Fusion algorithm描述:
getLda_keyword=key_lda(input_source)
getKmeans_keyword=key_kmeans(input_source)
if theme in getLda:
if word in theme:
for compareSame(word,key_kmeans_word)
if similarity>=60%
convergence_theme(getLda_keyword,getKmeans_keyword)
end
本實驗的硬件平臺采用Intel i5 1.8 GHz,8 GB 內存,在Windows 環境下采用56Python 語言編寫實驗代碼。編寫Python 程序爬取百度新聞與新浪微博組成的數據集。經實驗證明,具有更多分類標準能夠提高聚類效果。

表1 數據集表
收集了更加復雜的貼吧信息,貼吧數據集的數據量如表2所示。

表2 貼吧數據集表
(1)分別在每個數據集對MTFM與LDA、K-means的主題詞平均長度進行比較(見圖3)。

圖3 平均詞條長度圖
對于傳統的判斷兩個文檔相似的方法TF-IDF,主要就是查看兩個文檔共同出現的單詞的數量,這種方法沒有考慮到前后語義的關聯。文檔-詞語的概念就是文檔主題與詞語之間產生聯系,更加精確,更多的主題詞能更好地反映主題。
本文通過改進LDA 和K-meams 算法獲得MTFM算法。通過共有詞對主題詞進行融合,可以發現,對于不同的數據集來說(S1~S4數據量逐漸增大),在數據量增大時,由于LDA算法通過概率發現主題,數據量的增加能明顯增加LDA主題詞的長度;對于K-means來說,更多的詞有更多的詞條長度,但是本文算法明顯有更長的主題詞條長度。
(2)與LDA、K-means進行主題發現的準確度比較。
困惑度是用來衡量語言概率模型優劣的一種方法。一個語言概率模型可以看成是在整個句子或者文段上的概率分布。通常用于評價聚類算法好壞的方法有兩種:其一是使用帶分類標簽的測試數據集,然后使用一些算法,比如Normalized Mutual Information 和Variation of Information distance,來判斷聚類結果與真實結果的差距;其二是使用無分類標簽的測試數據集,用訓練出來的模型來測試數據集,然后計算在測試數據集上所有token 似然值幾何平均數的倒數,也就是perplexity指標。這個指標可以直觀理解為用于生成測試數據集的詞表大小的期望值,而這個詞表中所有詞匯符合平均分布。

式(6)中,M 是指訓練好的模型參數,在不同的模型中指不同的參數類型。例如在LDA 中將collapsed Gibbs Sampler 采樣的w 向量和z 向量帶入計算可以得出困惑度。困惑度的基本思想是給測試集的句子賦予較高概率值的語言模型較好,當語言模型訓練完成后,測試集中的句子都是正常的句子,那么訓練好的模型就是在測試集上的概率越高越好;根據困惑度公式可知,困惑度越小,句子概率越大,語言模型越好。本文模型與LDA、K-means在困惑度上的實驗對比結果如圖4所示。

圖4 困惑度比較圖
對于主題準確率,從圖中可以發現在數據量較少時,三種算法都不能有效地發現主題,在文本規模達到一定數量時,發現LDA 發現主題的困惑度有明顯的提高;但是在數量增長到一定規模后,特別是混合后的文本,困惑度明顯上升,而MTFM算法卻能獲得不錯的效果。
(3)在不同數據集進行綜合對比。
采用平均詞條長度、主題數量、樣本數、困惑度和時間跨度對同一數據集進行綜合考慮,比較算法的差異。綜合對比后結果如圖5所示。

圖5 MTFM與LDA、K-means綜合比較圖
通過圖5 比較可以看出,在相同的樣本數量、相同的時間跨度之下,本文方法具有較低的困惑度,聚集出較多的主題數量;同時隨著樣本數量的不斷增多,從文本數量較大的樣本分析看,相同的時間跨度之下,本文方法能獲得更低的困惑度,具有研究效果。
(4)在幀吧數據集上,將本文提出的算法與K-modes 算法進行了困惑度和評價詞條長度兩項的對比實驗,結果如圖6所示。

圖6 貼吧數據集上MTFM與K-modes比較圖
實驗如圖6 所示,在更加復雜的數據集中,本文提出的方法在困惑度上依然有優秀的表現,在平均詞條長度上也能取得不錯的效果。
本文通過對不同源的數據采用本文算法進行處理,對不同源的數據特性進行充分利用,將更加豐富的主題詞添加進主題中,能夠更加準確地定義主題。通過實驗證明,本文方法能夠在不同源的數據上取得一定的效果,能獲得更好的主題分類。在后面的研究中,將考慮詞語傾向性分析,使擴展的主題更加準確有效。未來會考慮將多源主題發現應用于輿情監控系統,及時對輿論進行引導。