60 機(jī)器翻譯數(shù)據(jù)集【動(dòng)手學(xué)深度學(xué)習(xí)v2】

機(jī)器翻譯與數(shù)據(jù)集
- 語言模型是自然語言處理的關(guān)鍵,而機(jī)器翻譯是語言模型最成功的基準(zhǔn)測試
- 機(jī)器翻譯(machine translation)指的是將序列從一種語言自動(dòng)翻譯成另一種語言,它是是將輸入序列轉(zhuǎn)換成輸出序列的序列轉(zhuǎn)換模型(sequence transduction)的核心問題
- 幾十年來,在使用神經(jīng)網(wǎng)絡(luò)進(jìn)行端到端學(xué)習(xí)的興起之前,統(tǒng)計(jì)學(xué)方法在這一領(lǐng)域一直占據(jù)著主導(dǎo)地位。因?yàn)?strong>統(tǒng)計(jì)機(jī)器翻譯(statisticalmachine translation)涉及了翻譯模型和語言模型等組成部分的統(tǒng)計(jì)分析, 因此基于神經(jīng)網(wǎng)絡(luò)的方法通常被稱為神經(jīng)機(jī)器翻譯(neuralmachine translation), 用于將兩種翻譯模型區(qū)分開來
- 與語料庫是單一語言的語言模型問題不同,機(jī)器翻譯的數(shù)據(jù)集是由源語言和目標(biāo)語言的文本序列對組成的
如何將預(yù)處理后的數(shù)據(jù)加載到小批量中用于訓(xùn)練
1、下載數(shù)據(jù)集
下載由Tatoeba項(xiàng)目的雙語句子對組成的“英-法”數(shù)據(jù)集
- 數(shù)據(jù)集中的每一行都是制表符分隔的文本序列對
- 序列對由英文文本序列和翻譯后的法語文本序列組成(每個(gè)文本序列可以是一個(gè)句子,也可以是包含多個(gè)句子的一個(gè)段落)
- 在將英語翻譯成發(fā)育的機(jī)器翻譯問題中,英語是源語言(source language), 法語是目標(biāo)語言(target language)
2、數(shù)據(jù)集預(yù)處理
- 使用空格代替不間斷空格(non-breaking space)
- 使用小寫字母替換大寫字母,并在單詞和標(biāo)點(diǎn)之間插入空格(方便下一步進(jìn)行詞元化,因?yàn)闄C(jī)器翻譯中傾向于單詞級(jí)詞元化,所以在單詞和標(biāo)點(diǎn)符號(hào)之間插入空格,也就意味著標(biāo)點(diǎn)也會(huì)被當(dāng)作詞元(在之前的課程中對于數(shù)據(jù)集的預(yù)處理是將標(biāo)點(diǎn)符號(hào)直接去掉的,這里需要將標(biāo)點(diǎn)符號(hào)留下來))
3、詞元化
對文本序列進(jìn)行詞元(機(jī)器翻譯中傾向于單詞級(jí)詞元化)
- 每個(gè)詞元要么是一個(gè)詞,要么是一個(gè)標(biāo)點(diǎn)符號(hào)
4、詞表
因?yàn)闄C(jī)器翻譯數(shù)據(jù)集由語言對組成,所以可以分別為源語言和目標(biāo)語言構(gòu)建兩個(gè)詞表(在使用代碼具體實(shí)現(xiàn)的時(shí)候,詞元化和構(gòu)建詞表其實(shí)是在一個(gè)函數(shù)中完成的)
- 使用單詞級(jí)詞元化時(shí),詞表的大小將明顯大于使用字符級(jí)詞元化時(shí)的詞表大小(為了解決這個(gè)問題,可以將出現(xiàn)次數(shù)少于某一個(gè)特定值的低頻詞元是為相同的未知詞元(“<unk>”))
- 指定額外的特定詞元。填充詞元:“<pad>”;序列的開始詞元:“<bos>”(begin of sentence);序列的結(jié)束詞元:“<eos>”(end of sentence)
5、加載數(shù)據(jù)集
為了提高計(jì)算效率,可以通過截?cái)啵╰runcation)和填充(padding)方式實(shí)現(xiàn)一次只處理一個(gè)小批量的文本序列
- 因?yàn)榫渥拥拈L度是不同的,因此不餓能直接將其切成固定長度,否則可能會(huì)將兩個(gè)句子放在一起
- 語言模型中的序列樣本都有一個(gè)固定的長度(這個(gè)固定長度由時(shí)間步數(shù)或者詞元數(shù)量指定),無論這個(gè)樣本是一個(gè)句子的一部分還是跨越了多個(gè)句子的一個(gè)片段
- 在機(jī)器翻譯中,每個(gè)樣本都是由源和目標(biāo)組成的文本序列對,其中每個(gè)文本序列可能具有不同的長度
假設(shè)同一個(gè)小批量中的每個(gè)序列都應(yīng)該具有相同的長度(便于以相同形狀的小批量進(jìn)行加載),通過截?cái)嗪吞畛涞姆绞骄湍軌驅(qū)⑽谋拘蛄修D(zhuǎn)換成小批量數(shù)據(jù)集進(jìn)行訓(xùn)練了
- 如果文本序列的詞元數(shù)目少于這個(gè)固定長度時(shí),繼續(xù)在其末尾添加特定的填充詞元“<pad>”,直到達(dá)到固定長度
- 在截?cái)辔谋拘蛄械臅r(shí)候,只需要按照固定長度截取指定數(shù)量位置靠前的詞元,然后將剩余的詞元丟棄就可以了
- 對于每一個(gè)固定長度的序列,在其末尾添加特定的序列結(jié)束詞元“<eos>”,用于表示序列的結(jié)束
總結(jié)
- 機(jī)器翻譯指的是將文本序列從一種語言自動(dòng)翻譯成另外一種語言
- 使用單詞級(jí)詞元化時(shí)的詞表大小,將明顯大于使用字符級(jí)詞元化時(shí)的詞表大小。為了緩解這一問題,可以通過將低頻次元視為相同的未知詞元來解決
- 通過截?cái)嗪吞畛?/strong>文本序列,可以保證所有的文本序列都具有相同的長度,便于以小批量的方式進(jìn)行加載
----end----
其他參考:
1、《動(dòng)手學(xué)深度學(xué)習(xí)》,教程,https://zh-v2.d2l.ai/chapter_recurrent-modern/machine-translation-and-dataset.html
標(biāo)簽: