يوفر هذا المستودع رمزًا للتدريب واختبار النماذج الحديثة لتصحيح الأخطاء النحوية مع تنفيذ Pytorch الرسمي للورقة التالية:
Gector - تصحيح الخطأ النحوي: العلامة ، وليس إعادة الكتابة
Kostiantyn Omelianchuk ، Vitaliy Atrasevych ، Artem Chernodub ، Oleksandr Skurzhanskyi
نحوي
ورشة العمل الخامسة عشرة حول الاستخدام المبتكر لـ NLP لبناء التطبيقات التعليمية (التي تم تحديدها مع ACL 2020)
يعتمد بشكل أساسي على AllenNLP و transformers .
يقوم الأمر التالي بتثبيت جميع الحزم اللازمة:
pip install -r requirements.txtتم اختبار المشروع باستخدام Python 3.7.
يمكن تنزيل جميع مجموعات بيانات GEC العامة المستخدمة في الورقة من هنا.
يمكن إنشاء/تنزيل مجموعات البيانات التي تم إنشاؤها صناعياً هنا.
لتدريب بيانات النموذج يجب معالجتها مسبقًا وتحويلها إلى تنسيق خاص مع الأمر:
python utils/preprocess_data.py -s SOURCE -t TARGET -o OUTPUT_FILE| المشفر المسبق | تحيز الثقة | min error prob | Connl-2014 (اختبار) | BEA-2019 (اختبار) |
|---|---|---|---|---|
| بيرت [رابط] | 0.1 | 0.41 | 61.0 | 68.0 |
| روبرتا [رابط] | 0.2 | 0.5 | 64.0 | 71.8 |
| xlnet [رابط] | 0.2 | 0.5 | 63.2 | 71.2 |
ملاحظة : تختلف الدرجات في الجدول عن تلك الورقة ، حيث يتم استخدام الإصدار الأخير من Transformers. لإعادة إنتاج النتائج المبلغ عنها في الورقة ، استخدم هذا الإصدار من المستودع.
لتدريب النموذج ، ما عليك سوى التشغيل:
python train.py --train_set TRAIN_SET --dev_set DEV_SET
--model_dir MODEL_DIRهناك الكثير من المعلمات لتحديدها:
cold_steps_count عدد الحصر حيث نقوم بتدريب الطبقة الخطية الأخيرة فقطtransformer_model {bert,distilbert,gpt2,roberta,transformerxl,xlnet,albert} Encodertn_prob احتمال الحصول على جمل بدون أخطاء ؛ يساعد على تحقيق التوازن بين الدقة/الاستدعاءpieces_per_token الحد الأقصى لعدد الكلمات الفرعية لكل رمز ؛ يساعد على عدم إخراج كودا من الذاكرةفي تجاربنا كان لدينا 98/2 قطار/ديف انقسام.
وصفنا جميع المعلمات التي نستخدمها للتدريب والتقييم هنا.
لتشغيل النموذج الخاص بك على ملف الإدخال استخدم الأمر التالي:
python predict.py --model_path MODEL_PATH [MODEL_PATH ...]
--vocab_path VOCAB_PATH --input_file INPUT_FILE
--output_file OUTPUT_FILEبين المعلمات:
min_error_probability - الحد الأدنى من احتمال الخطأ (كما في الورقة)additional_confidence - تحيز الثقة (كما في الورقة)special_tokens_fix لإعادة إنتاج بعض نتائج النماذج المبلغ عنهاللتقييم ، استخدم M^2scorer و Errant.
يقوم هذا المستودع أيضًا بتنفيذ رمز الورقة التالية:
تبسيط النص عن طريق وضع العلامات
Kostiantyn Omelianchuk ، Vipul Raheja ، Oleksandr Skurzhanskyi
نحوي
ورشة العمل السادسة عشرة حول الاستخدام المبتكر لـ NLP لبناء التطبيقات التعليمية (Co Co To Co Co EACL 2021)
بالنسبة للمعالجة المسبقة للبيانات ، يمكن استخدام التدريب واختبار الواجهة نفسها بالنسبة لـ GEC. لكل من مراحل التدريب والتقييم utils/filter_brackets.py يستخدم لإزالة الضوضاء. أثناء الاستدلال ، نستخدم --normalize .
| الساري | fkgl | ||
|---|---|---|---|
| نموذج | Turkcorpus | أصل | |
| tst-final [رابط] | 39.9 | 40.3 | 7.65 |
| TST-Final + تعديلات | 41.0 | 42.7 | 7.61 |
تعديل الاستدلال المعلمات:
iteration_count = 2
additional_keep_confidence = -0.68
additional_del_confidence = -0.84
min_error_probability = 0.04
للتقييم ، استخدم حزمة EASSE.
ملاحظة : الدرجات الموجودة في الجدول قريبة جدًا من تلك الموجودة في الورقة ، ولكنها لا تتطابق معها بالكامل بسبب السببين:
إذا وجدت أن هذا العمل مفيد لبحثك ، فيرجى الاستشهاد بأوراقنا:
@inproceedings{omelianchuk-etal-2020-gector,
title = "{GECT}o{R} {--} Grammatical Error Correction: Tag, Not Rewrite",
author = "Omelianchuk, Kostiantyn and
Atrasevych, Vitaliy and
Chernodub, Artem and
Skurzhanskyi, Oleksandr",
booktitle = "Proceedings of the Fifteenth Workshop on Innovative Use of NLP for Building Educational Applications",
month = jul,
year = "2020",
address = "Seattle, WA, USA → Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.bea-1.16",
pages = "163--170",
abstract = "In this paper, we present a simple and efficient GEC sequence tagger using a Transformer encoder. Our system is pre-trained on synthetic data and then fine-tuned in two stages: first on errorful corpora, and second on a combination of errorful and error-free parallel corpora. We design custom token-level transformations to map input tokens to target corrections. Our best single-model/ensemble GEC tagger achieves an F{_}0.5 of 65.3/66.5 on CONLL-2014 (test) and F{_}0.5 of 72.4/73.6 on BEA-2019 (test). Its inference speed is up to 10 times as fast as a Transformer-based seq2seq GEC system.",
}
@inproceedings{omelianchuk-etal-2021-text,
title = "{T}ext {S}implification by {T}agging",
author = "Omelianchuk, Kostiantyn and
Raheja, Vipul and
Skurzhanskyi, Oleksandr",
booktitle = "Proceedings of the 16th Workshop on Innovative Use of NLP for Building Educational Applications",
month = apr,
year = "2021",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2021.bea-1.2",
pages = "11--25",
abstract = "Edit-based approaches have recently shown promising results on multiple monolingual sequence transduction tasks. In contrast to conventional sequence-to-sequence (Seq2Seq) models, which learn to generate text from scratch as they are trained on parallel corpora, these methods have proven to be much more effective since they are able to learn to make fast and accurate transformations while leveraging powerful pre-trained language models. Inspired by these ideas, we present TST, a simple and efficient Text Simplification system based on sequence Tagging, leveraging pre-trained Transformer-based encoders. Our system makes simplistic data augmentations and tweaks in training and inference on a pre-existing system, which makes it less reliant on large amounts of parallel training data, provides more control over the outputs and enables faster inference speeds. Our best model achieves near state-of-the-art performance on benchmark test datasets for the task. Since it is fully non-autoregressive, it achieves faster inference speeds by over 11 times than the current state-of-the-art text simplification system.",
}