相關方法合集見:https://github.com/quincyliang/nlp-data-augmentation
較為簡單的數據增強的方法見論文:https://arxiv.org/pdf/1901.11196.pdf
論文中所使用的方法如下:
1. 同義詞替換(SR: Synonyms Replace):不考慮stopwords,在句子中隨機抽取n個詞,然后從同義詞詞典中隨機抽取同義詞,並進行替換。(同義詞其詞向量可能也更加接近,在使用詞向量的模型中不一定有用)
2. 隨機插入(RI: Randomly Insert):不考慮stopwords,隨機抽取一個詞,然后在該詞的同義詞集合中隨機選擇一個,插入原句子中的隨機位置。該過程可以重復n次。
3. 隨機交換(RS: Randomly Swap):句子中,隨機選擇兩個詞,位置交換。該過程可以重復n次。
4. 隨機刪除(RD: Randomly Delete):句子中的每個詞,以概率p隨機刪除。(類似於神經網絡中的dropout)
第一列是訓練集的大小,第三列是每個句子生成的新句子數,第二列是每一條語料中改動的詞所占的比例。
相關實現見:https://github.com/zhanlaoban/eda_nlp_for_Chinese
還有些如打亂句子的順序,隨機進行Mask,相比於直接復制能夠加入一些噪聲,以防止過擬合。
還有些通過神經網絡進行數據增強的方法,但是代價相對較高,同時效果也不一定會好。
相關討論見:https://www.zhihu.com/question/305256736?sort=created
不同的數據增強方式不能確切的說誰強誰弱,對於NLP任務而言,一切從數據出發,需要結合具體任務進行檢驗。