1. 程式人生 > >Nematus(一)資料預處理與超引數配置

Nematus(一)資料預處理與超引數配置

神經機器翻譯工具Nematus

1、資料預處理 ./preprocess.sh

主要流程包括:

  • tokenization(符號化處理)
    This means that spaces have to be inserted between (e.g.) words and punctuation.
#!/bin/sh

# suffix of source language files
SRC=en
SRCTAG=en
# suffix of target language files
TRG=es
TRGTAG=es
# number of merge operations. Network vocabulary should be slightly larger (to include characters),
# or smaller if the operations are learned on the joint vocabulary #bpe_operations=89500 bpe_operations=45000 tools=tools # path to moses decoder: https://github.com/moses-smt/mosesdecoder mosesdecoder=$tools/moses # path to subword segmentation scripts: https://github.com/rsennrich/subword-nmt subword_nmt=$tools/subword-nmt # tokenize
for prefix in train dev do cat data/$prefix.$SRCTAG | \ $mosesdecoder/scripts/tokenizer/normalize-punctuation.perl -l $SRC | \ $tools/normalise-romanian.py | \ $tools/remove-diacritics.py | \ $tools/tokenizer.perl -a -l $SRC > data/$prefix.tok.$SRCTAG cat data/$prefix.$TRGTAG | \ $mosesdecoder/scripts/tokenizer/normalize-punctuation.perl -l $TRG | \ $tools/tokenizer.perl -a -l $TRG > data/$prefix.tok.$TRGTAG done
  • clean(去除長度大於50的句子)
    Long sentences and empty sentences are removed as they can cause problems with the training pipeline, and obviously mis-aligned sentences are removed.
#############################################
# clean empty and long sentences, and sentences with high source-target ratio (training corpus only)
$mosesdecoder/scripts/training/clean-corpus-n.perl data/train.tok $SRCTAG $TRGTAG data/train.tok.clean 1 50 #80
  • truecase(起始詞首字母小寫,名字除外)
    The initial words in each sentence are converted to their most probable casing. This helps reduce data sparsity.
# train truecaser
$mosesdecoder/scripts/recaser/train-truecaser.perl -corpus data/train.tok.clean.$SRCTAG -model model/truecase-model.$SRCTAG
$mosesdecoder/scripts/recaser/train-truecaser.perl -corpus data/train.tok.clean.$TRGTAG -model model/truecase-model.$TRGTAG

# apply truecaser (cleaned training corpus)
for prefix in train
 do
  $tools/scripts/truecase.perl -model model/truecase-model.$SRCTAG < data/$prefix.tok.clean.$SRCTAG > data/$prefix.tc.$SRCTAG
  $tools/scripts/truecase.perl -model model/truecase-model.$TRGTAG < data/$prefix.tok.clean.$TRGTAG > data/$prefix.tc.$TRGTAG
 done

# apply truecaser (dev/test files)
for prefix in dev
 do
  $tools/scripts/truecase.perl -model model/truecase-model.$SRCTAG < data/$prefix.tok.$SRCTAG > data/$prefix.tc.$SRCTAG
  $tools/scripts/truecase.perl -model model/truecase-model.$TRGTAG < data/$prefix.tok.$TRGTAG > data/$prefix.tc.$TRGTAG
 done
  • bpe(使用BPE演算法對單詞進行編碼)
    • 處理前:Lea Michele ’ s On Her Way To The Top Of The Charts With This Song !
    • 處理後:[email protected]@ a Michele ’ s On Her Way To The Top Of The [email protected]@ ts With This Song !
# train BPE   源語言和目標語言分別單獨訓練 bpe
cat data/train.tc.$SRCTAG | $subword_nmt/learn_bpe.py -s $bpe_operations > model/$SRCTAG.bpe
cat data/train.tc.$TRGTAG | $subword_nmt/learn_bpe.py -s $bpe_operations > model/$TRGTAG.bpe

# apply BPE

for prefix in train dev
 do
  $tools/scripts/apply_bpe.py -c model/$SRCTAG.bpe < data/$prefix.tc.$SRCTAG > data/$prefix.bpe.$SRCTAG
  $tools/scripts/apply_bpe.py -c model/$TRGTAG.bpe < data/$prefix.tc.$TRGTAG > data/$prefix.bpe.$TRGTAG
 done
  • build vocabulary(建立詞彙表)
# build network dictionary
python $tools/build_dictionary.py data/train.bpe.$SRCTAG data/train.bpe.$TRGTAG

2、配置網路的超引數(Hypeparameter) ./config.py

主要引數包括:

  • reload: 是否過載模型,隔一段時間儲存模型防止程式異常中斷,比如停電等。
  • dim_word: 詞向量維數
  • dim: 隱狀態維數,或者稱之為隱狀態大小(hidden unit size)
  • n_words_src: 源語言詞彙表大小
  • n_words_tgt: 目標語言詞彙表大小
  • decay_c: 正則化因子λ
  • patience: 用於 early stop
  • lrate: 初始學習率
  • optimizer: 優化器
  • maxlen: 訓練語料句子最大長度
  • batch_size: 批量大小,若GPU視訊記憶體很小應該設定儘量小的值,防止出現out of memory
  • datasets: 訓練集
  • valid_datasets: 驗證集
  • dictionaries: 詞彙表存放的檔案
  • validFreq: 驗證的頻率
  • dispFreq: 輸出提示資訊的頻率
  • saveFreq: 儲存模型的頻率
  • sampleFreq: 驗證集輸出頻率(即輸出一些源語言句子、目標語言句子、參考譯文的一些示例)
  • use_dropout: 是否使用dropout
  • overwrite: 是否儲存模型的中間結果,False儲存,True不儲存
  • external_validation_script: 驗證時呼叫的指令碼程式
import numpy
import os
import sys

#此處根據需要修改,看詞彙表的個數多少
VOCAB_SIZE_SRC = 40000
VOCAB_SIZE_TGT = 40000
SRCTAG = "en"
TRGTAG = "es"
DATA_DIR = "data"
TUNING_DIR = "tuning"
model = "model_en_es"

from nematus.nmt import train


if __name__ == '__main__':
    validerr = train(saveto=model+'/model.npz',
                    reload_=True,
                    dim_word=500,
                    dim=1024,
                    n_words_tgt=VOCAB_SIZE_TGT,
                    n_words_src=VOCAB_SIZE_SRC,
                    decay_c=0.,
                    clip_c=1.,
                    patience=10, #early stop patience
                    lrate=0.0001,
                    optimizer='adam', #adam,adadelta
                    maxlen=50,
                    batch_size=80,
                    valid_batch_size=80,
                    datasets=[DATA_DIR + '/train.bpe.' + SRCTAG, DATA_DIR + '/train.bpe.' + TRGTAG],
                    valid_datasets=[DATA_DIR + '/dev.bpe.' + SRCTAG, DATA_DIR + '/dev.bpe.' + TRGTAG],
                    dictionaries=[DATA_DIR + '/train.bpe.' + SRCTAG + '.json',DATA_DIR + '/train.bpe.' + TRGTAG + '.json'],
                    validFreq=10000, #10000,3000
                    dispFreq=1000,  #1000,100
                    saveFreq=30000, #30000,10000
                    #sampleFreq=10000,
                    sampleFreq=0,  #不產生樣本
                    use_dropout=True,
                    dropout_embedding=0.2, # dropout for input embeddings (0: no dropout)
                    dropout_hidden=0.2, # dropout for hidden layers (0: no dropout)
                    dropout_source=0.1, # dropout source words (0: no dropout)
                    dropout_target=0.1, # dropout target words (0: no dropout)
                    overwrite=False,
                    external_validation_script='./validate.sh')
    print validerr

相關推薦

Nematus資料處理引數配置

神經機器翻譯工具Nematus 1、資料預處理 ./preprocess.sh 主要流程包括: tokenization(符號化處理) This means that s

風險大腦-支付風險識別天池大賽資料處理

        報了個名(據說deadline報名最有生產力),直播一下比賽吧,可能因為沒時間會隨時斷更,大家有好的思路歡迎交流。60萬的獎金,還是別指望了哈哈。        大賽提供的所有資料資訊是包含在引號裡面的(“xxxx”),這樣在後續輸入模型使用資料前需要做字串索

CS231n課程學習筆記——資料處理、批量歸化和Dropout

資料預處理 均值減法 它對資料中每個獨立特徵減去平均值,從幾何上可以理解為在每個維度上都將資料雲的中心都遷移到原點。 #numpy X -= np.mean(X, axis=0) 歸一化 是指將資料的所有維度都歸一化,使其數值範圍都

深度學習基礎—— 資料處理

1 PCA 主成分分析法,一般用於資料降維。WHY? 影象中相鄰的畫素高度相關,輸入資料是有一定冗餘的。具體來說,假如我們正在訓練的16x16灰度值影象,記為一個256維向量 x∈ℜ256,其中特徵值 xj對應每個畫素的亮度值。由於相鄰畫素間的相關

資料探勘筆記資料處理

1.原始資料存在的幾個問題:不一致;重複;含噪聲;維度高。 2.資料預處理包含資料清洗、資料整合、資料變換和資料歸約幾種方法。 3.資料探勘中使用的資料的原則 應該是從原始資料中選取合適的屬性作為資料探勘屬性,這個選取過程應參考的原則是:儘可能賦予屬性名和屬性值明確的含義;

金融信貸風控——資料處理和特徵衍生

申請評分卡中的資料預處理和特徵衍生 構建信用風險型別的特徵 資料預處理 1、資料預處理 包括格式、缺失值的處理等。 缺失值包括如下幾種情況: 1、完全隨機缺失 2、隨機缺失 3、完全非隨機缺失:與變數本身有關,比如富裕家庭不願意填收入 處理缺失值的方法

神經網路模型無法正常工作時我們應該做什麼系列——資料處理Preprocess

前言 當你進入深度學習領域,準備好深度神經網路,開始進行訓練時,遇到這樣一個大部分新手都會遇到的問題:你的神經網路沒法正常工作,而你不知道該如何去修正它。你去問你的老闆或者導師,他們也不知道該如何處理,因為在深度神經網路面前,他們和你一樣也是新手。

目標檢測之-Caffe-SSD系列資料處理-PASCAL VOC

目標檢測任務之資料的處理 常見的目標檢測資料集之PASCAL VOC 1 . PASCAL VOC資料集介紹 資料集名稱 訓練集(本地訓) 測試集(本地測) PAS

機器學習基礎系列2——資料處理

本文系PWN2WEB原創,轉載請說明出處 機器學習演算法最終學習結果的優劣取決於資料質量和資料中蘊含的有用資訊數量,對資料的處理對模型高效性起到了巨大的作用。 一 缺失資料的處理  資料採集過程中的錯誤導致缺失值的出現,我們無法忽略這些缺失值,所以我們需要對這些缺失值進行處理。 首先我們構造一個cs

小白學 Python 資料分析8:Pandas 資料處理

人生苦短,我用 Python 前文傳送門: 小白學 Python 資料分析(1):資料分析基礎 小白學 Python 資料分析(2):Pandas (一)概述 小白學 Python 資料分析(3):Pandas (二)資料結構 Series 小白學 Python 資料分析(4):Pandas (三)資

小白學 Python 資料分析9:Pandas 資料處理2

人生苦短,我用 Python 前文傳送門: 小白學 Python 資料分析(1):資料分析基礎 小白學 Python 資料分析(2):Pandas (一)概述 小白學 Python 資料分析(3):Pandas (二)資料結構 Series 小白學 Python 資料分析(4):Pandas (三)資

1.4JDK安裝環境變數配置及環境變數相關問題

安裝JDK 選擇安裝目錄 安裝過程中會出現兩次 安裝提示 。第一次是安裝 jdk ,第二次是安裝 jre 。建議兩個都安裝在同一個java資料夾中的不同資料夾中。(不能都安裝在java資料夾的根目錄下,jdk和jre安裝在同一資料夾會出錯) 如下圖所示

【ML專案】基於網路爬蟲和資料探勘演算法的web招聘資料分析——資料獲取處理

前言 這個專案是在學校做的,主要是想對各大招聘網站的招聘資料進行分析,沒準能從中發現什麼,這個專案週期有些長,以至於在專案快要結束時發現網上已經有了一些相關的專案,我後續會把相關的專案材料放在我的GitHub上面,連結為:https://github.com/

大物件LOB、批處理資料

1.大物件LOB LOB,即Large Objects(大物件),是用來儲存大量的二進位制和文字資料的一種資料型別(一個LOB欄位可儲存可多達4GB的資料)。分為BLOB 和CLOB。 大文字CLOB: CLOB(Character Large Object) – 用於儲存大量的文字資料

資料結構演算法--- 資料結構演算法概念

一、資料結構 資料結構是計算機儲存、組織資料的方式。(資料結構是指資料與資料之間的關係。) 資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。通常情況下,精心選擇的資料結構可以帶來更高的執行或者儲存效率。資料結構往往同高效的檢索演算法和索引技術有關。

資料結構之順序表連結串列

順序表 運用陣列結構來構建的線性表就是順序表。 本例實現了順序表的列印、清空、判斷是否為空、求表長、獲得指定下標的元素、獲得指定元素的下標、插入和刪除操作。 #include<iostream> const int MAXSIZE=100; using

C++學習筆記資料型別、資料處理、複合型別、迴圈、分支

     過段時間打算上手OpenCV,自己不是特別喜歡Python這個語言,幹嵌入式時間久了還是對C有種執念,同時C++在嵌入式應用以及影象處理方面也是有很大佔有量的,所以從國慶假期開始上手C++,當然學好C++絕非短時間能辦到的,這需要大量的練習和使用,給自己加個油吧,不

pandas資料處理實踐三DataFrame.apply資料處理、DataFrame.drop_duplicates去重

通過apply進行資料的預處理: DataFrame.apply(func,axis = 0,broadcast = None,raw = False,reduce = None,result_type = None,args =(),** kwds ) In [70

linux學習筆記之shell程式設計正則表示式字元處理

shell程式設計 基礎正則表示式 正則和萬用字元的區別:正則是包含匹配,匹配檔案內容,grep,awk等支援正則表示式。萬用字元是完全匹配,匹配檔名,例如find,ls不認識正則表示式 ####正則表示式常用的字元(注意區別於萬用字元裡面的符號)#### -*

爬蟲:爬蟲原理資料抓取

1.通用爬蟲和聚焦爬蟲 根據使用場景,網路爬蟲可分為 通用爬蟲 和 聚焦爬蟲 兩種. 通用爬蟲 通用網路爬蟲 是 捜索引擎抓取系統(Baidu、Google、Yahoo等)的重要組成部分。主要目的是將網際網路上的網頁下載到本地,形成一個網際網路內容的映象備份 聚焦爬蟲