Ce référentiel fournit du code pour la formation et le test de modèles de pointe pour la correction d'erreur grammaticale avec la mise en œuvre officielle de Pytorch de l'article suivant:
GECTEUR - Correction d'erreur grammaticale: Tag, pas réécrire
Kostiantyn Omelianchuk, Vitaliy Atrasevych, Artem Chernodub, Oleksandr Skurzhanskyi
Grammaire
15e atelier sur l'utilisation innovante de la PNL pour la création d'applications éducatives (colocalisé avec ACL 2020)
Il est principalement basé sur AllenNLP et transformers .
La commande suivante installe tous les packages nécessaires:
pip install -r requirements.txtLe projet a été testé à l'aide de Python 3.7.
Tous les ensembles de données GEC publics utilisés dans le journal peuvent être téléchargés à partir d'ici.
Des ensembles de données créés par synthèse peuvent être générés / téléchargés ici.
Pour former les données du modèle, il faut prétraiter et converti en format spécial avec la commande:
python utils/preprocess_data.py -s SOURCE -t TARGET -o OUTPUT_FILE| Encodeur pré-entraîné | Biais de confiance | Min Erreur Prob | Connl-2014 (test) | BEA-2019 (test) |
|---|---|---|---|---|
| Bert [lien] | 0.1 | 0,41 | 61.0 | 68.0 |
| Roberta [lien] | 0,2 | 0,5 | 64.0 | 71.8 |
| Xlnet [lien] | 0,2 | 0,5 | 63.2 | 71.2 |
Remarque : Les scores du tableau sont différents de ceux du papier, car la version ultérieure des transformateurs est utilisée. Pour reproduire les résultats rapportés dans l'article, utilisez cette version du référentiel.
Pour entraîner le modèle, courez simplement:
python train.py --train_set TRAIN_SET --dev_set DEV_SET
--model_dir MODEL_DIRIl y a beaucoup de paramètres à spécifier parmi eux:
cold_steps_count le nombre d'époches où nous formons uniquement la dernière couche linéairetransformer_model {bert,distilbert,gpt2,roberta,transformerxl,xlnet,albert} Modèle Encodeurtn_prob Probabilité d'obtenir des phrases sans erreur; Aide à équilibrer la précision / rappelpieces_per_token Nombre maximum de sous-mots par jeton; Aide à ne pas sortir Cuda de mémoireDans nos expériences, nous avions 98/2 Train / Dev Split.
Nous avons décrit tous les paramètres que nous utilisons pour la formation et l'évaluation ici.
Pour exécuter votre modèle dans le fichier d'entrée, utilisez la commande suivante:
python predict.py --model_path MODEL_PATH [MODEL_PATH ...]
--vocab_path VOCAB_PATH --input_file INPUT_FILE
--output_file OUTPUT_FILEParmi les paramètres:
min_error_probability - probabilité d'erreur minimale (comme dans le papier)additional_confidence - Biais de confiance (comme dans le document)special_tokens_fix pour reproduire certains résultats rapportés de modèles pré-entraînésPour l'évaluation, utilisez m ^ 2SCORER et ERRANT.
Ce référentiel implémente également le code du document suivant:
Simplification du texte par tagging
Kostiantyn Omelianchuk, Vipul Raheja, Oleksandr Skurzhanskyi
Grammaire
16e atelier sur l'utilisation innovante de la PNL pour la création d'applications éducatives (colocalisée W EACL 2021)
Pour le prétraitement des données, la formation et le test de la même interface que pour GEC pourraient être utilisés. Pour les étapes de formation et d'évaluation utils/filter_brackets.py est utilisée pour supprimer le bruit. Pendant l'inférence, nous utilisons --normalize le drapeau.
| SARI | FKGL | ||
|---|---|---|---|
| Modèle | Turkcorpus | ACTIF | |
| TST-Final [lien] | 39.9 | 40.3 | 7.65 |
| TST-Final + ajustements | 41.0 | 42.7 | 7.61 |
Paramètres de modification de l'inférence:
iteration_count = 2
additional_keep_confidence = -0.68
additional_del_confidence = -0.84
min_error_probability = 0.04
Pour l'évaluation, utilisez le package Easse.
Remarque : Les scores du tableau sont très proches de ceux du papier, mais ne les correspondent pas entièrement pour les 2 raisons:
Si vous trouvez que ce travail est utile pour vos recherches, veuillez citer nos articles:
@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.",
}