天天看點

【 文智背後的奧秘 】系列篇 : 自動文本分類

概述文本分類,顧名思義,就是将一篇文檔歸為已知類别中的一類或者幾個類,為了實作自動分類的目标,通常有以下幾個步驟:

建構分類類别體系

擷取帶有類别标簽的訓練資料

訓練資料的文本表達及特征選擇

分類器的選擇與訓練

分類應用資料

給定一篇待分類的文檔,若對其進行自動分類,通常需要把文檔表達成機器可以處理的資料類型。目前常用的文本表達方式有向量空間模型(VSM),即把文檔映射為一個特征向量

【 文智背後的奧秘 】系列篇 : 自動文本分類

其中ti為文檔分詞後的詞條項,w(ti)為相應詞條項的權重。

我們的自動文本分類系統,為使用者提供自動文本分類服務,平台已對文本分類的模型算法進行了封裝,使用者隻需提供待分類的文本資料,而不必關注具體的實作,通過平台就能得到提供文本的所屬類别。目前平台能識别類别囊括了軟體、影視、音樂、健康養生、财經、廣告推廣、犯罪、政治等40多個類别,且系統算法支援快速疊代更新已有類别及增加新類别。

目前我們的自動分類系統架構如圖1.1所示。系統主要分為三大塊:系統輸入層、系統算法封裝層和輸出層。其中系統的輸入可包含四個部分:包含文本的url、主标題和副标題及正文部分,其中前三個輸入串可選;系統的算法封裝層,封裝了對文本目标進行分類的分類器及算法模型的疊代更新;系統的輸出為該文檔所屬的類别。

【 文智背後的奧秘 】系列篇 : 自動文本分類

圖1.1 自動分類系統框圖

目前我們系統建構的類别體系主要基于網頁内容分類體系,主要類别涵蓋了旅遊資訊、遊戲、人物訪談介紹、體育、音樂、影視、軟體、文學、健康、美食、财經、教育、廣告推廣、犯罪類别、自然災害、政治等40多個類别。每個類别體系下對應一個與類别相關的詞特征檔案。詞特征檔案的生成及挖掘更新,文章後面會有提及。此類别體系,易擴充,增加新的類别時,若與舊體系類别無交叉,則直接添加該類别及生成一個對應的詞特征檔案,原有類别體系不變。若為舊體系類别中的子類别時,隻需分拆原有體系中對應的大類類别,即對該大類類别詞特征檔案分拆即可,别的類别詞特征檔案不變。圖2.0為系統類别體系的一個縮略的層級結構。

【 文智背後的奧秘 】系列篇 : 自動文本分類

圖2.0 類别體系層級結構

2.2.1 概述

從圖1.1中可以看到,我們的分類系統輸入支援四個次元的特征:

包含輸入文檔内容的url網址(可選)

文檔的主标題(可選)

文檔的副标題(可選)

文檔的正文

直覺上來說,url網址中的某些模式和類别呈現很強的正相關性。比如url包含“video”字元串,那麼該url對應的文檔分為影視類的機率就很大。同理,文檔的标題所屬的類别往往決定文檔的最終類别。下圖2.1為分類器分類的主要流程。其中資料預處理主要包括資料去噪、去重等,各個分類器請參見下節。

【 文智背後的奧秘 】系列篇 : 自動文本分類

圖2.1 分類器分類主要流程

2.2.2 分類模型

目前流行的分類算法有決策樹、基于規則的分類、樸素貝葉斯、支援向量機SVM、邏輯回歸、神經網絡等。我們的自動分類系統根據目前類别體系及應用場景,最終采用了樸素貝葉斯+規則相結合的方法。

2.2.3 特征選擇

從分類流程可看出,系統支援對url和文本内容分别分類,最後通過類别投票打分方式确定最終的類别輸出。從系統的輸入資料來看,提取的特征主要包括:url域特征和文本詞特征。Url域特征通過簡單的串分割即可得到,文本詞特征可利用分詞軟體進行切分。文檔通過分詞之後,會包含大量的詞。而有些詞,如“的”、“很好”等對類别不具有差別性。是以需要通過特征選擇方法來選擇一批類别相關的詞特征。常用的特征選擇方法有基尼系數、互資訊、資訊增益、卡方統計等。通過比較,最終系統卡方統計方法來進行特征選擇。圖2.2為系統采用的特征選擇流程。流程輸入為類别的正樣本和負樣本。通過文檔分詞之後,可通過簡單的詞的idf及詞性對詞進行過濾。然後對于最後保留的詞計算詞與類别的卡方值,通過設定一個合理卡方值門檻值及詞個數門檻值,選取大于門檻值的詞作為該類的特征詞。對于最後選出的特征詞,通過<code>tf*idf</code>及歸一化後的卡方值來确定該詞的權重。Url域特征檔案生成方法亦類似。

【 文智背後的奧秘 】系列篇 : 自動文本分類

圖2.2 類别特征選擇流程

2.2.4 類别線上預測與特征詞的離線挖掘

通過上面特征選擇方法之後,最終系統會為類别體系中的每個類别生成類别詞特征檔案。為了提高分類時的時間性能,系統會為特征檔案生成trie-tree,這樣能更快的比對命中的特征,而無需對全文檔進行分詞。考慮到輸入的正文的長度,在實際分類時,算法會對正文按一定長度進行切分分别分類,最後權重綜合得到正文的分類類别。目前,針對輸入的文檔,系統提供4個預測器分别給出url、主标題、副标題、正文的分類類别結果。為了判别出輸入文檔的最終類别,算法采用權重各個分類結果,最後投票得出。公式如下式所示:

【 文智背後的奧秘 】系列篇 : 自動文本分類

其中權重權重wi可通過ada-boost學習算法訓練得到。系統最終輸出的是文檔分為系統所支援的各個類别的得分。

上述分類算法對文檔進行分類後,得到帶有類别标簽的文檔資料,這部分資料可作為類特征詞更新補充離線挖掘流程的輸入集。圖2.3給出了類别線上預測與特征離線挖掘流程。

【 文智背後的奧秘 】系列篇 : 自動文本分類

圖2.3 線上預測與離線挖掘流程

圖2.3可看出,離線挖掘流程複用線上預測的分類部分,得到挖掘流程的輸入資料,通過離線挖掘,更新類别的詞特征,進而回報給輸入端,用于改進下一次的分類模型,如此則形成預測、更新的閉環。

圖2.3中的特征離線挖掘,系統主要采用以下兩種方式完成:

方式一: 把經過分類後的文本資料,即帶有類别标簽的資料,經過圖2.2所示的特征挖掘流程得到類增加的特征集。由于輸入的資料為直接系統分類後的資料,非人工标注的樣本資料,是以,為了增加挖掘的特征準确性和可用性,經算法挖掘後的特征需要經過人工進行标注,并與舊特征集排重合并,最終離線疊代更新類的特征集。

方式二: 選取大批量資料進行主題模型(topic model)聚類訓練(如LDA/word2vec聚類),得到隐含主題及描述該主題的特征詞檔案。再把經過分類後的文本資料用訓練得到的隐含主題進行表征描述,通過卡方檢驗方法選擇與類别相關的top N個主題,合并這些主題下的特征檔案,同樣經過人工标注剔除噪聲特征,并與舊特征集排重合并,最終離線疊代更新類的特征集。

【 文智背後的奧秘 】系列篇 : 自動文本分類

圖2.4類特征離線挖掘兩種方式

方式一和上述講到的特征選擇方法類似。方式二則基于圖2.5所示直覺了解所實作,即一篇文檔可由多個抽象主題進行表達,而每個主題可直接由詞特征集來表示。比如說一個典型的交通事故類别文章,可能會命中很多汽車類别中的汽車類型名,如“寶馬”、“大貨車”,同時也可能命中犯罪類别中的經常出現的“傷亡”、“死亡”等特征詞。語義層面上,把文檔用主題進行表達,可用相關的主題模型算法得到。本系統使用開源工具word2vec把詞按隐含主題進行聚類。在主題模型聚類過程中,需要指定訓練語料的隐含主題數,鑒于目前的應用場景,設定主題數為5000。通過word2vec工具得到的詞特征集,覆寫面全且語義相近,能很好解決類别詞特征覆寫的長尾問題。

【 文智背後的奧秘 】系列篇 : 自動文本分類

圖2.5 文檔、主題、特征集關系表示

分類時間性能:單程序、平均每條資料長度2kb,1500條/秒

分類準确率:類别體系中分類準确率平均80%以上

系統最初為網頁抽取或轉碼時對網頁進行分類。經過不斷的疊代更新,目前系統适應的場景更加廣泛,如微網誌等社交消息的分類處理與應用、網絡熱門話題識别與應用等。圖4.1為系統分類的效果圖示例。

【 文智背後的奧秘 】系列篇 : 自動文本分類

圖4.1 文本分類效果圖