意義
網絡新聞往往含有豐富的語義,一篇文章既可以屬於“經濟”也可以屬於“文化”。給網絡新聞打多標簽可以更好地反應文章的真實意義,方便日后的分類和使用。
難點
(1)類標數量不確定,有些樣本可能只有一個類標,有些樣本的類標可能高達幾十甚至上百個。
(2)類標之間相互依賴,例如包含藍天類標的樣本很大概率上包含白雲,如何解決類標之間的依賴性問題也是一大難點。
(3)多標簽的訓練集比較難以獲取。
方法
目前有很多關於多標簽的學習算法,依據解決問題的角度,這些算法可以分為兩大類:一是基於問題轉化的方法,二是基於算法適用的方法。基於問題轉化的方法是轉化問題數據,使之使用現有算法;基於算法適用的方法是指針對某一特定的算法進行擴展,從而能夠處理多標記數據,改進算法,適用數據。
基於問題轉化的方法
基於問題轉化的方法中有的考慮標簽之間的關聯性,有的不考慮標簽的關聯性。最簡單的不考慮關聯性的算法將多標簽中的每一個標簽當成是單標簽,對每一個標簽實施常見的分類算法。具體而言,在傳統機器學習的模型中對每一類標簽做二分類,可以使用SVM、DT、Naïve Bayes、DT、Xgboost等算法;在深度學習中,對每一類訓練一個文本分類模型(如:textCNN、textRNN等)。考慮多標簽的相關性時候可以將上一個輸出的標簽當成是下一個標簽分類器的輸入。在傳統機器學習模型中可以使用分類器鏈[1],在這種情況下,第一個分類器只在輸入數據上進行訓練,然后每個分類器都在輸入空間和鏈上的所有之前的分類器上進行訓練。讓我們試着通過一個例子來理解這個問題。在下面給出的數據集里,我們將X作為輸入空間,而Y作為標簽。在分類器鏈中,這個問題將被轉換成4個不同的標簽問題,就像下面所示。黃色部分是輸入空間,白色部分代表目標變量。
在深度學習中,於輸出層加上一個時序模型,將每一時刻輸入的數據序列中加入上一時刻輸出的結果值。以Chen[2]的論文為例,在獲得文章的整體語義(Text feature vector)后,將Text feature vector輸入到一個RNN的序列中作為初始值,每一時刻輸入是上一時刻的輸出。從某種程度上來說,圖一所示的模型將 多標簽任務當成了序列生成任務來處理。除此以外,Yang[3]的論文中也用生成模型來做多標簽的分類任務。
除了將標簽分開看之外,還有將標簽統一來看(Label Powerset)。在這方面,我們將問題轉化為一個多類問題,一個多類分類器在訓練數據中發現的所有唯一的標簽組合上被訓練。讓我們通過一個例子來理解它。
在這一點上,我們發現x1和x4有相同的標簽。同樣的,x3和x6有相同的標簽。因此,標簽powerset將這個問題轉換為一個單一的多類問題,如下所示。
因此,標簽powerset給訓練集中的每一個可能的標簽組合提供了一個獨特的類。轉化為單標簽后就可以使用SVM、textCNN、textRNN等分類算法訓練模型了。
感覺Label Powerset只適合標簽數少的數據,一旦標簽數目太多(假設有n個),使用Label Powerset后可能的數據集將分布在[0,2n-1]空間內,數據會很稀疏。
基於算法適用的方法
改編算法來直接執行多標簽分類,而不是將問題轉化為不同的問題子集。在傳統機器學習模型中穿件的多標簽分類模型有:kNN多標簽版本MLkNN,SVM的多標簽版本Rank-SVM等。在深度學習中常常是修改多分類模型的輸出層,使其適用於多標簽的分類,Mark J. Berger[4]在輸出層對每一個標簽的輸出值使用sigmod函數進行2分類(標簽之間無關聯信息);Kurata在研究多標簽分類時仍然使用了經典的CNN結構(如圖2所示),不過在最后的全連接層的參數系數有些特別,也就是圖2.1中Hidden layer到output layer的系數是經過特別設置的。
假設你總共有標簽的個數為n(n=5)個,其分別是Λ=[λ1,λ2,λ3,λ4,,λ5,],假設共有兩個樣本,一個樣本可能有標簽為[λ1,λ4λ],另一個樣本標簽為[λ2,λ4,λ5],Hidden layer的單元個數假設為10個, Kurata把每個樣本的標簽作為一個標簽共現模式(label co-occurrence pattern)有多少種不同的樣本標簽就有多少種不同的標簽共現模式(樣本可以無限很多,但是標簽種類數最多有2n),然后對Hidden layer到output layer的權重參數進行設置(如下圖2.2)。
圖2.1 XXXX 圖2.2 XXX
James Mullenbach使用一般的CNN提取句子的語義信息,但考慮到句子表示的不同部分在句子分類的過程中會起不同的作用,故在進行分類時候使用了Attention機制(見圖),使得在預測每一類時候句子的不同部分的表示起不同的作用。
圖3 XXXX
其他方法基本上大同小異,在此不再贅述。
現有可利用資源
3、2017知乎“看山杯”比賽(知乎問題多標簽分類比賽,Github上面有代碼)
4、https://drive.google.com/file/d/18-JOCIj9v5bZCrn9CIsk23W4wyhroCp_/view?usp=sharing(英文新聞多 標簽分類數據集)
5、網上可采集的、質量較高的多標簽分類數據集(豆瓣電影評論)
6、GitHub上比較完善的文本多標簽分類項目
7、NLPCC2018,task6和tesk8均可以當成是多標簽的分類任務;
[3] http://arxiv.org/pdf/1806.0482
[4] http://web.stanford.edu/class/cs224d/reports/BergerMark.pdf