多標籤文本分類模型總結

2021-01-14 機器學習記事本

最近工作中需要對文本進行多標籤分類(Multi-label Text Classification),系統查閱了相關論文,藉此機會整理歸納一下,希望能幫助對此有需要的同學節約一些時間。

 

什麼是多標籤文本分類

學術上常用的說法有兩個,一個是ExtremeMulti-label Learning, 簡稱XML,另一個是Extreme Multi-label Text Classification,簡稱XMTC,本質上都是對文本進行多標籤分類,即對於一個給定的文本,可能有多個標籤,我們需要設計一個模型預測其標籤。和XMTC相似的一個問題叫Multi-class classification, 它講的是對於一個文本其標籤是標籤集合中的一個,標籤集合中有三個以上標籤,可見它和XMTC有本質區別,即XMTC要預測的一個文本可能有多個標籤,而Multi-classclassification要預測的一個文本只有一個標籤。

XMTC有很廣泛的應用,比如購物網站中對商品進行分類,所有商品種類有上百萬個,任意一種商品可能屬於其中的幾個或者幾十個,當用戶創建一個新商品時,網站需要根據商品的屬性預測其多個分類,以方便搜索使用。

 

主要方案

到目前為止主要解決方案有三類:基於樹的方法(Tree-based method),目標嵌入方法(Target-embedding method)和基於深度學習的方法(Deep learning method)。以下分別介紹。

 

基於樹的方法(Tree-based method)

和分類決策樹類似,此方法根據訓練數據創建一個樹形結構模型,當新數據需要預測的時候,從樹根開始尋找所屬的分支,最後找到的多個葉子節點就是對應分類。和傳統決策樹不同,此方法在創建樹形結構模型的時候,會根據所有特徵(features)學習一個權重參數,由此參數決定樹結構創建過程的每個節點的分支劃分,目的是要使各個分支有相似的標籤分布。此方法最有名的模型叫FastXML,其節點劃分時採用的打分方法叫nDCG,當模型建立後需要預測時,尋找葉子節點中分數最高的top n節點就是預測的標籤。FastXML是微軟印度研究院提出的,論文詳見[1],這個團隊在XMTC領域有重要的影響力,發表了了一系列的模型和改進,官方網站http://manikvarma.org,其包含了他們發表的主要文章、對應的源碼實現、測試的數據集、以及在測試數據集上各種算法對應的性能比較,其性能指標是這個領域進行性能比較的通用指標。

 

目標嵌入方法(Target-embedding method)

目標嵌入方法主要為解決XMTC訓練過程中稀疏數據的問題。試想如果目標標籤集合中有十萬條標籤,一般一條數據僅屬於其中的幾個或者十幾個標籤。如果用一個向量表示標籤集合,對於給定的一個文本,屬於某個標籤用1表示,否則用0表示,則其標籤向量中絕大部分數值都是0,這是典型的稀疏數據問題。目標嵌入方法的思路是把目標標籤集合從高維空間映射到低維空間,數據訓練和預測的目標都針對低維空間,最後對預測到低維空間的標籤再映射回原本的高維空間。從高維映射到低維空間過程稱為壓縮過程(compression),可採用線性或非線性變換,反之從低維映射回高維空間過程稱為解壓過程(decompression)。各種不同的模型主要區別在於壓縮和解壓算法不一樣。提出FastXML的團隊在這方面也有研究,論文見[2],另一篇這方面較新的論文見[3].

 

基於深度學習的方法(Deep learning method)

現在機器學習基本不能不提深度學習,自然有人嘗試用深度學習解決XMTC問題。

論文[4]使用CNN對多標籤文本分類,是一個常規的CNN網絡,文本通過詞嵌入(word embedding)轉換為向量作為CNN輸入,然後做max pooling和全連接層,最後通過sigmoid得到top n結果。實驗結果顯示其性能優於絕大部分之前的FastXML和目標嵌入模型。

當然,文本處理也不能忽略RNN和近年較火的attention based模型,論文[5]就是這麼幹的,其詞嵌入用word2vec,RNN用了Bidirectional LSTM,然後用了multi-label attention layer,最後使用全連接層。模型實驗結果表明其性能好於上面的CNN模型。

 

具體應用

我們項目的需求是對給定的軟體漏洞描述,預測其所屬的軟體library分類,一個漏洞可能屬於多個libraries,比如Apache Struts的一個漏洞可能屬於struct2-core, struts2-rest-plugin。我們沒有從性能可能是最好的深度學習模型開始,而是先嘗試FastXML,接下來再嘗試深度學習以比較性能。

實驗數據採用了8000條已標註的軟體漏洞,其中6000條用於訓練,2000條用於測試。

以上三種解決方案都是預測top n的標籤,即選取預測得分最高的前n個標籤,這和我們的需求不太一致,我們各個預測數據對應的標籤數量可能不同,所以對結果選取做了一些改變。我們設置一個閾值(threshold),對一個給定的文本,預測分數中的值如果大於此閾值就認為該文本屬於這個分數對應的標籤,否則不屬於,得到預測結果後可以算出該文本預測的precision和recall,對所有文本預測的結果取平均值即可得到該閾值對應的模型precision和recall。最後我們從0到1遍歷閾值,步長取0.01,這樣就可以得到各個閾值對應的模型precision和recall。一般情況下,precision越高recall越低,我們實驗中較好的結果是recall 0.42時precision為0.4。

接下來我們會進一步改進數據處理和模型,看看性能是否有改進。

 

[1] Y.Prabhu and M. Varma. FastXML: A fast, accurate and stable tree-classifierfor extreme multi-label learning. http://manikvarma.org/pubs/prabhu14.pdf

[2] K.Bhatia, H. Jain, P. Kar, M. Varma and P. Jain. Sparse local embeddings forextreme multi-label classification. http://manikvarma.org/pubs/bhatia15.pdf

[3] Wenjie Zhang,Junchi Yan, Deep Extreme Multi-label Learning.

https://arxiv.org/pdf/1704.03718.pdf

[4] Jingzhou Liu, Wei-Cheng Chang, Deep Learning for ExtremeMulti-label Text Classification. http://nyc.lti.cs.cmu.edu/yiming/Publications/jliu-sigir17.pdf

[5] Ronghui You, Suyang Dai, AttentionXML: ExtremeMulti-Label Text Classification with Multi-Label Attention Based RecurrentNeural Networks. https://arxiv.org/pdf/1811.01727.pdf

相關焦點

  • 文本分類六十年
    深度學習模型DNN由人工神經網絡組成,該人工神經網絡模擬人腦以自動從數據中學習高級功能,在語音識別,圖像處理和文本理解方面比淺層學習模型獲得更好的結果。應該分析輸入數據集以對數據進行分類,例如單標籤,多標籤,無監督,不平衡的數據集。
  • 教你用BERT進行多標籤文本分類
    該模型還在兩個無監督任務(「遮蔽語言模型」和「下一句預測」)上進行了預訓練。這讓我們可以通過對下遊特定任務(例如情緒分類,意圖檢測,問答等)進行微調來使用預先訓練的BERT模型。本文將手把手教你,用BERT完成一個Kaggle競賽。在本文中,我們將重點介紹BERT在多標籤文本分類問題中的應用。
  • 達觀數據乾貨分享:深度解析文本分類與標籤的應用價值和原理
    信息過載時代,文本分類和文本標籤是我們整合閱讀文本信息的常用手段。本文系統介紹文本分類和文本標籤的技術原理和應用價值,並結合項目案例談談兩者的使用技巧。一、分類和標籤的共性與差異圖書管理員在給圖書分類時,會根據書的內容、形式、體裁等信息,按照《中國圖書館圖書分類法》進行分類。
  • 中文文本分類:你需要了解的10項關鍵內容
    本文從達觀數據中文文本分類的實踐出發,總結了從數據預處理到特徵工程、算法選擇再到後處理和評價指標等流程中的10項關鍵內容,希望能對讀者有所幫助。因此,在條件允許的情況下,建議儘可能多的在各種數據集上測試不同算法,並且記錄其在各項指標上的效果,從而清楚地了解各種算法的特點。下表總結了各個常用分類算法在中文文本分類情景下的對比情況,可供參考。*註:TextCNN和LSTM模型的訓練一般需要通過GPU加速。
  • 使用PyTorch建立你的第一個文本分類模型
    概述學習如何使用PyTorch執行文本分類理解解決文本分類時所涉及的要點學習使用包填充(Pack Padding)特性介紹我總是使用最先進的架構來在一些比賽提交模型結果。得益於PyTorch、Keras和TensorFlow等深度學習框架,實現最先進的體系結構變得非常容易。
  • 記: 多標籤分類問題
    最近遇到給個標籤問題,就是給一個 object 打個多個標籤,網上查了很多資料。發現百度沒搜索出什麼,後來是到知網上找到一些靠譜的資料,然後在 Google 一下。現在總結下多標籤問題。多標籤方法大致可以分為兩類,分別是問題轉換和算法改造。先描述下問題:先介紹問題轉換方法.
  • 分類問題-----多標籤(multilabel)、多類別(multiclass)
    單標籤分類         在傳統的單標籤分類中,訓練集中的每一個樣本只有一個相關的標籤 l ,這個標籤來自於一個不重合的標籤集合L,|L| > 1.當|L|=2 時,這就是一個二分類問題,或文本和網頁數據的過濾(filtering)問題。當|L| > 2 時是多分類問題。
  • NeuralNLP-NeuralClassifier:騰訊開源深度學習文本分類工具
    NeuralClassifier是NeuralNLP的一個子項目,是一款基於PyTorch開發的深度學習文本分類工具。NeuralClassifier旨在通過良好的架構設計,集成業界主流的文本分類模型和各種優化機制,支持儘可能廣泛的文本分類任務,如多標籤分類,層次分類等,並方便用戶在工具基礎上自定義模型和進行更靈活的擴展。
  • 數據挖掘之文本分類技術,最詳細的原理解讀
    (3)N-gram:它是一種基於統計的方法,設定一個大小為 N 的窗口,從文本第一個字符開始,對文本進行分割,所以它不需要分詞操作,可以自動化的處理中文文本。同時 N-gram 是語言無關的,所以可以處理其它各種語言的文本。但從 N-gram 項的確定過程中可以看出,N-gram得到的特徵數目要比詞袋中詞的數目大得多,因此相比於詞袋方法,無論在時間上還是在空間上,該方法的消耗都很大。
  • 專欄| NLP概述和文本自動分類算法詳解
    篇章級應用有六個方面,已經有成熟的產品支持企業在不同方面的文本挖掘需求: 垃圾評論:精準識別廣告、不文明用語及低質量文本。 黃反識別:準確定位文本中所含涉黃、涉政及反動內容。 標籤提取:提取文本中的核心詞語生成標籤。
  • 文本標註案例:細粒度情緒多分類標註丨曼孚科技
    文本情感分析,又稱意見挖掘、傾向性分析等。簡單而言,是對帶有情感色彩的主觀性文本進行分析、處理、歸納和推理的過程。通過對包含主觀信息的文本進行情感傾向性判斷,可支持在線訓練模型調優效果,為口碑分析、話題監控、輿情分析等應用提供幫助。
  • 機器學習項目實踐:30+ 必備資料庫(預測模型、圖像分類、文本分類)
    原標題:機器學習項目實踐:30+ 必備資料庫(預測模型、圖像分類、文本分類) 1 新智元編譯 UCI機器學習庫包含超過350個數據集,其標籤分類包括域、目的(分類、回歸)。你可以使用這些過濾器找到你所需要的數據集。 Kaggle- Kaggle 提出了一個平臺,人們可以在這裡捐贈數據集,其他社區成員則可以對這些數據集進行投票或在這些數據集上運行內核/腳本。
  • 文本匹配模型TextMatching
    個人心得:文本匹配問題可轉化為二分類問題,輸出概率則為相似度將圖像識別的思路應用於文本匹配任務中,利用卷積抽取文本特徵論文地址:https://arxiv.org/pdf/1602.06359.pdf1.
  • 文本秒生成圖像,震驚業界!詳解OpenAI兩大AI模型
    智東西(公眾號:zhidxcom)編譯 |子佩編輯 |Panken智東西1月7日消息,2021開年,頂著地表最強語言模型GPT-3的光環,OpenAI在自然語言處理領域一路高歌猛進,於昨日推出兩個跨越文本與圖像次元的模型:DALL·E和CLIP,前者可以基於文本生成圖像,後者則可以基於文本對圖片進行分類,兩者都意在打破自然語言處理和計算機視覺兩大門派「涇渭分明
  • 文本秒生成圖像,震驚業界,詳解OpenAI兩大AI模型
    編譯 | 子佩編輯 | Panken智東西1月7日消息,2021開年,頂著地表最強語言模型GPT-3的光環,OpenAI在自然語言處理領域一路高歌猛進,於昨日推出兩個跨越文本與圖像次元的模型:DALL·E和CLIP,前者可以基於文本生成圖像,後者則可以基於文本對圖片進行分類,兩者都意在打破自然語言處理和計算機視覺兩大門派
  • 文本秒生成圖像,震驚業界——詳解OpenAI兩大AI模型
    編譯|智東西  子佩編輯|Panken智東西1月7日消息,2021開年,頂著地表最強語言模型GPT-3的光環,OpenAI在自然語言處理領域一路高歌猛進,於昨日推出兩個跨越文本與圖像次元的模型:DALL·E和CLIP,前者可以基於文本生成圖像,後者則可以基於文本對圖片進行分類,兩者都意在打破自然語言處理和計算機視覺兩大門派「涇渭分明」的界限,實現多模態
  • 手把手教你用Keras進行多標籤分類(附代碼)
    模型,finalAct=」sigmoid」這個參數指明我們將執行多標籤分類。為多標籤分類訓練一個Keras神經網絡請不要忘了使用本文底下的「下載」處來下載代碼、數據集和預先訓練好的模型(以防你不想自己訓練模型)。 如果你想要自己訓練模型,請打開終端。
  • 文本嵌入的經典模型與最新進展
    它們在定長的密集向量中編碼單詞和句子,以大幅度提高文本數據的處理性能。對通用嵌入的追求是一大趨勢:在大型語料庫上預訓練好的嵌入,可以插入各種下遊任務模型(情感分析、分類、翻譯等),通過融合一些在更大的數據集中學習得到的常用詞句表示,自動提高它們的性能。這是一種遷移學習。
  • 科大訊飛:基於中斷循環神經網絡的文本分類
    很多機器學習的新方法都會先嘗試在文本分類任務上進行實驗驗證。例如深度學習中最常見的兩大類模型,卷積神經網絡(CNN)和循環神經網絡(RNN)及其變體,在文本分類中有很多應用。RNN模型擅長對整個句子進行建模,捕捉長距離依賴信息。
  • 多分類 A P R F 值
    區別一下「多分類」與「多標籤」:        多分類:表示分類任務中有多個類別,但是對於每個樣本有且僅有一個標籤,例如一張動物圖片,它只可能是貓,狗,虎等中的一種標籤(二分類特指分類任務中只有兩個類別)