今天介紹分類技術最後的一點內容,single-pass的增量聚類,這裡我們以前邊分類技術中的語料「運動」類別作為聚類的語料,原因是這份語料不是很純,抽取出的關鍵詞和「農業」類很相關同時還跟「教育」類相關,我們在這裡使用增量聚類先把「運動」類下的文本做聚類,然後對每一個簇抽取出關鍵詞(之後的文章介紹對這些簇抽取關鍵詞),人工通過關鍵詞來抽取出合適的語料,之後再用特徵選擇方法驗證一下(之後的文章介紹)。下邊首先做一些有關增量聚類的介紹。

話題發現與跟蹤(topic detection and tracking, TDT)的評測中常用的聚類方法是single-pass聚類,其原理簡單、計算速度快,然而該演算法的缺點也很明顯:受輸入順序的影響,且聚類結果精度差。single-pass聚類的基本流程如下:

(1) 接收一篇互聯網文本向量d;

(2) d逐一與已有的話題中各報道進行相似度計算,並取最大者作為與該話題的相似度(single-link策略);

(3) 在所有話題間選出與d相似度最大的一個,以及此時的相似度值;

(4) 如果相似度大於閾值TC,d所對應的互聯網文本被分配給這個話題模型文本類,跳至(6);

(5) 如果相似度值小於閾值TC,d所對應的文本不屬於已有的話題,創建新話題,同時把這篇文本歸屬創建的新話題模型文本類;

(6) 本次聚類結束,等待文本到來。

閾值在[0,1]之間,閾值設置的越高,得到的簇粒度越小(簇內文本數量少),簇的個數越多;相反,閾值設置的越低,得到的簇粒度越大(簇內文本數量多),簇的個數越少。

有兩篇single-pass演算法改進的文章。殷風景2011年提出了ICIT演算法。改進方面有(1)詞頻統計針對具有實際意義的名詞和動詞,避免文本向量維度太高。(2)兩篇文本的相似度=0.7*標題相似度+0.3*正文相似度,考慮了標題對於文本主題的概括性。(3)到達數據按代添加到聚類過程中,每一代包含200條數據,先在本代成員之間進行初步的相似度比較和聚類,再將這些初步類與已有話題進行比較和聚合,避免因數據到達順序不同而使聚類結果有變化。(4)相似度計算採用了average-link,準確度更佳,有效減少大類出現。(5)在當前代內完成聚類後加入一個比較調整的步驟,代內成員依次計算當前聚類結果下最相似的類簇是否就是自己所處的簇,不是則調整。陶舒怡2014年提出基於簇相合性的文本增量聚類演算法。該演算法的改進措施有(1)基於詞項語義相似度的文本表示模型。(2)計算新增文本與已有簇的相合性實現增量聚類,它不僅計算了文本與簇的相似度,而且考慮了簇分佈特徵。(3)增量處理完成後對錯分可能性大的文本重新指派類別。

示例代碼

https://github.com/baiziyuandyufei/text_classification/blob/master/增量聚類.py?

github.com

示例數據

baiziyuandyufei/text_classification?

github.com圖標

從明天開始,我們將開始介紹用到過的sklearn類和函數,穿插著會介紹提純運動類數據。請大家關註文本分類技術專欄。同時在特徵選擇中會增加一節基於「信息增益」的特徵選擇方法。還會增加一些關於抽取關鍵詞的方法。在這裡謝謝一直關注我專欄的13個夥伴們。

推薦閱讀:

相關文章