Этот репозиторий предоставляет код для обучения и тестирования современных моделей для коррекции грамматической ошибки с официальной реализацией Pytorch следующей статьи:
Gector - Грамматическая коррекция ошибок: тег, а не переписать
Kostiantyn Omelianchuk, Vitaliy Atrasevych, Artmem Chernodub, Oleksandr Skurzhanskyi
Грамматика
15-й семинар по инновационному использованию 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| Предварительно проведенный энкодером | Уклон доверия | Мин ошибка Проб | 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 |
Примечание . Оценки в таблице отличаются от таковых, как используется более поздняя версия трансформаторов. Чтобы воспроизвести результаты, представленные в статье, используйте эту версию репозитория.
Чтобы тренировать модель, просто запустите:
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 Максимальное количество подчинок на токен; Помогает не вывести CUDA из памятиВ наших экспериментах у нас был 98/2 поезда/Dev Dipl.
Мы описали все параметры, которые мы используем для обучения и оценки здесь.
Чтобы запустить модель в входном файле. Используйте следующую команду:
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 и ошибочно.
Этот репозиторий также реализует код следующей статьи:
Упрощение текста путем помещения
Kostiantyn Omelianchuk, Vipul Raheja, Oleksandr Skurzhanskyi
Грамматика
16-й семинар по инновационному использованию NLP для создания образовательных приложений (совместно расположенный WACL 2021)
Для предварительной обработки данных можно использовать обучение и тестирование того же интерфейса, что и для GEC. Как для стадий обучения, так и для оценки utils/filter_brackets.py используется для удаления шума. Во время вывода мы используем --normalize флаг.
| САРИ | Fkgl | ||
|---|---|---|---|
| Модель | Turkcorpus | ОБЪЕКТ | |
| TST-FILING [ссылка] | 39,9 | 40.3 | 7,65 |
| TST-FILING + TICES | 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.",
}