一種僅使用標簽名進行文本分類的方法

1 Introduction

今天分享2020年EMNLP會議上的一篇paper,關于無監(jiān)督(弱監(jiān)督)方式進行文本分類,論文題目為:Text Classification Using Label Names Only: A Language Model Self-Training Approach。從題目可看出:論文的核心是僅利用標簽名進行文本分類,而其中實現(xiàn)的過程可以看著是:一個自學習的語言模型。光從標題這兩點,就吸引了我想閱讀的欲望——可見取一個好論文的標題是很重要的~~。

帶著這份被引導的欲望,我將這篇論文讀了幾遍,其中細節(jié)也是反復去理解。最后感覺:這篇論文提出的方法不錯,有在實際場景中落地的價值。那就把這篇自認好文分享給大家,如果入不了你的法眼也沒關系,我權當又加深了一次理解。論文的下載地址為:https://www.aclweb.org/anthology/2020.emnlp-main.724.pdf,本篇論文也開源了代碼:https://github.com/yumeng5/LOTClass

2 Model

上圖為論文的模型框架,整體來說:左邊部分(MLM)是利用標簽名(如sports,politics等)和BERT Encoder來找每個標簽對應的類別詞,形成類別詞庫(Category Vocabulary);右邊部分是將文本中的類別詞marked掉,然后預測其屬于那種類別詞庫,其結果也對應著文本預測的類別,這部分是一個自學習迭代的過程。接著詳細介紹。

2.1 依據(jù)label名從語料庫中找對應的類別詞

實現(xiàn)該目標的思路為:找出一個label名在語料庫中出現(xiàn)的文本,然后利用BERT獲取這個label的上下文表征向量h,接著利用它去預測跟詞表V中最相似的詞(最能替代的詞)。概括來說:就是利用BERT MKM模型(BERT masked language model) 來預測哪些詞在語義層面是可以代替在文本中出現(xiàn)的label。 計算公式如下:


其中參數(shù)都是BERT已訓練好的,這個過程可利用transformer包直接調用實現(xiàn),詳細見論文源碼。

按以上方法找到詞并不能真正意義代表label的類別詞,接著作者制定了幾條規(guī)則進行過濾:

  • 對于每一個文本的中l(wèi)abel詞,取前50個最相似的詞,按概率排序
  • 對每個label,通過出現(xiàn)頻率排序,取前100作為該label的類別詞庫
  • 去掉停用詞
  • 去掉在多個label的類別詞庫出現(xiàn)的詞

下表為論文在數(shù)據(jù)集上找的類別詞庫示例:



2.2 類別詞進行marked預測學習

雖然通過上面的步驟已找到各個label對應的類別詞庫,但作者覺得還不夠,因為還存在兩個問題:

  • 存在一詞多義的情況,如Table1中顯示:“sports”有兩層含義,第二個得到的相似詞并不代表其label的含義;
  • 詞表中詞有限,有些類別詞可能并不在詞表中;

針對上述兩個問題,作者提出一個新任務: Masked Category Prediction (MCP),對應model圖中的右邊部分。其思想是:將文本中的詞masked掉,然后利用它的上下文表征信息,預測類別詞所在的category。這是一個分類任務,也是在MLM基礎上進行下fine-tuned的學習過程。這里可能大家會有一個疑問:這是一個監(jiān)督學習過程,那監(jiān)督數(shù)據(jù)是?

為解決這個問題,作者這樣處理的:判斷一個詞w是否屬于真正對應的label,如果該詞的替代詞有20個在label找到的類別詞的50個中,則認為該詞就是label的代表詞,文中也稱類別指示(category-indicative)。這條規(guī)則在某種程度上消除了上面提到的一詞多義的問題。

接著作者將類別指示詞(category-indicative)作為監(jiān)督數(shù)據(jù)進行MCP任務訓練:


注意:在MCP任務中,masked是category-indicative詞,文中解釋說:這樣做可讓模型根據(jù)詞的上下文來推斷類別,而不是簡單根據(jù)類別詞,某種程度就擴大了類別詞范圍,解決了上述的第二個問題。此外,這個任務也達到了文本分類的目的。

2.3 在大規(guī)模語料庫中進行自學習

有了MLM和MCP任務,作者又提出在大規(guī)模未標注數(shù)據(jù)集上進行自學習訓練,其原因有兩個:

  • 仍有大量的未標注文本沒被MCP模型進行學習,而這些未被學習的樣例是有助于提高模型泛化性的;
  • MCP訓練的模型只是利用了masked詞的上下文表征信息,并沒有利用文本的整體表征信息[cls];

針對上述問題,文章提出一個self-training (ST)思想:迭代地使用模型的預測分布P,和計算出目標分布Q,計算二者的KL loss,從而指導模型進行優(yōu)化。


關于分布Q的計算,文本采用下列方法:


為何采用該計算方法,這里我也做不了太多的解釋;文中也是引起其他論文中的方法,若對此感興趣的,建議深入閱讀相關文獻。而P分布是利用MCP任務訓練的模型,然后利用文本的[CLS]向量來進行類別預測出來的分布。


按照上述方法,迭代在語料庫上進行訓練,每50個batch 更新下公式4、公式5,迭代過程如上圖所示。

3 Experiment

文中在四個數(shù)據(jù)集上進行試驗,每個數(shù)據(jù)集上的label類目并不是很多,有的就兩個類別。


試驗結果顯示,文中的方法(LOTClass)在弱監(jiān)督類,四個數(shù)據(jù)集都取得最佳結果,最高達20%效果的提升。其中自學習方法對模型也有約6%的提升效果。與監(jiān)督和半監(jiān)督學習對比來看,平均差8%左右。整體來說,弱監(jiān)督能達到這個水平非常不錯了。

4 Conclusion

文中作者也提及到:覺得目前提出的方法仍有提升的空間,具體包括:(1)使用更強的預訓練模型,文中只使用的是Bert-base,(2)將類別詞粒度擴大,文中的類別詞長度限制不超過3;(3)使用反向翻譯方式進行數(shù)據(jù)增強。此外,作者相信:該方法如果結合半監(jiān)督或者監(jiān)督學習方法,能得到更佳分類的效果。

一些我個人的想法:論文是在英文數(shù)據(jù)集上做的實驗,其方法也可在中文文本上使用,可能會有一些差別,這個我目前正在實驗,看看效果,若效果如文中實驗結果那般,那真很多項目場景都可以落地應用。此外,有點存疑就是:如果真實分類場景中,label的數(shù)量很多,甚至有層級關系,這類label的指示詞能很好學到嗎?此外,有些label名可能就沒在語料庫出現(xiàn)過,那這個問題又涉及到類似冷啟動的問題了,還是需要人為定義一些label的指示詞再去擴充。這些問題還需結合真實數(shù)據(jù)場景進行研究,也希望本篇paper對text classification任務感興趣的朋友有用,后續(xù)若有進展,再跟大家分享~

更多文章可關注筆者公眾號:自然語言處理算法與實踐

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容