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