0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

幾種常用的NLP數(shù)據(jù)增強(qiáng)方法

深度學(xué)習(xí)自然語(yǔ)言處理 ? 來(lái)源:深度學(xué)習(xí)自然語(yǔ)言處理 ? 作者:深度學(xué)習(xí)自然語(yǔ)言 ? 2022-09-15 14:54 ? 次閱讀

當(dāng)訓(xùn)練數(shù)據(jù)量不充分,或者分布單一的情況下,數(shù)據(jù)增強(qiáng)可以快速擴(kuò)充語(yǔ)料以避免過(guò)擬合的問(wèn)題。同時(shí),數(shù)據(jù)增強(qiáng)也可以提升模型的魯棒性,避免微弱的變化使得模型無(wú)法泛化到相似的語(yǔ)境中。

機(jī)器學(xué)習(xí)深度學(xué)習(xí)在包括文本分類等自然語(yǔ)言任務(wù)達(dá)到不錯(cuò)的效果,但他們 需要依賴于大規(guī)模的標(biāo)注數(shù)據(jù) ,除了直接使用小樣本學(xué)習(xí)外,顯式數(shù)據(jù)增強(qiáng)格外有效;

數(shù)據(jù)增強(qiáng)在計(jì)算機(jī)視覺(jué)中得以應(yīng)用,其可以在數(shù)據(jù)量很少的情況下提升模型的魯棒性;而在NLP中,通用的文本類型的數(shù)據(jù)增強(qiáng) 還沒(méi)有完全被挖掘出來(lái)

本文介紹幾種比較簡(jiǎn)單但常用的NLP數(shù)據(jù)增強(qiáng)方法,包括顯式和隱式兩個(gè)方面,在實(shí)驗(yàn)或比賽中可以提升效果。可使用nlpaug[1]工具快速實(shí)現(xiàn)這些技術(shù)。

顯式數(shù)據(jù)增強(qiáng)

給定一個(gè)輸入文本,在盡可能不改變?cè)俏谋菊Z(yǔ)義的情況下,微調(diào)或修改部分字符或詞可以實(shí)現(xiàn)快速的增強(qiáng),主要包括如下幾種類型:

同義詞替換 (SR) :隨機(jī)挑選n個(gè) 非停用詞 ,分別根據(jù)其 同義詞表 隨機(jī)替換一個(gè)同義詞;

e157e8a8-34ad-11ed-ba43-dac502259ad0.png

對(duì)于分類、回歸等任務(wù),可以使用反義詞表替換所有原始詞性的詞,實(shí)現(xiàn)負(fù)采樣,也是一種數(shù)據(jù)增強(qiáng)方法。但使用同義詞或反義詞表進(jìn)行替換時(shí),很難保證文本的語(yǔ)義是否符合預(yù)期。

隨機(jī)插入 (RI) :在句子中隨機(jī)找到一個(gè) 非停用詞 ,并隨機(jī)選擇其對(duì)應(yīng)的一個(gè)同義詞,將該同義詞插入句子中的 隨機(jī)位置 。重復(fù)執(zhí)行 n n n 次;

隨機(jī)交換 RS:在句子中隨機(jī)挑選兩個(gè)詞,并 交換位置 ,重復(fù)執(zhí)行 n n n 次;

隨機(jī)刪除 (RD) :對(duì)每個(gè)詞,有一定概率 p p p 進(jìn)行 刪除

標(biāo)點(diǎn)插入 PI:隨機(jī)挑選若干位置,并分別隨機(jī)插入 標(biāo)點(diǎn)符號(hào) ;

由于輸入的文本長(zhǎng)度長(zhǎng)短不一,直覺(jué)上希望較長(zhǎng)的句子 n 較大,因此通過(guò)一個(gè)參數(shù) α 控制,即 ,對(duì)于 RD ,概率 。

本文對(duì)標(biāo)點(diǎn)插入 PI 進(jìn)行了實(shí)現(xiàn),以中文為例,如下所示:

借助Spacy分詞工具,需要安裝Spacy,使用Spacy進(jìn)行分詞、分析詞性,根據(jù)分詞和詞性選擇需要插入的標(biāo)點(diǎn)。

標(biāo)點(diǎn)符號(hào)可以選擇 ,。???;“ ” 等。

importnumpyasnp
importspacy
importrandom
fromtypingimportDict
fromtqdmimporttqdm


classDataAugmentation:
def__init__(self):
self.nlp=spacy.load('zh_core_web_sm')

deffit(self,examples:Dict[str,list]):
self.examples=examples#{'text':[],'label':[],'id':[]}
#簡(jiǎn)單的數(shù)據(jù)增強(qiáng):增加標(biāo)點(diǎn)符號(hào)
text_list=self.examples['text']
label_list=self.examples['label']
id_list=self.examples['id']

aug_text_list,aug_label_list,aug_id_list=[],[],[]
pun=[',','。','?','!',';','"']

foreiintqdm(range(len(text_list))):
text=text_list[ei]
label=label_list[ei]
id=label_list[ei]
doc=self.nlp(text)#spacy分詞
token_list,pos_list=[],[]
fortokenindoc:
token_list.append(token.text)
pos_list.append(token.pos_)
iflen(token_list)-1>=1:
num=0
state=False
whilenum

演示效果:
e236da86-34ad-11ed-ba43-dac502259ad0.png

除了前述的幾種方法,也可以采用如下幾種新的策略:

單詞縮寫、全寫:例如可以建立一個(gè)詞表,對(duì)所有存在簡(jiǎn)寫的詞進(jìn)行替換,例如 It is可以替換為 It’s,England可替換為UK.等;

錯(cuò)誤拼寫 (WS) :有時(shí)候?yàn)榱颂岣唪敯粜裕瑫?huì)故意將文本中的單詞或字符使用錯(cuò)誤拼寫的單詞或字符進(jìn)行替換,在不影響語(yǔ)義的條件下 引入少量噪聲 。例如 I like this book可以替換為 I like thes book。對(duì)于中文,也可以構(gòu)建confusion set,替換字形或字音相似的詞,例如“上海是經(jīng)濟(jì)中心”可以替換為“上海時(shí)經(jīng)濟(jì)中心”。但注意需要保證原始語(yǔ)義。

統(tǒng)計(jì)特征 (SF) :通常很多詞在大規(guī)模語(yǔ)料中具有一定的統(tǒng)計(jì)特征,例如TF-IDF、互信息量等。在使用TF-IDF和互信息量時(shí),可選擇值較小的進(jìn)行隨機(jī)替換。

隱式數(shù)據(jù)增強(qiáng)

因?yàn)橹苯訉?duì)原是文本進(jìn)行數(shù)據(jù)增強(qiáng),很難保證維持原始的文本語(yǔ)義,因此可以通過(guò)在語(yǔ)義空間上進(jìn)行隱式數(shù)據(jù)增強(qiáng),簡(jiǎn)單列出幾種方法:

詞向量替換 :通過(guò)word2vec或GloVe預(yù)訓(xùn)練的詞向量獲得相似的詞,對(duì)于給定某個(gè)詞,則可以直接隨機(jī)選擇相似的詞的詞向量進(jìn)行替換;

詞向量的原型向量: 通過(guò)word2vec或GloVe預(yù)訓(xùn)練的詞向量,可以通過(guò)對(duì)所有相似的詞或token的embedding進(jìn)行平均池化。一般認(rèn)為語(yǔ)義相似的詞在語(yǔ)義空間內(nèi)會(huì)聚集在一起,因此其平均的詞向量可以認(rèn)為是這些相似語(yǔ)義詞的 原型向量(prototype embedding) ,原型向量可以作為隱式增強(qiáng)表征;

Dropout: 在對(duì)文本使用RNN、CNN或BERT等進(jìn)行表征后,得到融合上下文信息的embedding,可以采用 隨機(jī)dropout法 。具體地說(shuō),假設(shè)一個(gè)embedding是 [0.1, 0.4, 0.2, -0.5], 隨機(jī)dropout旨在隨機(jī)挑選一個(gè)元素替換為0,例如挑選第2個(gè)位置的元素替換為0,變?yōu)?[0.1, 0.0, 0.2, -0.5]。隨機(jī)dropout參考了計(jì)算機(jī)視覺(jué)領(lǐng)域內(nèi)對(duì)圖像表征后的feature map進(jìn)行mask的操作(在語(yǔ)義特征上添加噪點(diǎn))以實(shí)現(xiàn)增強(qiáng);

語(yǔ)言模型 Masked Language Modeling(MLM): MLM是BERT等預(yù)訓(xùn)練語(yǔ)言模型在大規(guī)模語(yǔ)料上自監(jiān)督訓(xùn)練目標(biāo),其旨在隨機(jī)挖掉一個(gè)文本中的token并讓模型預(yù)測(cè)該詞。由于大規(guī)模訓(xùn)練,使得模型可以預(yù)測(cè)出許多相似的結(jié)果,例如“I like this book because it is funny.”,我們可以讓MLM生成與“funny”具有同等語(yǔ)義的詞:

e2651b12-34ad-11ed-ba43-dac502259ad0.png

機(jī)器翻譯: 基于機(jī)器翻譯的方法,將原始文本翻譯為另一種語(yǔ)言,并再次進(jìn)行回譯。該方法比較類似計(jì)算機(jī)視覺(jué)中的自編碼器。但該方法需要率先在領(lǐng)域數(shù)據(jù)上進(jìn)行訓(xùn)練,且依賴于大量的平行語(yǔ)料,較為繁瑣;

文本生成: 基于生成的方法可以在不改變?cè)颊Z(yǔ)義的前提下生成出上述無(wú)法顯式構(gòu)造的新文本。但基于生成的方法依然依賴于所屬領(lǐng)域的訓(xùn)練數(shù)據(jù)。

如果需要增強(qiáng)的文本所屬一個(gè)新的領(lǐng)域(例如醫(yī)療、生物),基于翻譯和生成的方法則需要先在該領(lǐng)域的相關(guān)語(yǔ)料上進(jìn)行訓(xùn)練,得到較為魯棒的翻譯或生成模型。但數(shù)據(jù)增強(qiáng)又是為了增強(qiáng)數(shù)據(jù)量,沒(méi)有充分又無(wú)法訓(xùn)練翻譯或生成模型,產(chǎn)生矛盾。因此通常對(duì)新的領(lǐng)域或任務(wù)上不會(huì)首選這兩種方法。

對(duì)抗訓(xùn)練: 引入對(duì)抗樣本實(shí)現(xiàn)數(shù)據(jù)增強(qiáng),例如下圖(左)是少量樣本時(shí)學(xué)習(xí)的決策邊界,對(duì)每個(gè)樣本在一定范圍內(nèi)進(jìn)行擾動(dòng)攻擊,使得在直觀上無(wú)法辨別,但在語(yǔ)義空間內(nèi)則會(huì)影響樣本的決策,例如下圖(中),五角星則代表對(duì)抗樣本。因此圖(右)引入對(duì)抗訓(xùn)練目標(biāo)以修改決策邊界。通常對(duì)抗訓(xùn)練目標(biāo)可以是對(duì)增強(qiáng)的樣本偽造其標(biāo)簽以增強(qiáng)魯棒性。

e2a94850-34ad-11ed-ba43-dac502259ad0.png

對(duì)比學(xué)習(xí): 如果樣本少,那就盡可能學(xué)習(xí)這些樣本之間的差異。對(duì)比學(xué)習(xí)旨在構(gòu)建樣本對(duì)來(lái)解決訓(xùn)練困難問(wèn)題,因?yàn)闃?gòu)建了樣本對(duì),所以間接地增加了數(shù)據(jù)量。雖然對(duì)比學(xué)習(xí)最初目標(biāo)不是為了數(shù)據(jù)增強(qiáng),但可以通過(guò)添加對(duì)比學(xué)習(xí)loss來(lái)隱式地提升魯棒性;

自監(jiān)督輔助任務(wù): 如果目標(biāo)NLP數(shù)據(jù)量少,那么可以直接引入大規(guī)模無(wú)監(jiān)督語(yǔ)料(例如Wikipedia),并在具體任務(wù)訓(xùn)練時(shí)添加輔助學(xué)習(xí)目標(biāo),通過(guò)語(yǔ)義層面上實(shí)現(xiàn)增強(qiáng);

例如在進(jìn)行文本分類任務(wù)上時(shí),除了文本分類損失函數(shù)外,還可以添加類似MLM的輔助任務(wù),或者添加額外的多任務(wù)信息

知識(shí)圖譜增強(qiáng)(遠(yuǎn)程監(jiān)督法): 遠(yuǎn)程監(jiān)督可以快速地啟發(fā)式構(gòu)建大規(guī)模標(biāo)注數(shù)據(jù),目前在信息抽取任務(wù)上使用廣泛,其旨在通過(guò)一個(gè)已有的知識(shí)圖譜或規(guī)則來(lái)直接對(duì)無(wú)監(jiān)督的語(yǔ)料進(jìn)行標(biāo)注,但遠(yuǎn)程監(jiān)督方法容易引入大量噪聲。

在關(guān)系抽取任務(wù)中,通過(guò)知識(shí)庫(kù)中已有的三元組(例如<喬布斯,創(chuàng)始人,蘋果>),來(lái)標(biāo)注一批新的實(shí)體對(duì)語(yǔ)料。但對(duì)于文本“喬布斯吃了一個(gè)蘋果”而言,遠(yuǎn)程監(jiān)督法依然會(huì)標(biāo)注為“創(chuàng)始人”,但顯然這是噪聲。對(duì)于噪聲,則可以通過(guò)一些規(guī)則,或Attention的方法解決。

半監(jiān)督方法: 半監(jiān)督法旨在對(duì)少量有標(biāo)簽數(shù)據(jù)上進(jìn)行訓(xùn)練,然后在無(wú)標(biāo)簽數(shù)據(jù)上進(jìn)行推理,并獲得高置信度的偽標(biāo)簽數(shù)據(jù)后,再進(jìn)行訓(xùn)練。因此偽標(biāo)簽數(shù)據(jù)可以作為數(shù)據(jù)增強(qiáng)部分語(yǔ)料,但依然容易引入噪聲。

對(duì)于噪聲部分,則可以采用幾種策略:(1)提高置信度閾值,(2)多個(gè)不同的模型共同預(yù)測(cè)偽標(biāo)簽,取全部預(yù)測(cè)正確的作為可信樣本;(3)偽標(biāo)簽數(shù)據(jù)回測(cè)評(píng)估:如果加入偽標(biāo)簽的數(shù)據(jù)后效果變差,則需要剔除或更改標(biāo)簽。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7026

    瀏覽量

    89024
  • 語(yǔ)言模型
    +關(guān)注

    關(guān)注

    0

    文章

    524

    瀏覽量

    10277
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    488

    瀏覽量

    22035

原文標(biāo)題:NLP中的數(shù)據(jù)增強(qiáng)方法!

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    介紹幾種常用的傳感器數(shù)據(jù)處理方法

    在傳感器使用中,我們常常需要對(duì)傳感器數(shù)據(jù)進(jìn)行各種整理,讓應(yīng)用獲得更好的效果,以下介紹幾種常用的簡(jiǎn)單處理方法
    發(fā)表于 07-12 10:51 ?9161次閱讀

    常用幾種接地方法?

    簡(jiǎn)單列舉幾種常用的接地方法
    發(fā)表于 03-29 08:20

    介紹幾種常用的單片機(jī)系統(tǒng)RAM測(cè)試方法

    介紹幾種常用的單片機(jī)系統(tǒng)RAM測(cè)試方法,并在原有基礎(chǔ)上提出了一種基于種子和逐位倒轉(zhuǎn)的RAM故障測(cè)試方法
    發(fā)表于 04-09 06:15

    幾種常用的測(cè)量角度速度的方法原理是什么?

    幾種常用的測(cè)量角度速度的方法原理是什么?三輪車可以用編碼器測(cè)速嗎?還是只能用光電編碼盤?
    發(fā)表于 10-19 09:44

    調(diào)試嵌入式處理器的幾種常用方法

    調(diào)試嵌入式處理器的幾種常用方法 前言 在任何產(chǎn)品
    發(fā)表于 03-11 12:25 ?1599次閱讀
    調(diào)試嵌入式處理器的<b class='flag-5'>幾種</b><b class='flag-5'>常用</b><b class='flag-5'>方法</b>

    常用幾種管道檢測(cè)方法

    常用幾種管道檢測(cè)方法  管道運(yùn)輸是石油、天然氣運(yùn)輸采用的主要方式。目前,在我國(guó)近70%的原油、100%的天然氣是通過(guò)管道來(lái)進(jìn)行運(yùn)輸
    發(fā)表于 03-20 11:50 ?1.1w次閱讀

    幾種分析電路的常用方法

    幾種分析電路的常用方法,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 17:15 ?0次下載

    常用幾種無(wú)損探傷儀檢測(cè)方法介紹

    常用幾種無(wú)損探傷儀檢測(cè)方法介紹
    發(fā)表于 02-07 16:15 ?14次下載

    單片機(jī)程序常用幾種調(diào)試方法

    單片機(jī)程序常用幾種調(diào)試方法,這些調(diào)試方法都需要結(jié)合電腦上位機(jī),以下我羅列一些調(diào)試方法
    發(fā)表于 07-17 09:31 ?1.3w次閱讀

    一種單獨(dú)適配于NER的數(shù)據(jù)增強(qiáng)方法

    ? 本文首先介紹傳統(tǒng)的數(shù)據(jù)增強(qiáng)在NER任務(wù)中的表現(xiàn),然后介紹一種單獨(dú)適配于NER的數(shù)據(jù)增強(qiáng)方法,這種方法
    的頭像 發(fā)表于 01-18 16:28 ?3090次閱讀

    分析對(duì)比幾種常用軸修復(fù)方法

    分析對(duì)比幾種常用軸修復(fù)方法
    發(fā)表于 12-02 11:05 ?1次下載

    傳感器使用中幾種常用的簡(jiǎn)單處理方法

      在傳感器使用中,我們常常需要對(duì)傳感器數(shù)據(jù)進(jìn)行各種整理,讓應(yīng)用獲得更好的效果,以下介紹幾種常用的簡(jiǎn)單處理方法
    的頭像 發(fā)表于 11-30 10:40 ?1081次閱讀

    淺談傳感器幾種常用的簡(jiǎn)單處理方法

    在傳感器使用中,我們常常需要對(duì)傳感器數(shù)據(jù)進(jìn)行各種整理,讓應(yīng)用獲得更好的效果,以下介紹幾種常用的簡(jiǎn)單處理方法。
    發(fā)表于 03-02 09:35 ?614次閱讀

    NLP數(shù)據(jù)增強(qiáng)的最新綜述

    作為一種有效的策略,數(shù)據(jù)增強(qiáng) (data augmentation, DA) 緩解了深度學(xué)習(xí)技術(shù)可能失敗的數(shù)據(jù)稀缺情況。
    的頭像 發(fā)表于 03-16 09:13 ?800次閱讀

    幾種常用的產(chǎn)生負(fù)電源的方法

    幾種常用的產(chǎn)生負(fù)電源的方法
    的頭像 發(fā)表于 12-05 15:54 ?1443次閱讀
    <b class='flag-5'>幾種</b><b class='flag-5'>常用</b>的產(chǎn)生負(fù)電源的<b class='flag-5'>方法</b>