chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
set -ex
|
||||
|
||||
input_dir=$1
|
||||
output_dir=$2
|
||||
dict_file=$3
|
||||
|
||||
python preprocess.py \
|
||||
--trainpref $input_dir/train \
|
||||
--validpref $input_dir/valid \
|
||||
--testpref $input_dir/test \
|
||||
--source-lang de --target-lang en \
|
||||
--destdir $output_dir \
|
||||
--srcdict $dict_file \
|
||||
--tgtdict $dict_file \
|
||||
--workers 40
|
||||
@@ -0,0 +1,8 @@
|
||||
set -ex
|
||||
|
||||
data_bin=$1
|
||||
save_dir=$2
|
||||
|
||||
python generate.py $data_bin \
|
||||
--path $save_dir/checkpoint_best.pt \
|
||||
--batch-size 128 --beam 5 --remove-bpe=sentencepiece
|
||||
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Adapted from https://github.com/pytorch/fairseq/blob/master/examples/translation/prepare-iwslt14.sh
|
||||
|
||||
mkdir -p $1
|
||||
|
||||
cd $1
|
||||
|
||||
echo 'Cloning Moses github repository (for tokenization scripts)...'
|
||||
git clone https://github.com/moses-smt/mosesdecoder.git
|
||||
|
||||
SCRIPTS=mosesdecoder/scripts
|
||||
TOKENIZER=$SCRIPTS/tokenizer/tokenizer.perl
|
||||
LC=$SCRIPTS/tokenizer/lowercase.perl
|
||||
CLEAN=$SCRIPTS/training/clean-corpus-n.perl
|
||||
|
||||
URL="http://dl.fbaipublicfiles.com/fairseq/data/iwslt14/de-en.tgz"
|
||||
GZ=de-en.tgz
|
||||
|
||||
if [ ! -d "$SCRIPTS" ]; then
|
||||
echo "Please set SCRIPTS variable correctly to point to Moses scripts."
|
||||
exit
|
||||
fi
|
||||
|
||||
src=de
|
||||
tgt=en
|
||||
lang=de-en
|
||||
prep=iwslt14.tokenized.de-en
|
||||
tmp=$prep/tmp
|
||||
orig=orig
|
||||
|
||||
mkdir -p $orig $tmp $prep
|
||||
|
||||
echo "Downloading data from ${URL}..."
|
||||
cd $orig
|
||||
wget "$URL"
|
||||
|
||||
if [ -f $GZ ]; then
|
||||
echo "Data successfully downloaded."
|
||||
else
|
||||
echo "Data not successfully downloaded."
|
||||
exit
|
||||
fi
|
||||
|
||||
tar zxvf $GZ
|
||||
cd ..
|
||||
|
||||
echo "pre-processing train data..."
|
||||
for l in $src $tgt; do
|
||||
f=train.tags.$lang.$l
|
||||
tok=train.tags.$lang.tok.$l
|
||||
|
||||
cat $orig/$lang/$f | \
|
||||
grep -v '<url>' | \
|
||||
grep -v '<talkid>' | \
|
||||
grep -v '<keywords>' | \
|
||||
sed -e 's/<title>//g' | \
|
||||
sed -e 's/<\/title>//g' | \
|
||||
sed -e 's/<description>//g' | \
|
||||
sed -e 's/<\/description>//g' | \
|
||||
perl $TOKENIZER -threads 8 -l $l > $tmp/$tok
|
||||
echo ""
|
||||
done
|
||||
perl $CLEAN -ratio 1.5 $tmp/train.tags.$lang.tok $src $tgt $tmp/train.tags.$lang.clean 1 175
|
||||
for l in $src $tgt; do
|
||||
perl $LC < $tmp/train.tags.$lang.clean.$l > $tmp/train.tags.$lang.$l
|
||||
done
|
||||
|
||||
echo "pre-processing valid/test data..."
|
||||
for l in $src $tgt; do
|
||||
for o in `ls $orig/$lang/IWSLT14.TED*.$l.xml`; do
|
||||
fname=${o##*/}
|
||||
f=$tmp/${fname%.*}
|
||||
echo $o $f
|
||||
grep '<seg id' $o | \
|
||||
sed -e 's/<seg id="[0-9]*">\s*//g' | \
|
||||
sed -e 's/\s*<\/seg>\s*//g' | \
|
||||
sed -e "s/\’/\'/g" | \
|
||||
perl $TOKENIZER -threads 8 -l $l | \
|
||||
perl $LC > $f
|
||||
echo ""
|
||||
done
|
||||
done
|
||||
|
||||
|
||||
echo "creating train, valid, test..."
|
||||
for l in $src $tgt; do
|
||||
awk '{if (NR%23 == 0) print $0; }' $tmp/train.tags.de-en.$l > $prep/valid.$l
|
||||
awk '{if (NR%23 != 0) print $0; }' $tmp/train.tags.de-en.$l > $prep/train.$l
|
||||
|
||||
cat $tmp/IWSLT14.TED.dev2010.de-en.$l \
|
||||
$tmp/IWSLT14.TEDX.dev2012.de-en.$l \
|
||||
$tmp/IWSLT14.TED.tst2010.de-en.$l \
|
||||
$tmp/IWSLT14.TED.tst2011.de-en.$l \
|
||||
$tmp/IWSLT14.TED.tst2012.de-en.$l \
|
||||
> $prep/test.$l
|
||||
done
|
||||
@@ -0,0 +1,16 @@
|
||||
set -ex
|
||||
|
||||
input_dir=$1
|
||||
output_dir=$2
|
||||
|
||||
SPM_MODEL=$3
|
||||
|
||||
mkdir -p $output_dir
|
||||
|
||||
for split in train valid test ;
|
||||
do
|
||||
for lang in en de ;
|
||||
do
|
||||
cat $input_dir/$split.$lang | spm_encode --model=$SPM_MODEL --output_format=piece > $output_dir/$split.$lang;
|
||||
done;
|
||||
done;
|
||||
@@ -0,0 +1,34 @@
|
||||
set -ex
|
||||
|
||||
data_bin=$1
|
||||
save_dir=$2
|
||||
PRETRAINED_MODEL=$3
|
||||
|
||||
python train.py $data_bin \
|
||||
--save-dir $save_dir \
|
||||
--arch deltalm_base \
|
||||
--pretrained-deltalm-checkpoint $PRETRAINED_MODEL \
|
||||
--share-all-embeddings \
|
||||
--max-source-positions 512 --max-target-positions 512 \
|
||||
--criterion label_smoothed_cross_entropy \
|
||||
--label-smoothing 0.1 \
|
||||
--optimizer adam --adam-betas '(0.9, 0.98)' \
|
||||
--lr-scheduler inverse_sqrt \
|
||||
--lr 1e-4 \
|
||||
--warmup-init-lr 1e-07 \
|
||||
--stop-min-lr 1e-09 \
|
||||
--warmup-updates 4000 \
|
||||
--max-update 400000 \
|
||||
--max-epoch 100 \
|
||||
--max-tokens 1024 \
|
||||
--update-freq 1 \
|
||||
--seed 1 \
|
||||
--log-format simple \
|
||||
--skip-invalid-size-inputs-valid-test \
|
||||
--fp16 \
|
||||
--eval-bleu \
|
||||
--eval-bleu-args '{"beam": 5, "max_len_a": 1.2, "max_len_b": 10}' \
|
||||
--eval-bleu-detok moses \
|
||||
--eval-bleu-remove-bpe=sentencepiece \
|
||||
--eval-bleu-print-samples \
|
||||
--best-checkpoint-metric bleu --maximize-best-checkpoint-metric
|
||||
Reference in New Issue
Block a user