王獲智 李建宏 施運梅



摘要:政府公文數量巨大,不同政府網站公文分類規則不一,在引用和參考公文時可能發生混淆。針對該問題,基于政府公文題目、摘要和正文內容,采用K-means算法對公文進行分類。首先對政府公文進行分詞及去停用詞等數據預處理操作,再通過詞頻一逆文檔頻率(TF-IDF)權值計算方法,將處理后的政府文本信息轉換成二維矩陣,然后采用K-means算法進行聚類。使用清華大學THUCTC文本分類系統對公文聚類結果進行測試。實驗結果表明,采用K-means算法對公文進行聚類,準確率達到82.93%,遠高于政府網站公文分類準確率。
關鍵詞:文本聚類;詞頻一逆文檔頻率;K-means算法
DOI:10.11907/rjdk.192257 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP391文獻標識碼:A 文章編號:1672-7800(2020)006-0201-04
0 引言
K-means聚類算法最早于1967年被提出,眾多學者運用該算法進行了文本聚類技術研究。文獻對K-means聚類算法進行了詳盡介紹。作為一種無監督學習,該算法可將相似對象歸于同一類中;文獻從中心點選取、K值確定及參數調優等方面設計了優化方案,為提升算法性能提供了指導意義。K-means聚類算法實際應用范圍較廣,包括中文文獻分類、航空旅客劃分、行政省份歸類等多個方面。
目前,我國省市級政府均設立了官方網站,政府公文持續上傳至官網,數量龐大。由于各政府網站相對獨立,各地方政府對政府文件的分類方式有一定差異,因此在參考和引用內容相似的政府公文時可能出現混淆。針對該現象,本文使用文本聚類技術對政府公文進行聚類分析,具體指采用K-means算法對政府公文題目、摘要和正文內容進行聚類分析。首先利用Python實現公文信息獲取、數據預處理及文本聚類,然后使用北京市政府官方網站發布的公文作為測試文本,并對聚類結果進行分析。
1 政府文件聚類過程
文本聚類作為一種無監督的機器學習方法,不需要大量訓練集,故無需人工為文檔添加標簽。本文選取聚類算法中的K-means算法,對政府文件進行聚類分析。其過程可概括為3個步驟:數據獲取、數據預處理、文本向量化及聚類。
1.1 數據獲取
以北京市政府網站發布的公文作為原始數據,使用Python爬蟲抓取并保存該網站全部公文。
1.2 數據預處理
Python語言作為一種面向對象的程序語言,受到越來越多的關注,目前已擁有了十分豐富的庫。本文利用PY.thon實現文本預處理。首先安裝并加載Python的jieba分詞工具包。iieba分詞工具包是供Python語言使用的一款中文分詞組件,使用其中的函數可將文本切分成詞或字;接著對切分之后的文本進行去停用詞操作。由于在政府公文中存在大量不具有代表性的詞語,比如“會議”、“報告”、“通知”等。這些詞不僅對聚類沒有幫助,還會降低聚類效率。本文參考了文獻的停用詞表,通過編寫PYthon代碼,對獲取的所有文本進行切詞和去停用詞操作,處理結果如圖1所示。
1.3 文本向量化與聚類
1.3.1 文本向量化
K-means算法依靠向量判斷某個樣本從屬類別。因此,僅通過分詞及去停用詞處理的政府公文無法直接用于聚類,需對政府公文進行向量化處理。
目前文本向量化主要有兩種方法:one-hot表示法與TF-IDF表示法。one-hot表示法首先提取文本中不重復的詞語,產生長度為L的詞語表,用1個L維的向量表示一篇公文,若第i號詞語出現在一篇公文中,則該篇公文的第i維度為1。One-hot表示法僅能表示某個詞語是否出現在某篇公文中(出現為l,反之為0),無法描述該詞語在該篇公文中出現的頻率等信息,而TF-IDF表示法則彌補了這一不足。因此本文中采用TF-IDF表示法進行政府公文向量化處理。
TF-IDF是一種比較常見的統計方法,用于描述某一個詞在文檔集合之中的重要程度。在一份給定的文件里,詞頻(Term Frequency,TF)指某個給定的詞語在該文件中出現的頻率,它是對詞數(term count)的歸一化,以防止文件偏長。逆向文件頻率(Inverse Document Frequency,IDF)是詞語普遍重要性的度量。某一特定詞語的IDF值可由總文件數目除以包含該詞語的文件數目、再將得到的商取對數得到。
高權重的TF-IDF值體現一個詞匯在某一特定文件出現頻率高,而在整個文件集合中出現頻率低。因此,TF-IDF可用于過濾常見詞語并保留重要詞語。公文TF-IDF計算結果以矩陣方式呈現,如圖2所示,圖2上半部是從公文中提取的詞語,下半部是每個詞對應的TF-IDF值。
公文越多,提取的詞語越多,矩陣維度將急劇上升,而高維度的矩陣將嚴重拖慢算法運行速度,且在高維空間中,歐式距離的值可能會呈現迅速增長的趨勢。因此公文聚類算法準確性和效率均與TF-IDF生成矩陣的維度有關,高維度矩陣會使聚類算法準確性和效率下降,需通過降維改進算法。矩陣高維度現象是由數量巨大的詞匯和公文數量引發的,在不能對公文進行刪減的情況下,只能設法刪減詞匯。一種方法是根據文本特性,補充停用詞表。比如在北京市政府的公文集合中,“北京市”一詞沒有聚類意義,可添加到停用詞表中。該方法需對文本有一定理解,且補充停用詞時耗較大;另一種方法是根據每個詞的TF權重和IDF權重,通過設定閾值篩選詞語,從而降低矩陣維度。TF為詞頻,代表詞條在某一文檔中出現的頻率;IDF為逆向文件頻率,代表如果包含該詞條的文檔越少,則IDF越大,說明該詞條具有很好的類別區分能力。根據該特性,可設定閾值對詞進行篩選,比如刪除掉TF低于20%的詞,或刪除IDF高于80%的詞。如圖3所示,在設定TF閾值為20%、IDF閾值為80%時,程序占用的CPU時間大幅降低。
1.3.2 公文聚類
K-Means是一種無監督的機器學習算法,對于給定的樣本集,按照樣本之間的距離大小,將樣本集劃分為K個簇。讓簇內的點盡量緊密地連在一起,而讓簇間距離盡量大。而在K-means算法中,K值選取極大影響聚類實際效果,為了衡量k值是否恰當,可使用inertia值作為衡量標準。inertia值也稱作簇內誤差平方和(Within-Cluster Sumof Squared Errors,SSE),是K-means算法中的一種度量聚類效果優劣的數值,一般來說,inertia值越小,說明聚類效果越好。為確定最佳k值,使用手肘法確定K值。實際inertia值會隨著k值增加不斷減少,但當k值低于最佳值時,inertia值會隨著k值增加而急劇下降;當k值大于最佳值時,隨著k值增加inertia值不會明顯下降。本文根據這種特性,不斷調整初始質心數k的取值,并繪制折線圖,觀察斜率即可得出最佳k值(k=30),如圖4所示。
2 聚類結果及測評
2.1 公文聚類結果
本文中采用無監督算法中的K-means聚類算法。隨后使用K-means包含的函數將經過預處理的文本向量化,轉換成通過TF-IDF權值計算算法生成的二維矩陣。設定初始質心數及最高迭代次數等相關參數后進行聚類,并在聚類完成后顯示結果。聚類結果如表1所示,5038篇公文共分為30個類別。
2.2 結果評測
本文借助清華大學的THUCTC(THU Chinese TextClassification)文本分類系統對公文聚類效果進行驗證。THUCTC是由清華大學自然語言處理實驗室推出的中文文本分類工具包,可自動高效地實現用戶自定義文本分類語料訓練、評測、分類等功能。對于文本分類而言,有可能出現4種可能性:TP(True Positive),代表該文本預測類別和真實類別均為該類;FP(False Positive),代表文本不屬于該類,但分類器預測其屬于該類;TN(True Negative),代表文本屬于該類,但分類器預測其不屬于該類;FN(False Negative),代表文本不屬于該類,分類器同樣預測其不屬于該類。
準確率P的定義為P=TP/(TP+FP),召回率R的定義為R=TP/(TP+FN)。
準確率和召回率雖可衡量某個類別的分類效果,但難以用于衡量分類器整體分類效果。因此使用微平均值度量分類器性能,微平均可被理解為預測正確的文本個數除以樣本總數。對于包含n個樣本的集合而言,微平均Micro_F的計算公式如(1)所示。其中,Micro_P為n個樣本的TP平均值除以TP平均值與FP平均值之和,Micro_R為11個樣本的TP平均值除以TP平均值與FN平均值之和。
北京市政府網站將北京市政府所有文件分為“綜合政務”、“國防”及“對外事務”等共計20個類別,不過呈現效果不理想,許多公文從屬類別出現了明顯錯誤。使用該網站提供的20個分類中80%的文本作為訓練數據,20%作為測試數據,使用清華大學THUCTC系統進行文本分類測試,得到的準確率(P)僅為31%,召回率(R)為25%,微平均值為33%。
針對K-means算法的公文聚類結果,使用THUCTC系統作為評測手段。公文聚類結果包括從0至29共30個類別,使用其中80%作為訓練集,20%作為測試集。使用最終訓練完成的分類器在測試集上進行測試,準確率達到82.39%,召回率為77.72%,微平均值達到78.13%。實驗結果表明采用K-means算法可取得較好的公文聚類效果。
3 結語
本文采用K-means算法進行政府公文聚類,取得了較好的聚類效果。下一步可從以下方面進行改進。首先,本文實驗結果并未注明分類完成的公文具體屬于何種類別,可通過提取特征詞的方式注明類別。在注明類別的基礎上可添加其它政府網站的公文繼續聚類操作;其次,矩陣高維度仍是限制算法準確性的原因,可參考其它降維策略提升準確性;另外,歐式距離對于高維矩陣十分敏感,可考慮采用余弦距離算法更換歐氏距離。