版權聲明:本文由文智原創文章,轉載請註明出處:
文章原文連接:https://www.qcloud.com/community/article/132算法
來源:騰雲閣 https://www.qcloud.com/community網絡
概述文本分類,顧名思義,就是將一篇文檔歸爲已知類別中的一類或者幾個類,爲了實現自動分類的目標,一般有如下幾個步驟:框架
給定一篇待分類的文檔,若對其進行自動分類,一般須要把文檔表達成機器能夠處理的數據類型。目前經常使用的文本表達方式有向量空間模型(VSM),即把文檔映射爲一個特徵向量ide
其中ti爲文檔分詞後的詞條項,w(ti)爲相應詞條項的權重。工具
咱們的自動文本分類系統,爲用戶提供自動文本分類服務,平臺已對文本分類的模型算法進行了封裝,用戶只需提供待分類的文本數據,而沒必要關注具體的實現,經過平臺就能獲得提供文本的所屬類別。目前平臺能識別類別囊括了軟件、影視、音樂、健康養生、財經、廣告推廣、犯罪、政治等40多個類別,且系統算法支持快速迭代更新已有類別及增長新類別。性能
目前咱們的自動分類系統框架如圖1.1所示。系統主要分爲三大塊:系統輸入層、系統算法封裝層和輸出層。其中系統的輸入可包含四個部分:包含文本的url、主標題和副標題及正文部分,其中前三個輸入串可選;系統的算法封裝層,封裝了對文本目標進行分類的分類器及算法模型的迭代更新;系統的輸出爲該文檔所屬的類別。
圖1.1 自動分類系統框圖學習
目前咱們系統構建的類別體系主要基於網頁內容分類體系,主要類別涵蓋了旅遊資訊、遊戲、人物訪談介紹、體育、音樂、影視、軟件、文學、健康、美食、財經、教育、廣告推廣、犯罪類別、天然災害、政治等40多個類別。每一個類別體系下對應一個與類別相關的詞特徵文件。詞特徵文件的生成及挖掘更新,文章後面會有說起。此類別體系,易擴展,增長新的類別時,若與舊體系類別無交叉,則直接添加該類別及生成一個對應的詞特徵文件,原有類別體系不變。若爲舊體系類別中的子類別時,只需分拆原有體系中對應的大類類別,即對該大類類別詞特徵文件分拆便可,別的類別詞特徵文件不變。圖2.0爲系統類別體系的一個縮略的層級結構。
圖2.0 類別體系層級結構url
2.2.1 概述spa
從圖1.1中能夠看到,咱們的分類系統輸入支持四個維度的特徵:code
直觀上來講,url網址中的某些模式和類別呈現很強的正相關性。好比url包含「video」字符串,那麼該url對應的文檔分爲影視類的機率就很大。同理,文檔的標題所屬的類別每每決定文檔的最終類別。下圖2.1爲分類器分類的主要流程。其中數據預處理主要包括數據去噪、去重等,各個分類器請參見下節。
圖2.1 分類器分類主要流程
2.2.2 分類模型
目前流行的分類算法有決策樹、基於規則的分類、樸素貝葉斯、支持向量機SVM、邏輯迴歸、神經網絡等。咱們的自動分類系統根據目前類別體系及應用場景,最終採用了樸素貝葉斯+規則相結合的方法。
2.2.3 特徵選擇
從分類流程可看出,系統支持對url和文本內容分別分類,最後經過類別投票打分方式肯定最終的類別輸出。從系統的輸入數據來看,提取的特徵主要包括:url域特徵和文本詞特徵。Url域特徵經過簡單的串分割便可獲得,文本詞特徵可利用分詞軟件進行切分。文檔經過分詞以後,會包含大量的詞。而有些詞,如「的」、「很好」等對類別不具備區別性。所以須要經過特徵選擇方法來選擇一批類別相關的詞特徵。經常使用的特徵選擇方法有基尼係數、互信息、信息增益、卡方統計等。經過比較,最終系統卡方統計方法來進行特徵選擇。圖2.2爲系統採用的特徵選擇流程。流程輸入爲類別的正樣本和負樣本。經過文檔分詞以後,可經過簡單的詞的idf及詞性對詞進行過濾。而後對於最後保留的詞計算詞與類別的卡方值,經過設置一個合理卡方值閾值及詞個數閾值,選取大於閾值的詞做爲該類的特徵詞。對於最後選出的特徵詞,經過tf*idf
及歸一化後的卡方值來肯定該詞的權重。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 文檔、主題、特徵集關係表示
系統最初爲網頁抽取或轉碼時對網頁進行分類。通過不斷的迭代更新,目前系統適應的場景更加普遍,如微博等社交消息的分類處理與應用、網絡熱門話題識別與應用等。圖4.1爲系統分類的效果圖示例。 圖4.1 文本分類效果圖