自然語言處理的數據增強分析☞Easy Data Augmentation

自然語言處理的EDA-最簡單數據增強探索性數據分析
論文原文詳情:Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks

論文英文代碼:代碼

中國大哥做的中文擴展代碼:代碼

    數據增強常用於計算機視覺。翻折、旋轉或鏡像一幅圖片,改變相應的標記便是可以的。然而,在自然語言處理中,情況完全不同。改變一個詞有可能改變整個句子的意思。
    即使相同的字讀音不同就可以改變該句子的意思
    EDA:簡單數據增廣技術,可以大大提升文本分類任務的性能
    在EDA Github repository有簡單的實現代碼)。EDA包含四個方向,能極好地防止過擬合,並訓練出更強健的模型:
  同義詞替換(Synonym Replacement, SR):在句子中隨機選取n個非停用詞。對每個選取的詞,用它的隨機選取的同義詞替換。
  隨機插入(Random Insertion, RI):在句子中任意找一個非停用詞,隨機選一個它的同義詞,插入句子中的任意位置。重複n次。
  隨機交換(Random Swap, RS):任意選取句子中的兩個詞,交換位置。重複n次。
    隨機刪除(Random Deletion, RD):對於句子中概率爲p的每一個詞,隨機刪除。
    論文原文效果:在完整的數據集上,平均性能提升0.8%;在大小爲500的訓練集上,提升3.0%。
    
    在EDA操作之後生成的某些句子有點怪異,但是在數據集中的引入一些噪聲,對於訓練出一個健壯的模型來說,是極有好處的,特別是數據集比較小的時候。這篇論文指出,在5個文本分類任務的對比測試中,基於幾乎所有大小的數據集,使用EDA都擊敗了常規訓練方法,在訓練數據集較小的時候,表現尤其突出。平均來說,用EDA訓練一個卷積神經網絡(RNN),只需50%的訓練數據,即可達到常規方法同等的精度。

這些方法裏,只有SR曾經被人研究過,其他三種方法都是本文作者首次提出。

值得一提的是,長句子相對於短句子,存在一個特性:長句比短句有更多的單詞,因此長句在保持原有的類別標籤的情況下,能吸收更多的噪聲。
爲了充分利用這個特性,作者提出一個方法:基於句子長度來變化改變的單詞數,換句話說,就是不同的句長,因增強而改變的單詞數可能不同。
具體實現:對於SR、RI、RS,遵循公式:$n$ = $\alpha$ * $l$,$l$ 表示句長,$\alpha$ 表示一個句子中需要改變的單詞數的比例。
在RD中,讓 $p$ 和 $\alpha$ 相等。另外,每個原始句子,生成個增強的句子。

回顧老擴充方法
    已有方法及其問題所在
    - 英法互譯
    - 同義詞替換
    - 數據噪聲
    由於沒有一般的語言轉換的通用規則,因此NLP中的通用數據增強技術人們探索甚少。上述若干方法,相對於其能提升的性能,實現開銷更大。
 

結合公司數據,覺得這個EDA是沒啥卵用的。不知道在其他場景會不會好用一點。期待下次嘗試

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章