多標簽文本分類介紹,以及對比訓練
共 2267字,需瀏覽 5分鐘
·
2022-02-09 17:36
今天我為大家主要介紹幾種多標簽文本分類的方法。
一、文本分類介紹
首先,我介紹下多元文本分類和多標簽文本分類的的區(qū)別。
1、Multi-Class:多分類/多元分類(二分類、三分類、多分類等)
- 二分類:判斷郵件屬于哪個類別,垃圾或者非垃圾
- 二分類:判斷新聞屬于哪個類別,機器寫的或者人寫的
- 三分類:判斷文本情感屬于{正面,中立,負面}中的哪一類
- 多分類:判斷新聞屬于哪個類別,如財經(jīng)、體育、娛樂等
2、Multi-Label:多標簽分類
- 文本可能同時涉及任何宗教,政治,金融或教育,也可能不屬于任何一種。
- 電影可以根據(jù)其摘要內(nèi)容分為動作,喜劇和浪漫類型。有可能電影屬于romcoms [浪漫與喜劇]等多種類型。
3、二者區(qū)別
- 多分類任務中一條數(shù)據(jù)只有一個標簽,但這個標簽可能有多種類別。比如判定某個人的性別,只能歸類為"男性"、"女性"其中一個。再比如判斷一個文本的情感只能歸類為"正面"、"中面"或者"負面"其中一個。
- 多標簽分類任務中一條數(shù)據(jù)可能有多個標簽,每個標簽可能有兩個或者多個類別(一般兩個)。例如,一篇新聞可能同時歸類為"娛樂"和"運動",也可能只屬于"娛樂"或者其它類別。
例子:
假設個人愛好的集合一共有6個元素:運動、旅游、讀書、工作、睡覺、美食
二、多標簽文本分類
下面,我會介紹3種文本多標簽分類的方法。
1、改變輸出概率(probabilities)的計算方式和交叉熵的計算方式
- tf.nn.sigmoid_cross_entropy_with_logits測量離散分類任務中的概率誤差,其中每個類是獨立的而不是互斥的。這適用于多標簽分類問題。
- tf.nn.softmax_cross_entropy_with_logits測量離散分類任務中的概率誤差,其中類之間是互斥的(每個條目恰好在一個類中)。這適用多分類問題。
- 在簡單的二進制分類中,sigmoid和softmax沒有太大的區(qū)別,但是在多分類的情況下,sigmoid允許處理非獨占標簽(也稱為多標簽),而softmax處理獨占類。
2、改變輸出的全連接層。
- 在輸出層設置多個全連接層,每一個全連接層對應一個標簽。
- 損失函數(shù)為所有標簽損失函數(shù)的平均值。
3、使用框架:Attention + seq2seq(Beam Search)
- 上下文語義信息 -> 多標簽之間的關系。多標簽一般去看下并非獨立。
- 將多標簽當作一個序列(類似一句話)。
三、實踐
以上3種方法,都有自己的優(yōu)缺點??赡懿煌娜藭胁煌南敕ǎ械娜藭X得第1種方法最好,有的人會覺得第2種會更種好,還有剩下一部分人會覺得第3種方法最好。我們有自己不同的理解,是因為我們都有自己的想法。(有想法可以留言評論)
至于哪一種方法最好呢,實踐出真理。所以,之后,我會在同一個Pretraining LM的基礎上,通過修改下游任務的框架,按照以上3種方法逐一實現(xiàn)(附代碼)。
四、文章
1、改變輸出概率(probabilities)的計算方式和交叉熵的計算方式
- 下游任務使用全連接層:
- 下游任務使用TextCNN:
2、改變輸出的全連接層
HelloNLP:多標簽文本分類 [ALBERT+Denses](附代碼)3、基于Seq2Seq+Attention框架
HelloNLP:多標簽文本分類 [ALBERT+Seq2Seq+Attention]四、模型對比
接下來的實驗結果是基于一個多標簽的文本分類,其中標簽數(shù)量為96個。
1、損失函數(shù)圖
一共訓練了4個模型,分別是ALBERT、ALBERT+TextCNN、ALBERT+Seq2Seq+Attention和ALBERT+Denses,他們在上圖中的對應關系分別為:CML、CML_TextCNN、CML_SeqSeq和CML_Denses。訓練過程中,每一個框架使用的同樣的batch_size、learning_rate。
在上圖中,從表面上看,基于ALBERT、ALBERT+TextCNN和ALBERT+Denses這三種框架下的Loss收斂的很快,這個是因為計算loss時,會考慮到標簽為0的情況,即標簽為空的情況(在項目中,很多樣本為空標簽)。
2、精確率、召回率和F1值
2.1、 評估方法
這里的精確率、召回率和F1值都是針對有標簽的。
在TP的情況下,存在兩種情況,一種是預測標簽和真實標簽完全一致,另一種是預測標簽和真實標簽只有部分一致。這兩種情況下我們計算的方式為:
# 第一種情況
TP = TP + 1
# 第二種情況
TP = TP + 0.5
FN = FN + 0.5這樣做的目前主要是因為多標簽分類中,存在標簽部分召回或者過多召回(某一個樣本)。
2.2、評估值
從上表中可以看到,基于ALBERT+Denses的效果遠遠好于基于ALBERT的。另外,基于ALBERT+TextCNN較好于的ALBERT+Denses的效果。
- ALBERT+TextCNN和ALBERT+Seq2Seq_Attention的效果接近。
- 在推理速度上面,前面三個框架基本接近,ALBERT+Seq2Seq_Attention的速度比他們慢3倍。
3、結論
- 如果對推理速度的要求不是非常高,基于ALBERT+Seq2Seq_Attention框架的多標簽文本分類效果最好。
- 如果對推理速度和模型效果要求都非常高,基于ALBERT+TextCNN會是一個不錯的選擇。
