يتضمن هذا المستودع الرموز والبرامج النصية لزيادة البيانات التي تستهدف كلمات نادرة للترجمة الآلية العصبية المقترحة في ورقتنا.
إذا كنت تستخدم هذا الرمز ، يرجى الاستشهاد:
@InProceedings{fadaee-bisazza-monz:2017:Short2,
author = {Fadaee, Marzieh and Bisazza, Arianna and Monz, Christof},
title = {Data Augmentation for Low-Resource Neural Machine Translation},
booktitle = {Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 2: Short Papers)},
month = {July},
year = {2017},
address = {Vancouver, Canada},
publisher = {Association for Computational Linguistics},
pages = {567--573},
url = {http://aclweb.org/anthology/P17-2090}
}
قبل تدريب نموذج اللغة أحادي اللغة في [SRC/TRG] ، ستحتاج إلى معالجة البيانات لكل من الاتجاه الأمامي والخلف باستخدام preprocess.no_preset_v.py .
python src/preprocess.no_preset_v.py --train_txt ./wiki.train.txt
--val_txt ./wiki.val.txt --test_txt ./wiki.test.txt
--output_h5 ./data.h5 --output_json ./data.json
سيؤدي ذلك إلى إنتاج ملفات data.h5 و data.json التي سيتم نقلها إلى البرنامج النصي التدريبي.
بعد المعالجة المسبقة للبيانات ، ستحتاج إلى تدريب نموذجين لغويين في اتجاهين للأمام والخلف.
th src/train.lua -input_h5 data.h5 -input_json data.json
-checkpoint_name models_rnn/cv -vocabfreq vocab_freq.trg.txt
th src/train.lua -input_h5 data.rev.h5 -input_json data.rev.json
-checkpoint_name models_rnn_rev/cv -vocabfreq vocab_freq.trg.txt
هناك العديد من العلامات التي يمكنك استخدامها لتكوين التدريب.
إدخال vocabfreq هو قائمة الترددات للكلمات في إعداد الموارد المنخفض التي تحتاج إلى زيادة في وقت لاحق باستخدام نماذج اللغة هذه. التنسيق هو:
...
change 3028
taken 3007
large 2999
again 2994
...
بعد تدريب نماذج اللغة ، يمكنك إنشاء جمل جديدة في bitext الخاصة بك لـ [src trg]. يمكنك تشغيل هذا:
th src/substitution.lua -checkpoint models_rnn/cv_xxx.t7 -start_text train.en
-vocabfreq vocab_freq.trg.txt -sample 0 -topk 1000 -bwd 0 > train.en.subs
th src/substitution.lua -checkpoint models_rev.rnn/cv_xxx.t7 -start_text train.en.rev
-vocabfreq vocab_freq.trg.txt -sample 0 -topk 1000 -bwd 1 > train.en.rev.subs
start_text هو جانب bitext الذي تستهدفه لزيادة الكلمات النادرة. vocabfreq هي قائمة الترددات المستخدمة للكشف عن الكلمات النادرة. يشير topk إلى الحد الأقصى لعدد البدائل التي تريد الحصول عليها لكل موضع في الجملة.
سيعطيك تشغيل هذين الرموبين كوربورا المعززة مع قائمة بدائل على جانب واحد: train.en.subs و train.en.rev.subs . من أجل العثور على بديلات تتوافق مع السياق بشكل أفضل ، ستحتاج إلى العثور على تقاطع هاتين القائمتين:
perl ./scripts/generate_intersect.pl train.en.subs train.en.rev.subs subs.intersect
subs.intersect يحتوي على البدائل التي يمكن استخدامها لزيادة bitext. إليك مثال على الإخراج:
information where we are successful will be published in this unk .
information{}
where{}
we{doctors:136 humans:135}
are{became:764 remained:245}
successful{}
will{}
be{}
published{interested:728 introduced:604 kept:456 performed:289 placed:615 played:535 released:477 written:790}
in{behind:932 beyond:836}
this{henry:58}
unk{}
.{}
السطر الأول هو الجملة الأصلية ، وكل سطر بعد ذلك هو كلمة في الجملة والبدائل المقترحة مع الترددات المعنية.
باستخدام إخراج الاستبدال ، الجانب [TRG/SRC] من Bitext ، المحاذاة ، وملف الاحتمال المعجمي يمكنك إنشاء الشركات المعززة.
يمكنك استخدام Fast_align للحصول على محاذاة لدغتك. شكل إدخال المحاذاة هو:
...
0-0 1-10 2-3 2-4 2-5 3-13 4-14 5-8 5-9 6-16 7-14 8-11 10-6 11-7 12-17
0-0 1-0 2-0 2-2 3-1 3-3 4-5 5-5 6-6 8-8 9-9 10-10 11-11
...
يمكن الحصول على إدخال الاحتمال المعجمي من القاموس ، أو المحاذاة. التنسيق هو:
...
safely sicher 0.0051237409068
safemode safemode 1
safeness antikollisionssystem 0.3333333
safer sicherer 0.09545972221228
...
من أجل توليد bitext المعزز ، يمكنك تشغيل:
perl ./scripts/data_augmentation.pl subs.intersect train.de alignment.txt lex.txt augmentedOutput
سيؤدي ذلك إلى إنشاء ملفين: augmentedOutput.augmented في [src/trg] و augmentedOutput.fillout بلغة [trg/src]. الملف الأول هو جانب Bitext المعزز للاستهداف الكلمات النادرة. الملف الثاني هو ترجمات الجمل المعززة.
إذا كنت ترغب في الحصول على أكثر من تغيير في كل جملة يمكنك تشغيله أيضًا:
perl ./scripts/data_augmentation_multiplechanges.pl subs.intersect train.de alignment.txt lex.txt augmentedOutput
فيما يلي جملة من الملف المعزز في [SRC/TRG]:
at the same time , the rights of consumers began:604~need to be maintained .
والجملة ذات الصلة من ملف Fillout في [TRG/SRC]:
gleichzeitig begann~müssen die rechte der verbraucher geschützt werden .
في الملف المعزز ، بدأت الكلمة مع الترددات 604 بديلة الكلمة التي تحتاجها . في ملف Fillout ، ترجمة الكلمة ، بدأت ، استبدال الكلمة الأصلية Müssen .
لإزالة جميع العلامات والحصول على bitext نظيفة يمكن استخدامها للتدريب على الترجمة يمكنك تشغيلها:
perl ./scripts/filter_out_augmentations.pl augmentedOutput.en augmentedOutput.de 1000
يمكنك فرض المزيد من الحد من التردد على الكلمات النادرة التي تريد زيادة هنا.
في هذا العمل ، يتم استخدام هذا الرمز: