自然語言處理中數據增強(Data Augmentation)技術最全盤點

圖片

    與 “計算機視覺” 中使用圖像數據增強的標準做法不同,在 NLP 中,文本數據的增強非常少見。這是因爲對圖像的瑣碎操作(例如將圖像旋轉幾度或將其轉換爲灰度)不會改變其語義。語義上不變的轉換的存在是使增強成爲 Computer Vision 研究中必不可少的工具的原因。

    是否有嘗試爲 NLP 開發增強技術的方法,並探討了現有文獻。在這篇文章中,將基於我的發現概述當前用於文本數據擴充的方法。

NLP 數據擴充技術

**    1. 詞彙替代**

    此工作嘗試在不更改句子含義的情況下替換文本中出現的單詞。

**    基於同義詞庫的替換**
在此技術中,從句子中抽取一個隨機單詞,然後使用同義詞庫將其替換爲其同義詞。例如,可以使用 WordNet 數據庫中的英語查找同義詞,然後執行替換。它是一個人工編輯的數據庫,描述單詞之間的關係。

圖片

    Zhang 在他們的 2015 年論文 “Character-level Convolutional Networks for Text Classification” 中使用了該技術。Mueller 等人使用相似的策略爲其句子相似性模型生成額外的 10K 訓練數據。Wei 等人也使用了這種技術作爲 “輕鬆數據增強” 論文中四個隨機增強集合中的一種技術。

    爲了實現,NLTK 提供了對 WordNet 的編程訪問。讀者也可以使用 TextBlob API。此外,還有一個名爲 PPDB 的數據庫,其中包含數百萬個可以通過編程方式下載和使用的短語。

**    詞嵌入替換**
在這種方法中,採用了經過預訓練的詞嵌入,例如 Word2Vec,GloVe,FastText,Sent2Vec,並使用嵌入空間中最近的相鄰詞作爲句子中某些詞的替換。Jiao 已在他們的論文 “TinyBert” 中將這種技術與 GloVe 嵌入一起使用,以改進其語言模型在下游任務上的通用性。Wang 等人用它來增強學習主題模型所需的推文。

圖片

    例如,讀者可以將單詞替換爲最接近的 3 個單詞,並獲得文本的三種變體。

圖片

    使用諸如 Gensim 之類的包來訪問預先訓練的單詞向量並獲取最近的鄰居是很容易的。例如,在這裏使用在推特上訓練的單詞向量找到單詞 “awesome” 的同義詞。

相關好書推薦,京東 1 萬 + 評論,99% 好評:

**    隨機刪除**
該技術也是由 Wei 等人提出的。在他們的論文 “Easy Data Augmentation” 中。在這種情況下,以一定概率 p 隨機刪除句子中的每個單詞。

圖片

**    5. 實例交叉擴展(Instance Crossover Augmentation)**

    這項技術是 Luque(https://arxiv.org/abs/1909.11241)在他對 TASS 2019 的情感分析的論文中引入的。它受到遺傳學中染色體交叉操作的啓發。
在該方法中,一條推文被分爲兩半,並且兩個極性相同(即正 / 負)的隨機推文被互換。假設是,即使結果是不合語法且語義上不合理的,新文本仍將保留情感。

圖片

    該技術對準確性沒有影響,但有助於提高 F1 分數,表明該技術可幫助減少諸如 Tweet 的中性類別等少數羣體。 

圖片

**    6. 語法樹(Syntax-tree)操作**

    此技術已在 Coulombe(https://arxiv.org/abs/1812.04718) 的論文中使用。想法是解析並生成原始句子的依存關係樹,使用規則對其進行轉換並生成釋義的句子。
例如,一種不改變句子含義的轉換就是從主動語態到被動語態的轉換,反之亦然。

圖片

**    7. 文字混合 (Mixup for Text)**

    混合是張等人 (https://arxiv.org/abs/1710.09412) 介紹的一種簡單而有效的圖像增強技術。這是在 2017 年提出的。想法是將兩個隨機圖像按一定比例組合在一個小批量中,以生成用於訓練的合成示例。對於圖像,這意味着將兩個不同類別的圖像像素組合在一起。它是訓練過程中的一種正規化形式。

圖片

    郭等人(https://arxiv.org/abs/1905.08941)將這個想法帶給了自然語言處理。修改了 Mixup 以處理文本。他們提出了兩種新穎的方法將 Mixup 應用於文本:

**    · wordMixup:**
在此方法中,在一個小批量中獲取兩個隨機句子,並將它們零填充爲相同的長度。然後,將它們的詞嵌入按一定比例組合。生成的單詞嵌入將傳遞到常規流程以進行文本分類。對於給定比例的原始文本的兩個標籤,計算交叉熵損失。

圖片

**    sentMixup:**
在此方法中,採用兩個句子並將它們零填充爲相同的長度。然後,它們的詞嵌入通過 LSTM / CNN 編碼器傳遞,將最後的隱藏狀態作爲句子嵌入。這些嵌入按一定比例組合,然後傳遞到最終分類層。基於給定比例的原始句子的兩個標籤計算交叉熵損失。

圖片

**    8. 生成方法(Generative Methods)**

    此工作嘗試在保留標籤類別的同時生成其他訓練數據。

  **  條件預訓練語言模型**
    這項技術由 Anaby-Tavor 等人首先提出。在他們的論文 Not Enough Data? Deep Learning to the Rescue!。Kumar 等人的(https://arxiv.org/abs/2003.02245)最新論文。在多個基於 Transformer 的預訓練模型中評估了這個想法。問題表述如下:

    將類別標籤附加到訓練數據中的每個文本

圖片

    在修改後的訓練數據上微調一個大型的預訓練語言模型(BERT / GPT2 / BART)。對於 GPT2,微調任務是生成,而對於 BERT,目標將是屏蔽 token 預測。

圖片

    使用微調的語言模型,可以通過使用類標籤和少量的初始單詞作爲模型提示來生成新樣本。本文使用每個訓練文本的 3 個初始單詞,併爲訓練數據中的每個點生成一個綜合示例。

圖片

實現

    諸如 nlpaug(https://github.com/makcedward/nlpaug)和 textattack(https://github.com/QData/TextAttack)之類的庫提供了簡單而一致的 API,以在 Python 中應用上述 NLP 數據增強方法。它們與框架無關,可以輕鬆集成到讀者的管道中。

結論

    我從文獻回顧中得出的結論是,許多這些 NLP 增強方法都是非常特定於任務的,並且僅在某些特定用例中研究了它們對性能的影響。系統地比較這些方法並分析它們對許多任務的性能的影響將是一個有趣的研究。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/WP5TuLh1o9XUpMrapHXLtg